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 erforderlichEnterprise

Returns per-field completeness across the catalog, so you can tell which specifications are reliably populated before depending on them.

GET/v1/data/coverage

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • object

    The response payload.

  • object

    Per-field completeness across the firearms table.

  • integer

    Total records matching the query across every page.

  • object

    Per-field completeness, keyed by column name.

  • object

    Per-field completeness across the calibers table.

  • integer

    Total records matching the query across every page.

  • object

    Per-field completeness, keyed by column name.

  • object

    Per-field completeness across the manufacturers table.

  • integer

    Total records matching the query across every page.

  • object

    Per-field completeness, keyed by column name.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Enterprise tier.

Coverage percentages are rounded to one decimal place.

Use this endpoint to monitor data quality over time or prioritize data enrichment efforts.

Mindeststufe
Enterprise
Monatskontingent
1,000,000/mo
Anfragerate
300/min
Tageslimit
50,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

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.

Authentifizierung optionalExplorer+

The work generated from what the quality checks find, and where each item has got to.

GET/v1/data/tasks

  • 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

    Only tasks in this state.

    Akzeptiert
  • string

    Only tasks for one catalog.

    Akzeptiert
  • integerstandard50

    How many to return.

    Bereich
    1 – 200
    Beispiel

  • object

    The response payload.

  • object[]

    Most recently seen first.

  • string

    Stable id, derived from the finding rather than assigned, so the same finding is the same task tomorrow.

  • string

    What the asset is: silhouette, render, photo, schematic, model. /v1/firearms/{id}/media/{selector} addresses an asset by this.

  • string

    Which catalog.

  • string

    The record, or for a vocabulary task the value being decided.

  • string | null

    The check id or field this came from.

  • 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 this would fix. One for most; a vocabulary decision covers every record holding that spelling.

  • string

    When the finding was first seen.

  • string | null

    When a worker began, or null.

  • string | null

    When it closed, or null.

  • boolean

    Whether a worker has filed a conclusion. Never what it says.

  • 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.

Authentifizierung optionalExplorer+

Where one task has got to, for a reader following a finding. The same narrow view the list returns: no payload, no claimant, no proposal.

GET/v1/data/tasks/{taskKey}

  • 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.

  • stringerforderlich

    The task id, as the list reports it.

    Beispiel

  • object

    The response payload.

  • object

    The task, in the public shape the list returns.

  • 400VALIDATION_ERRORValidation error
  • 404NOT_FOUNDResource not found
  • 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.

Authentifizierung optionalExplorer+

One row per day, oldest first, from the daily snapshot the platform stores. /v1/data/gaps recomputes live and keeps nothing, so it can say what is missing now and not whether that is better or worse than last month.

GET/v1/data/gaps/history

  • 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.

  • integerstandard90

    How many days back to read. One row per day, so 90 is a quarter.

    Bereich
    1 – 365
    Beispiel

  • object

    The response payload.

  • integer

    The window that was read.

  • object[]

    One row per day, oldest first.

  • string

    The UTC day this row describes.

  • string

    When the snapshot was taken.

  • string

    Which catalog the run covered.

  • integer

    How many integrity checks ran.

  • integer

    How many of them failed.

  • integer

    How many records were behind those failures, summed across checks.

  • number

    Weighted field coverage across every tracked catalog, as a percentage of possible values. Null before any field is tracked.

  • 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.

Authentifizierung erforderlichEnterprise

The ids lacking a given field, paginated. This is the half a machine consumes: ask which manufacturers have no website, get the ids back, hand them to whatever fills them in.

GET/v1/data/gaps/records

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    Which catalog to report on

    Akzeptiert
    Beispiel
  • stringerforderlich

    The field the records are missing. Which fields are valid depends on entity, since each catalog tracks different columns: a field the named entity does not track is refused with 400 and the error lists the ones it does.

    Beispiel
  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Items per page (max 100)

    Bereich
    1 – 100
    Beispiel

  • object[]

    One page of results

  • string

    Slug of the record.

  • string

    Its name, so a worklist is readable without a second lookup.

  • string

    The field this row is missing. Echoed so a stored batch still says what it was collected for.

  • string | null

    What the record holds in that field. Always null here: the query selects records missing it, so this says "no value" rather than "not looked at".

  • string[]

    The pages the record already cites. Carried so a consumer can judge whether the missing value is findable without fetching the record first.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Enterprise
Monatskontingent
1,000,000/mo
Anfragerate
300/min
Tageslimit
50,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichEnterprise

Every failing id rather than the sample /v1/data/gaps carries, for a check you have decided to act on.

GET/v1/data/gaps/checks/{checkId}

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • stringerforderlich

    The check id, as /v1/data/gaps reports it.

    Beispiel

  • object

    The response payload.

  • string

    The check.

  • string

    What passing means.

  • string[]

    Every failing record.

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 404NOT_FOUNDResource not found
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Mindeststufe
Enterprise
Monatskontingent
1,000,000/mo
Anfragerate
300/min
Tageslimit
50,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.

Authentifizierung erforderlichEnterprise

Returns a confidence score per firearm derived from source count and field completeness, for filtering out thinly sourced records.

GET/v1/data/confidence

  • stringHeadererforderlich

    Ihr API-Schlüssel. Authorization: Bearer <key> wird ebenfalls akzeptiert.

  • numberstandard0.5

    Only return records scoring below this threshold

    Bereich
    0 – 1
    Beispiel
  • integerstandard1

    Page number, from 1 to 10,000

    Bereich
    1 – 10000
    Beispiel
  • integerstandard20

    Items per page (max 100)

    Bereich
    1 – 100
    Beispiel

  • object[]

    One page of results

  • string

    Slug of the firearm.

  • string

    Display name, as the maker writes it.

  • number

    How completely the record is specified and how well it is sourced, 0 to 1. A record-level completeness and provenance measure, not a per-field probability of correctness. dataConfidence on the camelCase endpoints.

  • number

    Current page number

  • number

    Items per page

  • number

    Total matching records (Builder and above)

  • 400VALIDATION_ERRORValidation error
  • 401UNAUTHORIZEDAPI key required
  • 403FORBIDDENValid key, not permitted
  • 429RATE_LIMITEDRate limit exceeded
  • 500INTERNAL_ERRORUnexpected server error

Requires Enterprise tier.

Results are sorted by confidence ascending (lowest confidence first).

Confidence scores are computed from field completeness, source count, and cross-reference consistency.

Mindeststufe
Enterprise
Monatskontingent
1,000,000/mo
Anfragerate
300/min
Tageslimit
50,000

Die Werte gelten für die Mindeststufe dieses Endpunkts. Höhere Stufen erhöhen alle Limits.