TypeScript 61.9%
HTML 37.2%
SQL 0.7%
1# Grand Comics Database connector (`gcd`)23- Source: https://www.comics.org (comics.org) · type: catalog · country: US (global coverage) · currency: USD (cover prices when ISO-labelled)4- Acquisition: official JSON REST API, no key — `/api/series/?page=N` (50/page, 232k series), `/api/series/<id>/`, `/api/issue/<id>/`, `/api/publisher/<id>/`5- Records: `catalog_item` per issue with `identifiers.comics_org_id` (+ `gcd_series_id`, `gcd_publisher_id`, upc/ean/isbn from the barcode)6- Data licence: CC-BY-SA — kept in `metadata.license`, every record links to its comics.org issue page.78## Behaviour9- Resumable page walk of the series list (cursor `{page, index}`); `issuesPerSeries` issue details per series; publisher names cached per run.10- Rate limit: the API answers 429 (Retry-After ≈ 29 min) after ~50 requests → `maxRequestsPerRun` (30) per hourly run, 2.5 s spacing, clean stop with anomaly `rate_limited`; domain policy `maxRetries: 0`.11- `lookup(https://www.comics.org/issue/<id>/ | /series/<id>/)` and seeds `series:<id>` / `issue:<id>`.12- Dates with GCD `00` placeholders stay year-only (`releaseDate` null); cover price → `originalMsrp` only with an ISO currency.1314## Fixtures / tests15`data/fixtures/gcd/*.json` are live API captures (trimmed). `pnpm vitest run connectors/api/gcd`. Capture: `pnpm tsx connectors/api/gcd/_capture.ts [seriesId…]`.16