Catálogo
├── Contexto (DEFAULT, WHITELABEL, INDOOR)
│ ├── Categoria
│ │ └── Item
│ │ ├── Produtos (products)
│ │ └── Grupos de complementos (optionGroups)
│ │ └── Opções (options)contextModifiers.
| Contexto | Canal |
|---|---|
DEFAULT | Entrega |
WHITELABEL | Cardápio Digital |
INDOOR | Consumo no Local |
contextModifiers para customizar valores por contexto em vez de duplicar o item.
template define o tipo:DEFAULT — Itens comuns (lanches, bebidas, sobremesas).PIZZA — Itens de pizza, com grupos de complementos obrigatórios (SIZE, CRUST, EDGE, TOPPING). Uma loja aceita no máximo uma categoria PIZZA. Veja Pizza.DEFAULT no item e a estrutura de complementos (optionGroups) para modelar a complexidade necessária. Veja Combos.
type | Uso | Grupos obrigatórios |
|---|---|---|
DEFAULT | Item simples | Nenhum |
PIZZA | Pizza | SIZE, CRUST, EDGE, TOPPING |
COMBO_V2 | Combo com até 3 níveis de customização | Nenhum |
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | Sim | Identificador que você gera. Use-o para referenciar o item em atualizações. |
type | enum | Sim | DEFAULT, PIZZA ou COMBO_V2. |
categoryId | string | Sim | ID da categoria. |
status | enum | Sim | AVAILABLE (visível) ou UNAVAILABLE (pausado). |
price | object | Sim | Objeto com value (número) e originalValue (opcional). |
externalCode | string | Sim | Seu código POS. Único por merchant. |
id — Identificador do itemid é um identificador que você gera e deve seguir o padrão UUID v4. Ele identifica unicamente o item no seu sistema.Se você enviar um id que não esteja no formato UUID v4, a API retornará um erro 404.Exemplos de UUIDs v4 válidos:550e8400-e29b-41d4-a716-446655440000123e4567-e89b-12d3-a456-426614174000externalCode — Código POS customizadoexternalCode é seu identificador customizado para integração com PDV. Diferentemente do id, não precisa seguir o padrão UUID — é uma string arbitrária que você controla. Deve ser único dentro do merchant.Exemplos válidos:BURGER_001, COKE_001, COLDRINK_GROUPxburger-default, frappuccino-grandeexternalCode já existente, a API reutiliza o item em vez de criar outro. Você pode usar o externalCode como identificador principal do seu POS/PDV em vez do id — eles são interoperáveis para fins de sincronização.
{
"value": 25.00,
"originalValue": 30.00
}value — Preço cobrado.originalValue — Preço original, usado para exibir desconto. Opcional.
optionGroups) que contêm opções (options).{
"optionGroups": [
{
"id": "550e8400-e29b-41d4-a716-446655440010",
"name": "Escolha uma bebida",
"optionGroupType": "OFFER_UNIT",
"min": 0,
"max": 1,
"optionIds": ["opt-coke"]
}
],
"options": [
{
"id": "opt-coke",
"productId": "prod-coke",
"price": {"value": 8.00}
}
]
}
optionGroupType:| Tipo | Uso | Exemplo |
|---|---|---|
OFFER_UNIT | Venda adicional (cross-sell) | Bebida no combo |
SPECIFICATION | Especificação de preparo | Ponto da carne |
INGREDIENTS | Alteração de ingredientes | Com ou sem cebola |
CUTLERY | Utensílios | Garfo, faca, guardanapo |
SIZE, CRUST, EDGE e TOPPING. Veja Pizza.min e max)min e max no grupo para controlar quantas opções o cliente pode escolher:| Regra | min | max |
|---|---|---|
| Obrigatório, 1 escolha | 1 | 1 |
| Obrigatório, múltiplas escolhas | 2 | 3 |
| Opcional, 1 escolha | 0 | 1 |
| Opcional, múltiplas escolhas | 0 | 5 |


contextModifierscontextModifiers para sobrescrever campos de um item ou opção em contextos específicos, sem duplicar o objeto:{
"item": {
"id": "item-burger",
"price": {"value": 25.00},
"status": "AVAILABLE",
"contextModifiers": [
{
"catalogContext": "WHITELABEL",
"price": {"value": 28.00},
"status": "UNAVAILABLE"
}
]
}
}contextModifiers:catalogContext — Contexto afetado (obrigatório).price — Preço no contexto.status — Status no contexto.externalCode — Código POS no contexto.UNAVAILABLE automaticamente. Use inventário para produtos com quantidade limitada (ex.: bolo artesanal). Veja Gerenciar Disponibilidade.