Alle endpoints leveren application/json. Fouten volgen RFC 7807 (Problem+JSON). Elke response bevat een X-Request-Id-header voor correlatie met het serverzijdige auditlogboek.
| Method | Path | Machtiging | Doel |
|---|---|---|---|
| GET | /v1/health | public | Health-check zonder authenticatie. |
| GET | /v1/me | any | Eigen accountgegevens plus sleutel-metadata. |
| GET | /v1/products | read:products | Lijst van alle openbaar vermelde producten met prijzen. |
| GET | /v1/products/{id} | read:products | Productdetails inclusief configuratie-opties. |
| POST | /v1/orders | write:orders | Bestelling plaatsen. Idempotency-Key verplicht. |
| GET | /v1/orders/{id} | read:orders | Status van een eigen bestelling. |
| GET | /v1/services | read:services | Lijst van eigen services (gepagineerd). |
| GET | /v1/services/{id} | read:services | Details van een eigen service. |
| GET | /v1/services/{id}/credentials | read:credentials | Service-toegangsgegevens (aparte machtiging, audit-gelogd). |
| POST | /v1/services/{id}/actions | write:services | Service-actie: start, stop, reboot, herinstallatie, opschorten, hervatten, beëindigen. |
| GET | /v1/billing/balance | read:billing | Tegoed. |
| GET | /v1/billing/invoices | read:billing | Lijst van uw facturen (gepagineerd). |
| GET | /v1/billing/invoices/{id}/pdf | read:billing | Factuur-PDF. |
| GET | /v1/webhooks | read:webhooks | Huidige webhook-URL. |
| PUT | /v1/webhooks | write:webhooks | Webhook-URL instellen of verwijderen. |
Idempotentie
POST /v1/orders en POST /v1/services/{id}/actions vereisen een Idempotency-Key-header (1-80 tekens uit [A-Za-z0-9_.-]). De server bewaart response plus body-hash 24 uur lang; een tweede aanvraag met dezelfde key plus dezelfde body levert dezelfde response, een tweede aanvraag met dezelfde key maar afwijkende body wordt afgewezen met 409 idempotency_conflict.
Snelheidsbeperkingen
Standaard 60 aanvragen/minuut (met 20-burst) en 5000/dag per sleutel, plus 600 aanvragen/minuut per IP onafhankelijk van de sleutel. Bij overschrijding volgt HTTP 429 met header Retry-After. De response-headers X-RateLimit-Remaining en X-RateLimit-Reset tonen de actuele stand.

