Como Autenticar na Store API
info
Caso não esteja familiarizado com nosso processo de autenticação, recomendamos a leitura da sessão Fluxo de Autenticação.
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.