Toate endpointurile returnează application/json. Erorile respectă RFC 7807 (Problem+JSON). Fiecare răspuns include antetul X-Request-Id pentru corelarea cu jurnalul de audit de pe server.
| Method | Path | Permisiune | Scop |
|---|---|---|---|
| GET | /v1/health | public | Verificare de sănătate fără autentificare. |
| GET | /v1/me | any | Informații despre cont și metadate ale cheii. |
| GET | /v1/products | read:products | Lista tuturor produselor listate public, cu prețuri. |
| GET | /v1/products/{id} | read:products | Detalii despre produs, inclusiv opțiunile de configurare. |
| POST | /v1/orders | write:orders | Plasarea unei comenzi. Idempotency-Key obligatoriu. |
| GET | /v1/orders/{id} | read:orders | Starea unei comenzi proprii. |
| GET | /v1/services | read:services | Lista propriilor servicii (paginate). |
| GET | /v1/services/{id} | read:services | Detalii despre un serviciu propriu. |
| GET | /v1/services/{id}/credentials | read:credentials | Credențiale ale serviciului (permisiune separată, înregistrate în audit). |
| POST | /v1/services/{id}/actions | write:services | Acțiune asupra serviciului: start, stop, repornire, reinstalare, suspendare, reactivare, reziliere. |
| GET | /v1/billing/balance | read:billing | Soldul de credit. |
| GET | /v1/billing/invoices | read:billing | Lista facturilor dumneavoastră (paginate). |
| GET | /v1/billing/invoices/{id}/pdf | read:billing | PDF-ul facturii. |
| GET | /v1/webhooks | read:webhooks | Adresa URL curentă a webhookului. |
| PUT | /v1/webhooks | write:webhooks | Setarea sau eliminarea adresei URL pentru webhook. |
Idempotență
POST /v1/orders și POST /v1/services/{id}/actions necesită un antet Idempotency-Key (1-80 caractere din [A-Za-z0-9_.-]). Serverul memorează răspunsul și hashul corpului timp de 24h; o a doua cerere cu aceeași cheie și același corp returnează același răspuns, iar o a doua cerere cu aceeași cheie, dar corp diferit este respinsă cu 409 idempotency_conflict.
Limitare a ratei
Implicit: 60 cereri/minut (cu burst de 20) și 5000/zi per cheie, plus 600 cereri/minut per IP, independent de cheie. La depășire se returnează HTTP 429 cu antet Retry-After. Antetele de răspuns X-RateLimit-Remaining și X-RateLimit-Reset indică starea curentă.

