LIVE · LANȚ DE AUDIT · UE
SISTEM · 99,99% UPTIME
v 1.0 ↗ FĂCUT ÎN UE

Autentificare

Fiecare cerere către API-ul public poartă o pereche de credențiale — nb_pub_* (cheie publică) + nb_sec_* (secret). Secretul este trimis ca token Bearer. Credențiala este restrânsă la o singură organizație + un catalog fix de scope-uri.

Emiterea credențialelor

  1. Autentificați-vă în organizația dvs. la app.nexbasira.com.
  2. Mergeți la Admin → Credențiale API.
  3. Faceți clic pe Emite credențială, alegeți un nume + scope-uri, confirmați.
  4. Copiați perechea nb_pub_* + nb_sec_*. Secretul este afișat exact o singură dată. Stocați-l imediat în managerul dvs. de secrete — noi păstrăm doar un hash SHA-256 de partea noastră.

Utilizarea credențialei

Authorization: Bearer nb_sec_AbCdEf...

Cheia publică (nb_pub_*) identifică credențiala în log-urile noastre + apare în antetul NB-Credential-Id al livrărilor de webhook. Secretul autentifică.

curl https://app.nexbasira.com/api/v1/public/sessions \
  -H "Authorization: Bearer nb_sec_..."

Catalog de scope-uri

Fiecare credențială este creată cu un set explicit de scope-uri. Cererile din afara acestor scope-uri returnează 403. Catalogul de scope-uri este fix (fără scope-uri personalizate la v1):

ScopeAcordă
sessions:readListare + obținere sesiuni
sessions:writeCreare sesiuni + încheierea lor
participants:readListarea participanților unei sesiuni
participants:writeEmiterea invitațiilor pentru utilizatorii de teren
evidence:readListare + obținere rânduri de probe + URL-uri de descărcare semnate
recordings:readCitirea metadatelor artefactelor de înregistrare + URL-uri de descărcare
audit:readCitirea lanțului de audit per sesiune + coordonatele ancorei TSA
webhooks:readListarea endpoint-urilor webhook înregistrate + log-ul de livrare
webhooks:writeÎnregistrare / rotire-secret / ștergere endpoint-uri webhook
branding:readCitirea branding-ului organizației (siglă / culori / subsol PDF)
branding:writeModificarea branding-ului organizației
org:readCitirea metadatelor organizației
whiteboards:readListarea tablourilor per sesiune

Rotire

Pentru a roti fără întrerupere:

  1. Emiteți o credențială nouă cu același set de scope-uri.
  2. Implementați noul secret în aplicația dvs.
  3. Verificați că noua credențială preia traficul (Admin → Credențiale API afișează marcajul temporal al ultimei utilizări).
  4. Revocați soft vechea credențială. Cererile existente care o folosesc primesc 401; urma de audit a apelurilor trecute rămâne intactă.

Verificare în timp constant

Pe backend, secretele sunt stocate ca SHA-256(secret + SECRET_KEY_pepper) și comparate în timp constant (hmac.compare_digest). Un dump de hash-uri divulgat nu poate fi spart prin forță brută în text clar fără a sparge și pepper-ul.

Ce NU acordă această credențială

  • Acces de administrare SPA — acela este separat (login operator + RBAC).
  • Alăturarea de partea de teren — aceea folosește URL-uri semnate de unică folosință emise prin sessions.invite().
  • Provisioning SCIM — folosește un token bearer separat per organizație, vedeți provisioning SCIM.
  • Semnarea webhook-urilor — aceea se face cu secretul whsec_* per endpoint, vedeți Webhook-uri.

Urmă de audit

Fiecare apel API este logat cu cheia publică a credențialei + endpoint-ul + statusul. Operațiile care modifică starea scriu suplimentar rânduri de audit în organizația afectată. Adminul poate vedea activitatea credențialei la Admin → Credențiale API → [credențială] → Activitate.