logo
logo

Docs Multi Setup

Módulo Exclusivo Esse módulo é de uso exclusivo e só está disponível para alguns merchants, estamos gradativamente liberando essas funcionalidades para os demais. Para saber se o merchant pode utilizar o módulo, basta consultar o endpoint GET isMultisetup da API de catálogo.

Conceitos

O módulo Multi Setup tem o propósito de unificar a visão de vários cardápios, ao contrário do módulo base, no Multi Setup, todos os itens serão os mesmos em todos os cardápios, dessa forma o parceiro só precisa ajustar o preço e status de cada cardápio.

As APIs são retrocompatíveis, ou seja, funcionarão da mesma forma, com exceção à API de pizza que agora passa a ser tratada como um item normal.

Agora ao utilizar as APIs públicas, deverá ser passado um novo parâmetro informando o contexto que aquele request irá afetar. O contexto é o serviço ao qual aquele catálogo é destinado. É possível encontrar o contexto no request de listar catálogos.

Dessa forma será possível criar/editar itens, editar status e preços apenas para o contexto informado, caso o contexto não seja informado a alteração será feita globalmente, ou seja, para todos os contextos.

Todas as categorias e itens irão existir em todos os cardápios, caso o parceiro crie um novo item informando um contexto, esse item será criado com o status AVAILABLE apenas no contexto informado, os outros contextos terão o item com o status UNAVAILABLE.

Nas alterações de preços e status, caso o parâmetro de contexto não seja informado, a alteração terá efeito em todos os contextos.

O módulo de multi Setup possui APIs exclusivas para a gestão do cardápio. Ainda será possível utilizar as APIs atuais para fazer a gestão do cardápio, mas elas serão depreciadas após todos os parceiros aderirem ao módulo Multi Setup.

As APIs de Pizza NÃO possuem retrocompatibilidade com no módulo Multi Setup, a gestão de itens do tipo Pizza não é mais feita de forma específica. Confira a seção Criando/Editando um item deste documento.

Com esse módulo ativo os parceiros que têm mais de um cardápio, conseguiram gerenciar mais facilmente seus cardápios, conseguindo reutilizar facilmente os itens com a flexibilidade de customização de preços, status, código PDV e horário de funcionamento por cardápio. As novas APIs são acessíveis através do módulo MultiSetup, veja as novas APIs na seção Multisetup.

Utilizando a API

A criação de um item disponibilizada pelo módulo Multi Setup é válida para todos os tipos de itens, incluindo pizza. Cria-se o item com todas as dependências que o compõem: produtos, grupos de complementos e complementos. O tipo Pizza diferencia-se apenas através do type do item e dos grupos de complementos. É obrigatório que uma item do tipo pizza tenha grupos de complementos dos tipos SIZE, CRUST e EDGE.

Exemplo - Item padrão:

