GunSpec

Data Quality

Data completeness and confidence metrics. Understand how thoroughly each record is populated and identify low-confidence entries that may need enrichment.

Authentifizierung optionalExplorer+

Two kinds of problem, reported separately.

GET/v1/data/gaps

  • 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 computedAt describes this body. The daily snapshot is what has a last run and a next run, and it is what /v1/data/gaps/history records.

  • 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-authority reads 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: records is how many records have at least one asset of that kind, which is the coverage figure, and assets is how many files exist, which is larger wherever a record carries several. none is 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 carries records, assets and coveragePct.

  • 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 unavailable with a reason until then.

  • 400VALIDATION_ERRORValidation error
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server 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.