Zé Seller Public API (1.0)

Download OpenAPI specification:Download

Está API tem como objetivo, disponibilizar as informações dos nossos parceiros, tais como pedidos, catalogo de produtos entre outros

Authentication

API Authentication

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.

query Parameters
grant_type
required
string
Example: grant_type=client_credentials

Deverá sempre ser utilizado client_credentials

scope
required
string
Example: scope=orders/read

Atualmente temos somente o orders/read como escopo possível.

Request Body schema: application/x-www-form-urlencoded
client_id
required
string

O id do cliente.

client_secret
required
string

A secret do cliente.

Events

Visão geral

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.

Quando usar os endpoints Events ?

  • Quando for necessário consumir alterações de status de pedidos (criação, confirmação, despacho, cancelamento, conclusão, conforme os tipos expostos pela API).
  • Quando o modelo de integração do parceiro for polling em vez de webhook.

Relação entre os endpoints

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

Events polling

Objetivo

Expor eventos de alteração de pedidos (CREATED, CONFIRMED, DISPATCHED, CANCELLED, CONCLUDED) via polling.

Quando usar

Para sincronização assíncrona de eventos: consumir mudanças de status de pedidos. Quando o parceiro não usa webhook e prefere polling.

Quando NÃO usar

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.

Importante

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
query Parameters
eventType
Array of strings (OrderStatusEnum)
Items Enum: "CREATED" "CONFIRMED" "DISPATCHED" "CANCELLED" "CONCLUDED" "EDITED"
Example: eventType=CREATED

Status dos eventos do pedido

header Parameters
x-polling-merchants
required
array
Example: 123,1234

Os ids dos estabelecimentos requirido.

Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
[]

Events acknowledgment

Objetivo

Acknowledge — notificar a API que eventos foram consumidos para que não sejam retornados novamente no polling.

Quando usar

Após consumir com sucesso eventos obtidos por GET /events:polling, envie ack com lista de EventAcknowledgementInput.

Quando NÃO usar

Não usar para sinalizar falha de processamento (ack indica consumo bem-sucedido).

Importante

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)
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
Array ()
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, CREATED para quando o pedido é realizado, CONFIRMED para quando um pedido foi aceito por um estabelecimento, DISPATCHED para quando um pedido é despachado para uma pessoa entregadora, CANCELLED para quando há algum tipo de cancelamento, CONCLUDED para quando um pedido é entregue e EDITED para quando um pedido é editado.

Responses

Request samples

Content type
application/json
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Webhook — POST recebido na sua URL

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
header Parameters
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 hash obtido na criação do webhook via PATCH /webhooks. O cabeçalho costuma seguir o padrão sha256=<digest_hexadecimal>.

X-App-Timestamp
required
number
Example: 1714857600

Timestamp da requisição em segundos (Unix timestamp). Utilize para validar o X-App-Signature.

Content-Type
required
string
Value: "application/json"

Tipo de mídia do corpo.

Request Body schema: application/json
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 ORDER_EVENTS, contém o evento de pedido.

Responses

Request samples

Content type
application/json
{
  • "clientId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  • "eventType": "ORDER_EVENTS",
  • "correlationId": "9f2e4c1a-8b7d-4e6f-9a0b-1c2d3e4f5a6b",
  • "data": {
    }
}

Logistics

Visão geral

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.

Quando usar os endpoints Logistics ?

  • Quando for necessário consultar dados operacionais da entrega de um pedido, incluindo entregador, pickupCode e endereço de destino.
  • Quando o sistema de logística precisar reportar cada etapa da jornada do entregador: coleta no PDV, início de rota, chegada ao endereço do cliente e conclusão da entrega.
  • Quando for necessário validar o código de entrega (deliveryCode) apresentado no momento da retirada ou entrega.
  • Quando o entregador não conseguir completar a entrega e precisar solicitar o cancelamento com o motivo apropriado.

Quando não usar os endpoints Logistics ?

  • Para aceitar, rejeitar ou cancelar pedidos administrativamente — use o grupo Orders (/orders/{orderNumber}/confirm, /requestCancellation, /cancel).
  • Para sincronizar eventos de status de pedido ou substituir polling de fila — use o grupo Events.
  • Para consultar ou alterar catálogo, preços ou disponibilidade de produtos — use Products e Merchants.
  • Para obter ou renovar token — use Authentication (client_credentials).

Relação entre os endpoints

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"]

Delivery details

Objetivo

Recuperar detalhes de entrega de um pedido (nome do cliente, entregador, preços, pickupCode, endereço).

Quando usar

Utilize este endpoint somente quando:

  • For necessário realizar consultas operacionais sobre rota e dados do entregador para execução da entrega.
  • For preciso verificar o pickupCode para coleta do pedido no PDV.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Alterar o status de entrega do pedido (use os endpoints POST do grupo Logistics).
  • Obter dados completos do pedido além das informações de entrega (use GET /orders/{orderNumber}).

