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_insegundos (15 minutos). Reutilize-o até expirar e depois solicite um novo; não hÔ refresh token. scopeindica as permissões do token. Por padrão tem todas as permissões da chave; você pode enviarscopena requisição para pedir menos (valores separados por espaço, como retornados emscope).- 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": "..."}):
| Status | error | Causa |
|---|---|---|
400 | invalid_request | Parâmetros ausentes ou repetidos, ou as chaves foram enviadas no cabeçalho e no corpo ao mesmo tempo. |
400 | unsupported_grant_type | grant_type não é client_credentials. |
400 | invalid_scope | O scope solicitado não estÔ concedido à chave. |
401 | invalid_client | As chaves estĆ£o ausentes, sĆ£o invĆ”lidas ou foram excluĆdas. |
403 | access_denied | Seu workspace tem uma lista de IPs permitidos e a requisição vem de outro endereço. |
503 | temporarily_unavailable | Tente novamente em alguns segundos. |
Erros de autenticação
| Status | Tipo | Causa |
|---|---|---|
401 | UNAUTHORIZED | O cabeƧalho Authorization estĆ” ausente, ou as chaves sĆ£o invĆ”lidas ou foram excluĆdas. |
401 | UNAUTHORIZED | O token Bearer Ʃ invƔlido ou expirou, ou o HTTP Basic estƔ desativado para a chave. |
403 | IP_NOT_ALLOWED | Seu 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.