Pular para o conteúdo principal

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 :

HeaderDescrição
Content-TypeConteúdo do retorno. Sempre deve ser enviado como application/json.
AuthorizationToken de acesso, que deve ser gerado utilizando o endpoint /{moduloAPI}/token.
X-DeliveryDireto-IDIdentificador único que representa para qual loja as operações devem ser realizadas.
X-DeliveryDireto-Client-IdIdentificador ú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.

Fluxo de Autenticação

Guias

tip

Veja como autenticar passo a passo com exemplos de código utilizando nossos Guias passo a passo:

Autenticação Admin API

Para obter o access_token da Admin API, você irá precisar das seguintes informações:

  • CLIENT_ID e CLIENT_SECRET.
  • X-DeliveryDireto-ID da loja com a qual se quer integrar.
  • username e password gerados 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-ID deve ser preenchido com o identificador da loja.
  • X-DeliveryDireto-Client-Id deve ser preenchido com o CLIENT_ID recebido através do nosso formulário de cadastro de desenvolvedor parceiro.
  • Content-Type com o valor application/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

JSON da requisição para gerar o token de accesso
{
"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:

Exemplo chamada cURL para gerar o access_token
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:

Exemplo do retorno
{
"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.

Exemplo de uso do access_token nos demais 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:

Exemplo geraçao Token de Acesso para usuário deslogado na Store API
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.

Exemplo chamada que não precisa de um token de usuário logado na Store API
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:

Exemplo geraçao Token de Acesso para usuário logado na Store API
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.

Exemplo Renovação de Token no Admin API
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>"
}'