Importante

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)
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "orderDisplayId": "123457890",
  • "customerName": "Maria",
  • "deliveryMan": {
    },
  • "merchant": {
    },
  • "deliveryPrice": {
    }
}

Order Picked

Objetivo

Informar que o entregador pegou o pedido no PDV (marcar pickup).

Quando usar

Utilize este endpoint somente quando:

  • For necessário confirmar que o entregador recebeu fisicamente o pedido no ponto de venda.
  • O body obrigatório com o email do entregador estiver disponível.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Indicar chegada ao endereço do cliente ou entrega final — use /logistics/arrived/{orderNumber} ou /logistics/finishDelivery/{orderNumber}.
  • Registrar outros eventos da jornada do entregador antes da coleta.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
email
required
string

E-mail do entregador

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Start Route Order

Objetivo

Informar início de rota/coleta pelo entregador (rota iniciada).

Quando usar

Utilize este endpoint somente quando:

  • O entregador iniciar a rota de entrega após coletar o pedido no PDV.
  • O body com o email do entregador estiver disponível.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Sinalizar chegada ao endereço do cliente — use /logistics/arrived/{orderNumber}.
  • Confirmar a entrega final — use /logistics/finishDelivery/{orderNumber}.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
email
required
string

E-mail do entregador

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Arrived Order

Objetivo

Informar que o pedido chegou ao destino (entregador chegou no endereço do cliente).

Quando usar

Utilize este endpoint somente quando:

  • For necessário sinalizar a chegada do entregador ao endereço do cliente, antes da tentativa de entrega ou entrega final.
  • O body com o email do entregador estiver disponível.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Confirmar que a entrega foi concluída — use /logistics/finishDelivery/{orderNumber}.
  • Registrar outros eventos anteriores da jornada (coleta, início de rota).

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
email
required
string

E-mail do entregador

Responses

Request samples

Content type
application/json
{
  • "email": "string"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Validate Code

Objetivo

Validar o código de entrega (deliveryCode) informado no momento da entrega ou retirada do pedido.

Quando usar

Utilize este endpoint somente quando:

  • For necessário verificar se o deliveryCode informado pelo entregador ou cliente é válido para o pedido em questão.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Autorização de pagamento ou verificação de identidade além da validação do código de entrega.
  • Confirmar a conclusão da entrega — use /logistics/finishDelivery/{orderNumber} após validar o código.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
deliveryCode
required
string

O código de entrega do pedido

Responses

Request samples

Content type
application/json
{
  • "deliveryCode": "0406"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Finish Route

Objetivo

Marcar o pedido como entregue (finalizar rota e status do pedido).

Quando usar

Utilize este endpoint somente quando:

  • A entrega foi concluída com sucesso pelo entregador.
  • O body com o email do entregador estiver disponível; lat/long são opcionais para registro de geolocalização.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Cancelar ou reverter o status de entrega — use /logistics/cancel/{orderNumber} para cancelamentos pelo entregador.
  • Sinalizar etapas intermediárias (coleta, rota, chegada) — use os endpoints de evento correspondentes antes de finalizar.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
email
required
string

E-mail do entregador

lat
number

Latitude da posição do entregador

long
number

Longitude da posição do entregador

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "lat": 0,
  • "long": 0
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Delivery Order Cancel

Objetivo

Permitir que o entregador solicite o cancelamento do pedido por motivos operacionais (ex.: NOT_FOUND, RISK_AREA).

Quando usar

Utilize este endpoint somente quando:

  • O entregador não conseguir completar a entrega por motivos documentados no enum de razões disponível.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Cancelamentos administrativos que não passaram pelo fluxo do entregador — use /orders/{orderNumber}/cancel conforme escopo e permissões do parceiro.
  • Rejeição de pedido antes da confirmação pelo estabelecimento — use /orders/{orderNumber}/requestCancellation.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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, SYSTEMIC_ISSUES para problemas sistêmicos, RISK_AREA para áreas de risco, NOT_FOUND para destinatário não encontrado, PAYMENT_ISSUE para problemas no pagamento, INCORRECT para pedidos incorretos e OTHERS para motivos não mapeados.

Responses

Request samples

Content type
application/json
{
  • "email": "string",
  • "reason": "RISK_AREA"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Merchants

Visão geral

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.

Quando usar os endpoints Merchants ?

  • Quando precisar do status e metadados do estabelecimento (disponibilidade, informações básicas, indicadores resumo como portfólio ideal, conforme o contrato da resposta).
  • Quando for necessário abrir ou fechar o PDV na plataforma, com motivo quando o fechamento exigir justificativa.
  • Quando o integrador precisar métricas consolidadas de desempenho do seller por granularidade temporal, para relatórios ou automações próprias.

Quando não usar os endpoints Merchants ?

  • Para alterar disponibilidade de produtos ou SKUs específicos — use os endpoints do grupo Products (por exemplo disponibilidade de item).
  • Para detalhes de pedidos ou ciclo de pedido — use Orders e, para acompanhamento de eventos, Events.
  • KPIs não substituem consulta transacional de pedidos nem operações de catálogo, estoque ou preço — são leitura agregada somente.

Relação entre os endpoints

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"]

Make merchant availability

Objetivo

Abrir ou fechar um estabelecimento (operational availability) no Zé.

Quando usar

Para operação de abertura (operation: AVAILABLE) ou fechamento (operation: CLOSED) do PDV com razão obrigatória quando CLOSED.

Quando NÃO usar

Não usar para alterar disponibilidade de produtos individuais (use products/availability).

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "operation": "AVAILABLE",
  • "reasons": "INTERNET"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Get merchant information

Objetivo

Recuperar informações do estabelecimento (status, availability, basicInfo, idealPortfolio, etc).

Quando usar

Quando precisar do status operacional do PDV e metadados úteis para operação/decisões.

Quando NÃO usar

Não usar como substituto de integrações profundas de catálogo/WMS; dados são informativos.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "status": "AVAILABLE",
  • "basicInfo": {
    }
}

Get Merchant KPIs

Objetivo

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.

Quando usar

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).

Quando NÃO usar

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.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

query Parameters
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).

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

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

