Plattform-Antworten
Die Fragen mit kurzen Antworten: Sandbox, CORS, Zeitstempel, Health-Checks, Katalogumfang und ob es einen Bulk-Export gibt.
Weitere kurze Antworten
Der Rest der Fragen mit einzeiliger Antwort und ohne eigene Seite.
| Frage | Antwort |
|---|---|
| Kann ich Webhooks testen? | Ja: Endpunkt registrieren, dann die Testroute für diese Endpunkt-ID aufrufen. Ein signiertes test.ping wird zugestellt. |
| Gibt es eine Postman-Collection? | Importieren Sie das OpenAPI-Dokument: Postman, Insomnia, Bruno und Hoppscotch lesen es, und es ist immer aktuell, weil generiert. |
| Darf ich einen Schlüssel in der ganzen Firma teilen? | Schlüssel sind an den Kontoinhaber lizenziert. Legen Sie einen je Dienst an; organisationsübergreifendes Teilen braucht einen Enterprise-Vertrag. |
| Kann ein Aufruf den Katalog ändern? | Nein. Die einzigen Schreibzugriffe der öffentlichen API betreffen Ihr eigenes Konto: Webhook-Endpunkte, Tickets, Datenmeldungen und Favoriten. |
| Gibt es ein Changelog zum Abonnieren? | Ja: GET /v1/changelog, dieselben Einträge als RSS unter /changelog.xml. |
GraphQL, gRPC und andere Protokolle
Es gibt keinen GraphQL-Endpunkt und keinen gRPC-Dienst, und beides ist nicht geplant. GunSpec ist REST über JSON mit einem OpenAPI-Dokument unter /openapi.json. Daraus entstehen die beiden offiziellen SDKs, und es lesen jeder Client-Generator sowie Postman, Insomnia oder Bruno. Wer einen typisierten Client in einer Sprache braucht, die wir nicht veröffentlichen, generiert ihn daraus, statt einen zu schreiben.
Zeitstempel, Einheiten und Content-Types
Drei Formatfragen mit derselben Antwort: explizit, und nie davon abhängig, wer fragt.
- Zeitstempel sind ISO 8601 mit UTC-Offset, immer UTC, nie lokalisiert. Tageskontingente setzen um Mitternacht UTC zurück, und danach gehört ein Alarm geplant.
- Einheiten trägt der Feldname (Millimeter, Gramm, Meter pro Sekunde, Joule), also ist
barrelLengthMmfür jeden Leser in Millimetern. Nichts ist imperial, nichts wird serverseitig umgerechnet; die Feldreferenz listet jeden Suffix. - Content-Types sind JSON für Datensätze,
image/svg+xmlfür Silhouetten und Geschossgrafiken,model/gltf-binaryfür 3D-Modelle und ein 302 für den Händler-Klickzähler. - Geld sind ganzzahlige kleinste Einheiten plus ISO-4217-Code, nie ein Float. Formatieren Sie beim Rendern mit
Intl.NumberFormatund teilen Sie vorher durch nichts.
CORS und der Aufruf aus dem Browser
Zwei getrennte Gründe, jeder für sich entscheidend. CORS spiegelt in Produktion nur gunspec.io-Origins zurück, sodass ein fetch von Ihrer Seite im Browser scheitert, bevor wir ihn sehen. Ein Schlüssel in Client-Code ist außerdem veröffentlicht, was Schlüssel im Produktivbetrieb behandelt. Rufen Sie von Ihrem Server aus auf.
- Bauen Sie eine schlanke Serverroute, die den Schlüssel hält und die weitergereichten Pfade auf eine Positivliste setzt, und rufen Sie diese aus dem Browser.
- Die für den Browser lesbaren Header sind
X-Request-Id,Retry-Aftersowie das Tageskontingent ausX-Daily-Limit,X-Daily-RemainingundX-Daily-Reset. Einen Minutenwert gibt es nicht, weil der Edge-Limiter keinen meldet. - Preflights werden zehn Minuten gecacht, sodass ein Proxy mit eigenem Header nicht bei jedem Aufruf ein OPTIONS zahlt.
Umgebungen: eine, plus Ihre eigene
Es gibt keinen Sandbox-Host, und zwar bewusst: eine Sandbox ist ein zweiter Datenbestand, der ehrlich gehalten werden muss, und ein erfundener Katalog lehrt eine Integration nichts über den echten.
- Entwickeln Sie gegen Produktion mit einem kostenlosen Explorer-Schlüssel. Es sind lesende Daten, der schlimmste Fall ist eine verschwendete Anfrage; Authentifizierung erklärt, was ein Schlüssel freischaltet.
- Nehmen Sie je Umgebung einen eigenen Schlüssel, damit ein Staging-Vorfall ein Staging-Schlüssel bleibt und die Nutzungsaufschlüsselung sagt, welche Umgebung verbraucht.
- Nichts, was Sie aufrufen können, ändert den Katalog. Die einzigen Schreibzugriffe der öffentlichen API betreffen Ihr eigenes Konto: Webhooks, Tickets, Datenmeldungen und Favoriten.
- Testen Sie Ihren Webhook-Handler mit der Testzustellung, statt auf eine Katalogänderung zu warten.
Verfügbarkeit, Statusseite und SLA
Zwei Proben und ein öffentlicher Verlauf. /health sagt, dass der Worker antwortet; /ready sagt, dass er die Datenbank erreicht. Keine braucht einen Schlüssel oder zählt gegen Ihr Kontingent. Die Statusseite unter status.gunspec.io führt die öffentliche Verfügbarkeitshistorie, und Endpunkt-Health zeigt den letzten Prüflauf gegen jede Operation. Ein vertragliches SLA gehört zum Enterprise-Vertrag; veröffentlicht sind die Werte, die diese Seiten berichten.
# Liveness: is the worker up. No key, no quota, no database read.curl -sS https://api.gunspec.io/health # Readiness: is it up *and* can it reach the database.curl -sS https://api.gunspec.io/ready # Every response carries the id we can trace it by.curl -sS -D - -o /dev/null https://api.gunspec.io/v1/firearms/glock-g17 \ -H "X-API-Key: $GUNSPEC_API_KEY" | grep -i '^x-request-id:'Katalogumfang: wie viele Waffen die Datenbank hält
Wie viele Datensätze die Datenbank hält, gezählt zum letzten Docs-Build. GET /v1/stats/summary beantwortet dieselbe Frage live, und die Statistik-Endpunkte schlüsseln den Katalog nach Epoche, Material, Land und Verschlussart auf.
| Was | Anzahl |
|---|---|
| Waffen | 9,162 |
| Hersteller | 1,003 |
| Patronen | 605 |
| Genutzte Kategorien | 11 |
| Herkunftsländer | 69 |
| Öffentliche Endpunkte | 134 |
Die mittlere Datensatzkonfidenz liegt bei 74 %. Sie misst Vollständigkeit und Belegbarkeit des ganzen Datensatzes, nicht die Genauigkeit einzelner Werte.
Massenzugriff
Es gibt keinen Dump zum Herunterladen. Ein über die API gebauter Spiegel ist vorgesehen und in Den Katalog spiegeln beschrieben; systematisches Scraping zum Nachbau der Datenbank ist es nicht, und diese Grenze steht in den AGB. Für Volumen über die veröffentlichten Tarife hinaus schreiben Sie an support@gunspec.io; dafür gibt es den Enterprise-Tarif.