GunSpec
Rang

Erfahrung und Stufen

Jeder erfolgreiche Aufruf bringt dem aufrufenden Konto Erfahrung, gewichtet danach, was der Aufruf war. Gemeint ist die Tiefe der Integration und nicht das Verkehrsaufkommen: Aufrufe, die man erst macht, wenn man etwas gebaut hat, zaehlen ein Vielfaches einer Listenseite.

Aus derselben Tabelle gelesen, aus der die API schreibt, damit diese Seite ihr nicht hinterherlaufen kann. 20 Operationen liegen ueber dem Grundwert; alles andere bringt 1.

OperationWas es istWert
GET /v1/attachments/{id}/firearmsList firearms an attachment fits8
GET /v1/firearms/{id}/attachmentsList attachments that fit a firearm8
GET /v1/firearms/{id}/interfacesGet a firearm's mount interfaces8
GET /v1/firearms/head-to-headCompare two firearms head to head8
GET /v1/firearms/resolveResolve a name to one firearm8
POST /v1/firearms/resolveResolve many names at once8
GET /v1/ammunition/{id}/ballisticsCompute a ballistic table5
GET /v1/calibers/{id}/firearmsList firearms in a caliber5
GET /v1/calibers/ballisticsGet a caliber ballistic profile5
GET /v1/calibers/compareCompare calibers5
GET /v1/firearms/{id}/calculateCalculate ballistics for a firearm5
GET /v1/firearms/{id}/similarFind similar firearms5
GET /v1/firearms/{id}/variantsList variants5
GET /v1/firearms/compareCompare firearms5
GET /v1/firearms/searchFull-text search3
GET /v1/ammunition/{id}Get an ammunition load2
GET /v1/attachments/{id}Get an attachment2
GET /v1/calibers/{id}Get a caliber2
GET /v1/firearms/{id}Get a firearm2
GET /v1/manufacturers/{id}Get a manufacturer2
Jede andere OperationListenseiten eingeschlossen. Paginierung baut eine Kopie auf, was in Ordnung ist und nichts beweist.1

Erfahrung erkennt an, was gebaut wurde, also zaehlen die Clients, die bauen. Die Art wird aus dem User-Agent gelesen, so wie das Anfrageprotokoll sie festhaelt.

ClientZaehltWas es ist
sdk-typescriptjaDas TypeScript-SDK.
sdk-pythonjaDas Python-SDK.
mcpjaDer gehostete MCP-Server.
http-tooljacurl, Postman, HTTPie: jemand probiert es wirklich aus.
http-libraryjaEin HTTP-Client im eigenen Code.
unknownjaEine Laufzeit ohne Agent. Weit eher eine Integration als ein Browser.
browserneinEin Browser bringt nichts.

Zwei weitere Aufrufe bringen nichts. Ein 304 Not Modified bringt nichts, aus demselben Grund, aus dem er kein Kontingent kostet: die hoefliche Integration darf nicht die teure sein, und Caching ist genau das, was uns lieb ist. Ein fehlgeschlagener Aufruf bringt ebenfalls nichts, damit Raten bei Ids sich nicht lohnt.

Die Stufe folgt allein aus der Gesamterfahrung. Jede Stufe kostet etwas mehr als die vorige, die ersten kommen also schnell und die spaeteren sind verdient. Die Tagesspalte ist der Weg bei voller Ausschoepfung von 500 pro Tag, die eine echte Integration nie erreicht.

StufeBeginnt beiKostetTage am Limit
1000
250501
32001501
44502501
58003502
61,2504503
71,8005504
82,4506505
93,2007507
104,0508509

Zwei Zahlen neben der Stufe, beide gezaehlt statt verdient. Es gibt 145 dokumentierte Operationen.

Breite

operationsUsed ist die Zahl der mindestens einmal aufgerufenen Operationen, gemessen an operationsAvailable. Ein naechtlicher Lauf zaehlt sie aus dem Anfrageprotokoll, eine heute erstmals aufgerufene Operation erscheint also morgen. Auf dem Anfragepfad kostet das nichts, und genau darum geht es.

Die Serie

streakDays sind aufeinanderfolgende Tage mit Aufrufen, daysActive ist die Gesamtzahl. Gestern gilt noch als ununterbrochen, eine Zeitzone kostet also keine Serie. Beide bringen keine Erfahrung: eine Praemie fuers Erscheinen belohnt den Kalender statt die Integration.

GET /v1/me/usage liefert neben den Verbrauchszahlen einen progress-Block: xp, xpToday, dailyXpCap, level, levelStartsAt, nextLevelAt sowie Breite und Serie. Die beiden Stufengrenzen stehen dort, damit ein Client den Balken zeichnen kann, ohne die Formel zu kennen.

FeldBedeutung
xpExperience earned across every key on the account, for its whole life.
xpTodayExperience earned today (UTC).
dailyXpCapThe most one key can earn in a UTC day. A ceiling rather than a target: reaching it every day is not how the levels are meant to be climbed.
levelYour level, derived from xp alone. Nothing else moves it.
levelStartsAtThe experience this level began at.
nextLevelAtThe experience the next level begins at.
streakDaysConsecutive days you have called the API, counting today. A day you did not call breaks it, though yesterday still counts as unbroken so a timezone does not cost you a streak. Reported, never rewarded: no experience is paid for showing up.
daysActiveDays you have called the API at all, over the last two years.
operationsUsedDocumented operations you have called at least once. Counted from the request log by the nightly job, so an operation you called for the first time today appears tomorrow.
operationsAvailableDocumented operations there are to call, counted from this document rather than written down, so it cannot fall behind a route added today.