Orders

Visão geral

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.

Quando usar os endpoints Orders ?

  • Quando for necessário consultar estado e dados completos de um pedido para o qual você já possui o número válido na plataforma.
  • Quando o estabelecimento precisar aceitar o pedido ou solicitar cancelamento ou rejeição com código adequado ao status e às regras de negócio.
  • Quando o seu contrato de integração permitir cancelar o pedido de forma direta, com motivo obrigatório conforme o contrato da API.
  • Quando, após a confirmação, for preciso ajustar itens (remoção ou substituição) ou restaurar a composição anterior do pedido, conforme disponibilidade da rota para o seu caso.

Quando não usar os endpoints Orders ?

  • Para sincronizar mudanças de status ou evitar consultas repetidas em massa como se fosse fila de trabalho — use o grupo Events (polling e confirmação de consumo dos eventos).
  • Para catálogo, preço ou disponibilidade de produtos — use Products e Merchants quando aplicável.
  • Para obter ou renovar token — use Authentication (client_credentials).

Relação entre os endpoints

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"]

Detalhes do pedido

Objetivo

Recuperar os detalhes de um pedido a partir do seu número na plataforma Zé Delivery.

Quando usar

Utilize este endpoint somente quando:

  • For necessário consultar o estado e dados completos de um pedido (items, total, merchant, delivery, customer — conforme permissões).
  • Houver um orderNumber válido gerado pela plataforma.
  • O parceiro tiver autorização para ver os dados sensíveis (aplicável somente se houver acordo legal).

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Polling massivo de listas de pedidos (usar events:polling para eventos).
  • Recuperar pedidos não pertencentes ao escopo do parceiro sem autorização.
  • Operações de escrita/alteração de pedido.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "displayId": "123457890",
  • "status": "CREATED",
  • "type": "DELIVERY",
  • "salesChannel": "DEFAULT",
  • "createdAt": "2021-09-15T19:51:57.851343",
  • "orderTiming": "INSTANT",
  • "merchant": {
    },
  • "items": [
    ],
  • "otherFees": [
    ],
  • "discounts": [
    ],
  • "coupon": {
    },
  • "total": {
    },
  • "payments": {
    },
  • "customer": {
    },
  • "delivery": {
    },
  • "takeout": {
    },
  • "serviceFee": {
    },
  • "extraInfo": "Trazer bem gelada",
  • "statusHistory": [
    ]
}

Confirmar pedido

Objetivo

Confirmar/aceitar um pedido no sistema do Zé (aceitação pelo estabelecimento/parceiro).

Quando usar

Utilize este endpoint somente quando:

  • O estabelecimento/parceiro confirma que irá preparar o pedido.
  • É necessário informar preparationTime, orderExternalCode ou createdAt adicionais (opcionais).

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Cancelar pedidos (usar /requestCancellation ou /cancel).
  • Confirmar pedidos já confirmados sem validação (verificar status antes de confirmar).

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "reason": "string",
  • "orderExternalCode": "string",
  • "createdAt": "2021-09-15T19:51:57.851343",
  • "preparationTime": 0
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Solicitar cancelamento do pedido

Objetivo

Solicitar o cancelamento ou rejeição de um pedido, informando o código de motivo apropriado.

Quando usar

