Fluxo de Autenticação
O processo de autenticação em nossas APIs ocorre em todas as chamadas realizadas em nossos endpoints.
Para realizar requisições em nossos endpoints, é necessário passar as seguintes informações via headers :
| Header | Descrição |
|---|---|
Content-Type | Conteúdo do retorno. Sempre deve ser enviado como application/json. |
Authorization | Token de acesso, que deve ser gerado utilizando o endpoint /{moduloAPI}/token. |
X-DeliveryDireto-ID | Identificador único que representa para qual loja as operações devem ser realizadas. |
X-DeliveryDireto-Client-Id | Identificador único da sua integração, representado pelo parâmetro CLIENT_ID. |
info
Para obter o X-DeliveryDireto-ID de uma loja é necessário solicitar diretamente para a loja que deseja a integração.
Também é necessário que a loja tenha o módulo "Chaves de API" ativado no Delivery Direto para gerar as credenciais de acesso (username e password) através do Gerador de Chaves API.
Veja os Requisitos da Loja.
Com esses parâmetros você poderá gerar o access_token (token de acesso) e assim estar habilitado a realizar as operações na API.
Guias
tip
Veja como autenticar passo a passo com exemplos de código utilizando nossos Guias passo a passo:
📄️ Como Autenticar na Admin API
📄️ Como Autenticar na Store API
Autenticação Admin API
Para obter o access_token da Admin API, você irá precisar das seguintes informações:
CLIENT_IDeCLIENT_SECRET.X-DeliveryDireto-IDda loja com a qual se quer integrar.usernameepasswordgerados através do gerenciador de acessos API.
Tendo essas informações em mãos, você poderá fazer uma chamada POST para https://deliverydireto.com.br/admin-api/token informando os seguintes parâmetros no header:
X-DeliveryDireto-IDdeve ser preenchido com o identificador da loja.X-DeliveryDireto-Client-Iddeve ser preenchido com oCLIENT_IDrecebido através do nosso formulário de cadastro de desenvolvedor parceiro.Content-Typecom o valorapplication/json.
No corpo da requisição (body) deve conter um JSON no seguinte formato:
info
Para gerar o token de acesso da Admin API deve-se usar o grant_type com o valor password
{
"grant_type": "password",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRECT>",
"username": "<email gerado através do gerenciador de acessos API>",
"password": "<senha gerado através do gerenciador de acessos API>"
}
Exemplo de chamada para gerar o token de acesso utilizando cURL:
curl --location --request POST 'https://deliverydireto.com.br/admin-api/token' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "password",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRECT>",
"username": "<email gerado através do gerenciador de acessos API>",
"password": "<senha gerado através do gerenciador de acessos API>"
}'
Após a chamada ter sido executada, uma resposta será retornada com o access_token e o refresh_token.
No corpo da requisição (body) deve conter um JSON no seguinte formato:
{
"token_type": "Bearer",
"expires_in": 21600,
"access_token": "eyJ0eX...",
"refresh_token": "def5..."
}
info
O access_token deve estar presente no header de todas as demais chamadas dos endpoints da Admin API.
curl --location --request GET 'https://deliverydireto.com.br/admin-api/v1/orders' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token>'
Autenticação Store API
A autenticação para a API da loja funciona de forma semelhante ao do admin.
Caso você necessite de informações que são fornecidas somente ao usuário logado na loja (como a criação de pedidos pelo cliente), é necessário operar da mesma forma que na autenticação do admin.
Token de Acesso de Usuário Deslogado
Caso você queira obter informações que não necessitem de usuário logado, basta utilizar o grant_type com o valor client_credentials:
curl --location --request POST 'https://deliverydireto.com.br/store-api/token' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "client_credentials",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRECT>",
}'
tip
Note que que em grant_type, ao utilizar o valor client_credentials, é dispensado o envio dos parâmetros username e password no body.
O access_token retornado dá permissão para o uso de endpoints que não necessitam de autenticação do cliente final, tais como consulta do menu, consulta de status da loja, etc.
Abaixo segue um exempo de chamada que lista todos os tipos de cartões de crédito aceitos pela loja.
curl --location --request GET 'https://deliverydireto.com.br/store-api/v1/stores/creditcards/accepted-brands' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <access_token>'
Token de Acesso de Usuário Logado
Para gerar um token de acesso de um "usuário logado", basta utilizar o grant_type com o valor password:
curl --location --request POST 'https://deliverydireto.com.br/store-api/token' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "password",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRECT>",
"username": "<email do cliente final da loja>",
"password": "<senha do cliente final da loja>"
}'
Renovação do token
O token tem validade de 6 horas e, ao expirar, é recomendado que se utilize o refresh_token para obter um novo token, assim o cliente final não precisará inserir login e senha novamente.
O refresh_token pode ser utilizado com sucesso somente uma vez e tem validade de 1 mês (31 dias completos). Caso expire, na Store API será necessário exigir o login e senha do cliente final para se obter um novo token e um novo refresh_token.
Vale ressaltar que, para que seja possível realizar os acessos aos endpoints, é necessário que o username e o password sejam credenciais válidas para a loja representada pelo X-DeliveryDireto-ID.
curl --location --request POST 'https://deliverydireto.com.br/admin-api/token' \
--header 'Content-Type: application/json' \
--header 'X-DeliveryDireto-ID: <X-DeliveryDireto-ID da loja>' \
--header 'X-DeliveryDireto-Client-Id: <CLIENT_ID>' \
--data-raw '{
"grant_type": "refresh_token",
"client_id": "<CLIENT_ID>",
"client_secret": "<CLIENT_SECRECT>",
"refresh_token": "<REFRESH_TOKEN>"
}'