POST/api/v1/app/usage
Meldet usage-Events der installierten App und beansprucht das vereinbarte Kontingent atomar
Rechte
Keine — jeder gültige Schlüssel darf das.
Felder im Rumpf
| Name | Typ | Bedeutung |
|---|---|---|
idempotencyKeyPflicht | string [A-Za-z0-9._:-]+ | Eindeutiger Schlüssel zur Idempotenz; gleiches Payload + Key führt zur Erkennung eines Replays |
quantityPflicht | integer >= 1 | Anzahl der Einheiten, die abgerechnet werden sollen |
descriptionPflicht | string | Freitextbeschreibung, wird im Usage-Record gespeichert |
periodStartPflicht | ISO-8601 UTC | Beginn der abzurechnenden Periode |
periodEndPflicht | ISO-8601 UTC | Ende der Periode; muss > periodStart sein |
Mögliche Fehler
- validation — Schema verletzt (z. B. periodEnd ≤ periodStart oder ungültiger idempotencyKey)
- Die Implementierung führt atomisch die Kap-Claim-Prüfung und das Anlegen des Usage-Records durch; bei Duplikaten liefert die Antwort `{ id, amountCents, replayed: true }`.
- Idempotency wird per `idempotencyKey` + kanonischem Payload geprüft; wiederholte Einsendungen mit gleichem Hash werden als Replays zurückgegeben.
- Keine zusätzlichen Module oder `PERSONAL`-Schlüssel: die Route ist ausschließlich für die App-Installation gedacht.
- Fachliche Erweiterungsfehler tragen extensions.errors.conflict beziehungsweise extensions.errors.notFound; diese gehören nicht zum allgemeinen API-Fehlerkatalog. Ein Limitkonflikt hat Status 409, eine fehlende aktive Periode Status 404.
- Die Beispielperiode muss durch currentPeriodStart/currentPeriodEnd aus GET /api/v1/app ersetzt werden. Nur der offene aktuelle Zeitraum ist abrechenbar.