Utilize este endpoint somente quando:

  • O estabelecimento não puder atender o pedido (ex.: UNAVAILABLE_ITEM, RESTAURANT_WITHOUT_DELIVERY_PERSON etc.).
  • O pedido ainda estiver em status que permite requestCancellation conforme regras de negócio.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Cancelamentos feitos por entregador (use endpoints de logística quando aplicável).
  • Substituir o fluxo de cancelamento em massa sem observar regras por status do pedido.

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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, SYSTEMIC_ISSUES para problemas sistêmicos, DUPLICATE_APPLICATION para pedidos duplicados, UNAVAILABLE_ITEM para itens indisponíveis, RESTAURANT_WITHOUT_DELIVERY_PERSON para estabelecimento sem entregador, ORDER_OUTSIDE_THE_DELIVERY_AREA para pedidos fora da área de entrega, BLOCKED_CUSTOMER para clientes bloqueados, INTERNAL_DIFFICULTIES_OF_THE_RESTAURANT para dificuldades internas do estabelecimento, RISK_AREA para áreas de risco e DELIVERY_PROBLEM para problemas de entrega. Atenção, o cancelamento pode desencadear diferentes fluxos dependendo do status atual do pedido. Caso o pedido já tenha sido confirmado, apenas os seguintes códigos serão aceitos: UNAVAILABLE_ITEM, ORDER_OUTSIDE_THE_DELIVERY_AREA, INTERNAL_DIFFICULTIES_OF_THE_RESTAURANT e DELIVERY_PROBLEM. Caso o pedido não tenha sido confirmado, apenas os seguintes códigos serão aceitos: INTERNAL_DIFFICULTIES_OF_THE_RESTAURANT, UNAVAILABLE_ITEM e RESTAURANT_WITHOUT_DELIVERY_PERSON.

Responses

Request samples

Content type
application/json
{
  • "code": "UNAVAILABLE_ITEM"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Cancelar pedido

Objetivo

Cancelar um pedido em qualquer status (fluxo administrativo/operacional).

Quando usar

Utilize este endpoint somente quando:

  • For necessário cancelar o pedido por motivos operacionais (ex.: falta de estoque, operação com problema).
  • O parceiro tiver autorização para executar cancelamentos diretos.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Rejeição de pedido antes de confirmação sem usar os códigos corretos em requestCancellation (conforme política/fluxo acordado).
  • Cancelamentos sem justificativa correta (usar code obrigatória).

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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: POC_STOCKOUT para falta de estoque, OPER_ISSUES para problemas de operação, DELIVERY_ISSUE para problemas na entregga, WRONG_ADDRESS para endereço errado, LATE_ORDER para pedido atrasado, OTHER e OTHERS

Responses

Request samples

Content type
application/json
{
  • "code": "POC_STOCKOUT"
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Histórico de pedidos finalizados do estabelecimento

Objetivo

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.

Quando usar

Utilize este endpoint somente quando:

  • For necessário listar pedidos já finalizados de um estabelecimento (por exemplo, pedidos concluídos ou cancelados), dentro de um intervalo de datas.
  • Houver um merchantId válido ao qual o parceiro tenha acesso.
  • For desejável paginar os resultados (page, pageSize) e/ou ordená-los pela data de criação (sort).

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Consulta de pedidos em andamento (ainda não finalizados): eles não são retornados por este endpoint.
  • Acompanhamento em tempo real do ciclo de vida de pedidos: utilizar events:polling em conjunto com getOrderByNumber.
  • Recuperação de detalhes completos de um pedido específico (itens, taxas, descontos detalhados, cliente completo): utilizar getOrderByNumber.
  • Operações de escrita ou alteração de pedidos (confirmar, cancelar, restaurar, atualizar itens).

Importante

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.
  • O intervalo entre startDate e endDate não pode exceder 3 meses por consulta.
  • Para cobrir intervalos maiores, fracionar a consulta em múltiplas chamadas com janelas de até 3 meses, sempre dentro dos últimos 6 meses.

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

query Parameters
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. Não pode ser anterior a 6 meses contados a partir da data atual.

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 startDate, e o intervalo entre startDate e endDate não pode exceder 3 meses por consulta.

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. asc para ordem crescente e desc para ordem decrescente.

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "page": 1,
  • "pageSize": 20,
  • "hasNext": true,
  • "items": [
    ]
}

Restaurar pedido editado

Objetivo

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.

Quando usar

Utilize este endpoint somente quando:

  • Já tiver sido aplicada uma atualização de itens no pedido e for necessário desfazê-la.
  • O pedido estiver em condições que permitem restauração segundo as regras de negócio expostas pela API.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Substituir o cancelamento ou a solicitação de cancelamento quando o objetivo for encerrar o pedido.
  • Corrigir dados que não dependem do fluxo de edição de itens (consulte os demais endpoints do grupo Orders).

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Atualizar itens do pedido

Objetivo

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.

Quando usar

Utilize este endpoint somente quando:

  • O pedido estiver em status que permite edição de itens após a confirmação pelo estabelecimento (conforme regras da plataforma).
  • For necessário registrar remoções ou substituições antes da preparação ou da operação logística subsequente.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Alterar pedidos que ainda não foram confirmados (o fluxo esperado é consulta, depois confirmação ou solicitação de cancelamento).
  • Substituir o cancelamento do pedido quando a intenção for encerrar o pedido por completo (use os fluxos de cancelamento documentados no grupo Orders).

Importante

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
path Parameters
orderNumber
required
string >= 9
Example: 123456789

O número do pedido na plataforma Zé Delivery

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "removedItems": [
    ],
  • "replacedItems": [
    ]
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Products

Visão geral

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.

Quando usar os endpoints Products ?

  • Quando for necessário ligar ou desligar disponibilidade de SKU no PDV (catálogo gerenciado pelo parceiro, conforme escopo) ou, no catálogo externo, de produtos ou options (variantes/toppings) criados pela integração.
  • Quando precisar criar ou atualizar itens de produto por estabelecimento, ajustar oferta (preço/desconto) de um item ou fazer upsert em lote de itens ou promoções para vários merchants.
  • Quando for preciso listar itens do menu de um merchant com paginação e filtro por identificadores externos.
  • Quando a integração usar catálogo externo: sincronização em lote de SKUs, atualização de preço de produto ou de option por externalCode, conforme contrato da vertical.

Quando não usar os endpoints Products ?

  • Para pedidos (consulta, confirmação, cancelamento) — use o grupo Orders e, para sincronização de mudanças, Events.
  • Para abrir ou fechar o estabelecimento (PDV) — use Merchants (availability do merchant), não a disponibilidade de produto individual.
  • Para obter ou renovar token — use Authentication (client_credentials).
  • Para SKUs do catálogo padrão do Zé ou fluxos fora do escopo acordado — não use rotas de catálogo externo nem operações de item sem autorização explícita.

Relação entre os endpoints

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).