curl --location --request PUT 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/items' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
  "item": {
    "id": "cff648d8-fc31-41b0-b80e-81fc3651ca7a",
    "type": "DEFAULT",
    "categoryId": "beab216d-33dc-4ce4-8b35-5372e135093d",
    "status": "AVAILABLE",
    "price": {
      "value": 11.00,
      "originalValue": 12.50
    },
    "externalCode": "public_item",
    "index": 0,
    "productId": "62133b9f-5542-401d-8743-49ec7da8c847",
    "shifts": null,
    "tags": null,
    "contextModifiers": [
      {
        "catalogContext": "WHITELABEL",
        "status": "AVAILABLE",
        "price": {
          "value": 13,
          "originalValue": 16
        },
        "externalCode": "whitelabel_ec2"
      },
      {
        "catalogContext": "INDOOR",
        "status": "AVAILABLE",
        "price": {
          "value": 13,
          "originalValue": 17
        },
        "externalCode": "indoor_ec"
      }
    ]
  },
  "products": [
    {
      "id": "62133b9f-5542-401d-8743-49ec7da8c847",
      "externalCode": "item_product_ec2",
      "name": "X-Burguer",
      "description": "Pão, carne, queijo e salada",
      "additionalInformation": "some additional Information",
      "imagePath": "2245a961-849d-443c-a434-0197a7b8116c/202309201054_160d37znvk6.png",
      "ean": "EAN112233414",
      "serving": "SERVES_2",
      "dietaryRestrictions": null,
      "quantity": null,
      "optionGroups": [
        {
            "id":"1e5e5eb5-84c7-4eca-b0c1-921860434f70",
            "min": 0,
            "max": 1
        }   
      ]
    },
    {
      "id": "713713e7-641e-44fd-bd92-13ba43daf6a8",
      "externalCode": "option_product_ec2",
      "name": "Batata Frita",
      "description": "200 g",
      "additionalInformation": "some additional Information",
      "imagePath": null,
      "ean": "EAN112253553344",
      "serving": "SERVES_1",
      "dietaryRestrictions": null,
      "quantity": null,
      "optionGroups": null
    }
  ],
  "optionGroups": [
    {
      "id": "1e5e5eb5-84c7-4eca-b0c1-921860434f70",
      "name": "Acompanhamentos",
      "externalCode": "option_group_ec2",
      "status": "AVAILABLE",
      "index": 0,
      "optionGroupType": "DEFAULT",
      "optionIds": [
        "d3e31829-a215-47e3-9576-3fddec9417ec"
      ]
    }
  ],
  "options": [
    {
      "id": "d3e31829-a215-47e3-9576-3fddec9417ec",
      "status": "AVAILABLE",
      "index": 0,
      "productId": "713713e7-641e-44fd-bd92-13ba43daf6a8",
      "price": {
        "value": 4,
        "originalValue": 7
      },
      "contextModifiers": [
        {
          "parentOptionId": null,
          "catalogContext": "WHITELABEL",
          "status": "AVAILABLE",
          "price": {
            "value": 5,
            "originalValue": 6
          },
          "externalCode": "op_whitelabel_ec"
        }
      ],
    "fractions": null,
    "externalCode": "option_ec"
    }
  ]
}'

Exemplo - Item Pizza:

