Get catalog gaps and integrity checks
Two kinds of problem, reported separately.
Gaps are absent values, counted per entity and field, with the share of records left filled. Media is the same question for visual material, which a field count cannot answer: a line drawing is a column but photographs, renders and 3D models are rows in a media table. Checks are present values that contradict something else the catalog states, such as a firearm attributed to a manufacturer that does not exist, or a company recorded as closing before it was founded. Each check returns a verdict and a sample of the identifiers that failed.
Built for a backend rather than a reader. /v1/data/coverage reports how full a table is; this reports which records to correct. Pair it with /v1/data/gaps/records to retrieve the identifiers and pass them to whatever fills them in.
Pass entity to report on a single catalog. Every check is a scan of a catalog table, so a scoped call runs only the checks that concern that catalog and is substantially cheaper.
linkHealth is declared and reports unavailable. Establishing whether a cited website still resolves requires one network request per record, which belongs in a scheduled job rather than a request handler. It is declared here so that a consumer knows the shape it will arrive in.
No API key required.
Request
- Base URL: https://api.gunspec.io
- URL: https://api.gunspec.io/v1/data/gaps
- Auth: one of:
- none
- API key in header X-API-Key
- HTTP bearer
Query parameters
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.
Response
Get catalog gaps and integrity checks
Example response
{
"success": true,
"data": {
"scope": "manufacturers",
"schedule": {
"computedAt": "2026-09-15T02:44:57.731Z",
"cadence": "daily",
"lastRunAt": "2026-09-15 03:00:12",
"lastRunOn": "2026-09-15",
"nextRunAt": "2026-09-16T03:00:00.000Z",
"sourceAuditAt": "2026-09-15 03:00:41"
},
"media": [
{
"entity": "firearms",
"total": 8629,
"none": 6159
}
],
"checks": [
{
"id": "firearm-manufacturer-exists",
"describes": "Every firearm is attributed to a manufacturer that exists in the catalog.",
"status": "pass",
"values": [
{
"value": "dao",
"count": 15
}
]
}
]
}
}Changes
No recorded changes to this operation across all 1 revision of this API.