Create product item

Objetivo

Criar (POST) um item de produto para um estabelecimento (inclui price, images, category, tags).

Quando usar

POST: criar SKUs exclusivos do parceiro para o merchant (catálogo externo/partner-managed).

Quando NÃO usar

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.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "productId": "1234",
  • "externalProductId": "1234",
  • "name": "Nome do Produto",
  • "description": "Descrição do produto",
  • "category": "categoria",
  • "price": {
    },
  • "images": [],
  • "tags": [
    ]
}

Response samples

Content type
application/json
{ }

Update product item

Objetivo

Atualizar (PUT) um item de produto para um estabelecimento (inclui price, images, category, tags).

Quando usar

PUT: atualizar metadados do item (nome, descrição, preço, imagens).

Quando NÃO usar

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.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "productId": "1234",
  • "externalProductId": "1234",
  • "name": "Nome do Produto",
  • "description": "Descrição do produto",
  • "category": "categoria",
  • "price": {
    },
  • "images": [],
  • "tags": [
    ]
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Upsert product items

Objetivo

Upsert em lote (atualizar múltiplos produtos) — sincronização inicial ou periódica de catálogo parceiro.

Quando usar

Onboarding inicial de catálogo exclusivo do parceiro ou sincronização de muitos SKUs.

Quando NÃO usar

Para atualizações unitárias frequentes (usar endpoints unitários); não criar produtos no catálogo oficial do Zé.

Importante

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
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
required
Array of objects

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Update product promotions

Objetivo

Atualizar promoções de produtos para múltiplos estabelecimentos em lote.

Quando usar

Aplicar/retirar campanhas/promos para vários merchants de uma só vez.

Quando NÃO usar

Para promoções que impactam catálogo padrão sem acordo; não usar para promoções ad-hoc sem campos obrigatórios.

Importante

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
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
Array ()
One of
Any of
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

Responses

Request samples

Content type
application/json
Example
[
  • {
    }
]

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Update product availability

Objetivo

Atualizar disponibilidade (on/off) de um SKU do estabelecimento (produto ou externalProductId).

Quando usar

Quando o parceiro precisa marcar um produto específico como disponível ou indisponível no PDV.

Quando NÃO usar

Para atualizar produtos do catálogo padrão do Zé (aplicável somente a SKUs gerenciados pelo parceiro quando apropriado).

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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

Responses

Request samples

Content type
application/json
{
  • "productId": "1234",
  • "externalProductId": "1234",
  • "available": true
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Get merchant items

Objetivo

Buscar itens do menu de um estabelecimento (paginação e filtro por externalProductIds).

Quando usar

Para listar produtos expostos de um merchant (paginação via page e pageSize).

Quando NÃO usar

Não usar para modificar itens; para detalhes completos do produto usar endpoints de produto.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

query Parameters
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.

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
{
  • "currentPage": 0,
  • "totalPages": 0,
  • "totalItems": 0,
  • "pageSize": 0,
  • "items": [
    ]
}

Update item offer

Objetivo

Atualizar/definir oferta (price/discount) de um item no estabelecimento.

Quando usar

Aplicar preço ou promoção em um item específico do merchant (price + originalValue).

Quando NÃO usar

Para alterar o catálogo global do Zé ou preços de SKUs do catálogo padrão (sem acordo).

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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).

