Token de acesso
POST/oauth/token
Troca o client_id e o client_secret da software house por um token de acesso de 10 minutos (OAuth 2.0, client_credentials). É a única rota que não pede token.
Requisição
O corpo pode ser JSON (application/json) ou formulário (application/x-www-form-urlencoded).
As credenciais vão de um destes jeitos:
- HTTP Basic (recomendado): header
Authorization: Basic base64(client_id:client_secret). Com Basic,client_ideclient_secretdo corpo são ignorados. - No corpo: campos
client_ideclient_secret.
| Campo do corpo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
grant_type | string | Sim | Sempre client_credentials. |
client_id | string | Sem Basic | ci_ + 22 caracteres. |
client_secret | string | Sem Basic | cs_ + 43 caracteres. |
Exemplos
HTTP Basic
curl -X POST "$BASE_URL/oauth/token" \
-u "$CLIENT_ID:$CLIENT_SECRET" \
-H "Content-Type: application/json" \
-d '{"grant_type":"client_credentials"}'
Credenciais no corpo
curl -X POST "$BASE_URL/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=$CLIENT_ID" \
-d "client_secret=$CLIENT_SECRET"
Resposta 200
{
"message": "Token emitido",
"result": true,
"data": {
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 600
},
"error": null
}
Campo de data | Tipo | Descrição |
|---|---|---|
access_token | string | Token para o header Authorization: Bearer. |
token_type | string | Sempre Bearer. |
expires_in | number | Validade em segundos (600). |
Erros
| Código | Quando |
|---|---|
400 | grant_type diferente de client_credentials, campo desconhecido ou campo grande demais. Não conta como falha de login. |
401 | Não autorizado: credencial ausente, fora do formato ou errada, software house revogada ou com acesso vencido. Conta como falha do IP. |
429 | IP acima de 15 pedidos/min, IP bloqueado por 5 falhas em 15 min, mais de 10 tokens na hora para a software house ou logins simultâneos demais. Veja o Retry-After. |
503 | Serviço temporariamente indisponível. Tente de novo em alguns segundos. |
Detalhes em Limites de uso.
:::tip Quando pedir um token novo
Guarde o token e o horário em que ele vence. Peça outro um minuto antes de vencer ou ao receber 401 de outra rota. Não peça um token por chamada: a cota é de 10 por hora.
:::