Download OpenAPI specification:Download
Está API tem como objetivo, disponibilizar as informações dos nossos parceiros, tais como pedidos, catalogo de produtos entre outros
Com este método, será possível realizar a autenticação na API utilizando protocolo OAuth2. Com isso retornará um access_token que irá dar permissão de acesso a API.
| grant_type required | string Example: grant_type=client_credentials Deverá sempre ser utilizado |
| scope required | string Example: scope=orders/read Atualmente temos somente o |
| client_id required | string O id do cliente. |
| client_secret required | string A secret do cliente. |
Os endpoints do grupo Events da Seller Public API expõe o fluxo de sincronização assíncrona de mudanças de status de pedidos no Zé Delivery por meio de consultas periódicas (polling) e de confirmação de consumo (ack) dos eventos já processados. É voltado a parceiros que precisam acompanhar o ciclo dos pedidos sem depender de webhook.
O fluxo típico é consultar eventos pendentes, processar cada evento na sua aplicação e confirmar o consumo para que esses eventos não voltem nas próximas consultas.
flowchart LR
P["GET /events:polling — lista eventos pendentes"] --> B["Sua aplicação processa cada evento"]
B --> A["POST /events/acknowledgment - Sua aplicação confirma que processou o evento"]
A --> P
Expor eventos de alteração de pedidos (CREATED, CONFIRMED, DISPATCHED, CANCELLED, CONCLUDED) via polling.
Para sincronização assíncrona de eventos: consumir mudanças de status de pedidos. Quando o parceiro não usa webhook e prefere polling.
Não usar para consultas ad-hoc de detalhes do pedido (chamar /orders/{orderNumber} para detalhes). Não usar sem informar x-polling-merchants header com os merchantIds.
Requer header x-polling-merchants (lista de merchant ids) e Authorization. Pode filtrar por eventType. Schema de resposta: array de EventPollingOutput.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /events:polling
API-->>Parceiro: 200 — eventos ainda não confirmados
| eventType | Array of strings (OrderStatusEnum) Items Enum: "CREATED" "CONFIRMED" "DISPATCHED" "CANCELLED" "CONCLUDED" "EDITED" Example: eventType=CREATED Status dos eventos do pedido |
| x-polling-merchants required | array Example: 123,1234 Os ids dos estabelecimentos requirido. |
| Authorization required | string token de autenticação para acessar o recurso |
[- {
- "eventId": "3e7224ac-bec0-4fe1-88d1-6348c8149c44",
- "orderId": 123456789,
- "eventType": "CREATED",
- "sourceAppId": "",
- "createdAt": "2021-09-15T19:51:57.851343"
}
]Acknowledge — notificar a API que eventos foram consumidos para que não sejam retornados novamente no polling.
Após consumir com sucesso eventos obtidos por GET /events:polling, envie ack com lista de EventAcknowledgementInput.
Não usar para sinalizar falha de processamento (ack indica consumo bem-sucedido).
Requer Authorization. Recebe array de objetos com id, orderId, eventType. Retorna 202 informando que vai ser processada a requisição.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Note over Parceiro,API: Após processar eventos obtidos em GET /events:polling
Parceiro->>API: POST /events/acknowledgment
API-->>Parceiro: 202 — requisição aceita (eventos não voltam no próximo polling)
| Authorization required | string token de autenticação para acessar o recurso |
| id | string O número do evento na plataforma |
| orderId | number O número do pedido na plataforma |
| eventType | string (OrderStatusEnum) Enum: "CREATED" "CONFIRMED" "DISPATCHED" "CANCELLED" "CONCLUDED" "EDITED" Os status possíveis do pedido, |
[- {
- "id": "3e7224ac-bec0-4fe1-88d1-6348c8149c44",
- "orderId": 123456789,
- "eventType": "CREATED"
}
]{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Esta operação não existe na Zé Seller Public API como rota a ser chamada por você. Ela documenta a requisição HTTP que a plataforma envia para a URL cadastrada em PATCH /webhooks quando a inscrição inclui ORDER_EVENTS e há um evento a entregar.
Método e corpo: POST com Content-Type: application/json e corpo conforme o schema ao lado.
Resposta esperada: seu endpoint deve responder com código HTTP 2xx para indicar recebimento processado; outros códigos podem implicar políticas de retentativa conforme a plataforma (404 não há retentativa e para os demais erros há 3 tentativas).
Nota: o método publicado neste host (POST /callbacks/order-events-webhook) existe apenas para fins de documentação; não é o caminho que recebe o webhook — o caminho é o da sua própria URL configurada.
Nota: use os headers X-App-Signature e X-App-Timestamp para validar a requisição.
sequenceDiagram
participant SPA as Zé Seller Public API
participant API as Seu Sistema
SPA->>API: POST https://seu.webhook.com
Note right of API: Processa a requisição
API-->>SPA: 200 Evento processado com sucesso
| X-App-Signature required | string Example: sha256=a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456 é a assinatura de integridade da requisição: calculada com SHA-256 sobre o timestamp e o payload bruto do JSON recebidos no corpo da requisição, usando como segredo o valor |
| X-App-Timestamp required | number Example: 1714857600 Timestamp da requisição em segundos (Unix timestamp). Utilize para validar o |
| Content-Type required | string Value: "application/json" Tipo de mídia do corpo. |
| clientId required | string <uuid> Identificador do cliente OAuth na plataforma. |
| eventType required | string (WebhookSubscriptionType) Value: "ORDER_EVENTS" Tipo de inscrição do webhook. |
| correlationId required | string Identificador de correlação da entrega (rastreabilidade entre tentativas e logs). |
object Carga útil específica do tipo de notificação. Para |
{- "clientId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
- "eventType": "ORDER_EVENTS",
- "correlationId": "9f2e4c1a-8b7d-4e6f-9a0b-1c2d3e4f5a6b",
- "data": {
- "eventId": "3e7224ac-bec0-4fe1-88d1-6348c8149c44",
- "eventType": "CONFIRMED",
- "orderId": 123456789,
- "createdAt": "2021-09-15T19:51:57.851343Z",
- "merchantId": "merchant-uuid"
}
}Os endpoints do grupo Logistics da Seller Public API concentram o ciclo de vida operacional da entrega de um pedido no Zé Delivery: consulta dos detalhes de entrega, rastreamento passo a passo do entregador (coleta no PDV, início de rota, chegada ao destino e finalização), validação do código de entrega e cancelamento pelo entregador quando a entrega não puder ser concluída. Todas as rotas exigem autenticação e referenciam o pedido pelo identificador na plataforma.
pickupCode e endereço de destino.deliveryCode) apresentado no momento da retirada ou entrega./orders/{orderNumber}/confirm, /requestCancellation, /cancel).client_credentials).O fluxo típico começa com a consulta dos detalhes de entrega, que fornece o pickupCode necessário para a coleta no PDV. Em seguida, o entregador coleta o pedido, inicia a rota, sinaliza chegada ao destino e valida o código de entrega. Por fim, finaliza a entrega com sucesso ou cancela por motivo operacional.
flowchart TD
G["GET /logistics/delivery/{orderNumber} — detalhes da entrega"] --> P["POST /logistics/orderPicked/{orderNumber} — pedido coletado no PDV"]
P --> SR["POST /logistics/startRoute/{orderNumber} — início de rota"]
SR --> A["POST /logistics/arrived/{orderNumber} — chegada ao destino"]
A --> VC["POST /logistics/validateCode/{orderNumber} — validar deliveryCode"]
VC --> D{"Entrega concluída?"}
D -->|Sim| F["POST /logistics/finishDelivery/{orderNumber} — finalizar entrega"]
D -->|Não, problema operacional| C["POST /logistics/cancel/{orderNumber} — cancelamento pelo entregador"]
Recuperar detalhes de entrega de um pedido (nome do cliente, entregador, preços, pickupCode, endereço).
Utilize este endpoint somente quando:
pickupCode para coleta do pedido no PDV.Este endpoint não deve ser utilizado para:
GET /orders/{orderNumber}).Requer header Authorization: Bearer <token>. Schema de resposta: DeliveryDetailsOutput.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /logistics/delivery/{orderNumber}
API-->>Parceiro: 200 com detalhes da entrega (entregador, pickupCode, endereço)
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
{- "orderDisplayId": "123457890",
- "customerName": "Maria",
- "deliveryMan": {
- "email": "Maria@ze.delivery"
}, - "merchant": {
- "id": "Maria@ze.delivery"
}, - "deliveryPrice": {
- "price": {
- "value": 10,
- "currency": "R$"
}
}
}Informar que o entregador pegou o pedido no PDV (marcar pickup).
Utilize este endpoint somente quando:
email do entregador estiver disponível.Este endpoint não deve ser utilizado para:
/logistics/arrived/{orderNumber} ou /logistics/finishDelivery/{orderNumber}.Requer header Authorization: Bearer <token>. Retorna 202 quando aceito para processamento. Schema do body: PickedOrderInput.
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/orderPicked/{orderNumber}
Note right of API: Body: { email }
API-->>Entregador: 202 Aceito para processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| email required | string E-mail do entregador |
{- "email": "string"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Informar início de rota/coleta pelo entregador (rota iniciada).
Utilize este endpoint somente quando:
email do entregador estiver disponível.Este endpoint não deve ser utilizado para:
/logistics/arrived/{orderNumber}./logistics/finishDelivery/{orderNumber}.Requer header Authorization: Bearer <token>. Retorna 202 quando aceito para processamento. Schema do body: startRouteOrderInput.
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/startRoute/{orderNumber}
Note right of API: Body: { email }
API-->>Entregador: 202 Aceito para processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| email required | string E-mail do entregador |
{- "email": "string"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Informar que o pedido chegou ao destino (entregador chegou no endereço do cliente).
Utilize este endpoint somente quando:
email do entregador estiver disponível.Este endpoint não deve ser utilizado para:
/logistics/finishDelivery/{orderNumber}.Requer header Authorization: Bearer <token>. Body com email do entregador é obrigatório. Retorna 202 quando aceito para processamento. Schema do body: ArrivedOrderInput.
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/arrived/{orderNumber}
Note right of API: Body: { email }
API-->>Entregador: 202 Aceito para processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| email required | string E-mail do entregador |
{- "email": "string"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Validar o código de entrega (deliveryCode) informado no momento da entrega ou retirada do pedido.
Utilize este endpoint somente quando:
deliveryCode informado pelo entregador ou cliente é válido para o pedido em questão.Este endpoint não deve ser utilizado para:
/logistics/finishDelivery/{orderNumber} após validar o código.Requer header Authorization: Bearer <token>. Body obrigatório com deliveryCode. Retorna 200 em caso de código válido. Schema do body: ValidateCodeInput.
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/validateCode/{orderNumber}
Note right of API: Body: { deliveryCode }
API-->>Entregador: 200 Código validado com sucesso
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| deliveryCode required | string O código de entrega do pedido |
{- "deliveryCode": "0406"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Marcar o pedido como entregue (finalizar rota e status do pedido).
Utilize este endpoint somente quando:
email do entregador estiver disponível; lat/long são opcionais para registro de geolocalização.Este endpoint não deve ser utilizado para:
/logistics/cancel/{orderNumber} para cancelamentos pelo entregador.Requer header Authorization: Bearer <token>. Retorna 202 quando aceito para processamento. Schema do body: OrderDeliveredInput.
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/finishDelivery/{orderNumber}
Note right of API: Body: { email, lat?, long? }
API-->>Entregador: 202 Pedido marcado como entregue
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| email required | string E-mail do entregador |
| lat | number Latitude da posição do entregador |
| long | number Longitude da posição do entregador |
{- "email": "string",
- "lat": 0,
- "long": 0
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Permitir que o entregador solicite o cancelamento do pedido por motivos operacionais (ex.: NOT_FOUND, RISK_AREA).
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
/orders/{orderNumber}/cancel conforme escopo e permissões do parceiro./orders/{orderNumber}/requestCancellation.Requer header Authorization: Bearer <token>. Body obrigatório com email do entregador e reason (enum de motivos, ex.: NOT_FOUND, RISK_AREA).
sequenceDiagram
participant Entregador as Seu sistema (entregador)
participant API as Zé Seller Public API
Entregador->>API: POST /logistics/cancel/{orderNumber}
Note right of API: Body: { email, reason }
API-->>Entregador: 202 Cancelamento aceito para processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| email required | string E-mail do entregador |
| reason required | string Enum: "SYSTEMIC_ISSUES" "RISK_AREA" "NOT_FOUND" "PAYMENT_ISSUE" "INCORRECT" "OTHERS" Os códigos de razão de cancelamento, |
{- "email": "string",
- "reason": "RISK_AREA"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Os endpoints do grupo Merchants da Seller Public API tratam do estabelecimento (PDV / seller) no Zé Delivery: consulta de informações operacionais e cadastrais do merchant, abertura e fechamento da loja (disponibilidade operacional do ponto) e consulta de KPIs operacionais agregados por período para dashboards e monitoramento. Complementam o grupo Products, que cobre catálogo e disponibilidade de itens; aqui o foco é o negócio como um todo e métricas do PDV, não a gestão SKU a SKU.
As três rotas são independentes: você pode consultar dados do merchant, alterar disponibilidade da loja ou obter KPIs conforme a necessidade do seu fluxo, sem ordem fixa obrigatória entre elas.
flowchart TD
G["GET /merchants/{merchantId} — informações do estabelecimento"]
A["POST /merchants/{merchantId}/availability — abrir ou fechar a loja"]
K["GET /merchants/{merchantId}/kpis — indicadores operacionais por período"]
Abrir ou fechar um estabelecimento (operational availability) no Zé.
Para operação de abertura (operation: AVAILABLE) ou fechamento (operation: CLOSED) do PDV com razão obrigatória quando CLOSED.
Não usar para alterar disponibilidade de produtos individuais (use products/availability).
Body com operation enum (AVAILABLE | CLOSED); reasons obrigatório quando CLOSED. Requer Authorization. Retornos: 200/422 conforme validação.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /merchants/{merchantId}/availability
API-->>Parceiro: 200 ou 422 conforme validação
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| operation required | string Enum: "CLOSED" "AVAILABLE" Closed para fechar estabelecimento, e avaiable para abrir |
| reasons | string Razao pela qual esta realizando operaçao. Campo obrigatorio quando for operação closed |
{- "operation": "AVAILABLE",
- "reasons": "INTERNET"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Recuperar informações do estabelecimento (status, availability, basicInfo, idealPortfolio, etc).
Quando precisar do status operacional do PDV e metadados úteis para operação/decisões.
Não usar como substituto de integrações profundas de catálogo/WMS; dados são informativos.
Requer Authorization. Schema de resposta: MerchantInformationResponse. Campos como idealPortfolio fornecem métricas (totalProducts, totalActiveProducts).
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /merchants/{merchantId}
API-->>Parceiro: 200 com dados do estabelecimento
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
{- "status": "AVAILABLE",
- "basicInfo": {
- "idealPortfolio": {
- "totalProducts": 0,
- "totalActiveProducts": 0,
- "activeProductsPercentage": 0
}
}
}Permitir que o integrador consulte, de forma programática, os principais KPIs operacionais de um PDV (seller) para utilização em dashboards próprios, monitoramento de performance e automações. O endpoint fornece métricas consolidadas por período (granularidade) e data de referência, retornando indicadores estruturados por grupo.
Utilize este endpoint somente quando: O integrador precisar consultar KPIs consolidados de um PDV específico. For necessário alimentar dashboards externos ou sistemas próprios com métricas de desempenho do seller. Houver necessidade de analisar métricas agregadas por período (MONTH, WEEK, DAY ou HOUR).
Este endpoint não deve ser utilizado para: Consultar detalhes de pedidos individuais (use endpoints de Orders). Criar, atualizar ou enviar dados de performance. Substituir endpoints de catálogo, estoque ou operações transacionais.
Este endpoint é somente leitura (read-only). O acesso exige autenticação OAuth2 (client_credentials) e permissionamento específico para leitura de KPIs. O retorno é consolidado por PDV e por período — não há detalhamento por pedido. A granularidade e a data de referência são obrigatórias e impactam diretamente o cálculo das métricas. O integrador deve respeitar o rate limit configurado para a aplicação. O endpoint faz parte da Seller Public API (catálogo padrão) e não está relacionado a catálogo externo, marketplace ou integrações de parceiro customizadas.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /merchants/{merchantId}/kpis
API-->>Parceiro: 200 com KPIs agregados por período
| merchantId required | string Example: 1234 O id do estabelecimento |
| granularity | string Enum: "HOUR" "DAY" "WEEK" "MONTH" A granularidade dos KPIs a serem retornados. |
| referenceDate | string <date> Example: referenceDate=2026-03-06 Data de referência para os KPIs (formato ISO 8601: YYYY-MM-DD). |
| Authorization required | string token de autenticação para acessar o recurso |
{- "kpis": {
- "general": {
- "validOrders": {
- "type": "INTEGER",
- "value": "26"
}, - "fillRate": {
- "type": "PERCENTAGE",
- "value": "92.86"
}, - "promoSellerActivationRate": {
- "type": "PERCENTAGE",
- "value": "4.08"
}, - "merchantAvailabilityRate": {
- "type": "PERCENTAGE",
- "value": "98.5"
}, - "tenMinutesDeliveryReleaseRate": {
- "type": "PERCENTAGE",
- "value": "72.73"
}, - "deliveryTrackingAccuracyRate": {
- "type": "PERCENTAGE",
- "value": "90.91"
}, - "thirtyFiveMinutesDeliveryAccurateRate": {
- "type": "PERCENTAGE",
- "value": "90.0"
}, - "deliveryOrderAggroupmentRate3More": {
- "type": "PERCENTAGE",
- "value": "12.3"
}, - "orderRating": {
- "type": "FLOAT",
- "value": "5.0"
}, - "idealPortfolioRate": {
- "type": "PERCENTAGE",
- "value": "35.37"
}
}, - "turbo": {
- "validTurboOrders": {
- "type": "INTEGER",
- "value": "4"
}, - "turboOrderRating": {
- "type": "FLOAT",
- "value": "5.0"
}, - "turboFillRate": {
- "type": "PERCENTAGE",
- "value": "100.0"
}, - "turboTrackingAccuracyRate": {
- "type": "PERCENTAGE",
- "value": "100.0"
}, - "fiveMinutesTurboDeliveryReleaseRate": {
- "type": "PERCENTAGE",
- "value": "25.0"
}, - "fifteenMinutesTurboAccurateRate": {
- "type": "PERCENTAGE",
- "value": "75.0"
}
}, - "updatedDate": "2026-03-06T18:54:53.887Z"
}
}Os endpoints do grupo Orders da Seller Public API concentram o ciclo de vida operacional de um pedido no Zé Delivery: consulta dos detalhes a partir do número do pedido na plataforma, confirmação de aceite pelo estabelecimento ou parceiro, solicitação de cancelamento ou rejeição com código de motivo e cancelamento direto em fluxo administrativo ou operacional. Quando habilitados para a sua integração, entram ainda a edição e a restauração de itens após a confirmação. Todas as rotas exigem autenticação e referenciam o pedido pelo identificador na plataforma.
client_credentials).O fluxo típico é consultar o pedido, confirmar ou solicitar cancelamento; em paralelo ao seu modelo de negócio pode existir cancelamento direto. Depois da confirmação, quando aplicável, seguem passos opcionais de atualização de itens e restauração.
flowchart TD
G["GET /orders/{orderNumber} — detalhes do pedido"] --> D{"Decisão do parceiro"}
D -->|Aceitar| C["POST /orders/{orderNumber}/confirm — aceite do pedido"]
D -->|Rejeitar ou solicitar cancelamento| R["POST /orders/{orderNumber}/requestCancellation — solicitação com motivo"]
D -->|Cancelamento direto autorizado| X["POST /orders/{orderNumber}/cancel — cancelamento operacional"]
C --> I{"Ajustar itens?"}
I -->|Sim| U["PUT /orders/{orderNumber}/items — atualização de itens"]
U --> Z{"Desfazer edição?"}
Z -->|Sim| S["POST /orders/{orderNumber}/restore — restaurar composição"]
I -->|Não| N["Seguir operação / logística"]
Recuperar os detalhes de um pedido a partir do seu número na plataforma Zé Delivery.
Utilize este endpoint somente quando:
orderNumber válido gerado pela plataforma.Este endpoint não deve ser utilizado para:
events:polling para eventos).Requer header Authorization: Bearer <token>. Algumas informações sensíveis (ex.: dados completos do cliente) podem estar restritas dependendo do acordo legal com o parceiro — a resposta pode omitir campos conforme permissionamento. orderNumber deve respeitar o formato/documento do sistema (ex.: mínimo de 9 caracteres conforme Swagger).
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /orders/{orderNumber}
API-->>Parceiro: 200 com detalhes do pedido
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
{- "displayId": "123457890",
- "status": "CREATED",
- "type": "DELIVERY",
- "salesChannel": "DEFAULT",
- "createdAt": "2021-09-15T19:51:57.851343",
- "orderTiming": "INSTANT",
- "merchant": {
- "id": 12345
}, - "items": [
- {
- "id": 12345,
- "index": 3,
- "name": "Refrigerante de Limão 2L",
- "externalCode": "12345",
- "unit": "UNIT",
- "quantity": 1,
- "unitPrice": {
- "value": 10,
- "currency": "R$"
}, - "totalPrice": {
- "value": 10,
- "currency": "R$"
}
}
], - "otherFees": [
- {
- "name": "Frete",
- "type": "DELIVERY_FEE",
- "receivedBy": "MERCHANT",
- "price": {
- "value": 10,
- "currency": "R$"
}
}
], - "discounts": [
- {
- "amount": {
- "value": 10,
- "currency": "R$"
}, - "target": "CART"
}
], - "coupon": {
- "total": 0,
- "code": "string",
- "description": "string"
}, - "total": {
- "itemsPrice": {
- "value": 10,
- "currency": "R$"
}, - "otherFees": {
- "value": 10,
- "currency": "R$"
}, - "discount": {
- "value": 10,
- "currency": "R$"
}, - "orderAmount": {
- "value": 10,
- "currency": "R$"
}, - "change": {
- "value": 10,
- "currency": "R$"
}
}, - "payments": {
- "methods": [
- {
- "value": 10,
- "currency": "R$",
- "type": "PENDING",
- "method": "CASH"
}
]
}, - "customer": {
- "phone": {
- "number": "5511912345678"
}, - "name": "Maria",
- "documentNumber": "12345678901",
- "email": "email@email.com"
}, - "delivery": {
- "deliveredBy": "MERCHANT",
- "pickupCode": "",
- "deliveryAddress": {
- "country": "Brazil",
- "streetName": "Rua Estados Unidos",
- "formattedAddress": "Rua Estados Unidos, 99 - São Paulo - SP",
- "streetNumber": "99",
- "city": "São Paulo",
- "postalCode": "01234578",
- "coordinates": {
- "latitude": -41.485,
- "longitude": -39.485
}, - "neighborhood": "Jardim das Orquídeas",
- "state": "SP",
- "complement": "AP 123"
}, - "schedule": {
- "scheduledDateTimeStart": "2021-09-15T19:51:57.851343",
- "scheduledDateTimeEnd": "2021-09-15T19:51:57.851343"
}, - "returnDate": "30/03/2026"
}, - "takeout": {
- "mode": "`DEFAULT`",
- "takeoutDateTime": "2021-09-15T19:51:57.851343"
}, - "serviceFee": {
- "total": 5,
- "isHeavyBag": true
}, - "extraInfo": "Trazer bem gelada",
- "statusHistory": [
- {
- "createdAt": "2021-09-15T19:51:57.851343",
- "status": "CREATED"
}
]
}Confirmar/aceitar um pedido no sistema do Zé (aceitação pelo estabelecimento/parceiro).
Utilize este endpoint somente quando:
preparationTime, orderExternalCode ou createdAt adicionais (opcionais).Este endpoint não deve ser utilizado para:
/requestCancellation ou /cancel).Recurso idempotente a nível de negócio — confirmar sem checar status pode gerar rejeições; o endpoint retorna 202 quando a requisição é aceita para processamento. Requer Authorization header. Campos possíveis no body: preparationTime (minutos), orderExternalCode, createdAt. Validar formato createdAt ISO UTC se informado.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /orders/{orderNumber}
API-->>Parceiro: 200 com detalhes do pedido
Parceiro->>API: POST /orders/{orderNumber}/confirm
API-->>Parceiro: 202 aceite em processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| reason | string Campo livre para informações sobre a confirmação do pedido |
| orderExternalCode | string Código externo do pedido que pode ser usada como referência |
| createdAt | string Data e hora da criação do pedido |
| preparationTime | number Indica o tempo de preparação do pedido em minutos |
{- "reason": "string",
- "orderExternalCode": "string",
- "createdAt": "2021-09-15T19:51:57.851343",
- "preparationTime": 0
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Solicitar o cancelamento ou rejeição de um pedido, informando o código de motivo apropriado.
Utilize este endpoint somente quando:
UNAVAILABLE_ITEM, RESTAURANT_WITHOUT_DELIVERY_PERSON etc.).requestCancellation conforme regras de negócio.Este endpoint não deve ser utilizado para:
Body requer um code dentre os códigos documentados (ex.: UNAVAILABLE_ITEM, SYSTEMIC_ISSUES, etc.). Ver regras: se pedido já confirmado, apenas alguns códigos são aceitos; se não confirmado, outros códigos são aceitos — seguir a enumeração do Swagger. Retorna 202 quando aceita para processamento; erros 422 podem indicar validações de negócio sobre o status atual do pedido. Requer Authorization header.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /orders/{orderNumber}/requestCancellation
API-->>Parceiro: 202 solicitação aceita para processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| code | string Enum: "SYSTEMIC_ISSUES" "DUPLICATE_APPLICATION" "UNAVAILABLE_ITEM" "RESTAURANT_WITHOUT_DELIVERY_PERSON" "ORDER_OUTSIDE_THE_DELIVERY_AREA" "BLOCKED_CUSTOMER" "INTERNAL_DIFFICULTIES_OF_THE_RESTAURANT" "RISK_AREA" "DELIVERY_PROBLEM" Os códigos de razão de cancelamento, |
{- "code": "UNAVAILABLE_ITEM"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Cancelar um pedido em qualquer status (fluxo administrativo/operacional).
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
requestCancellation (conforme política/fluxo acordado).code obrigatória).Body requer code entre os valores permitidos (ex.: POC_STOCKOUT, OPER_ISSUES, DELIVERY_ISSUE, etc.). Retorna 202 quando aceita para processamento; 422 para erro de validação de negócio. Requer Authorization header.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /orders/{orderNumber}/confirm
API-->>Parceiro: 202 aceite em processamento
Parceiro->>API: POST /orders/{orderNumber}/cancel
API-->>Parceiro: 202 cancelamento em processamento
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
| code required | string Enum: "POC_STOCKOUT" "OPER_ISSUES" "OTHERS" "DELIVERY_ISSUE" "WRONG_ADDRESS" "LATE_ORDER" "OTHER" Código da razão de cancelamento. Os códigos aceitos são: |
{- "code": "POC_STOCKOUT"
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Consultar, de forma paginada, o histórico de pedidos finalizados de um estabelecimento (merchantId) em um determinado período. A resposta traz uma visão resumida de cada pedido — cliente, pagamento, valores, avaliação e histórico de status — adequada para construção de relatórios, dashboards e telas de consulta.
Utilize este endpoint somente quando:
merchantId válido ao qual o parceiro tenha acesso.page, pageSize) e/ou ordená-los pela data de criação (sort).Este endpoint não deve ser utilizado para:
events:polling em conjunto com getOrderByNumber.getOrderByNumber.Requer header Authorization: Bearer <token> e o parceiro deve ter permissão sobre o merchantId consultado. Somente pedidos que já concluíram seu ciclo de vida (ex.: CONCLUDED e CANCELLED) são retornados — pedidos em andamento são omitidos do resultado.
Limites de período:
startDate não pode ser anterior a 6 meses contados a partir da data atual.startDate e endDate não pode exceder 3 meses por consulta.Quando startDate e endDate não forem informados, o período padrão é dos últimos 30 dias até o momento atual; quando informados, devem estar em ISO 8601 e endDate deve ser maior ou igual a startDate. O pageSize aceita valores entre 1 e 50 (padrão 20). O campo hasNext na resposta indica se há mais páginas a consultar. Dados sensíveis do cliente (ex.: nome) podem ser omitidos quando o parceiro não tiver permissão para acessá-los.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /merchants/{merchantId}/orders/history?startDate&endDate&page&pageSize&sort
API-->>Parceiro: 200 com página de pedidos finalizados
Parceiro->>API: GET /merchants/{merchantId}/orders/history?page=N+1 (enquanto hasNext = true)
API-->>Parceiro: 200 com próxima página
| merchantId required | string Example: 1234 O id do estabelecimento |
| startDate | string <date-time> Example: startDate=2026-04-01T00:00:00.000Z Data inicial do período de consulta no formato ISO 8601 (UTC). Quando não informada, é considerada 30 dias antes de |
| endDate | string <date-time> Example: endDate=2026-05-01T00:00:00.000Z Data final do período de consulta no formato ISO 8601 (UTC). Quando não informada, é considerada a data/hora atual. Deve ser maior ou igual a |
| page | integer >= 1 Default: 1 O número da página, iniciando em 1. |
| pageSize | integer [ 1 .. 50 ] Default: 20 O número de itens por página. |
| sort | string Enum: "asc" "desc" Ordenação dos pedidos pela data de criação. |
| Authorization required | string token de autenticação para acessar o recurso |
{- "page": 1,
- "pageSize": 20,
- "hasNext": true,
- "items": [
- {
- "number": "123457890",
- "date": "2026-04-15T19:51:57.851Z",
- "customerName": "João Silva",
- "status": "CREATED",
- "deliveryType": "DELIVERY",
- "payment": {
- "type": "CASH",
- "category": "PENDING"
}, - "total": 89.9,
- "subTotal": 79.9,
- "discount": 5,
- "discountDescription": "PROMO10",
- "shippingFee": 7.9,
- "rating": {
- "value": 5,
- "description": "Atendimento ótimo",
- "reasons": [
- "FAST_DELIVERY"
]
}, - "customerComment": "Sem cebola, por favor.",
- "items": [
- {
- "name": "Cerveja Brahma 600ml",
- "quantity": 2,
- "unitPrice": 9.9,
- "subTotal": 19.8
}
], - "statusHistory": [
- {
- "status": "CREATED",
- "date": "2026-04-15T20:01:11.000Z",
- "description": "Pedido aceito pelo estabelecimento.",
- "reasons": [
- "OUT_OF_RANGE"
]
}
]
}
]
}Reverter as alterações feitas nos itens de um pedido confirmado, restaurando a composição anteriormente vigente na plataforma, quando essa operação é suportada pelo estado atual do pedido.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Em geral, a restauração aplica-se a pedidos confirmados que tenham passado por edição de itens; se o pedido não estiver elegível, a API retorna erro de validação. Em caso de sucesso, a resposta segue o que está definido no contrato público deste recurso.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /orders/{orderNumber}/items
API-->>Parceiro: resposta de sucesso conforme contrato
Parceiro->>API: POST /orders/{orderNumber}/restore
API-->>Parceiro: resposta de sucesso conforme contrato
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Ajustar os itens de um pedido já confirmado, removendo produtos indisponíveis ou substituindo-os por alternativas equivalentes, sem alterar o restante do contrato público descrito no Swagger.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Em geral, esta operação aplica-se após a confirmação do pedido pelo estabelecimento; a API valida o status antes de aceitar a alteração. A disponibilidade e o resultado seguem as validações expostas publicamente. Para desfazer alterações de itens e voltar à composição anterior, utilize o endpoint de restauração do pedido no mesmo agrupamento.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /orders/{orderNumber}/confirm
API-->>Parceiro: 202 aceite em processamento
Parceiro->>API: PUT /orders/{orderNumber}/items
API-->>Parceiro: resposta de sucesso conforme contrato
| orderNumber required | string >= 9 Example: 123456789 O número do pedido na plataforma Zé Delivery |
| Authorization required | string token de autenticação para acessar o recurso |
Array of objects (UpdateOrderItem) <= 30 items Lista de itens a serem removidos do pedido. | |
Array of objects <= 30 items Lista de substituições de itens do pedido. |
{- "removedItems": [
- {
- "productId": "12345",
- "externalProductId": "ext-12345",
- "quantity": 2
}
], - "replacedItems": [
- {
- "currentItem": {
- "productId": "12345",
- "externalProductId": "ext-12345",
- "quantity": 2
}, - "newItem": {
- "productId": "12345",
- "externalProductId": "ext-12345",
- "quantity": 2
}
}
]
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Os endpoints do grupo Products da Seller Public API cobrem a gestão de catálogo e oferta no Zé Delivery em dois eixos: rotas padrão (disponibilidade, criação e atualização de itens, oferta/preço do item, promoções em lote e listagem paginada do menu) e rotas /external-catalog, restritas a SKUs exclusivos do parceiro em verticais específicas (disponibilidade de produto e de options, preços de SKU e de option, e upsert em lote do catálogo externo). Todas as rotas exigem autenticação. Endpoints de catálogo externo não substituem o catálogo oficial da plataforma.
externalCode, conforme contrato da vertical.availability do merchant), não a disponibilidade de produto individual.client_credentials).No fluxo padrão, costuma-se consultar o menu (GET), criar ou atualizar itens (POST/PUT por merchant), ajustar disponibilidade ou oferta quando aplicável, e usar upsert em lote ou promos para sincronização ampla. No catálogo externo, o fluxo típico é upsert do catálogo em lote, seguido de ajustes pontuais de preço e disponibilidade de produtos e options.
flowchart TB
subgraph padrao["Catálogo padrão / parceiro"]
direction TB
M["GET /merchants/{merchantId}/menu/items — listar menu"]
A["POST /merchants/{merchantId}/products/availability — on/off SKU"]
C["POST /merchants/{merchantId}/products/items — criar item"]
U["PUT /merchants/{merchantId}/products/items — atualizar item"]
O["POST /merchants/{merchantId}/products/itemOffer — oferta/preço"]
B["PUT /merchants/products/items — upsert em lote"]
P["PUT /merchants/products/promos — promoções em lote"]
M --> A --> C --> U --> O --> B --> P
end
flowchart TB
subgraph ext["Catálogo externo"]
direction TB
E1["PUT /external-catalog/catalog/products — upsert em lote"]
E2["POST /external-catalog/merchants/{merchantId}/products/availability — disponibilidade SKU"]
E3["POST /external-catalog/merchants/{merchantId}/options/availability — disponibilidade option"]
E4["PUT /external-catalog/merchants/{merchantId}/products/{externalCode}/price — preço SKU"]
E5["PUT /external-catalog/merchants/{merchantId}/options/{externalCode}/price — preço option"]
E1 --> E2 --> E3 --> E4 --> E5
end
Em ambos os quadros, a cadeia vertical é ordem sugerida de leitura, não sequência obrigatória de chamadas: use apenas os endpoints necessários ao seu fluxo (por exemplo, criar/atualizar item, disponibilidade e oferta podem ser chamados conforme a operação; em lote, upsert de itens e promos são independentes entre si quando aplicável).
Criar (POST) um item de produto para um estabelecimento (inclui price, images, category, tags).
POST: criar SKUs exclusivos do parceiro para o merchant (catálogo externo/partner-managed).
Não usar para criar SKUs que pertencem ao catálogo padrão do Zé sem autorização. Evitar duplicar productId vs externalProductId — a regra do Swagger indica que exatamente um dos identificadores é obrigatório.
Regras de validação: exatamente um de productId ou externalProductId deve ser enviado; se price informado, value e originalValue são obrigatórios; imagens têm image obrigatório. Requer Authorization. Respostas podem retornar 202 (async processing) ou erros 422/400.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /merchants/{merchantId}/products/items
API-->>Parceiro: 202 ou erro de validação
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| externalProductId | string Identificador do produto no sistema de origem (plataforma parceira). |
| name | string Nome do produto. |
| description | string Descrição do produto. |
Array of objects Lista de URLs de imagens do produto. | |
object Informações de preço do produto. Regra de oferta: se value e originalValue forem iguais, não há oferta (preço cheio). Se forem diferentes, há oferta: o valor do desconto é ( originalValue − value ) e o percentual de desconto é esse valor dividido por originalValue, multiplicado por 100. O exemplo abaixo ilustra preço cheio (value = originalValue). | |
| category | string Código ou slug da categoria do produto no catálogo. |
| tags | Array of strings Tags do produto. |
{- "productId": "1234",
- "externalProductId": "1234",
- "name": "Nome do Produto",
- "description": "Descrição do produto",
- "category": "categoria",
- "price": {
- "value": 29.9,
- "originalValue": 39.9,
- "currency": "BRL"
}, - "tags": [
- "tag1",
- "tag2"
]
}{ }Atualizar (PUT) um item de produto para um estabelecimento (inclui price, images, category, tags).
PUT: atualizar metadados do item (nome, descrição, preço, imagens).
Não usar para alterar SKUs que pertencem ao catálogo padrão do Zé sem autorização. Evitar duplicar productId vs externalProductId — a regra do Swagger indica que exatamente um dos identificadores é obrigatório.
Regras de validação: exatamente um de productId ou externalProductId deve ser enviado; se price informado, value e originalValue são obrigatórios; imagens têm image obrigatório. Requer Authorization. Respostas podem retornar 202 (async processing) ou erros 422/400.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /merchants/{merchantId}/products/items
API-->>Parceiro: 202 ou erro de validação
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| productId | integer O identificador do produto na plataforma Zé Delivery. |
| externalProductId | string Identificador do produto no sistema de origem (plataforma parceira). |
| name required | string Nome do produto. |
| description required | string Descrição do produto. |
Array of objects Lista de URLs de imagens do produto. | |
object Informações de preço do produto. Regra de oferta: se value e originalValue forem iguais, não há oferta (preço cheio). Se forem diferentes, há oferta: o valor do desconto é ( originalValue − value ) e o percentual de desconto é esse valor dividido por originalValue, multiplicado por 100. O exemplo abaixo ilustra preço cheio (value = originalValue). | |
| category required | string Código ou slug da categoria do produto no catálogo. |
| tags | Array of strings Tags do produto. |
{- "productId": "1234",
- "externalProductId": "1234",
- "name": "Nome do Produto",
- "description": "Descrição do produto",
- "category": "categoria",
- "price": {
- "value": 29.9,
- "originalValue": 39.9,
- "currency": "BRL"
}, - "images": [
], - "tags": [
- "tag1",
- "tag2"
]
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Upsert em lote (atualizar múltiplos produtos) — sincronização inicial ou periódica de catálogo parceiro.
Onboarding inicial de catálogo exclusivo do parceiro ou sincronização de muitos SKUs.
Para atualizações unitárias frequentes (usar endpoints unitários); não criar produtos no catálogo oficial do Zé.
Recurso assíncrono: retorna 202 para processamento; validações por item podem retornar 422. Requer Authorization. Limitações de tamanho de payload não documentadas explicitamente no Swagger — validar com infraestrutura antes de enviar grandes lotes.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /merchants/products/items
API-->>Parceiro: 202 — processamento assíncrono
| Authorization required | string token de autenticação para acessar o recurso |
required | Array of objects |
{- "items": [
- {
- "merchantId": "string",
- "productId": "string",
- "externalProductId": "string",
- "isAvailable": true,
- "isFavorite": true
}
]
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Atualizar promoções de produtos para múltiplos estabelecimentos em lote.
Aplicar/retirar campanhas/promos para vários merchants de uma só vez.
Para promoções que impactam catálogo padrão sem acordo; não usar para promoções ad-hoc sem campos obrigatórios.
Estrutura: array de ProductPromoInput. Regras: se isEnabled=true, percentage e scheduleType são obrigatórios, caso contrário não devem ser enviados. Deve ser usado productId ou externalProductId em ambos os casos. Requer Authorization. Retorna 202 quando aceito.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /merchants/products/promos
API-->>Parceiro: 202 quando aceito
| Authorization required | string token de autenticação para acessar o recurso |
| merchantId | string O id do estabelecimento |
| productId required | string O id do produto |
| externalProductId | string O id do produto externo |
| isEnabled required | boolean Value: true Define se a promoção está ativa ou não |
| percentage required | number [ 0 .. 100 ] Percentual de desconto da promoção |
| scheduleType required | string Enum: "ALWAYS" "WEEKDAYS" "WEEKENDS" "SUPER_FRIDAY" Tipo de agendamento da promoção |
[- {
- "merchantId": "1234",
- "productId": "5678",
- "isEnabled": true,
- "percentage": 15.5,
- "scheduleType": "ALWAYS"
}
]{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Atualizar disponibilidade (on/off) de um SKU do estabelecimento (produto ou externalProductId).
Quando o parceiro precisa marcar um produto específico como disponível ou indisponível no PDV.
Para atualizar produtos do catálogo padrão do Zé (aplicável somente a SKUs gerenciados pelo parceiro quando apropriado).
Body aceita productId (integer) ou externalProductId (string) e available boolean. Requer Authorization. Retorna 200 com objeto de confirmação.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /merchants/{merchantId}/products/availability
API-->>Parceiro: 200 com confirmação
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| productId | integer O identificador do produto na plataforma Zé Delivery. |
| externalProductId | string O identificador do produto em plataforma de terceiros. |
| available | boolean A disponibilidade do produto |
{- "productId": "1234",
- "externalProductId": "1234",
- "available": true
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Buscar itens do menu de um estabelecimento (paginação e filtro por externalProductIds).
Para listar produtos expostos de um merchant (paginação via page e pageSize).
Não usar para modificar itens; para detalhes completos do produto usar endpoints de produto.
Requer Authorization. pageSize tem limites (min=5, max=30) e page padrão = 1 segundo Swagger. Schema de resposta: merchantItemsResponse.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /merchants/{merchantId}/menu/items
API-->>Parceiro: 200 com itens paginados
| merchantId required | string Example: 1234 O id do estabelecimento |
| page | number Default: 1 O número da página |
| pageSize | number [ 5 .. 30 ] Default: 5 O número de itens por página |
| externalProductIds | string Example: externalProductIds=12345,54321 Os ids externos dos itens. Retorna todos se não for informado. |
| Authorization required | string token de autenticação para acessar o recurso |
{- "currentPage": 0,
- "totalPages": 0,
- "totalItems": 0,
- "pageSize": 0,
- "items": [
- {
- "productId": 0,
- "externalProductId": "string",
- "name": "string",
- "description": "string",
- "status": "AVAILABLE",
- "image": {
- "URL": "string"
}, - "ean": "string",
- "isFavorite": true,
- "isPortfolioIdeal": true,
- "brand": {
- "id": "string",
- "name": "string"
}, - "categories": [
- {
- "id": "string",
- "name": "string"
}
], - "priceDetails": {
- "price": 0,
- "discount": {
- "endsAt": "string",
- "id": "string",
- "startsAt": "string",
- "values": [
- {
- "value": 0,
- "finalUnitPrice": 0,
- "minQuantity": 0,
- "maxQuantity": 0,
- "valueType": "FIXED_AMOUNT"
}
]
}, - "sellerDiscount": {
- "active": true,
- "percentageValues": [
- 0
], - "current": {
- "createdAt": "string",
- "discountPercentageValue": 0,
- "id": "string",
- "scheduleType": "ALWAYS",
- "active": true,
- "reason": "string",
- "updatedAt": "string",
- "username": "string"
}
}, - "takeRateSeller": {
- "active": true,
- "feeAmount": 0,
- "feePercentage": 0,
- "netPrice": 0
}
}
}
]
}Atualizar/definir oferta (price/discount) de um item no estabelecimento.
Aplicar preço ou promoção em um item específico do merchant (price + originalValue).
Para alterar o catálogo global do Zé ou preços de SKUs do catálogo padrão (sem acordo).
Requer merchantId e price com value e originalValue (value > 0, originalValue ≥ value). Requer Authorization. Retorna 202 quando processado.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /merchants/{merchantId}/products/itemOffer
API-->>Parceiro: 202 quando aceito
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| productId | string O identificador do produto na plataforma Zé Delivery. |
| externalProductId | string Identificador do produto no sistema de origem (plataforma parceira). |
required | object Informações de preço do produto. Regra de oferta: se value e originalValue forem iguais, não há oferta (preço cheio). Se forem diferentes, há oferta: o valor do desconto é ( originalValue − value ) e o percentual de desconto é esse valor dividido por originalValue, multiplicado por 100. O exemplo abaixo ilustra preço cheio (value = originalValue). |
{- "productId": "1234",
- "externalProductId": "1234",
- "price": {
- "value": 29.9,
- "originalValue": 39.9
}
}{ }Atualizar a disponibilidade (on/off) de SKUs exclusivos criados pelo parceiro, destinados a uma vertical específica dentro do Zé Delivery.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Este é um endpoint específico para catálogos externos/parceiros. Ele não substitui nem altera o comportamento do catálogo oficial do Zé Delivery.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /external-catalog/merchants/{merchantId}/products/availability
API-->>Parceiro: 200 em caso de sucesso
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| productId | string O identificador do produto na plataforma Zé Delivery. |
| externalCode | string O código externo do produto na plataforma parceira. |
| available | boolean Indica se o produto está disponível. |
{- "productId": "1234",
- "externalCode": "1234",
- "available": true
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Atualizar o preço de uma option (variante/topping) pertencente a um SKU exclusivo do catálogo externo, identificado por externalCode.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Método: PUT. Path: /external-catalog/merchants/{merchantId}/options/{externalCode}/price. Autenticação: header Authorization: Bearer <token> obrigatório. Parâmetros: merchantId (path); externalCode (path) — identificador da option no catálogo do parceiro. Body (application/json): objeto price com campos mínimos: value (number) — preço atual (obrigatório). originalValue (number) — preço original (obrigatório quando aplicável). currency (string) — ex.: BRL (recomendado). Respostas comuns: 202 Accepted (processamento assíncrono), 400, 401, 403, 404, 422, 500. Observações: alteração aplica-se somente à option identificada por externalCode; validar se a option existe no catálogo externo antes de enviar.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /external-catalog/merchants/{merchantId}/options/{externalCode}/price
API-->>Parceiro: 202 ou código de erro conforme validação
| merchantId required | string Example: 1234 O id do estabelecimento |
| externalCode required | string Example: 1234 O código externo do produto (option) a ser atualizado, definido pelo parceiro e único dentro do catálogo externo. |
| Authorization required | string token de autenticação para acessar o recurso |
| price | number O preço final do produto |
{- "price": 29.9
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Atualizar o preço de venda de um SKU exclusivo criado pelo parceiro, identificado por externalCode.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Método: PUT. Path: /external-catalog/merchants/{merchantId}/products/{externalCode}/price. Autenticação: header Authorization: Bearer <token> obrigatório. Parâmetros: merchantId (path); externalCode (path) — identificador do SKU no sistema do parceiro. Body (application/json): objeto price com campos mínimos: value (number) — preço final cobrado. originalValue (number) — preço original (sem desconto), quando aplicável. currency (string) — ex.: BRL. Respostas: 202 Accepted (assíncrono) ou 200/4xx/5xx conforme validação/erro. Observações: payload deve obedecer às regras de preço (ex.: value > 0; se originalValue informado calcule desconto conforme regra local). Garantir que o externalCode aponta para um SKU gerenciado pelo parceiro.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /external-catalog/merchants/{merchantId}/products/{externalCode}/price
API-->>Parceiro: 202 ou resposta conforme validação
| merchantId required | string Example: 1234 O id do estabelecimento |
| externalCode required | string Example: 1234 O código externo do produto a ser atualizado, definido pelo parceiro e único dentro do catálogo externo. |
| Authorization required | string token de autenticação para acessar o recurso |
| price | number Preço final (valor cobrado). Com oferta, é o valor já com desconto; sem oferta, coincide com originalValue. Deve ser > 0. |
| fullPrice | number Preço original (sem desconto). Igual a price quando não há oferta. Deve ser > 0. |
{- "price": 29.9,
- "fullPrice": 39.9
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Realizar upsert (criação/atualização em lote) do catálogo exclusivo do parceiro — sincronização em lote de SKUs destinados à vertical da integração.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Método: PUT. Path: /external-catalog/catalog/products. Autenticação: header Authorization: Bearer <token> obrigatório. Body (application/json): array de objetos produto (bulk). Para cada produto, seguir o schema do catálogo externo (identificadores externalProductId/externalCode, name, description, price, images, options, etc.). Respostas: normalmente 202 Accepted (processamento assíncrono); 400, 401, 403, 422 por item ou geral; 500 para erro servidor. Observações técnicas: Endpoint é assíncrono — processamento em background; cada item pode ter validações individuais que resultem em erros parciais. Monitorar mensagens/erros de retorno/reporting. Respeitar limites operacionais (tamanho de payload/rate limits) definidos por contrato técnico — validar antes de enviar lotes muito grandes. Mantém isolamento por vertical: não cria nem altera o catálogo oficial do Zé.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PUT /external-catalog/catalog/products
API-->>Parceiro: 202 — processamento assíncrono
| Authorization required | string token de autenticação para acessar o recurso |
| merchantId | string O id do estabelecimento |
| brandId | integer O id da marca do produto |
| externalProductId | string Identificador do produto no sistema de origem (plataforma parceira). |
| title | string Nome do produto. |
| description | string Descrição do produto. |
Array of objects Lista de URLs de imagens do produto. | |
object Informações de preço do produto. Regra de oferta: se value e originalValue forem iguais, não há oferta (preço cheio). Se forem diferentes, há oferta: o valor do desconto é ( originalValue − value ) e o percentual de desconto é esse valor dividido por originalValue, multiplicado por 100. O exemplo abaixo ilustra preço cheio (value = originalValue). | |
| category | string Código ou slug da categoria do produto no catálogo |
| tags | Array of strings Tags do produto |
Array of objects Default: [] |
{- "merchantId": "1234",
- "brandId": 5678,
- "externalProductId": "12345",
- "title": "Nome do Produto",
- "description": "Descrição do produto",
- "category": "categoria",
- "price": {
- "value": 29.9,
- "originalValue": 39.9,
- "currency": "BRL"
}, - "tags": [
- "tag1",
- "tag2"
], - "optionGroups": [
- {
- "externalOptionGroupId": "1234",
- "name": "Nome da opção",
- "description": "Descrição da opção",
- "maxPermitted": 2,
- "minPermitted": 1,
- "presentationType": "SELECT",
- "active": true,
- "index": 0,
- "options": [
- {
- "externalOptionId": "1234",
- "description": "Opção 1",
- "maxPermitted": 1,
- "price": 5,
- "active": true,
- "index": 0,
- "isAvailable": true
}, - {
- "externalOptionId": "5678",
- "description": "Opção 2",
- "maxPermitted": 1,
- "price": 10,
- "active": true,
- "index": 1,
- "isAvailable": true
}
]
}
]
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Controlar a disponibilidade granular (on/off) de options (variantes/toppings) de SKUs exclusivos do parceiro.
Utilize este endpoint somente quando:
Este endpoint não deve ser utilizado para:
Método: POST. Path: /external-catalog/merchants/{merchantId}/options/availability. Autenticação: header Authorization: Bearer <token> obrigatório. Parâmetros: merchantId (path). Body (application/json): objeto com externalOptionCode ou identificador equivalente e available boolean. Respostas: 200 OK em caso de sucesso; 400, 401, 403, 404, 422, 500 conforme validações/erros. Observações: alteração afeta somente a option no contexto do merchant e da vertical; validar existência da option no catálogo externo antes de executar.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: POST /external-catalog/merchants/{merchantId}/options/availability
API-->>Parceiro: 200 em caso de sucesso
| merchantId required | string Example: 1234 O id do estabelecimento |
| Authorization required | string token de autenticação para acessar o recurso |
| optionId | string O identificador da opção na plataforma Zé Delivery. |
| available | boolean Indica se a opção está disponível. |
{- "optionId": "1234",
- "available": true
}{- "code": "string",
- "title": "string",
- "type": "string",
- "messages": [
- "string"
]
}Os endpoints do grupo Webhooks permitem consultar e criar/atualizar a configuração de entrega de eventos para a URL do seu sistema.
Quando active está habilitado, o Zé passa a enviar eventos para a URL que o voce configurou; com active desabilitado, não há envio para esse endpoint.
Além de active habilitado, é necessário definir quais eventos você deseja receber. Use o PATCH /webhooks e configure os eventos no campo subscribedEvents.
Em caso de entrega bem-sucedida — ou seja, enviamos o evento para a URL configurada e ela retornou sucesso —, o evento é tratado como consumido, então é feito o acknowledgment e deixa de aparecer no polling do grupo Events.
Abaixo estão os casos que seguimos em cada status de resposta que veio da sua API:
Nas requisições HTTP para a sua API são enviados os headers X-App-Signature e X-App-Timestamp.
O X-App-Timestamp é o instante do envio em segundos (timestamp Unix), útil por exemplo para limitar janelas de replay no seu lado.
O X-App-Signature é a assinatura de integridade da requisição: calculada com SHA-256 sobre o timestamp e o payload bruto do JSON recebidos no corpo da requisição, usando como segredo o valor hash obtido na criação do webhook via PATCH /webhooks. O cabeçalho costuma seguir o padrão sha256=<digest_hexadecimal>.
Para validar, reproduza o digest com o timestamp + corpo bruto ({timestamp}.{body}) e o mesmo segredo hash, compare com o valor em X-App-Signature (após o prefixo sha256=) e só então processe o evento.
active), alterar a URL ou ajustar os tipos de evento (subscribedEvents no PATCH; na resposta e na listagem, subscriptions).hash para validação de assinatura), use a listagem.O fluxo típico é definir ou atualizar a configuração com PATCH /webhooks e, quando necessário, consultar o estado com GET /webhooks. Após a primeira criação, guarde o hash retornado para validar o cabeçalho X-App-Signature nas entregas.
flowchart TD
D["POST na sua URL quando active = true"]
D --> R{"Status HTTP?"}
R -->|2xx| A["Ack — evento some do polling"]
R -->|404| N["Sem retry — rota inexistente"]
R -->|Outro erro| T["Até 3 tentativas de envio"]
Registrar ou atualizar a configuração de webhook do cliente autenticado na Seller Public API: URL de entrega dos eventos, se o webhook está ativo e quais categorias de eventos o parceiro deseja receber.
Quando o parceiro optar por notificações enviadas pela plataforma para um endpoint próprio em substituição ao fluxo de polling.
Não usar apenas para ler a configuração atual — para isso utilize GET /webhooks. Este endpoint não entrega a fila de eventos; ele apenas persiste a política de entrega (URL, ativo, inscrições).
Cada credencial de cliente mantém uma única configuração de webhook (comportamento de upsert). Na primeira criação, a resposta inclui o campo hash (segredo em hexadecimal) usado para validar entregas no seu endpoint; nas atualizações seguintes, o hash não é devolvido no corpo — armazene o segredo com segurança na primeira resposta bem-sucedida. O campo endpoint é obrigatório e deve ser uma URI válida. É necessário header Authorization com token válido para a API.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: PATCH /webhooks
API-->>Parceiro: 200 — configuração persistida
| Authorization required | string token de autenticação para acessar o recurso |
| endpoint required | string <uri> URL que receberá as notificações do webhook. |
| active | boolean Indica se o webhook está ativo. Se omitido, o padrão no registro é |
| subscribedEvents | Array of strings (WebhookSubscriptionType) Items Value: "ORDER_EVENTS" Lista de tipos de eventos inscritos. Se omitido, a lista fica vazia. |
{- "active": true,
- "subscribedEvents": [
- "ORDER_EVENTS"
]
}{- "clientId": "5e505642-9024-474d-9434-e5a44f505cc5",
- "hash": "string",
- "active": true,
- "subscriptions": [
- "ORDER_EVENTS"
]
}Consultar a configuração de webhook associada ao cliente autenticado na Seller Public API.
Para exibir ou auditar URL, estado ativo/inativo e inscrições de eventos em painéis ou ferramentas internas. Para confirmar se já existe webhook cadastrado antes de um PATCH /webhooks, ou para recuperar o hash quando a configuração já existia e o segredo ainda é o mesmo persistido na plataforma.
Não lista eventos como no GET - events:polling. Para criar ou alterar as configurações do webhook, use PATCH /webhooks.
Se não houver registro, a resposta é um array vazio. Quando há configuração, a API retorna um array com exatamente um objeto contendo identificação do cliente, segredo, endpoint, indicador de ativo e lista de inscrições. Requer header Authorization com token válido.
sequenceDiagram
participant Parceiro as Seu sistema
participant API as Zé Seller Public API
Parceiro->>API: GET /webhooks
API-->>Parceiro: 200 — array com 0 ou 1 item
| Authorization required | string token de autenticação para acessar o recurso |
[- {
- "clientId": "5e505642-9024-474d-9434-e5a44f505cc5",
- "hash": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6ab",
- "active": true,
- "subscriptions": [
- "ORDER_EVENTS"
]
}
]GET /order-history), com detalhes de rota, parâmetros e estrutura de resposta para uso por parceiros.GET /merchants/{merchantId}/menu/itemsisPortfolioIdeal, indicando se o item é considerado ideal para o portfólio do parceiro.{
"productId": 0,
"externalProductId": "string",
"name": "string",
"description": "string",
"status": "AVAILABLE",
"image": { "URL": "string" },
"ean": "string",
"isFavorite": true,
"brand": { "id": "string", "name": "string" },
"categories": [{ "id": "string", "name": "string" }],
"priceDetails": {
"price": 0,
"discount": {
"endsAt": "string",
"id": "string",
"startsAt": "string",
"values": [
{
"value": 0,
"finalUnitPrice": 0,
"minQuantity": 0,
"maxQuantity": 0,
"valueType": "FIXED_AMOUNT"
}
]
},
"sellerDiscount": {
"active": true,
"percentageValues": [0],
"current": {
"createdAt": "string",
"discountPercentageValue": 0,
"id": "string",
"scheduleType": "ALWAYS",
"active": true,
"reason": "string",
"updatedAt": "string",
"username": "string"
}
},
"takeRateSeller": {
"active": true,
"feeAmount": 0,
"feePercentage": 0,
"netPrice": 0
}
}
}
{
"productId": 0,
"externalProductId": "string",
"name": "string",
"description": "string",
"status": "AVAILABLE",
"image": { "URL": "string" },
"ean": "string",
"isFavorite": true,
"isPortfolioIdeal": true,
"brand": { "id": "string", "name": "string" },
"categories": [{ "id": "string", "name": "string" }],
"priceDetails": {
"price": 0,
"discount": {
"endsAt": "string",
"id": "string",
"startsAt": "string",
"values": [
{
"value": 0,
"finalUnitPrice": 0,
"minQuantity": 0,
"maxQuantity": 0,
"valueType": "FIXED_AMOUNT"
}
]
},
"sellerDiscount": {
"active": true,
"percentageValues": [0],
"current": {
"createdAt": "string",
"discountPercentageValue": 0,
"id": "string",
"scheduleType": "ALWAYS",
"active": true,
"reason": "string",
"updatedAt": "string",
"username": "string"
}
},
"takeRateSeller": {
"active": true,
"feeAmount": 0,
"feePercentage": 0,
"netPrice": 0
}
}
}
isPortfolioIdeal passa a estar disponível em cada item retornado; integrações existentes não precisam de alteração, mas podem consumir o novo campo para sinalizar recomendações de portfólio.GET /webhooks
PATCH /webhooks[
{
"clientId": "string",
"hash": "string",
"endpoint": "string",
"active": true,
"subscriptions": ["ORDER_EVENTS"]
}
]
GET /webhooks) e configurar (PATCH /webhooks) o endpoint de destino conforme o contrato publicado.GET /merchants/{merchantId}/menu/itemscurrent em priceDetails.sellerDiscount, o contrato público passa a exigir a propriedade scheduleType, com valores definidos pelo enum publicado no esquema.{
"current": {
"createdAt": "string",
"discountPercentageValue": 0,
"id": "string",
"active": true,
"reason": "string",
"updatedAt": "string",
"username": "string"
}
}
{
"current": {
"createdAt": "string",
"discountPercentageValue": 0,
"id": "string",
"scheduleType": "ALWAYS",
"active": true,
"reason": "string",
"updatedAt": "string",
"username": "string"
}
}
priceDetails.sellerDiscount.current precisa aceitar de forma estável a chave scheduleType e interpretar os valores enumerados conforme o contrato, sempre que current estiver presente.current, ignoram propriedades desconhecidas ou falham ao deserializar chaves novas podem quebrar ao receber scheduleType. Atualize leitura ou validação da resposta para tratar scheduleType como parte de current, conforme o esquema publicado.O que é a Seller Public API do Zé Delivery?
A Seller Public API é a interface oficial que permite que parceiros integrem seus sistemas ao Zé Delivery, possibilitando operações como:
Ela foi projetada para suportar múltiplos modelos de negócio e integrações escaláveis.
Quem pode se integrar com o Zé Delivery?
Empresas que possuam, obrigatoriamente:
Como iniciar uma integração com o Zé Delivery?
O processo segue estas etapas:
Existe ambiente de testes?
Sim. URLs base:
https://seller-public-api.release.ze.deliveryhttps://seller-public-api.ze.deliveryPreciso falar com o time do Zé para integrar?
Sim. É necessário alinhamento com o time comercial para aprovação da integração. Se aprovado, o time comercial direciona o contato do time técnico para o início das atividades.
Como obtenho minhas credenciais?
As credenciais em ambiente de teste e de produção são fornecidas pelo time técnico do Zé durante o onboarding.
Como funciona a autenticação?
A Seller Public API utiliza OAuth2 no fluxo client_credentials.
Para se autenticar:
client_id e client_secret para o endpoint /authaccess_token👉 O token precisa ser gerado apenas uma vez e possui validade de 24 horas. Nesse período, não é necessário autenticar novamente a cada requisição.
Quando o token expirar:
/authaccess_tokenBoas práticas:
expire_in)Erros comuns:
Como funciona o processo de homologação da integração?
Se aprovado:
👉 Esse processo reforça qualidade, segurança e estabilidade antes do go-live.
Quais são os tipos de resposta da API (sync vs async)?
A API trabalha com dois tipos de resposta:
Síncrona (sync)
Assíncrona (async)
👉 Em fluxos assíncronos, acompanhe o processamento via eventos (polling).
Como funciona o catálogo no Zé Delivery?
Existem dois modelos:
Catálogo padrão do Zé (fluxo padrão)
Catálogo externo do parceiro (em validação)
👉 O uso de catálogo externo depende de validação e alinhamento com o time do Zé.
Por que não tenho acesso a todos os endpoints?
A API segue o princípio de least privilege: você só acessa os endpoints necessários, conforme o escopo de integração alinhado com o time do Zé Delivery.
Posso solicitar novos acessos?
Sim, mediante alinhamento com os times comercial e técnico do Zé.
Como monitorar minha integração?
Recomenda-se acompanhamento diário, com alertas para instabilidade ou erros, observando:
Existe uma status page da API do Zé Delivery?
Atualmente não disponibilizamos uma status page pública para acompanhamento da disponibilidade da API.
👉 Estamos evoluindo essa frente; futuramente será disponibilizada uma status page para parceiros, com visibilidade sobre:
Essa evolução faz parte da melhoria de observabilidade e transparência da API para o ecossistema de parceiros.
Como fico sabendo de mudanças na API?