Catalog Gaps
Two kinds of problem, reported separately.
- stringHeader
Optional. Ohne Schlüssel antwortet dieser Endpunkt nach der öffentlichen Richtlinie; ein Schlüssel erhöht Ihre Limits und schaltet planabhängige Felder frei.
Authorization: Bearer <key>wird ebenfalls akzeptiert.
- string
Report on one catalog instead of all of them. Every check is a scan of a catalog table, so a scoped call runs only the checks that concern that catalog and is the cheaper request by a wide margin. Omitted, the whole report comes back.
- Akzeptiert
- object
The response payload.
- string
Which catalog this report covers, or
all. Echoed so a stored copy still says what it describes. - object
Two different times, deliberately separate. The gap report is recomputed on every request, so
computedAtdescribes this body. The daily snapshot is what has a last run and a next run, and it is what/v1/data/gaps/historyrecords. - string
When this response was computed. Not when you read it: the response is edge-cached for a minute, so a body can be up to that old.
- string
How often the recorded snapshot is taken.
- string | null
When the last snapshot was stored, or null before the job has ever run.
- string | null
The UTC day that snapshot describes.
- string
When the next snapshot is due.
- string | null
When the daily source audit last judged the catalog's citations, or null before it has ever run. Its own time rather than the snapshot's:
record-cites-an-authorityreads a table a separate job writes, and the two run in parallel. - object
Keyed by entity. Each carries its total and, per tracked field, how many records lack it. A field is missing when it is null or empty, so a column full of empty strings does not read as complete.
- object[]
Visual coverage, one entry per catalog that stores media - firearms today, and an empty array for a scope that stores none. A catalog with no pictures and a catalog that does not hold pictures are different answers, so absence is never reported as zero coverage. Each kind is counted twice:
recordsis how many records have at least one asset of that kind, which is the coverage figure, andassetsis how many files exist, which is larger wherever a record carries several.noneis how many records have nothing to show at all. This is what field coverage cannot report. A firearm's line drawing is a column, but its photographs, renders and 3D models are rows in a media table, so "does this record have a render" is not a question a field count can answer. - string
Which catalog this covers.
- number
How many records that catalog holds.
- object
Keyed by kind:
silhouette,photo,render,model,schematic. Each carriesrecords,assetsandcoveragePct. - number
Records with no drawing, photograph, render, model or schematic.
- object[]
One entry per integrity check, each naming what passing means so a failure is actionable without reading the source.
- string
Stable id, usable at /v1/data/gaps/checks/{checkId}.
- string
What passing means.
- string
Production status, one of
in_production,discontinued,out_of_production,in_service,limited_production,prototype. Discontinued records are kept deliberately: a rifle built in 2004 wears parts nobody sells today. - number
How many records failed.
- string[]
Up to five failing ids. Ask the check endpoint for the rest.
- object[]
The distinct values behind the failure, present only on a check about a value rather than a record. A vocabulary failure is decided once per spelling rather than once per record, so thirty-four records reporting nineteen spellings are nineteen decisions, and ids alone would mean fetching thirty-four records to recover them. Absent on every other check rather than empty, so a check with no values to report and a check that found none cannot be confused.
- object
Reserved for whether each cited website still resolves, which a scheduled job will fill. Reports
unavailablewith a reason until then.
- 400
VALIDATION_ERROR - 429
RATE_LIMITED - 500
INTERNAL_ERROR
- Mindeststufe
- Explorer+
- Monatskontingent
- 200/mo
- Anfragerate
- 10/min
- Tageslimit
- 50
Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.