šŸ” Autenticação

A API Datanomik aceita dois métodos de autenticação, ambos com as suas mesmas chaves de API: HTTP Basic e OAuth 2.0 (client credentials). Funcionam igual: mesmas permissões, mesmos dados e a mesma lista de IPs permitidos.

HTTP Basic

O secretId Ʃ o usuƔrio e o secretPassword Ʃ a senha.

Envie-as no cabeƧalho Authorization de todas as requisiƧƵes, codificadas em Base64:

Authorization: Basic base64(secretId:secretPassword)
curl --request GET \
     --url https://api.datanomik.com/v1/links \
     --header 'Accept: application/json' \
     --header 'Authorization: Basic c2VjcmV0SWQ6c2VjcmV0UGFzc3dvcmQ='

Com o curl você também pode usar -u "SECRET_ID:SECRET_PASSWORD", que monta o cabeçalho para você.

OAuth 2.0 (client credentials)

Troque suas chaves por um access token e envie o token como Bearer em cada requisição.

1. Solicite um token com grant_type=client_credentials, enviando as chaves com HTTP Basic (ou como client_id e client_secret no corpo, em formato form):

curl --request POST \
     --url https://api.datanomik.com/oauth/token \
     --user 'SECRET_ID:SECRET_PASSWORD' \
     --data grant_type=client_credentials
{
  "access_token": "eyJhbGciOiJFUzI1NiIs...",
  "token_type": "Bearer",
  "expires_in": 900,
  "scope": "all:write"
}

2. Use o token no cabeƧalho Authorization:

curl --request GET \
     --url https://api.datanomik.com/v1/links \
     --header 'Accept: application/json' \
     --header 'Authorization: Bearer eyJhbGciOiJFUzI1NiIs...'
  • O token vale expires_in segundos (15 minutos). Reutilize-o atĆ© expirar e depois solicite um novo; nĆ£o hĆ” refresh token.
  • scope indica as permissƵes do token. Por padrĆ£o tem todas as permissƵes da chave; vocĆŖ pode enviar scope na requisição para pedir menos (valores separados por espaƧo, como retornados em scope).
  • Se vocĆŖ excluir uma chave, os tokens jĆ” emitidos continuam funcionando atĆ© expirar (no mĆ”ximo 15 minutos).
  • Quando todas as suas integraƧƵes usarem OAuth, vocĆŖ pode desativar o HTTP Basic de cada chave em Dashboard → ConfiguraƧƵes → Desenvolvedores → Chaves de API (coluna Basic Auth). A partir daĆ­, essa chave só funciona com OAuth.

Erros do token

POST /oauth/token responde os erros no formato do OAuth 2.0 ({"error": "...", "error_description": "..."}):

StatuserrorCausa
400invalid_requestParâmetros ausentes ou repetidos, ou as chaves foram enviadas no cabeçalho e no corpo ao mesmo tempo.
400unsupported_grant_typegrant_type não é client_credentials.
400invalid_scopeO scope solicitado não estÔ concedido à chave.
401invalid_clientAs chaves estão ausentes, são invÔlidas ou foram excluídas.
403access_deniedSeu workspace tem uma lista de IPs permitidos e a requisição vem de outro endereço.
503temporarily_unavailableTente novamente em alguns segundos.

Erros de autenticação

StatusTipoCausa
401UNAUTHORIZEDO cabeçalho Authorization estÔ ausente, ou as chaves são invÔlidas ou foram excluídas.
401UNAUTHORIZEDO token Bearer Ʃ invƔlido ou expirou, ou o HTTP Basic estƔ desativado para a chave.
403IP_NOT_ALLOWEDSeu espaço de trabalho tem uma lista de IPs autorizados e a requisição vem de outro endereço.

Escopo das chaves

  • As chaves dĆ£o acesso apenas aos dados do espaƧo de trabalho em que foram criadas.
  • Uma chave criada para uma vista do espaƧo de trabalho vĆŖ apenas as empresas e contas dessa vista.
🚧

RecomendaƧƵes de seguranƧa

  • Todas as requisiƧƵes devem usar HTTPS.
  • Nunca publique suas chaves de API em locais pĆŗblicos, como o GitHub, nem em código que roda no lado do cliente (navegadores ou aplicativos móveis).
  • Restrinja o acesso aos endereƧos IP dos seus servidores com a lista de IPs autorizados (Dashboard → ConfiguraƧƵes → Desenvolvedores).
  • Se uma chave puder ter sido exposta, exclua-a e crie uma nova.