Buscar na documentação
ctrl+4K
Módulos
Authentication
Merchant
Catalog
Order
Events
Logistics
Shipping
Review
Financial
Soluções

Multi-menu

Multi-menu permite que a mesma loja sirva múltiplos canais de venda — Entrega, Cardápio Digital e Consumo no Local — com preços, status e códigos POS diferentes, sem duplicar itens. A customização por canal é feita com contextModifiers.
Use multi-menu se sua loja atende mais de um canal de venda com qualquer uma destas diferenças:
  • Preços distintos por canal.
  • Disponibilidade distinta por canal.
  • Códigos POS distintos por canal.
Sem multi-menu, cada canal exigiria um catálogo separado — o que multiplica manutenção e aumenta o risco de divergências.
ContextoCanal
DEFAULTEntrega
WHITELABELCardápio Digital
INDOORConsumo no Local
Múltiplos contextos de catálogo para diferentes canais de venda
Envie o item uma vez com PUT /items. Use contextModifiers para sobrescrever price, status e externalCode em cada contexto:
{
  "item": {
    "id": "item-x-burger",
    "type": "DEFAULT",
    "status": "AVAILABLE",
    "price": {"value": 25.00},
    "contextModifiers": [
      {
        "catalogContext": "WHITELABEL",
        "status": "UNAVAILABLE",
        "price": {"value": 28.00}
      },
      {
        "catalogContext": "INDOOR",
        "price": {"value": 26.00}
      }
    ]
  }
}
Resultado:
  • DEFAULTR$ 25,00, disponível (valores da raiz).
  • WHITELABELR$ 28,00, pausado.
  • INDOORR$ 26,00, disponível (herda status da raiz).
Contextos sem modifier herdam todos os valores da raiz.
curl --request PUT \
  --url 'https://merchant-api.ifood.com.br/catalog/v2.0/merchants/YOUR_MERCHANT_ID/items' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "item": {
      "id": "item-x-burger",
      "type": "DEFAULT",
      "categoryId": "cat-burgers",
      "status": "AVAILABLE",
      "price": {"value": 25.00},
      "externalCode": "burger_001",
      "contextModifiers": [
        {
          "catalogContext": "WHITELABEL",
          "status": "AVAILABLE",
          "price": {"value": 28.00},
          "externalCode": "burger_whitelabel"
        },
        {
          "catalogContext": "INDOOR",
          "status": "AVAILABLE",
          "price": {"value": 26.00},
          "externalCode": "burger_indoor"
        }
      ]
    },
    "products": [
      {
        "id": "prod-burger",
        "name": "X-Burger",
        "externalCode": "burger_prod"
      }
    ]
  }'
Resposta:
{
  "id": "item-x-burger",
  "type": "DEFAULT",
  "status": "AVAILABLE"
}
curl --request GET \
  --url 'https://merchant-api.ifood.com.br/catalog/v2.0/merchants/YOUR_MERCHANT_ID/categories/YOUR_CATEGORY_ID/items' \
  --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
{
  "categoryId": "cat-burgers",
  "items": [
    {
      "id": "item-x-burger",
      "type": "DEFAULT",
      "status": "AVAILABLE",
      "price": {"value": 25.00},
      "contextModifiers": [
        {
          "catalogContext": "WHITELABEL",
          "status": "AVAILABLE",
          "price": {"value": 28.00}
        }
      ]
    }
  ]
}
Reenvie o item com PUT /items incluindo os contextModifiers atualizados. Para mudanças pontuais de preço ou status em um único contexto, use PATCH /items/price ou PATCH /items/status com o campo priceByCatalog ou statusByCatalog. Veja Endpoints.
Esta página foi útil?
Avalie sua experiência no novo Developer portal: