Importação Completa de Menu
Este endpoint é utilizado para importar ou atualizar um menu completo, incluindo categorias, tamanhos (sizes), regras de modulação (grupos obrigatórios) e promoções para uma ou mais lojas do tipo Cardápio.
/menu/importRegra Crítica de Negócio (Sobrescrita):
Este é um endpoint de Importação Massiva. Ao utilizá-lo, você está enviando a estrutura completa do menu que deseja que exista para as lojas listadas.
Exemplo para Múltiplos Sabores (ex: Pizza)
Exemplo Payload Menu Múltiplos Sabores - Configuração Mandatário por: Categoria
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu teste completo",
"categories": [
{
"culinary_id": 481,
"name": "Pizzas Especiais",
"description": "Todas as pizzas incluem borda mandatoria (escolha a sua!)",
"packing_fee": 0.99,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "08:00",
"to": "18:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true
},
{
"name": "M",
"flavors_amount": 2,
"additional_max_limit": 8,
"status": true
},
{
"name": "G",
"flavors_amount": 3,
"additional_max_limit": 10,
"status": true,
"additional_items": [
{
"sku": "ADD_BACON",
"name": "Bacon Crocante Extra",
"value": 3.99,
"status": true
},
{
"sku": "ADD_CHEDDAR",
"name": "Cheddar Cremoso Extra",
"value": 4.5,
"status": true
}
]
}
],
"mandatory_groups": [
{
"name": "Bordas",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BORDA_SEM",
"name": "Sem Borda",
"value": 0,
"status": true
},
{
"sku": "BORDA_CATU",
"name": "Borda de Catupiry",
"value": 8.5,
"status": true
}
]
}
],
"daily_sale": {
"start": "2025-12-01",
"end": "2025-12-31",
"daily_weekday_sale": [
{
"weekday_code": 0,
"discount_type": 0,
"discount": 5
},
{
"weekday_code": 4,
"discount_type": 1,
"discount": 10
}
]
},
"items": [
{
"sku": "PZ0001",
"name": "Pizza Calabresa Especial",
"description": "Mussarela, calabresa e azeitonas.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0001P",
"value": 35,
"status": true
},
{
"size_name": "M",
"sku": "PZ0001M",
"value": 45,
"status": true
},
{
"size_name": "G",
"sku": "PZ0001G",
"value": 55,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
},
{
"sku": "PZ0002",
"name": "Pizza Quatro Queijos PREMIUM",
"description": "Mussarela, provolone, parmesão e gorgonzola.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0002P",
"value": 40,
"status": true
},
{
"size_name": "M",
"sku": "PZ0002M",
"value": 50,
"status": true
},
{
"size_name": "G",
"sku": "PZ0002G",
"value": 60,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
}
]
}
]
}
]
}
Exemplo Payload Menu Múltiplos Sabores - Configuração Mandatário por: Categoria + Tamanho Específico
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu demonstrativo de modulação por Tamanho",
"categories": [
{
"culinary_id": 481,
"name": "Pizzas Gourmet",
"description": "Pizzas com regras de borda obrigatória e brinde no tamanho G.",
"packing_fee": 0.99,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "08:00",
"to": "18:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true
},
{
"name": "M",
"flavors_amount": 2,
"additional_max_limit": 8,
"status": true
},
{
"name": "G",
"flavors_amount": 3,
"additional_max_limit": 10,
"status": true,
"mandatory_groups": [
{
"name": "Escolha da Bebida",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BEBIDA_AGUA",
"name": "Água Mineral",
"value": 0,
"status": true
},
{
"sku": "BEBIDA_REFR",
"name": "Refrigerante 200ml",
"value": 0,
"status": true
}
]
}
]
}
],
"mandatory_groups": [
{
"name": "Escolha a Borda",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BORDA_SEM",
"name": "Sem Borda",
"value": 0,
"status": true
},
{
"sku": "BORDA_CHED",
"name": "Borda de Cheddar",
"value": 7,
"status": true
}
]
}
],
"items": [
{
"sku": "PZ0010",
"name": "Pizza Margherita",
"description": "Mussarela, manjericão e tomate.",
"highlight": true,
"status": true,
"tags": [
"VEGETARIAN",
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0010P",
"value": 30,
"status": true
},
{
"size_name": "M",
"sku": "PZ0010M",
"value": 40,
"status": true
},
{
"size_name": "G",
"sku": "PZ0010G",
"value": 50,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
},
{
"sku": "PZ0011",
"name": "Pizza Vegana de Brócolis",
"description": "Queijo vegano, brócolis, alho e azeite.",
"highlight": false,
"status": true,
"tags": [
"VEGETARIAN",
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0011P",
"value": 45,
"status": true
},
{
"size_name": "M",
"sku": "PZ0011M",
"value": 55,
"status": true
},
{
"size_name": "G",
"sku": "PZ0011G",
"value": 65,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": [],
"daily_sale": {}
}
]
}
]
}
]
}
Exemplo Payload Menu Múltiplos Sabores - Configuração Mandatário por: Categoria + Tamanho Específico + Item Específico
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu demonstrativo de modulação em 3 níveis (Múltiplos Sabores)",
"categories": [
{
"culinary_id": 481,
"name": "Pizzas Gourmet",
"description": "Pizzas com regras de borda obrigatória.",
"packing_fee": 0.5,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "11:00",
"to": "23:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 3,
"status": true
},
{
"name": "M",
"flavors_amount": 2,
"additional_max_limit": 5,
"status": true
},
{
"name": "G",
"flavors_amount": 3,
"additional_max_limit": 7,
"status": true,
"mandatory_groups": [
{
"name": "Molho Extra",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "MOLHO_VERDE",
"name": "Molho Verde Grátis",
"value": 0,
"status": true
},
{
"sku": "MOLHO_CHEDDAR",
"name": "Molho Cheddar (+3)",
"value": 3,
"status": true
}
]
}
]
}
],
"mandatory_groups": [
{
"name": "Escolha a Borda",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BORDA_SEM",
"name": "Sem Borda",
"value": 0,
"status": true
},
{
"sku": "BORDA_CATU",
"name": "Borda de Catupiry",
"value": 8,
"status": true
}
]
}
],
"items": [
{
"sku": "PZ0015",
"name": "Pizza Gourmet de Salmão",
"description": "Salmão, cream cheese e cebolinha.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0015P",
"value": 50,
"status": true
},
{
"size_name": "M",
"sku": "PZ0015M",
"value": 65,
"status": true
},
{
"size_name": "G",
"sku": "PZ0015G",
"value": 80,
"status": true
}
],
"mandatory_groups": [
{
"name": "Escolha o Queijo Base",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BASE_MU",
"name": "Mussarela",
"value": 0,
"status": true
},
{
"sku": "BASE_CREAM",
"name": "Cream Cheese (+5)",
"value": 5,
"status": true
}
]
}
],
"item_week_days": []
},
{
"sku": "PZ0016",
"name": "Pizza Frango c/ Catupiry",
"description": "Frango desfiado, catupiry e orégano.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0016P",
"value": 40,
"status": true
},
{
"size_name": "M",
"sku": "PZ0016M",
"value": 50,
"status": true
},
{
"size_name": "G",
"sku": "PZ0016G",
"value": 60,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
}
]
}
]
}
]
}
Exemplo para Único Sabor (ex: Hamburger, bebidas,etc)
Exemplo Payload Menu Único Sabor - Configuração Mandatário por: Categoria
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu demonstrativo de modulação apenas por Categoria (Pão Mandatório)",
"categories": [
{
"culinary_id": 481,
"name": "Sanduíches Artesanais",
"description": "Todos os sanduíches exigem a escolha de um tipo de pão.",
"packing_fee": 0.5,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "11:00",
"to": "23:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 3,
"status": true
},
{
"name": "M",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true
},
{
"name": "G",
"flavors_amount": 1,
"additional_max_limit": 7,
"status": true
}
],
"mandatory_groups": [
{
"name": "Escolha o Pão",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "PAO_BRIOCHE",
"name": "Pão Brioche",
"value": 0,
"status": true
},
{
"sku": "PAO_INTEG",
"name": "Pão Integral",
"value": 1.5,
"status": true
}
]
}
],
"items": [
{
"sku": "HMBR001",
"name": "Hambúrguer Clássico",
"description": "Carne, queijo e salada.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR001P",
"value": 25,
"status": true
},
{
"size_name": "M",
"sku": "HMBR001M",
"value": 35,
"status": true
},
{
"size_name": "G",
"sku": "HMBR001G",
"value": 45,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
},
{
"sku": "HMBR002",
"name": "Sanduíche de Frango Crocante",
"description": "Frango empanado e maionese especial.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR002P",
"value": 28,
"status": true
},
{
"size_name": "M",
"sku": "HMBR002M",
"value": 38,
"status": true
},
{
"size_name": "G",
"sku": "HMBR002G",
"value": 48,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
}
]
}
]
}
]
}
Exemplo Payload Menu Único Sabor - Configuração Mandatário por: Categoria + Tamanho Específico
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu demonstrativo de modulação por Tamanho (Hambúrgueres)",
"categories": [
{
"culinary_id": 481,
"name": "Sanduíches Artesanais",
"description": "Escolha o pão (mandatório) e ganhe um molho extra no tamanho G.",
"packing_fee": 0.5,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "11:00",
"to": "23:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 3,
"status": true
},
{
"name": "M",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true
},
{
"name": "G",
"flavors_amount": 1,
"additional_max_limit": 7,
"status": true,
"mandatory_groups": [
{
"name": "Molho Grátis",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "MOLHO_MAYO",
"name": "Maionese Artesanal",
"value": 0,
"status": true
},
{
"sku": "MOLHO_KATCH",
"name": "Ketchup Picante",
"value": 0,
"status": true
}
]
}
]
}
],
"mandatory_groups": [
{
"name": "Escolha o Pão",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "PAO_BRIOCHE",
"name": "Pão Brioche",
"value": 0,
"status": true
},
{
"sku": "PAO_INTEG",
"name": "Pão Integral",
"value": 1.5,
"status": true
}
]
}
],
"items": [
{
"sku": "HMBR001",
"name": "Hambúrguer Clássico",
"description": "Carne, queijo e salada.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR001P",
"value": 25,
"status": true
},
{
"size_name": "M",
"sku": "HMBR001M",
"value": 35,
"status": true
},
{
"size_name": "G",
"sku": "HMBR001G",
"value": 45,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
},
{
"sku": "HMBR002",
"name": "Sanduíche de Frango Crocante",
"description": "Frango empanado e maionese especial.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR002P",
"value": 28,
"status": true
},
{
"size_name": "M",
"sku": "HMBR002M",
"value": 38,
"status": true
},
{
"size_name": "G",
"sku": "HMBR002G",
"value": 48,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
}
]
}
]
}
]
}
Exemplo Payload Menu Único Sabor - Configuração Mandatário por: Categoria + Tamanho Específico + Item Específico
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu demonstrativo de modulação em 3 níveis",
"categories": [
{
"culinary_id": 481,
"name": "Sanduíches Artesanais",
"description": "Todos os sanduíches exigem a escolha do pão.",
"packing_fee": 0.5,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "11:00",
"to": "23:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 3,
"status": true
},
{
"name": "M",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true
},
{
"name": "G",
"flavors_amount": 1,
"additional_max_limit": 7,
"status": true,
"mandatory_groups": [
{
"name": "Molho Grátis",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "MOLHO_MAYO",
"name": "Maionese Artesanal",
"value": 0,
"status": true
},
{
"sku": "MOLHO_KATCH",
"name": "Ketchup Picante",
"value": 0,
"status": true
}
]
}
]
}
],
"mandatory_groups": [
{
"name": "Escolha o Pão",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "PAO_BRIOCHE",
"name": "Pão Brioche",
"value": 0,
"status": true
},
{
"sku": "PAO_INTEG",
"name": "Pão Integral",
"value": 1.5,
"status": true
}
]
}
],
"items": [
{
"sku": "HMBR001",
"name": "Hambúrguer Clássico",
"description": "Carne, queijo e salada.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR001P",
"value": 25,
"status": true
},
{
"size_name": "M",
"sku": "HMBR001M",
"value": 35,
"status": true
},
{
"size_name": "G",
"sku": "HMBR001G",
"value": 45,
"status": true
}
],
"mandatory_groups": [
{
"name": "Ponto da Carne",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "MEIO",
"name": "Ao Ponto",
"value": 0,
"status": true
},
{
"sku": "BEM",
"name": "Bem Passado",
"value": 0,
"status": true
}
]
}
],
"item_week_days": []
},
{
"sku": "HMBR002",
"name": "Sanduíche de Frango Crocante",
"description": "Frango empanado e maionese especial.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "HMBR002P",
"value": 28,
"status": true
},
{
"size_name": "M",
"sku": "HMBR002M",
"value": 38,
"status": true
},
{
"size_name": "G",
"sku": "HMBR002G",
"value": 48,
"status": true
}
],
"mandatory_groups": [],
"item_week_days": []
}
]
}
]
}
]
}
Exemplo Menu Completo
Exemplo Payload Menu Completo
{
"menus": [
{
"store_ids": [
53852
],
"description": "Menu de Pizza com modulação consolidada no nível Categoria/Tamanho.",
"categories": [
{
"culinary_id": 481,
"name": "Pizzas Gourmet",
"description": "Pizzas com regras de borda obrigatória.",
"packing_fee": 0.5,
"flavor_pricing_option": 1,
"status": true,
"available_hours": {
"first_interval": {
"from": "11:00",
"to": "23:00"
}
},
"sizes": [
{
"name": "P",
"flavors_amount": 1,
"additional_max_limit": 5,
"status": true,
"additional_items": [
{
"sku": "ADD_AZEI",
"name": "Azeitona Extra",
"value": 2,
"status": true
},
{
"sku": "ADD_BACON",
"name": "Bacon Extra",
"value": 3,
"status": true
},
{
"sku": "ADD_BROC",
"name": "Brócolis Extra",
"value": 3,
"status": true
}
]
},
{
"name": "M",
"flavors_amount": 2,
"additional_max_limit": 8,
"status": true,
"additional_items": [
{
"sku": "ADD_AZEI",
"name": "Azeitona Extra",
"value": 2,
"status": true
},
{
"sku": "ADD_BACON",
"name": "Bacon Extra",
"value": 3,
"status": true
},
{
"sku": "ADD_QUEIJO",
"name": "Queijo Vegano",
"value": 5,
"status": true
}
]
},
{
"name": "G",
"flavors_amount": 2,
"additional_max_limit": 10,
"status": true,
"mandatory_groups": [
{
"name": "Molho Grátis",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "MOLHO_MAYO",
"name": "Maionese Artesanal",
"value": 0,
"status": true
},
{
"sku": "MOLHO_KATCH",
"name": "Ketchup Picante",
"value": 0,
"status": true
}
]
}
],
"additional_items": [
{
"sku": "ADD_AZEI",
"name": "Azeitona Extra",
"value": 2,
"status": true
},
{
"sku": "ADD_PIMEN",
"name": "Pimenta Calabreza",
"value": 1.5,
"status": true
},
{
"sku": "ADD_QUEIJO",
"name": "Queijo Vegano",
"value": 5,
"status": true
}
]
}
],
"mandatory_groups": [
{
"name": "Escolha a Borda",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BORDA_SIMPLES",
"name": "Borda Padrão",
"value": 0,
"status": true
},
{
"sku": "BORDA_QUEIJO",
"name": "Borda de Queijo (+8)",
"value": 8,
"status": true
}
]
}
],
"items": [
{
"sku": "PZ0001",
"name": "Pizza do Chef (Em Oferta)",
"description": "Calabresa, bacon, cebola e toque de pimenta.",
"highlight": true,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0001P",
"value": 35,
"promotional_value": 30,
"status": true
},
{
"size_name": "M",
"sku": "PZ0001M",
"value": 45,
"promotional_value": 40,
"status": true
},
{
"size_name": "G",
"sku": "PZ0001G",
"value": 55,
"promotional_value": 50,
"status": true
}
],
"mandatory_groups": [
{
"name": "Tipo de Base",
"min_limit": 1,
"max_limit": 1,
"mandatory_items": [
{
"sku": "BASE_TRAD",
"name": "Molho de Tomate Tradicional",
"value": 0,
"status": true
},
{
"sku": "BASE_RUST",
"name": "Molho Rústico (+3)",
"value": 3,
"status": true
}
]
}
]
},
{
"sku": "PZ0002",
"name": "Pizza Vegetariana",
"description": "Mussarela, vegetais frescos e azeite.",
"highlight": false,
"status": true,
"tags": [
"SPICY"
],
"item_sizes": [
{
"size_name": "P",
"sku": "PZ0002P",
"value": 40,
"status": true
},
{
"size_name": "M",
"sku": "PZ0002M",
"value": 50,
"status": true
},
{
"size_name": "G",
"sku": "PZ0002G",
"value": 60,
"status": true
}
],
"mandatory_groups": []
}
]
}
]
}
]
}
Detalhamento do Payload
1. Objeto Principal (menus[])
| Campo | Obrigatório | Descrição |
|---|---|---|
menus | ✅ | Array principal que contém a definição dos menus a serem importados. |
menus[].store_ids | ✅ | IDs das lojas para as quais este menu deve ser aplicado. |
menus[].description | ❌ | Descrição inicial de boas-vindas do cardápio, visível para o cliente. |
menus[].categories | ✅ | Array de objetos que definem as categorias do menu. |
2. Objeto categories[] (Estrutura da Categoria)
| Campo | Obrigatório | Descrição |
|---|---|---|
categories[].culinary_id | ✅ | ID da Culinária que a categoria estará associada e que aparece no carrossel do App para o cliente (Ex: Lanches, Pizza, Hambúrguer, Açaí). Consulte ID's Culinárias |
categories[].name | ✅ | Nome da categoria (Ex: "Pizzas Salgadas", “Lanches”, “Bebidas Geladas”). |
categories[].description | ❌ | Descrição da categoria (Ex: “Deliciosos lanches para seu café da manhã ou tarde.”). |
categories[].packing_fee | ❌ | Taxa de embalagem a ser aplicada a todos os itens desta categoria (Ex: 0.90 => Corresponde à 90 centavos). |
categories[].status | ✅ | Status da categoria: true (ativa) ou false (inativa/não exibida). |
categories[].available_hours | ❌ | Horário em que a categoria fica disponível (útil para menus de almoço ou jantar específicos). |
categories[].sizes | ✅ | Array de tamanhos que podem ser utilizados pelos itens desta categoria. |
categories[].mandatory_groups | ❌ | Itens obrigatórios da categoria. Regra: Se configurado aqui, aplica-se a todos os tamanhos e todos os itens da categoria. |
categories[].daily_sale | ❌ | Promoção diária aplicada a toda a categoria. |
categories[].items | ✅ | Array de objetos que definem os itens que pertencem a esta categoria. |
categories[].flavor_pricing_option | ✅ | Regra de precificação para pizzas e itens com múltiplos sabores. Valores: 0 (Aplicar Menor Valor) ou 1 (Aplicar Maior Valor) do item/sabor. |
2.1. Objeto categories[].sizes[] (Tamanhos e Adicionais por Categoria)
Define os tamanhos (Ex: P, M, G) que podem ser usados pelos itens da categoria
| Campo | Obrigatório | Descrição |
|---|---|---|
sizes[].name | ✅ | Nome do tamanho (Ex: "P", "M", "Grande") |
sizes[].flavors_amount | ❌ | Quantidade de Sabores permitida para este tamanho. Regra: Só é válido se a culinária suportar múltiplos sabores. |
sizes[].status | ❌ | Status de ativação/exibição do tamanho. |
sizes[].additional_max_limit | ❌ | Número máximo de itens adicionais (modificadores) permitidos para este tamanho. |
sizes[].additional_items | ❌ | Array de itens adicionais que o cliente pode selecionar. Regra: Todos os itens que utilizam este tamanho herdarão estes adicionais. |
sizes[].daily_sale | ❌ | Promoção diária aplicada a apenas este tamanho. |
sizes[].mandatory_groups | ❌ | Array de grupos obrigatórios que se aplicam apenas a este tamanho. |
2.1.1. Sub-Objeto sizes[].additional_items (Itens Adicionais Opcionais)
Estes são itens opcionais que podem ser adicionados pelo cliente, sendo configurados no nível do Tamanho da Categoria.
| Campo | Obrigatório | Descrição |
|---|---|---|
sizes[].additional_items | ❌ | Array de itens adicionais opcionais que o cliente pode selecionar. Regra: Todos os itens que utilizam este tamanho herdarão estes adicionais. |
sizes[].additional_items[].sku | ❌ | SKU ou código interno do item adicional (Ex: "abc0001"). |
sizes[].additional_items[].name | ✅ | Nome do item adicional (Ex: "bacon extra"). |
sizes[].additional_items[].value | ❌ | Valor em Reais do item adicional (Ex: 2.99). |
sizes[].additional_items[].status | ❌ | Status de ativação/exibição do item adicional. |
2.1.2 Sub-Objeto sizes[].mandatory_groups (Grupos Obrigatórios/Mandatórios)
Estes são grupos obrigatórios que se aplicam apenas a este tamanho
| Campo | Obrigatório | Descrição |
|---|---|---|
mandatory_groups | ❌ | Array de grupos obrigatórios que se aplicam apenas a este tamanho. |
mandatory_groups[].name | ✅ | Nome do grupo (Ex: "Molho Extra", "Borda"). |
mandatory_groups[].min_limit | ❌ | Quantidade mínima de itens que o cliente deve selecionar neste grupo. |
mandatory_groups[].max_limit | ❌ | Quantidade máxima de itens que o cliente pode selecionar neste grupo. |
mandatory_groups[].mandatory_items | ✅ | Array de opções dentro deste grupo. |
2.1.2 Sub-Objeto sizes[].daily_sale (Promoção Diária por Tamanho)
| Campo | Obrigatório | Descrição |
|---|---|---|
daily_sale | ❌ | Objeto contendo a regra de promoção diária. |
daily_sale.start | ❌ | Data de início da vigência da promoção no formato AAAA-MM-DD. |
daily_sale.end | ❌ | Data de fim da vigência da promoção no formato AAAA-MM-DD. |
daily_sale.daily_weekday_sale | ❌ | Array que lista os dias da semana e as regras de desconto aplicáveis. |
daily_sale.daily_weekday_sale[].weekday_code | ✅ | Dia da semana em que o desconto será aplicado. Códigos: 0 (Segunda-feira) a 6 (Domingo). |
daily_sale.daily_weekday_sale[].discount_type | ✅ | Tipo de desconto. Valores: 0 (Desconto em Reais) ou 1 (Desconto em Porcentagem). |
daily_sale.daily_weekday_sale[].discount | ✅ | Valor ou percentual do desconto a ser aplicado (Ex: 10 para R$ 10,00 ou 10%). |
2.2 Objeto categories[].items[] (Itens de Cardápio)
Define os produtos dentro da categoria (Ex: Pizza Calabresa, Hamburger)
| Campo | Obrigatório | Descrição |
|---|---|---|
items[].sku | ❌ | SKU ou código interno do item. |
items[].name | ✅ | Nome do item. |
items[].description | ❌ | Descrição detalhada do item para o cliente. |
items[].highlight | ❌ | Item em destaque (true) para o cliente. |
items[].status | ✅ | Status de exibição/venda do item. |
items[].tags | ✅ | Tags adicionais (Ex: SPICY, VEGETARIAN). |
items[].item_sizes | ❌ | Array de objetos com os tamanhos que este item específico aceita (pode ser um subconjunto dos tamanhos criados na categoria). |
items[].item_week_days | ❌ | Disponibilidade do item de acordo com o dia da semana. Ex: Item do dia, pode ter o itens ativos em um dia específico e outros não ativos. |
items[].mandatory_groups | ❌ | Grupos de itens obrigatórios para este item. Regra: Aplica-se apenas a este item, não à categoria. |
items[].daily_sale | ❌ | Promoção diária aplicada apenas a este item. |
2.2.1 Sub-objeto items[].item_sizes[] (Tamanhos do Item)
Define os tamanhos que o item específico (Ex: Pizza Calabresa) aceita e seus respectivos preços, SKUs e regras de modulação.
| Campo | Obrigatório | Descrição |
|---|---|---|
item_sizes[].size_name | ✅ | Nome do tamanho (Ex: "P", "M", "G"). Deve corresponder a um nome de tamanho definido na Categoria (categories[].sizes). |
item_sizes[].sku | ❌ | SKU ou código interno específico para este tamanho/preço do item (Ex: PZ0001P). |
item_sizes[].value | ✅ | Preço de venda regular do item para este tamanho. |
item_sizes[].promotional_value | ❌ | Valor promocional do item para este tamanho. O App prioriza este valor. |
item_sizes[].status | ❌ | Status de venda para este tamanho: true (disponível) ou false (indisponível). |
item_sizes[].inventory_quantity | ❌ | Quantidade de estoque do item para este tamanho. |
item_sizes[].is_inventory_active | ❌ | Define se o item tem controle de estoque ativo (1) ou desativado (0) para este tamanho. |
item_sizes[].daily_sale | ❌ | Promoção diária aplicada apenas a este tamanho/preço (pode gerar duplicação se configurado em outros níveis). |
2.2.2 Sub-objeto items[].item_week_days[] (Disponibilidade por Dia)
Define a disponibilidade de venda do item específico ao longo da semana.
| Campo | Obrigatório | Descrição |
|---|---|---|
item_week_days[].week_day | ✅ | Número do dia da semana: 0 (Segunda-feira) a 6 (Domingo). |
item_week_days[].status | ✅ | Status do item no dia: true (ativo/disponível) ou false (inativo/não disponível). |
2.2.3 Sub-objeto items[].mandatory_groups (Grupos Obrigatórios/Mandatórios)
Usado para grupos de modificadores que o cliente deve escolher (Ex: Tipo de Massa, Borda, Ponto da Carne).
| Campo | Obrigatório | Descrição |
|---|---|---|
mandatory_groups[].name | ✅ | Nome do grupo obrigatório da categoria (Ex: "Bordas", "Tipo de Massa"). Regra: Aplica-se apenas a este item, não à categoria ou tamanho. |
mandatory_groups[].min_limit | ❌ | Quantidade mínima de itens que o cliente deve selecionar neste grupo. |
mandatory_groups[].max_limit | ❌ | Quantidade máxima de itens que o cliente pode selecionar neste grupo. |
mandatory_groups[].mandatory_items | ✅ | Array dos itens/opções dentro deste grupo (Ex: Opção "Catupiry" ou "Sem Borda"). |
mandatory_groups[].mandatory_items[].sku | ❌ | SKU do item mandatório. |
mandatory_groups[].mandatory_items[].name | ✅ | Nome da opção. |
mandatory_groups[].mandatory_items[].value | ❌ | Valor do item obrigatório em Reais |
mandatory_groups[].mandatory_items[].status | ❌ | Status de ativação da opção. |
2.2.4 Sub-objeto items[].daily_sale (Regra por Dia)
Dias da semana da promoção aplicada apenas a este item.
| Campo | Obrigatório | Descrição |
|---|---|---|
daily_sale.start | ❌ | Data de início da vigência da promoção no formato AAAA-MM-DD (Ex: "2025-12-01"). |
daily_sale.end | ❌ | Data de fim da vigência da promoção no formato AAAA-MM-DD (Ex: "2025-12-31"). |
daily_sale.daily_weekday_sale[].weekday_code | ✅ | Dia da semana em que o desconto será aplicado. Códigos: 0 (Segunda-feira) a 6 (Domingo). |
daily_sale.daily_weekday_sale[].discount_type | ✅ | Tipo de desconto. Valores: 0 (Desconto em Reais) ou 1 (Desconto em Porcentagem). |
daily_sale.daily_weekday_sale[].discount | ✅ | Valor ou percentual do desconto a ser aplicado (Ex: 10 para R$ 10,00 ou 10%). |
2.3 Objeto categories[].mandatory_groups[] (Grupos Obrigatórios)
Estes grupos definem as escolhas obrigatórias de modificadores que todos os itens na categoria herdarão (Ex: escolha de borda para todas as pizzas).
| Campo | Obrigatório | Descrição |
|---|---|---|
mandatory_groups | ❌ | Array de objetos que definem os grupos obrigatórios. Regra: Aplica-se a todos os itens e tamanhos desta categoria. |
mandatory_groups[].name | ✅ | Nome do grupo obrigatório (Ex: "Escolha a Borda", "Tipo de Massa"). |
mandatory_groups[].min_limit | ❌ | Quantidade mínima de itens que o cliente deve selecionar neste grupo. |
mandatory_groups[].max_limit | ❌ | Quantidade máxima de itens que o cliente pode selecionar neste grupo. |
mandatory_groups[].mandatory_items | ✅ | Array dos itens/opções dentro deste grupo (Ex: Opção "Catupiry" ou "Sem Borda"). |
mandatory_groups[].mandatory_items[].sku | ❌ | SKU do item mandatório. |
mandatory_groups[].mandatory_items[].name | ✅ | Nome da opção. |
mandatory_groups[].mandatory_items[].value | ❌ | Valor do item obrigatório em Reais. |
mandatory_groups[].mandatory_items[].status | ❌ | Status de ativação da opção. |
2.4 Objeto categories[].available_hours (Horários de Disponibilidade)
Define o horário em que a categoria fica visível e disponível para pedidos no App (Ex: Menu de Almoço).
| Campo | Obrigatório | Descrição |
|---|---|---|
available_hours | ❌ | Objeto que define os intervalos de tempo de disponibilidade da categoria. |
available_hours.first_interval | ❌ | Define o primeiro intervalo de tempo em que a categoria fica ativa. |
available_hours.first_interval.from | ❌ | Hora de início do primeiro intervalo (Formato: HH:MM). |
available_hours.first_interval.to | ❌ | Hora de fim do primeiro intervalo (Formato: HH:MM). |
available_hours.second_interval | ❌ | Define o segundo intervalo de tempo (opcional) em que a categoria fica ativa. |
available_hours.second_interval.from | ❌ | Hora de início do segundo intervalo (Formato: HH:MM). Regra: Obrigatório se second_interval for enviado. |
available_hours.second_interval.to | ❌ | Hora de fim do segundo intervalo (Formato: HH:MM). Regra: Obrigatório se second_interval for enviado. |