Responses

Request samples

Content type
application/json
{
  • "productId": "1234",
  • "externalProductId": "1234",
  • "price": {
    }
}

Response samples

Content type
application/json
{ }

Update external catalog product availability

Objetivo

Atualizar a disponibilidade (on/off) de SKUs exclusivos criados pelo parceiro, destinados a uma vertical específica dentro do Zé Delivery.

Quando usar

Utilize este endpoint somente quando:

  • O SKU foi criado pelo parceiro via integração.
  • O SKU não existe no catálogo padrão do Zé.
  • O produto será consumido exclusivamente dentro da vertical associada a esta integração.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Produtos do catálogo padrão do Zé.
  • SKUs ABI já existentes na base.
  • Atualizações de disponibilidade de produtos padrão do marketplace.
  • Fluxos genéricos de catálogo.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "productId": "1234",
  • "externalCode": "1234",
  • "available": true
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Update external catalog option price

Objetivo

Atualizar o preço de uma option (variante/topping) pertencente a um SKU exclusivo do catálogo externo, identificado por externalCode.

Quando usar

Utilize este endpoint somente quando:

  • A option (variante) pertence a um SKU criado via integração externa.
  • O parceiro precisa ajustar preços de variantes/toppings gerenciadas no catálogo externo.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Atualizar preços de produtos do catálogo padrão do Zé.
  • Atualizações de pricing em SKUs ABI já cadastrados.
  • Atualizações massivas do marketplace fora do escopo do catálogo externo.

Importante

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
path Parameters
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.

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
price
number

O preço final do produto

Responses

Request samples

