AO VIVO · AUDIT CHAIN · UE
SISTEMA · 99,99% DISPONIBILIDADE
v 1.0 ↗ FEITO NA UE

Autenticação

Cada request à API pública transporta um par de credenciais — nb_pub_* (chave pública) + nb_sec_* (segredo). O segredo é enviado como Bearer token. A credencial tem scope numa única organização + um catálogo de scopes fixo.

Emitir credenciais

  1. Inicie sessão na sua organização em app.nexbasira.com.
  2. Vá a Admin → Credenciais da API.
  3. Clique em Emitir credencial, escolha um nome + scopes, confirme.
  4. Copie o par nb_pub_* + nb_sec_*. O segredo é mostrado uma única vez. Guarde-o de imediato no seu gestor de segredos — nós mantemos apenas um hash SHA-256 do nosso lado.

Usar a credencial

Authorization: Bearer nb_sec_AbCdEf...

A chave pública (nb_pub_*) identifica a credencial nos nossos logs + aparece no cabeçalho NB-Credential-Id das entregas de webhook. O segredo autentica.

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

Catálogo de scopes

Cada credencial é criada com um conjunto de scopes explícito. Os requests fora desses scopes devolvem 403. O catálogo de scopes é fixo (sem scopes personalizados na v1):

ScopeConcede
sessions:readListar + obter sessões
sessions:writeCriar sessões + terminá-las
participants:readListar participantes numa sessão
participants:writeEmitir convites de utilizador de terreno
evidence:readListar + obter linhas de prova + URLs de transferência assinados
recordings:readLer metadados de artefactos de gravação + URLs de transferência
audit:readLer a cadeia de auditoria por sessão + coordenadas de ancoragem na TSA
webhooks:readListar endpoints de webhook registados + registo de entregas
webhooks:writeRegistar / rodar-segredo / eliminar endpoints de webhook
branding:readLer a marca da organização (logótipo / cores / rodapé de PDF)
branding:writeAlterar a marca da organização
org:readLer metadados da organização
whiteboards:readListar quadros brancos por sessão

Rotação

Para rodar sem downtime:

  1. Emita uma nova credencial com o mesmo conjunto de scopes.
  2. Implemente o novo segredo na sua aplicação.
  3. Verifique que a nova credencial está a receber tráfego (Admin → Credenciais da API mostra o timestamp de última utilização).
  4. Revogue suavemente a credencial antiga. Os requests existentes que a usam devolvem 401; o trilho de auditoria das chamadas anteriores permanece intacto.

Verificação em tempo constante

No backend, os segredos são guardados como SHA-256(secret + SECRET_KEY_pepper) e comparados em tempo constante (hmac.compare_digest). Um dump de hashes vazado não pode ser submetido a brute-force para obter o texto simples sem também quebrar o pepper.

O que esta credencial NÃO concede

  • Acesso à administração da SPA — isso é separado (login de operador + RBAC).
  • Entrada do lado do terreno — essa usa URLs assinados de uso único emitidos via sessions.invite().
  • Aprovisionamento SCIM — usa um bearer token por organização separado, ver aprovisionamento SCIM.
  • Assinatura de webhook — isso é feito com o segredo whsec_* por endpoint, ver Webhooks.

Trilho de auditoria

Cada chamada à API é registada com a chave pública da credencial + o endpoint + estado. As operações que alteram estado escrevem adicionalmente linhas de auditoria na organização afetada. O administrador pode ver a atividade da credencial em Admin → Credenciais da API → [credencial] → Atividade.