Autentificare
Fiecare cerere către API trebuie să includă un Bearer token în antetul Authorization.
Formatul token-ului
Tokenurile sunt restricționate la un singur tenant și au forma <slug-tenant>.<cheie>:
tenant.7c4a8d09ca3762af61e59520943dc26494f8941b- Partea dinaintea punctului (aici
tenant) este slug-ul tenantului tău — același care apare în subdomeniu (tenant.notsowms.ro). Îi indică platformei către ce bază de date să direcționeze cererea, încă dinainte ca cheia să fie validată. 7c4a8d09...este secretul propriu-zis. Tratează-l ca pe o parolă — oricine are tokenul complet poate acționa ca tenantul tău.
Trimiterea token-ului
GET /api/v1/products HTTP/1.1
Host: tenant.notsowms.ro
Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b
Accept: application/jsoncurl:
curl https://tenant.notsowms.ro/api/v1/products \
-H "Authorization: Bearer tenant.7c4a8d09ca3762af61e59520943dc26494f8941b" \
-H "Accept: application/json"Emiterea unei chei
Tokenurile se gestionează din interfața WMS, Setări → Chei API. Fiecare cheie are:
- Nume — etichetă descriptivă (ex.
integrare eMag,sync-erp-intern). - Permisiuni — listă opțională de permisiuni. Unele endpoint-uri cer permisiuni specifice (
orders:write,inventory:read, etc.). - Expirare — dată ISO opțională după care cheia nu mai funcționează.
- Activă — comutator pentru suspendare fără ștergere, util în caz de incident.
După salvare, tokenul complet (<slug-tenant>.<cheie>) este afișat o singură dată. Stochează-l imediat în managerul tău de secrete. Platforma stochează doar un hash SHA-256 și nu îl poate recupera.
Rotație
Pentru a roti o cheie:
- Emite o cheie nouă.
- Mută integrările pe noul token.
- Revocă cheia veche.
Cele două chei pot coexista pe perioada tranziției; nimic nu te obligă la o trecere bruscă.
Erori legate de autentificare
| Status | Body | Cauză |
|---|---|---|
| 401 | {"error":"API key missing. Use Authorization: Bearer <key>"} | Lipsește antetul Authorization. |
| 401 | {"error":"Invalid API key format. Expected: <tenant>.<key>"} | Tokenul nu conține prefixul de tenant și separatorul .. |
| 401 | {"error":"Invalid API key (unknown tenant)."} | Slug-ul de tenant din token nu corespunde niciunui tenant activ. |
| 401 | {"error":"Invalid API key (no matching key in tenant DB).", "debug":{…}} | Partea de cheie nu se potrivește cu nicio înregistrare în baza tenantului. Răspunsul include un bloc debug cu DB-ul așteptat și cel conectat efectiv — util pentru depanarea unei comutări de conexiune nereușite. |
| 403 | {"error":"Account suspended."} | Tenantul este suspendat din panoul central de admin. |
| 403 | {"error":"API key is inactive."} | Comutatorul de activare este oprit. |
| 403 | {"error":"API key has been revoked."} | Cheia a fost revocată explicit. |
| 403 | {"error":"API key has expired."} | Data de expirare este în trecut. |
| 403 | {"error":"Missing permission: orders:write"} | Endpoint-ul a cerut o permisiune pe care cheia nu o are. |
Jurnalizare
Fiecare cerere autentificată este înregistrată în tabela api_request_logs cu metoda, calea, statusul răspunsului și durata. Poți audita traficul unei chei din aceeași pagină de Setări.