Pular para o conteúdo principal

Delivery Direto Open Delivery API (1.0.0)

Download OpenAPI specification:Download

Open Delivery propõe resolver o desafio de organizar o fluxo de informações entre estabelecimentos e aplicativos de pedido, estabelecendo um padrão único de comunicação para todos, por meio de um conjunto de APIs REST.

Assim, cardápios e pedidos são padronizados, e as solicitações dos clientes são recebidas em um único lugar, de forma organizada e eficiente, permitindo que o estabelecimento trabalhe com mais parceiros no ambiente de delivery.

Esta documentação está baseada na documentação oficial do Open Delivery, disponível em https://abrasel-nacional.github.io/docs/. Alguns endpoints e campos não foram implementados, pois no Delivery Direto não fazem sentido ou, em alguns casos, não há como implementá-los – por exemplo, os endpoints de logística.

O Delivery Direto possui uma API própria, que pode ser encontrada em https://developers.deliverydireto.com.br/. Nela, você consegue usar os recursos do Delivery Direto para criar, atualizar e consultar pedidos, cardápios, clientes, entre outros.

Authentication

Operações de autenticação utilizando OAuth2.

Gerando um Token de Credenciais do Cliente

Para gerar um token de credenciais do cliente, o Software Service do lojista deve obter o clientId e o clientSecret de uma empresa do Ordering Application e acessar o endpoint /oauth/token.

Utilização

O campo accessToken conterá o token usado para autenticação nas APIs do Open Delivery. Após obter esse token, você deve incluí-lo no cabeçalho 'Authorization' das requisições feitas a endpoints que exigem escopos de credenciais do cliente.

O campo expiresIn indica o tempo de vida do token de acesso, em segundos. Esse token deve ser armazenado em cache e reutilizado em requisições até o momento de sua expiração (ou pouco antes), sem a necessidade de gerá-lo novamente a cada requisição.

curl \n
-H 'authorization: Bearer <TOKEN>' \n
https://{baseURL}/v1/events:polling

Get Access Token

Solicita um novo token de acesso para acessar os recursos da API do Aplicativo de Pedidos. Ref: https://abrasel-nacional.github.io/docs/#tag/authentication/operation/getToken

Authorizations:
oauth
Request Body schema: application/json
client_id
required
string

Identificador do cliente fornecido pelo Aplicativo de Pedidos.

client_secret
required
string

Segredo do cliente fornecido pelo Aplicativo de Pedidos.

grant_type
required
string

O tipo de concessão OAuth. Atualmente, o único tipo de concessão suportado é client_credentials.

Responses

Request samples

Content type
application/json
{
  • "client_id": "3f48c0df-...-ab83835c1fee",
  • "client_secret": "4b208527-...-1e996625ece4",
  • "grant_type": "client_credentials"
}

Response samples

Content type
application/json
{
  • "expires_in": 21600,
  • "access_token": "3d4fcad2...",
  • "token_type": "bearer"
}

Events

Operações de eventos de pedidos. Para receber eventos de novos pedidos, o Software Service do lojista deve consultar regularmente o endpoint de polling, em intervalos de tempo determinados pelo Ordering Application.

  • Quando houver novos eventos, a resposta retornará o código 200 com a lista de eventos.
  • Se não houver novos eventos, a resposta retornará o código 204 (sem conteúdo).

Get New Events

Consulta eventos de pedidos de estabelecimentos associados ao usuário autenticado. Cada evento recebido deste endpoint deve ser devidamente confirmado, caso contrário continuará a ser retornado em solicitações futuras. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersPolling/operation/pollingEvents

Authorizations:
oauth
query Parameters
eventType
Array of strings
Items Enum: "CREATED" "CONFIRMED" "DISPATCHED" "READY_FOR_PICKUP" "PICKED_UP" "DELIVERED" "CANCELLED"

Automaticamente reconhecidos e omitidos da resposta. Deve ser omitido ou não vazio.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Acknowledge Events

Reconhecer um conjunto de eventos, descartando-os de futuras consultas de polling. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersPolling/operation/pollingAcknowledgment

Authorizations:
oauth
Request Body schema: application/json
Array (<= 100 items)
id
required
string

Um identificador único do evento.

orderId
required
string

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

eventType
required
string
Enum: "CREATED" "CONFIRMED" "READY_FOR_PICKUP" "DISPATCHED" "PICKED_UP" "DELIVERED" "CANCELLED"

O tipo de evento.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Confirm

Informa ao Aplicativo de Pedidos que o pedido foi aceito e o preparo será iniciado em breve. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersStatus/operation/confirmOrder

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Request Body schema: application/json
createdAt
string or null <date-time>

Data e hora de criação do pedido.

(Data e hora em formato ISO timestamp UTC).

orderExternalCode
string or null

Código externo do pedido, que pode ser utilizado pelo comércio ou marketplace.

reason
string or null

Campo livre para mais informações sobre a confirmação do pedido, como por exemplo, qual funcionário aceitou o pedido.

preparationTime
integer or null

Indica uma estimativa do tempo de preparação (em minutos) do pedido sendo confirmado.

