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.
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:
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
- Payload
{- "client_id": "3f48c0df-...-ab83835c1fee",
- "client_secret": "4b208527-...-1e996625ece4",
- "grant_type": "client_credentials"
}Response samples
- 200
- 401
- 503
{- "expires_in": 21600,
- "access_token": "3d4fcad2...",
- "token_type": "bearer"
}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:
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
- 200
- 400
- 401
- 403
- 404
- 503
[- {
- "eventId": "string",
- "eventType": "CREATED",
- "orderId": "string",
- "orderURL": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "sourceAppId": "string",
- "virtualBrand": "string"
}
]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:
Request Body schema: application/json
| 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
- Payload
[- {
- "id": "string",
- "orderId": "string",
- "eventType": "CREATED"
}
]Response samples
- 400
- 401
- 403
- 404
- 503
{- "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:
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
- Payload
{- "createdAt": "2019-08-24T14:15:22Z",
- "orderExternalCode": "string",
- "reason": "string",
- "preparationTime": 0
}Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "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:
path Parameters
| orderId required | string <uuid> O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos. |
Responses
Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "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:
path Parameters
| orderId required | string <uuid> O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos. |
Responses
Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "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:
path Parameters
| orderId required | string <uuid> O identificador único do pedido. O ID do pedido é gerado pelo Aplicativo de Pedidos. |
Responses
Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "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:
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. | |||||||||||||
| |||||||||||||
Responses
Request samples
- Payload
{- "deliveryTrackingInfo": {
- "event": {
- "type": "DELIVERY_ONGOING",
- "datetime": "2019-08-24T14:15:22Z",
- "message": "string"
}, - "problem": {
- "reason": "DELIVERYPERSON_OCCURRENCE",
- "datetime": "2019-08-24T14:15:22Z",
- "message": "string"
}, - "vehicle": {
- "type": [
- "MOTORBIKE_BAG"
], - "licencePlate": "string"
}, - "eta": {
- "deliveryEtaInMinutes": 0,
- "deliveryEtaDatetime": "2019-08-24T14:15:22Z",
- "message": "string",
- "maxDeliveryTime": "2019-08-24T14:15:22Z"
}, - "deliveryPerson": {
- "id": "string",
- "name": "string",
- "pictureURL": "string"
}, - "externalTrackingURL": "string"
}
}Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "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:
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
- Payload
{- "reason": "string",
- "code": "MOTORBIKE_BAG",
- "mode": "AUTO",
- "outOfStockItems": [
- "string"
], - "invalidItems": [
- "string"
]
}Response samples
- 400
- 401
- 403
- 404
- 422
- 503
{- "title": "Unexpected error",
- "status": 500
}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:
- Se possui todos os itens necessários para preparação do pedido
- 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:
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
- 200
- 400
- 401
- 403
- 404
- 503
{- "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": {
- "id": "4578731a-b6f5-4931-95fd-5527dcc8c1bd",
- "name": "string"
}, - "items": [
- {
- "id": "4578731a-b6f5-4931-95fd-5527dcc8c1bd",
- "name": "X-Burger Especial",
- "externalCode": "SKU123",
- "unit": "UN",
- "quantity": 2,
- "unitPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "totalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "index": 1,
- "ean": "string",
- "specialInstructions": "Sem cebola",
- "originalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "scalePriceApplied": false,
- "optionsPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "subtotalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "indoor": {
- "productionPoint": "string"
}, - "options": [
- {
- "id": "4578731a-b6f5-4931-95fd-5527dcc8c1bd",
- "name": "Bacon Extra",
- "externalCode": "OPT001",
- "unit": "UN",
- "quantity": 1,
- "unitPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "totalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "index": 1,
- "ean": "7891234567890",
- "originalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "subtotalPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "specialInstructions": "string"
}
]
}
], - "total": {
- "itemsPrice": {
- "value": 10.5,
- "currency": "BRL"
}, - "otherFees": {
- "value": 10.5,
- "currency": "BRL"
}, - "discount": {
- "value": 10.5,
- "currency": "BRL"
}, - "orderAmount": {
- "value": 10.5,
- "currency": "BRL"
}
}, - "payments": {
- "prepaid": 50,
- "pending": 25.5,
- "methods": [
- {
- "value": 50,
- "currency": "BRL",
- "type": "PREPAID",
- "method": "CREDIT",
- "brand": "VISA",
- "methodInfo": "4 parcelas sem juros",
- "transaction": {
- "authorizationCode": "123456",
- "acquirerDocument": "12345678000123"
}, - "changeFor": 100
}
]
}, - "sourceAppId": "fb08c6b7-a844-43c6-b104-98e70c00fc20",
- "salesChannel": "string",
- "virtualBrand": "string",
- "lastEvent": "CREATED",
- "otherFees": [
- {
- "name": "Taxa de Entrega",
- "type": "DELIVERY_FEE",
- "receivedBy": "MERCHANT",
- "price": {
- "value": 10.5,
- "currency": "BRL"
}, - "receiverDocument": "string",
- "observation": "string"
}
], - "discounts": [
- {
- "amount": {
- "value": 10.5,
- "currency": "BRL"
}, - "target": "DELIVERY_FEE",
- "sponsorshipValues": [
- {
- "name": "MARKETPLACE",
- "amount": {
- "value": 10.5,
- "currency": "BRL"
}, - "discountCode": "string"
}
], - "targetId": "string"
}
], - "taxInvoice": {
- "issued": false,
- "taxInvoiceURL": "string"
}, - "customer": {
- "id": "4578731a-b6f5-4931-95fd-5527dcc8c1bd",
- "name": "string",
- "phone": {
- "number": "string",
- "extension": "string"
}, - "ordersCountOnMerchant": 5,
- "documentNumber": "12345678900",
- "email": "string"
}, - "schedule": {
- "scheduledDateTimeStart": "2024-03-20T15:30:00.000Z",
- "scheduledDateTimeEnd": "2024-03-20T16:00:00.000Z"
}, - "orderPriority": "PRIORITY1",
- "delivery": {
- "deliveredBy": "MERCHANT",
- "deliveryAddress": {
- "country": "BR",
- "state": "BR-SP",
- "city": "São Paulo",
- "district": "Vila Mariana",
- "street": "Rua Vergueiro",
- "number": "1234",
- "formattedAddress": "Rua Vergueiro, 1234 - Vila Mariana, São Paulo - SP",
- "postalCode": "04101-000",
- "coordinates": {
- "latitude": -23.5506,
- "longitude": -46.6333
}, - "complement": "Apto 123",
- "reference": "Próximo ao metrô Vila Mariana"
}, - "estimatedDeliveryDateTime": "2024-03-20T15:30:00.000Z",
- "deliveryDateTime": "2024-03-20T15:25:00.000Z",
- "pickupCode": "string"
}, - "takeout": {
- "mode": "DEFAULT",
- "takeoutDateTime": "2024-03-20T15:30:00.000Z"
}, - "indoor": {
- "mode": "DEFAULT",
- "indoorDateTime": "2024-03-20T15:30:00.000Z",
- "place": "string",
- "tab": "string",
- "seat": "string",
- "waiterCode": "string"
}, - "sendDelivered": true,
- "sendPickedUp": true,
- "sendTracking": true,
- "extraInfo": "string"
}