Content type
application/json
{
  • "price": 29.9
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Update external catalog product price

Objetivo

Atualizar o preço de venda de um SKU exclusivo criado pelo parceiro, identificado por externalCode.

Quando usar

Utilize este endpoint somente quando:

  • O SKU foi criado via integração externa e não existe no catálogo oficial do Zé.
  • For necessário ajustar o preço de venda do SKU em produção.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Atualizar preços de SKUs do catálogo padrão do Zé.
  • Alterar preços de itens que são compartilhados entre verticais sem autorização.

Importante

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
path Parameters
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.

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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.

Responses

Request samples

Content type
application/json
{
  • "price": 29.9,
  • "fullPrice": 39.9
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Upsert external catalog products

Objetivo

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.

Quando usar

Utilize este endpoint somente quando:

  • For necessário fazer onboarding inicial do catálogo exclusivo do parceiro.
  • Realizar sincronizações periódicas de muitos SKUs (bulk) criados pelo parceiro.
  • O catálogo enviado refere-se exclusivamente a produtos que não existem no catálogo oficial do Zé.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Criar ou atualizar produtos do catálogo padrão do Zé.
  • Sincronizações de SKUs que já pertençam ao marketplace padrão ou que sejam compartilhados entre verticais.
  • Operações unitárias frequentes (usar endpoints unitários para updates single-item).

Importante

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
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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: []

Responses

Request samples

Content type
application/json
{
  • "merchantId": "1234",
  • "brandId": 5678,
  • "externalProductId": "12345",
  • "title": "Nome do Produto",
  • "description": "Descrição do produto",
  • "category": "categoria",
  • "price": {
    },
  • "images": [],
  • "tags": [
    ],
  • "optionGroups": [
    ]
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Update external catalog option availability

Objetivo

Controlar a disponibilidade granular (on/off) de options (variantes/toppings) de SKUs exclusivos do parceiro.

Quando usar

Utilize este endpoint somente quando:

  • For necessário marcar uma option como disponível ou indisponível para um merchant específico.
  • A option pertence a um SKU gerenciado no catálogo externo.

Quando NÃO usar

Este endpoint não deve ser utilizado para:

  • Controlar availability de opções que pertencem a produtos do catálogo padrão do Zé.
  • Controlar options em escala global fora do escopo da vertical de integração.

Importante

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
path Parameters
merchantId
required
string
Example: 1234

O id do estabelecimento

header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
optionId
string

O identificador da opção na plataforma Zé Delivery.

available
boolean

Indica se a opção está disponível.

Responses

Request samples

Content type
application/json
{
  • "optionId": "1234",
  • "available": true
}

Response samples

Content type
application/json
{
  • "code": "string",
  • "title": "string",
  • "type": "string",
  • "messages": [
    ]
}

Webhooks

Visão geral

Os endpoints do grupo Webhooks permitem consultar e criar/atualizar a configuração de entrega de eventos para a URL do seu sistema.

Configurações

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.

Política de resposta HTTP, retries e acknowledgment

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:

  • Qualquer status 2xx é interpretado como processamento com sucesso; nesse caso fazemos o ack do evento (ele não volta no polling).
  • Se a sua URL responder 404, não realizamos novas tentativas de envio: consideramos que a rota não existe no endpoint configurado.
  • Para qualquer outro status de erro (resposta que não seja 2xx e que não seja esse caso de 404), realizamos até 3 tentativas de entrega.

Validação de autenticidade do evento

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.

Quando usar os endpoints Webhooks?

  • Quando quiser receber notificações em tempo real na sua própria URL em vez de depender só de consultas periódicas.
  • Para ativar ou pausar o envio (active), alterar a URL ou ajustar os tipos de evento (subscribedEvents no PATCH; na resposta e na listagem, subscriptions).
  • Para obter a configuração atual (incluindo hash para validação de assinatura), use a listagem.

Relação entre os endpoints

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"]

Configurar webhook

Objetivo

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 usar

Quando o parceiro optar por notificações enviadas pela plataforma para um endpoint próprio em substituição ao fluxo de polling.

Quando NÃO usar

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).

Importante

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
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Request Body schema: application/json
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 é false.

subscribedEvents
Array of strings (WebhookSubscriptionType)
Items Value: "ORDER_EVENTS"

Lista de tipos de eventos inscritos. Se omitido, a lista fica vazia.

Responses

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
{
  • "clientId": "5e505642-9024-474d-9434-e5a44f505cc5",
  • "hash": "string",
  • "endpoint": "http://example.com",
  • "active": true,
  • "subscriptions": [
    ]
}

Listar webhook do cliente

Objetivo

Consultar a configuração de webhook associada ao cliente autenticado na Seller Public API.

Quando usar

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.

Quando NÃO usar

Não lista eventos como no GET - events:polling. Para criar ou alterar as configurações do webhook, use PATCH /webhooks.

Importante

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
header Parameters
Authorization
required
string

token de autenticação para acessar o recurso

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Changelog

2026-05-05

  • Tipo de mudança: Nova feature
  • Descrição: A documentação pública da API passa a incluir o endpoint de histórico de pedidos (GET /order-history), com detalhes de rota, parâmetros e estrutura de resposta para uso por parceiros.
  • 🔹 Antes vs Depois
  • Antes: O endpoint de histórico de pedidos não estava documentado na especificação pública da API.
  • Depois: Passa a existir documentação do endpoint de histórico de pedidos, acessível na referência pública da API.
  • 🔹 Impacto para parceiros: Nenhum impacto — não há alteração em contratos de request ou response existentes; apenas documentação adicional do endpoint.

2026-05-04

  • Endpoint(s) impactado(s): GET /merchants/{merchantId}/menu/items
  • Tipo de mudança: Nova feature
  • Descrição: O payload de resposta da listagem paginada de itens do cardápio passa a incluir a propriedade isPortfolioIdeal, indicando se o item é considerado ideal para o portfólio do parceiro.
  • 🔹 Antes vs Depois
  • Antes:
    {
    "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
      }
    }
    }
  • Depois:
    {
    "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
      }
    }
    }
  • 🔹 Impacto para parceiros: Ajuste opcional — a propriedade 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.



  • Endpoint(s) impactado(s): GET /webhooks PATCH /webhooks
  • Tipo de mudança: Nova feature
  • Descrição: A documentação pública da API passa a incluir os endpoints de gerenciamento de webhooks, permitindo que parceiros consultem e configurem a URL de destino dos eventos de pedido.
  • 🔹 Antes vs Depois
  • Antes: Endpoints não documentados na especificação pública.
  • Depois:
    [
    {
      "clientId": "string",
      "hash": "string",
      "endpoint": "string",
      "active": true,
      "subscriptions": ["ORDER_EVENTS"]
    }
    ]
  • 🔹 Impacto para parceiros: Ajuste opcional — parceiros que desejam receber eventos de pedido via webhook podem agora consultar (GET /webhooks) e configurar (PATCH /webhooks) o endpoint de destino conforme o contrato publicado.

2026-04-23

  • Tipo de mudança: Nova feature
  • Descrição: A documentação pública passa a oferecer o fluxo Quero integrar com o Zé: nova opção na navegação do portal que abre um modal com formulário para manifestação de interesse em integrar com o Zé Delivery.
  • 🔹 Antes vs Depois
  • Antes: No portal da documentação da API não existia um caminho dedicado para quem deseja iniciar o processo de integração.
  • Depois: Passa a existir uma entrada explícita no menu da documentação que abre, em modal, o formulário de interesse em integração.
  • 🔹 Impacto para parceiros: Nenhum impacto — não há alteração em endpoints, autenticação ou payloads; apenas conteúdo e experiência complementares na documentação.

