Pular para o conteúdo
Sursa Developers

Chaves de API e escopos

Toda requisição à API do Sursa é feita com uma chave de API da sua organização. Uma chave pertence à organização, e não a uma pessoa: ela continua funcionando quando o colaborador que a criou sai da empresa, e o que ela pode fazer é definido na própria chave.

O que uma chave pode fazer

Três configurações de uma chave decidem o que uma requisição feita com ela pode ver e alterar. Cada uma só restringe as outras.

ConfiguraçãoO que ela controla
Role (função)admin, editor, verifier ou viewer, as mesmas funções que as pessoas têm. A chave pode fazer o que um usuário com essa função pode fazer.
Scopes (escopos)Quais partes da API a chave pode chamar, por exemplo cards:read ou webhooks:manage. Veja Escopos das chaves.
Data profile (perfil de dados)Opcional. Limita a chave às categorias de conhecimento que o perfil permite, como um usuário com esse perfil.

Uma chave também pode ser limitada a algumas coleções e receber uma data de expiração. Uma requisição fora desses limites falha: a falta de um escopo retorna 403 com o código api_keys.scope, e um objeto que a chave não pode ver retorna 404, exatamente como se não existisse.

Dê a cada integração uma chave própria, com a função e os escopos mais restritos de que ela precisa. Um job de sincronização que só grava documentos não precisa de admin; um job de relatórios não precisa de escopos de escrita.

Criar uma chave

Um administrador da organização cria chaves no Sursa em Administration → API keys (administração, chaves de API) ou com POST /v1/api-keys, usando uma chave ou uma sessão com a função admin:

curl -X POST https://api.sursa.com/v1/api-keys \
  -H "Authorization: Bearer $SURSA_ADMIN_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "CRM sync",
    "role": "editor",
    "expires_at": "2027-06-30T00:00:00Z"
  }'

A resposta traz o valor da chave em key. Ele é mostrado uma única vez: o Sursa guarda só um hash dele e não pode mostrá-lo de novo. Uma chave tem o formato kb_ seguido de 43 caracteres; os primeiros caracteres (prefix) aparecem na lista de chaves, para que você consiga distingui-las.

Sem scopes, a chave recebe os escopos da sua função. Passe scopes para restringi-la ainda mais. Sem expires_at, a chave não expira.

Manter as chaves em segredo

  • Guarde as chaves em um gerenciador de segredos ou nas variáveis de ambiente do seu serviço, nunca no código-fonte.
  • Use as chaves só nos seus servidores. O Sursa aceita requisições de navegadores (o CORS está aberto), mas uma chave em uma página web fica visível para todos que a abrem.
  • Nunca envie uma chave em uma URL. Envie-a só no cabeçalho Authorization.
  • Se uma chave vazar, revogue-a imediatamente e crie uma nova.

Verificar uma chave

GET /v1/me retorna a chave, a função, os escopos efetivos, o perfil de dados, a expiração e o limite de taxa dela. Ele funciona com qualquer chave válida, quaisquer que sejam os escopos dela, então use-o como teste de conexão da sua integração e quando investigar um 403.

Rotacionar uma chave

A rotação substitui uma chave sem parar a integração. O jeito mais rápido é rotacionar a própria chave: POST /v1/api-keys/{key_id}/roll emite um valor novo para a mesma chave, com a mesma função, os mesmos escopos, as mesmas coleções e a mesma data de expiração. O valor anterior continua funcionando durante overlap_hours (24 horas por padrão, até 168), para que você implante o valor novo nesse meio-tempo; POST /v1/api-keys/{key_id}/revoke-previous encerra a sobreposição antes do prazo.

Para substituir uma chave por outra diferente:

  1. Crie uma chave nova com a mesma função, os mesmos escopos e o mesmo perfil de dados.
  2. Implante a chave nova na sua integração.
  3. Acompanhe a chave antiga em Administration → API keys (ou last_used em GET /v1/api-keys) até que ela não seja mais usada.
  4. Revogue a chave antiga.

Defina uma data de expiração nas chaves e faça a rotação antes dela. O Sursa avisa os administradores da organização antes de uma chave expirar; uma chave expirada retorna 401 com o código api_keys.expired.

Revogar uma chave

Revogue uma chave em Administration → API keys ou com DELETE /v1/api-keys/{key_id}. A revogação entra em vigor em poucos segundos em todos os servidores da API. As requisições com uma chave revogada retornam 401 com o código auth.not_authenticated.

Chaves de uma fonte personalizada

Uma fonte personalizada tem um tipo próprio de chave. Ela começa com kbsrc_, só pode gravar documentos nessa fonte e não pode ler nem buscar nada. É a chave mais segura para entregar a uma plataforma de integração como o Zapier. Crie-a na página da fonte, em API keys (chaves de API da fonte), ou com POST /v1/sources/{source_id}/push-keys.

Quando as chaves não estão disponíveis

As chaves de API fazem parte do plano da organização. Se o plano não as inclui, criar uma chave e qualquer requisição com uma chave retornam 403 com o código api_keys.feature_disabled.