curl --location --request PUT 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/items' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
  "item": {
    "id": "8e82f81f-6b0f-4e7b-9185-b3a5c57d19b0",
    "type": "PIZZA",
    "status": "AVAILABLE",
    "externalCode": "pizza_item_ec",
    "index": 0,
    "productId": "171ad402-1611-4b5f-9af5-3a7ad28a58b6"
  },
  "products": [
    {
      "id": "171ad402-1611-4b5f-9af5-3a7ad28a58b6",
      "externalCode": "pizza_product_ec",
      "name": "Pizza",
      "description": "massa, queijo mussarela e molho de tomate",
      "additionalInformation": "some additional Information",
      "optionGroups": [
        {
          "id":"f24249ff-7f5c-4d53-a170-72f9f32091d9",
          "min": 0,
          "max": 1
        },
        {
          "id":"c24423b4-6b95-4002-a775-b4b3b3037bb6",
          "min": 0,
          "max": 1
        },
        {
          "id":"04bde4c8-28c7-43c9-b240-9205f4e95c26",
          "min": 0,
          "max": 1
        },
        {
          "id":"0b2a2f4d-ce33-4b46-888f-971792837fb2",
          "min": 0,
          "max": 1
        }
      ]
    },
    {
      "id": "8dd12ae1-55a1-431c-ba3a-19ec3d7c35dc",
      "externalCode": "crust_product_ec",
      "name": "Massa Tradicional"
    },
    {
      "id": "d3f65c66-4259-427d-a6bd-30e4df212d46",
      "externalCode": "size_product_ec",
      "name": "Tamanho médio"
    },
    {
      "id": "4b222dbd-aa8d-4f8e-ab7a-df65fb44f7ab",
      "externalCode": "edge_product_ec",
      "name": "Borda Tradicional"
    },
    {
      "id": "4c77015c-820a-495c-82a9-28a111258a37",
      "externalCode": "topping_product_ec",
      "name": "Calabresa"
    }
  ],
  "optionGroups": [
    {
      "id": "f24249ff-7f5c-4d53-a170-72f9f32091d9",
      "name": "Tamanhos",
      "externalCode": "tamanhos_ec",
      "status": "AVAILABLE",
      "index": 0,
      "optionGroupType": "SIZE",
      "optionIds": [
        "1cae92f1-59ad-401c-a889-dd8ce940fd25"
      ]
    },
    {
      "id": "c24423b4-6b95-4002-a775-b4b3b3037bb6",
      "name": "Massas",
      "externalCode": "massas_ec",
      "status": "AVAILABLE",
      "index": 0,
      "optionGroupType": "CRUST",
      "optionIds": [
        "9603ad69-5c48-4da6-a703-21bf7d1232c0"
      ]
    },
    {
      "id": "04bde4c8-28c7-43c9-b240-9205f4e95c26",
      "name": "Bordas",
      "externalCode": "bordas_ec",
      "status": "AVAILABLE",
      "index": 0,
      "optionGroupType": "EDGE",
      "optionIds": [
        "54171c89-dbcb-47ea-89c1-131b32d70307"
      ]
    },
    {
      "id": "0b2a2f4d-ce33-4b46-888f-971792837fb2",
      "name": "Sabores",
      "externalCode": "sabores_ec",
      "status": "AVAILABLE",
      "index": 0,
      "optionGroupType": "TOPPING",
      "optionIds": [
        "c5ed4d9c-0b79-47b6-8333-d50e66e2147a"
      ]
    }
  ],
  "options": [
    {
      "id": "1cae92f1-59ad-401c-a889-dd8ce940fd25",
      "status": "AVAILABLE",
      "productId": "d3f65c66-4259-427d-a6bd-30e4df212d46",
      "price": {
        "value": 4,
        "originalValue": 7
      },
      "fractions": [2,3],
      "externalCode": "medio_option_ec"
    },
    {
      "id": "c5ed4d9c-0b79-47b6-8333-d50e66e2147a",
      "status": "AVAILABLE",
      "index": 0,
      "productId": "4c77015c-820a-495c-82a9-28a111258a37",
      "contextModifiers": [
        {
          "parentOptionId": "1cae92f1-59ad-401c-a889-dd8ce940fd25",
          "catalogContext": "WHITELABEL",
          "status": "AVAILABLE",
          "price": {
            "value": 25,
            "originalValue": 30
          },
          "externalCode": "calabresa_medio_whitelabel_ec"
        }
      ],
      "externalCode": "calabresa_option_ec"
    },
    {
      "id": "54171c89-dbcb-47ea-89c1-131b32d70307",
      "status": "AVAILABLE",
      "productId": "4b222dbd-aa8d-4f8e-ab7a-df65fb44f7ab",
      "price": {
        "value": 4,
        "originalValue": 5
      },
      "externalCode": "borda_option_ec"
    },
    {
      "id": "9603ad69-5c48-4da6-a703-21bf7d1232c0",
      "status": "AVAILABLE",
      "productId": "8dd12ae1-55a1-431c-ba3a-19ec3d7c35dc",
      "price": {
        "value": 2,
        "originalValue": 3
      },
      "externalCode": "massa_option_ec"
    }
  ]
}'

Informando o id de uma categoria existente, serão listados todos os itens, produtos, grupos de complementos e complementos disponíveis na mesma.

curl --location --request GET 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/categories/beab216d-33dc-4ce4-8b35-5372e135093d/items' \
--header 'Authorization: Bearer TOKEN'

Resposta:

{
   "categoryId": "beab216d-33dc-4ce4-8b35-5372e135093d",
   "items":[
      {
         "id":"cff648d8-fc31-41b0-b80e-81fc3651ca7a",
         "type":"DEFAULT",
         "categoryId":"beab216d-33dc-4ce4-8b35-5372e135093d",
         "status":"AVAILABLE",
         "price":{
            "value":11.00,
            "originalValue":12.50
         },
         "externalCode":"public_item",
         "index":0,
         "productId":"62133b9f-5542-401d-8743-49ec7da8c847",
         "shifts":null,
         "tags":null,
         "contextModifiers":[
            {
               "catalogContext":"WHITELABEL",
               "status":"AVAILABLE",
               "price":{
                  "value":13,
                  "originalValue":16
               },
               "externalCode":"whitelabel_ec2"
            },
            {
               "catalogContext":"INDOOR",
               "status":"AVAILABLE",
               "price":{
                  "value":13,
                  "originalValue":17
               },
               "externalCode":"indoor_ec"
            }
         ]
      }
   ],
   "products":[
      {
         "id":"62133b9f-5542-401d-8743-49ec7da8c847",
         "externalCode":"item_product_ec2",
         "name":"X-Burguer",
         "description":"Pão, carne, queijo e salada",
         "additionalInformation":"some additional Information",
         "image":null,
         "ean":"EAN112233414",
         "serving":"SERVES_2",
         "dietaryRestrictions":null,
         "quantity":null,
         "optionGroups":[
           {
             "id": "1e5e5eb5-84c7-4eca-b0c1-921860434f70",
             "min": 0,
             "max": 1
           }
         ]
      },
      {
         "id":"713713e7-641e-44fd-bd92-13ba43daf6a8",
         "externalCode":"option_product_ec2",
         "name":"Batata Frita",
         "description":"200 g",
         "additionalInformation":"some additional Information",
         "image":null,
         "ean":"EAN112253553344",
         "serving":"SERVES_1",
         "dietaryRestrictions":null,
         "quantity":null,
         "optionGroupIds":null
      }
   ],
   "optionGroups":[
      {
         "id":"1e5e5eb5-84c7-4eca-b0c1-921860434f70",
         "name":"Acompanhamentos",
         "externalCode":"option_group_ec2",
         "status":"AVAILABLE",
         "index":0,
         "optionGroupType":"DEFAULT",
         "optionIds":[
            "d3e31829-a215-47e3-9576-3fddec9417ec"
         ]
      }
   ],
   "options":[
      {
         "id":"d3e31829-a215-47e3-9576-3fddec9417ec",
         "status":"AVAILABLE",
         "index":0,
         "productId":"713713e7-641e-44fd-bd92-13ba43daf6a8",
         "price":{
            "value":4,
            "originalValue":7
         },
         "contextModifiers":[
            {
               "parentOptionId":null,
               "catalogContext":"WHITELABEL",
               "status":"AVAILABLE",
               "price":{
                  "value":5,
                  "originalValue":6
               },
               "externalCode":"op_whitelabel_ec"
            }
         ],
         "fractions":null,
         "externalCode":"option_ec"
      }
   ]
}

A deleção de uma categoria elimina ela e seu conteúdo de todos os contextos.

curl --location --request DELETE 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/categories/' \
--header 'Authorization: Bearer TOKEN'

É possível editar globalmente o preço de um complemento ao passar o campo de price com o valor desejado, como também para alterá-lo em um cardápio específico, o campo priceByCatalog deve ser preenchido respectivamente com seus valores e o contexto do cardápio alterado.

curl --location --request PATCH 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/options/price' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
  "optionId": "d3e31829-a215-47e3-9576-3fddec9417ec",
  "price": {
    "value": 5,
    "originalValue": 7,
    "scalePrices": [
      {
        "minQuantity": 5,
        "price": 10
      }
    ]
  },
  "parentCustomizationOptionId": null,
  "priceByCatalog": [
    {
      "value": 5,
      "originalValue": 7,
      "catalogContext": "WHITELABEL"
    }
  ]
}'

Com comportamento semelhante à alteração de preço, é possível editar globalmente o status de um complemento ao passar o campo de status com a condição desejada, como também para alterá-lo em um cardápio específico, o campo statusByCatalog deve ser preenchido respectivamente com o estado e o contexto do cardápio alterado.

curl --location --request PATCH 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/options/status' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
  "optionId": "d3e31829-a215-47e3-9576-3fddec9417ec",
  "status": "AVAILABLE",
  "parentCustomizationOptionId": null,
  "statusByCatalog": [
    {
      "status": "UNAVAILABLE",
      "catalogContext": "WHITELABEL"
    }
  ]
}'

A deleção de um grupo de complemento remove o grupo e seus complementos de todos os contextos.

curl --location --request DELETE 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/21131c93-0398-4818-aad3-762cab309a26/multisetup/optionGroups/' \
--header 'Authorization: Bearer TOKEN'