2026-04-16

  • Tipo de mudança: Melhoria
  • Descrição: A documentação pública da API passa a incluir uma seção de perguntas frequentes (FAQ), com respostas às dúvidas mais comuns de integração.
  • 🔹 Antes vs Depois
  • Antes: Não havia FAQ publicado junto à documentação da API.
  • Depois: Passa a existir material de FAQ acessível na documentação, alinhado às dúvidas recorrentes de quem integra.
  • 🔹 Impacto para parceiros: Nenhum impacto — não há mudança de rotas, verbos HTTP nem de contratos de request ou response; apenas documentação adicional.

2026-04-06

  • Endpoint(s) impactado(s): GET /merchants/{merchantId}/menu/items
  • Tipo de mudança: Breaking change
  • Descrição: Na listagem paginada de itens do cardápio, quando a resposta incluir o objeto current em priceDetails.sellerDiscount, o contrato público passa a exigir a propriedade scheduleType, com valores definidos pelo enum publicado no esquema.
  • 🔹 Antes vs Depois
  • Antes:
    {
    "current": {
      "createdAt": "string",
      "discountPercentageValue": 0,
      "id": "string",
      "active": true,
      "reason": "string",
      "updatedAt": "string",
      "username": "string"
    }
    }
  • Depois:
    {
    "current": {
      "createdAt": "string",
      "discountPercentageValue": 0,
      "id": "string",
      "scheduleType": "ALWAYS",
      "active": true,
      "reason": "string",
      "updatedAt": "string",
      "username": "string"
    }
    }
  • 🔹 Impacto para parceiros: Ajuste obrigatório — quem consome 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.
  • Breaking change (se aplicável): Integrações que fixam o conjunto de campos de 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.

FAQ

Visão geral

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:

  • Recebimento e gestão de pedidos
  • Atualização de catálogo (produtos, preços, disponibilidade)
  • Integração logística
  • Consulta de eventos e status
  • Gestão de lojas

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:

  • Sistema próprio (OMS, WMS, ERP, marketplace, etc.)
  • Capacidade técnica de integração via API, a ser validada pelo time técnico do Zé Delivery
  • Acordo comercial com o Zé Delivery

Por onde começar

Como iniciar uma integração com o Zé Delivery?

O processo segue estas etapas:

  1. Aprovação da integração pelo time comercial do Zé
  2. Pré-onboarding — validação técnica pelo time técnico do Zé
  3. Kickoff técnico — liberação de credenciais em ambiente de testes
  4. Desenvolvimento e teste da integração — pelo integrador, conforme a documentação, em ambiente de testes
  5. Homologação e aprovação dos testes — pelo time técnico do Zé
  6. Liberação de credenciais em produção
  7. Go-live controlado — alinhado com o time comercial do Zé
  8. Rollout — alinhado com o time comercial do Zé

Existe ambiente de testes?

Sim. URLs base:

  • Development: https://seller-public-api.release.ze.delivery
  • Production: https://seller-public-api.ze.delivery

Preciso 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.

Sobre a API

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:

  1. Envie client_id e client_secret para o endpoint /auth
  2. A API retornará um access_token
  3. Utilize esse token nas próximas requisições

👉 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:

  1. Chame novamente o endpoint /auth
  2. Gere um novo access_token
  3. Continue utilizando a API normalmente

Boas práticas:

  • Armazene (cache) o token no seu sistema
  • Evite gerar token a cada requisição
  • Monitore o tempo de expiração (expire_in)

Erros comuns:

  • 401 Unauthorized — token inválido ou expirado

Como funciona o processo de homologação da integração?

  1. O parceiro recebe credenciais de ambiente de desenvolvimento (dev)
  2. Realiza a integração com os endpoints liberados para o seu escopo
  3. Executa os testes de integração de forma independente
  4. Quando estiver pronto, agenda uma validação com o time do Zé
  5. Durante a validação, são realizados testes em conjunto (em tempo real)

Se aprovado:

  • O time técnico do Zé comunica o time comercial sobre a homologação
  • Após aprovação do comercial, são liberadas as credenciais de produção

👉 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)

  • Retorno imediato da operação
  • Status HTTP típico: 200 OK

Assíncrona (async)

  • A requisição é aceita para processamento e finalizada posteriormente
  • Status HTTP típico: 202 Accepted

👉 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 interno, gerenciado pelo Zé Delivery
  • Utilizado na maioria das integrações

Catálogo externo do parceiro (em validação)

  • O parceiro pode criar e gerenciar o próprio catálogo via API
  • Usado em integrações específicas (ex.: novas verticais ou modelos de negócio)

👉 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é.

Monitoramento

Como monitorar minha integração?

Recomenda-se acompanhamento diário, com alertas para instabilidade ou erros, observando:

  • Taxa de erro
  • Latência
  • Volume de requisições
  • Status de pedidos

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:

  • Disponibilidade dos serviços
  • Incidentes em andamento
  • Histórico de indisponibilidades

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?

  • Hoje: via Changelog nesta documentação.
  • Futuro: versionamento e alertas automáticos.

Quero integrar com o Zé