Responses

Request samples

Content type
application/json
{
  • "createdAt": "2019-08-24T14:15:22Z",
  • "orderExternalCode": "string",
  • "reason": "string",
  • "preparationTime": 0
}

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Ready For Pickup

Informa ao Aplicativo de Pedidos que o pedido está pronto. Para pedidos TAKEOUT, altera o status para IN_TRANSIT. Para pedidos DELIVERY, apenas registra o evento sem alterar o status. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersStatus/operation/orderReady

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Responses

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Picked Up

Informa ao Aplicativo de Pedidos que o pedido foi retirado. ATENÇÃO: Este endpoint só pode ser usado para pedidos do tipo TAKEOUT. Altera o status do pedido para DONE. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersStatus/operation/orderPickedUp

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Responses

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Delivered

Informa ao Aplicativo de Pedidos que o pedido foi entregue. Este endpoint pode ser usado para qualquer tipo de pedido e altera o status para DONE. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersStatus/operation/orderDelivered

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Responses

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Dispatch

Informa ao Aplicativo de Pedidos que o pedido foi despachado. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersStatus/operation/dispatchOrder

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Request Body schema: application/json
object (Order Confirmation)

Information about the endpoints that are hosted at the Ordering Application.

object (Event)

O último evento conhecido da entrega.

object (Problem)

Em caso de problema na entrega, indica o último motivo conhecido.

object (Vehicle)

O veículo utilizado para a entrega.

object (Eta)

Tempos estimados de coleta e entrega.

object (Delivery Person)

Informações sobre a pessoa designada para entregar o pedido.

externalTrackingURL
string or null

URL externa (fornecida pelo serviço de logística) para rastrear a entrega em tempo real (ex.: mapa ou linha do tempo).

Responses

Request samples

Content type
application/json
{
  • "deliveryTrackingInfo": {
    }
}

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Request order cancellation

Solicitar cancelamento do pedido ao Aplicativo de Pedidos. Ref: https://abrasel-nacional.github.io/docs/#tag/ordersCancellation/operation/requestCancellation

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Request Body schema: application/json
reason
required
string

Campo de texto livre indicando o motivo do cancelamento.

code
required
string
Enum: "MOTORBIKE_BAG" "MOTORBIKE_BOX" "CAR" "BICYCLE" "SCOOTER" "VUC"
mode
required
string
Enum: "AUTO" "MANUAL"

Indica se a solicitação de cancelamento foi feita por um processo automático ou manual no Software Service.

outOfStockItems
Array of strings or null

Itens que não estão no estoque do estabelecimento.

invalidItems
Array of strings or null

Itens que não existem no inventário do estabelecimento.

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "code": "MOTORBIKE_BAG",
  • "mode": "AUTO",
  • "outOfStockItems": [
    ],
  • "invalidItems": [
    ]
}

Response samples

Content type
application/json
{
  • "title": "Unexpected error",
  • "status": 500
}

Order Details

Operações relacionadas aos detalhes dos pedidos. Antes de confirmar ou cancelar um pedido, é necessário obter os detalhes do pedido para que o usuário do Software Service do lojista possa verificar:

  1. Se possui todos os itens necessários para preparação do pedido
  2. e está disponível para realizar a entrega no endereço informado

Como obter os detalhes

O Software Service pode recuperar todas as informações de um pedido através do endpoint GET /orders/{id}.

Códigos de resposta:

  • 200: Retorna os detalhes completos do pedido
  • 404: Retornado quando:
  • O ID do pedido é inválido, ou
  • O pedido está expirado (de acordo com a política do Ordering Application)

Get Order Details

Endpoint para consultar os detalhes de um pedido. Ref.: https://abrasel-nacional.github.io/docs/#tag/ordersDetails

Authorizations:
oauth
path Parameters
orderId
required
string <uuid>
Example: 4578731a-b6f5-4931-95fd-5527dcc8c1bd

O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos.

Responses

Response samples

Content type
application/json
{
  • "id": "4578731a-b6f5-4931-95fd-5527dcc8c1bd",
  • "type": "DELIVERY",
  • "displayId": "string",
  • "createdAt": "2024-03-20T14:30:00Z",
  • "orderTiming": "INSTANT",
  • "preparationStartDateTime": "2024-03-20T14:35:00Z",
  • "merchant": {
    },
  • "items": [
    ],
  • "total": {
    },
  • "payments": {
    },
  • "sourceAppId": "fb08c6b7-a844-43c6-b104-98e70c00fc20",
  • "salesChannel": "string",
  • "virtualBrand": "string",
  • "lastEvent": "CREATED",
  • "otherFees": [
    ],
  • "discounts": [
    ],
  • "taxInvoice": {
    },
  • "customer": {
    },
  • "schedule": {
    },
  • "orderPriority": "PRIORITY1",
  • "delivery": {
    },
  • "takeout": {
    },
  • "indoor": {
    },
  • "sendDelivered": true,
  • "sendPickedUp": true,
  • "sendTracking": true,
  • "extraInfo": "string"
}