logo
logo

Docs / Catálogo

Definições

A arquitetura é baseada em catálogos e eles podem ser utilizados em contextos diferentes. Hoje possuímos 3 contextos pré-definidos (Entrega, Pra Retirar e Na Mesa), porém novos contextos podem ser criados, e os níveis dentro de cada modo são os mesmos para todos. Temos as categorias, os tipos de itens, grupos de complementos e complementos.

Visão Micro

Para lojas que contratam serviços como o Na Mesa, é possível gerir diferentes catálogos para cada tipo de operação. Isso permite ter preços, disponibilidades ou até mesmo categorias e itens diferentes.

Categoria é a entidade em que a loja possui para organizar seus itens a fim de facilitar para o usuário encontrar o que deseja comprar. As categorias possuem status de venda como pausada e ativada.

Pausada Quando uma categoria está pausada, todos os itens contidos nessa categoria serão pausados automaticamente e ela não é mostrada para o consumidor final. Quando uma categoria possui todos os seus itens pausados separadamente, ela automaticamente é pausada.

Ativada Quando uma categoria é ativada, ela passa a ser mostrada ao consumidor final, porém os itens contidos possuem seus próprios status de venda. Quando uma categoria possui itens com status de vendas variados, ao ser pausada todos os itens passam a ser pausados também, e ao ser novamente ativada, os itens voltam aos seus estados originais (pausado ou ativado, como anteriormente).

Categoria de itens é uma categoria formada por itens genéricos que podem, ou não, possuir grupos de complementos e complementos

Categoria de pizza é uma categoria, no portal do parceiro, com um template contendo tamanhos, massas, bordas e sabores da pizza, assim, facilitando o cadastro. Para integrações, é necessário criar uma categoria com template PIZZA e associar a pizza previamente criada nessa categoria, passando os valores de seus sabores, bordas e massas.

Arquitetura da Informação - Categorias

Produto é a entidade de catálogo que carrega todas as informações gerais. Elas são: Nome, descrição, código externo, imagem, disponibilidade em turnos, tamanho, restrições alimentares e EAN (European Article Number), utilizado principalmente por mercados. O produto pode ser oferecido em um catálogo como um item principal ou complemento. E, para uma mesma loja, pode ser reutilizado até mesmo em diferentes catálogos.

**Quantas pessoas servem O tamanho do produto é essencial para saber para que tamanho de fome ele é, por exemplo: Esse produto é ideal para 1, 2, 3 ou 4 pessoas? Existe o caso que esse tamanho não se aplica para o produto também, como por exemplo bebidas.

O grupo de complementos é a entidade utilizada para agrupar customizações de um produto, por exemplo: “Escolha sua bebida:” Um grupo de complemento pode ser compartilhado por vários itens, desde que estejam contidos na mesma categoria.

Obrigatoriedade O grupo de complementos pode ser obrigatório, ou opcional.

**Obrigatório Em casos de grupos de complementos obrigatórios, o usuário final deve selecionar pelo menos a quantidade mínima configurada de opções dentro do grupo para conseguir efetuar a compra. Complementos obrigatórios possuem quantidade mínima e máxima, sendo que a máxima é obrigatória ser um número maior que a mínima.

**Opcional Em casos de grupo de complementos opcionais, o usuário consegue comprar o produto sem que nenhuma opção esteja relacionada. Complementos opcionais não possuem quantidade minima mas possuem quantidade máxima.

Complementos são as opções de um Grupo de Complemento. Pode ser definido como: “Um produto relacionado a um grupo de complemento”. O complemento possui seu próprio status de venda, sendo possível pausar ou ativar quando necessário. É possível que um complemento seja R\$0,00 independente se é obrigatório ou opcional.

O produto pode ser caracterizado com base em algumas restrições alimentares, como por exemplo:

  • Vegano
  • Vegetariano
  • Orgânico
  • Sem glúten
  • Sem açúcar
  • Zero lactose

As restrições alimentares são informações opcionais e o produto pode conter mais de uma opção selecionada.

Para produtos que são vendidos somente em alguns períodos da semana, é possível configurar sua disponibilidade em turnos. Por exemplo: A feijoada só é vendida às quartas-feiras das 10:00 às 16:00

**Sempre disponível Quando um item está selecionado como sempre disponível, ele será visualizado sempre que a loja estiver aberto e o status de venda (Como item principal ou complemento) é ativado.

**Disponível em dias e horários específicos Quando um item está selecionado como disponível em dias e horários específicos, o usuário pode selecionar em quais dias o item estará disponível, em quais horários e/ou criar turnos.

O item pode ser considerado a oferta de um produto. Análogo ao complemento, o item é um produto relacionado à categoria.

**Disponibilidade O item possui dois estados, ativado e pausado. Eles são configurados para definir se o item deve ou não aparecer à venda. Em caso de item pausado, mesmo se configurado uma disponibilidade por turnos, o item não aparecerá à venda.

O código externo, também conhecido como PDV, é a identificação que a loja pode adicionar nos seus itens para, no momento que receberem o pedido, conseguirem realizar algum tipo de integração, por exemplo, controle de estoque.

A venda de um produto está sempre relacionada ao seu preço. Esse preço pode variar dependendo de onde esse produto se encontra (Como item principal ou complemento), ou adicionando preços promocionais ao item.

Item O preço do item se dá na oferta de um produto em uma categoria.

Esse item pode ter um preço promocional (De > Por)

Complemento O preço do complemento se dá na oferta de um produto em um grupo de complementos. Diferente do item, ele não possui a funcionalidade de preço promocional

Pizza é um produto que tem características pré definidas, sendo estas: Tamanhos, massas, bordas, sabores e disponibilidade em turnos. O produto de pizza pode ser associado apenas à uma categoria do tipo PIZZA. Através do portal, essa associação é automática, porém para integrações é necessário criar a Pizza, criar a Categoria e por fim associar os dois. A precificação de sabores, bordas e massas podem, através das APIs de integração, ser diferentes em diferentes catálogos (Entrega / Na Mesa).

O tamanho da pizza é definida por alguns aspectos:

  • Nome, tradicionalmente “Pequena”, “Média” e “Grande”, mas pode ser customizada.
  • Quantidade pedaços em que cada um dos tamanhos é cortado.
  • Quantidade de frações, ou seja, esse tamanho pode ser vendido ½ sabor 1 e ½ sabor 2. Sendo possível dividir em até 4 frações

A massa é uma customização da pizza, exemplo: “Tradicional”, “Integral” e pode ter um preço adicional no custo da pizza, se configurado. O Tradicional hoje vem default para o usuário mas não é abordado na API.

A borda, assim como a massa, é uma customização da pizza, exemplo: “Borda de Catupiry” e pode ter um preço adicional no custo da pizza, se configurado. O Tradicional hoje vem default para o usuário mas não é abordado na API.

O sabor define quais tipos de pizza são vendidas. Os sabores possuem um preço para cada tamanho, por exemplo: Grande Calabresa - R$50,00 Pequena Calabresa - R$25,00

Em diferentes catálogos os sabores podem ter preços diferentes para cada tamanho

Utilizando a API

O primeiro passo nas APIs de catálogo é a listagem de catálogos, através da API GET /merchants/{merchantId}/catalogs. Atualmente possuímos os catálogos DEFAULT e INDOOR, indicando que esse catálogo é de Entrega ou Na Mesa

Requisição:

curl --location --request GET 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/catalogs' \
--header 'Authorization: Bearer TOKEN

Resposta

[
  {
    "catalogId": "10e0fbbe-7279-4ee3-9a2f-caf1f93f7b8e",
    "context": ["DEFAULT"],
    "status": "AVAILABLE",
    "modifiedAt": 1597350642.71608
  }
]

Com o id do catálogo em mãos, é possível listar todas as categorias e itens de um catálogo através da API GET /merchants/{merchantId}/catalogs/{catalogId}/categories.

Requisição:

curl --location --request GET 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/catalogs/10e0fbbe-7279-4ee3-9a2f-caf1f93f7b8e/categories?include_items=true \
--header 'Authorization: Bearer TOKEN

Resposta:

[]

Como ainda não adicionamos nada no nosso catálogo, ele voltará uma lista vazia! Seguindo os próximos passos você aprenderá como montar seu catálogo

Como explicado no anteriormente, a categoria é um agrupador de itens. Então vamos criar nossa primeira categoria. Para isto, vamos utilizar a API POST /merchants/{merchantId}/catalogs/{catalogId}/categories.

Requisição

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/catalogs/10e0fbbe-7279-4ee3-9a2f-caf1f93f7b8e/categories' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "name": "Lanches",
   "status": "AVAILABLE",
   "template": "DEFAULT",
   "sequence": 0
}'

Resposta:

{
  "id": "4e6d3f79-f003-4992-8d4f-4c48d7ac5284",
  "name": "Lanches",
  "sequence": 0,
  "status": "AVAILABLE",
  "template": "DEFAULT"
}

Parabéns! Você já consegue visualizar no portal sua primeira categoria criada

O produto, como citado acima, carrega todas as informações principais dos itens ou complementos que vão a venda. Segue um exemplo de criação de produto, que pode ser realizada através da API POST /merchants/{merchantId}/products.

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/products' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
 "name": "X-Burger",
 "description": "Pão, carne e queijo",
 "externalCode": "BG-1",
 "image": "",
 "shifts": [
   {
     "startTime": "00:00",
     "endTime": "23:59",
     "monday": true,
     "tuesday": true,
     "wednesday": true,
     "thursday": true,
     "friday": true,
     "saturday": true,
     "sunday": true
   }
 ],
 "serving": "SERVES_1",
 "dietaryRestrictions": [
   "ORGANIC"
 ],
 "ean": ""
}'

Resposta:

{
  "id": "ec16fb62-7bdd-43e4-940c-10b5a2845f13",
  "name": "X-burger",
  "description": "Pão, carne e queijo",
  "externalCode": "BG-1",
  "image": "",
  "shifts": [
    {
      "startTime": [0, 0],
      "endTime": [23, 59],
      "monday": true,
      "tuesday": true,
      "wednesday": true,
      "thursday": true,
      "friday": true,
      "saturday": true,
      "sunday": true
    }
  ],
  "serving": "SERVES_1",
  "dietaryRestrictions": ["ORGANIC"],
  "ean": ""
}

Após a criação do produto, está na hora de você associá-lo a uma categoria e começar a vendê-lo! Para isso, utilizamos a API de criação de item POST /merchants/{merchantId}/categories/{categoryId}/products/{productId} e nela conseguimos decidir a qual valor esse item será vendido.

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/categories/4e6d3f79-f003-4992-8d4f-4c48d7ac5284/products/ec16fb62-7bdd-43e4-940c-10b5a2845f13' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
   "status": "AVAILABLE",
   "price": {
       "value": 20,
       "originalValue": 30
   },
   "externalCode": "BG-1",
   "sequence": 0
}'

Resposta:

{
  "status": "AVAILABLE",
  "price": {
    "value": 20,
    "originalValue": 30
  },
  "externalCode": "BG-1"
}

Muito bom! Agora seu item já pode ser vendido e aparecerá no app para os consumidores

Você pode customizar seus produtos criando grupos de complementos, por exemplo, bebidas para seus lanches. Para isso, você precisará criar seu grupo, associar ao seu produto e por fim associar produtos que você deseja ter como complementos nesse grupo. Isso pode ser feito através da API POST /merchants/{merchantId}/optionGroups.

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/optionGroups' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
 "name": "Escolha sua bebida"
}'

Resposta:

{
  "id": "daf9ba2c-dca9-43b1-b02a-0fc2c4b01967",
  "name": "Escolha sua bebida"
}

Agora só falta adicionar as bebidas nesse grupo!

Grupos de complementos com mínimo 1 são considerados obrigatórios, dessa forma, enquanto não houver uma opção para o usuário selecionar, os itens associados a esse grupo não aparecerão no app do iFood para serem vendidos

Análogo ao Item, é necessário criar um produto antes de associá-lo ao grupo de complementos. Então vamos começar por ele, através da API POST /merchants/{merchantId}/products:

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/products' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Coca-cola lata",
"description": "300 ml",
"externalCode": "LT-1",
"image": "",
"shifts": [
],
"serving": "NOT_APPLICABLE",
"dietaryRestrictions": [
],
"ean": ""
}'

Resposta:

{
  "id": "5f3d5725-dea8-4c82-bdf6-5fb401c243f6",
  "name": "Coca-Cola lata",
  "description": "300 ml",
  "externalCode": "LT-1",
  "image": "",
  "shifts": [
    {
      "startTime": [0, 0],
      "endTime": [23, 59, 59],
      "monday": true,
      "tuesday": true,
      "wednesday": true,
      "thursday": true,
      "friday": true,
      "saturday": true,
      "sunday": true
    }
  ],
  "serving": "NOT_APPLICABLE",
  "dietaryRestrictions": [],
  "ean": ""
}

Com o produto em mãos é hora de associá-lo ao grupo de complementos! Isto será feito através da API POST /merchants/{merchantId}/optionGroups/{optionGroupId}/products/{productId}:

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/6b487a27-c4fc-4f26-b05e-3967c2331882/optionGroups/daf9ba2c-dca9-43b1-b02a-0fc2c4b01967/products/5f3d5725-dea8-4c82-bdf6-5fb401c243f6/option' \
--header 'Authorization: Bearer TOKEN' \
--header 'Content-Type: application/json' \
--data-raw '{
 "status": "AVAILABLE",
 "price": {
   "value": 5
 },
 "externalCode": "LT-1",
 "sequence": 0
}'

Resposta:

{
  "status": "AVAILABLE",
  "price": {
    "value": 5
  },
  "externalCode": "LT-1",
  "sequence": 0
}

Agora sim!  Seu item está completo

Pizza

A API permite utilizar as categorias com template PIZZA assim como é feito no portal do parceiro. Para isso, existem APIs específicas para realizar essa gestão. Abaixo será apresentado o passo a passo de como cadastrar sua primeira pizza na plataforma do iFood

Primeiro, criamos uma categoria de Pizza através da API POST /merchants/{merchantId}/catalogs/{catalogId}/categories

Request:

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/ff4e9e03-588c-4c15-8d16-3225b795c1d0/catalogs/2b642cd5-8076-40d0-9b88-1da507f8a4b4/categories' \
--header 'Content-Type: application/json' \
--data-raw '{
  "externalCode": "pz1",
  "name": "Pizzas Salgadas",
  "sequence": 0,
  "status": "AVAILABLE",
  "template": "PIZZA"
}'

Resposta:

{
  "id": "175dbe63-4a63-46f9-ae5f-6f98bd79b67b",
  "name": "Pizzas Salgadas",
  "externalCode": "pz1",
  "sequence": 0,
  "status": "AVAILABLE",
  "template": "PIZZA"
}

Uma categoria com template PIZZA sem uma pizza associada ainda não é suportada pelo portal do parceiro, por esse motivo, após criada, ela só aparecerá no momento em que possuir uma pizza associada à ela

Com a categoria criada, análogo ao produto e ao item, vamos criar um produto de pizza que irá conter todos seus tamanhos, massas, bordas e sabores. Isto será feito através de API POST /merchants/{merchantId}/pizzas

Request:

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/7f357e2c-599d-4023-8930-e39a778338d6/pizzas' \
--header 'Content-Type: application/json' \
--data-raw '{
 "crusts": [
   {
     "name": "Massa Tradicional",
     "sequence": 0,
     "status": "AVAILABLE",
     "externalCode": "M1"
   }
 ],
 "edges": [
   {
     "name": "Borda de Catupiry",
     "sequence": 0,
     "status": "AVAILABLE"
   }
 ],
 "shifts": [
   {
     "startTime": "00:00",
     "endTime": "23:15",
     "monday": true,
     "tuesday": true,
     "wednesday": true,
     "thursday": true,
     "friday": true,
     "saturday": true,
     "sunday": false
   }
   ],
 "sizes": [
   {
     "acceptedFractions": [
       1
     ],
     "name": "Grande",
     "sequence": 0,
     "slices": 8,
     "status": "AVAILABLE",
     "externalCode": "G1"
   }
 ],
 "toppings": [
   {
     "description": "Calabresa com queijo",
     "externalCode": "C1",
     "name": "Calabresa",
     "sequence": 0,
     "status": "AVAILABLE",
     "dietaryRestrictions": [
         "ORGANIC"
     ]
   }
 ]
}'

Resposta:

{
  "id": "ecb42fd8-a735-4ffa-90be-04e01e12e96f",
  "toppings": [
    {
      "description": "Calabresa com queijo",
      "name": "Calabresa",
      "externalCode": "C1",
      "id": "2ef286ec-e968-43cb-a450-df1183e60f46",
      "sequence": 0,
      "status": "AVAILABLE",
      "dietaryRestrictions": ["ORGANIC"]
    }
  ],
  "crusts": [
    {
      "id": "0c3b2a90-463a-4892-be85-7c461da05248",
      "sequence": 0,
      "name": "Massa Tradicional",
      "status": "AVAILABLE",
      "ownerId": "7f357e2c-599d-4023-8930-e39a778338d6",
      "externalCode": "M1"
    }
  ],
  "edges": [
    {
      "id": "d0bc788f-8bc1-4cbc-bcb0-95bdf532e8f2",
      "name": "Borda de Catupiry",
      "sequence": 0,
      "status": "AVAILABLE"
    }
  ],
  "sizes": [
    {
      "id": "b08a8cbf-3bd0-44a6-8cec-ddb73b659f3c",
      "acceptedFractions": [1],
      "externalCode": "G1",
      "name": "Grande",
      "sequence": 0,
      "slices": 8,
      "status": "AVAILABLE"
    }
  ],
  "shifts": [
    {
      "startTime": "00:00:00 GMT-0300 (GMT-03:00)",
      "endTime": "23:15:00 GMT-0300 (GMT-03:00)",
      "monday": true,
      "wednesday": true,
      "tuesday": true,
      "thursday": true,
      "sunday": false,
      "saturday": true,
      "friday": true
    }
  ]
}

Por fim, com a categoria e seu produto de pizza criados, é hora de associá-los. Nessa associação é necessário passar o preço de cada um dos componentes do produto da pizza para começar a vendê-los! Os tamanhos de pizza não possuem preço, porém você deve passar o preço para cada tamanho dentro do objeto de sabores. Para isso, será utilizada a API POST /merchants/{merchantId}/pizzas/{pizzaId}/categories/{categoryId}

curl --location --request POST 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/7f357e2c-599d-4023-8930-e39a778338d6/pizzas/ecb42fd8-a735-4ffa-90be-04e01e12e96f/categories/99fe1c07-5d4e-42d9-90f4-9d16931d0aec' \
--header 'Content-Type: application/json' \
--data-raw '{
 "catalogId": "91720b2e-7dad-424e-9af6-996eb9dd49ad",
 "crusts": [
   {
     "id": "0c3b2a90-463a-4892-be85-7c461da05248",
     "price": {
       "value": 0
     }
   }
 ],
 "edges": [
   {
     "id": "d0bc788f-8bc1-4cbc-bcb0-95bdf532e8f2",
     "price": {
       "value": 5
     }
   }
 ],
 "toppings": [
   {
     "id": "2ef286ec-e968-43cb-a450-df1183e60f46",
     "prices": {
       "b08a8cbf-3bd0-44a6-8cec-ddb73b659f3c": {
         "value": 45
       }
     }
   }
 ]
}'

Resposta

{
  "id": "ecb42fd8-a735-4ffa-90be-04e01e12e96f",
  "toppings": [
    {
      "description": "Calabresa com queijo",
      "name": "Calabresa",
      "externalCode": "C1",
      "id": "2ef286ec-e968-43cb-a450-df1183e60f46",
      "sequence": 0,
      "status": "AVAILABLE",
      "prices": {
        "b08a8cbf-3bd0-44a6-8cec-ddb73b659f3c": {
          "value": 45
        }
      },
      "dietaryRestrictions": ["ORGANIC"]
    }
  ],
  "crusts": [
    {
      "id": "0c3b2a90-463a-4892-be85-7c461da05248",
      "sequence": 0,
      "name": "Massa Tradicional",
      "status": "AVAILABLE",
      "ownerId": "7f357e2c-599d-4023-8930-e39a778338d6",
      "price": {
        "id": "cc426276-f65c-4eff-8f4b-9ef39341e655",
        "value": 0,
        "promotionalFromPrice": 0,
        "effectiveStart": 1600271268.573968,
        "customizationOptionId": "0c3b2a90-463a-4892-be85-7c461da05248",
        "type": "CUSTOMIZATION_OPTION"
      },
      "externalCode": "M1"
    }
  ],
  "edges": [
    {
      "id": "d0bc788f-8bc1-4cbc-bcb0-95bdf532e8f2",
      "name": "Borda de Catupiry",
      "sequence": 0,
      "status": "AVAILABLE",
      "price": {
        "value": 5
      }
    }
  ],
  "sizes": [
    {
      "id": "b08a8cbf-3bd0-44a6-8cec-ddb73b659f3c",
      "acceptedFractions": [1],
      "externalCode": "G1",
      "name": "Grande",
      "sequence": 0,
      "slices": 8,
      "status": "AVAILABLE"
    }
  ],
  "shifts": [
    {
      "startTime": "00:00:00 GMT-0300 (GMT-03:00)",
      "endTime": "23:15:00 GMT-0300 (GMT-03:00)",
      "monday": true,
      "wednesday": true,
      "tuesday": true,
      "thursday": true,
      "sunday": false,
      "saturday": true,
      "friday": true
    }
  ]
}

Após criado, é possível editar um produto de pizza através da API PUT /merchants/{merchantId}/pizzas/{pizzaId}. Caso ele esteja associado em mais de um categoria ao mesmo tempo, essas alterações serão aplicadas em todos os locais onde aquele produto está associado.

Request:

curl --location --request PUT 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/ff4e9e03-588c-4c15-8d16-3225b795c1d0/pizzas/5b82a9d0-02e0-4bf2-98bc-6f27e06627ed' \
--header 'Content-Type: application/json' \
--data-raw '{
    "id": "5b82a9d0-02e0-4bf2-98bc-6f27e06627ed",
    "toppings": [
        {
            "description": "Edited-string",
            "name": "Edited-bbb-Toppin",
            "externalCode": "Edited-string",
            "id": "26819c3b-cacb-40c1-97ae-44ffa348c107",
            "sequence": 0,
            "status": "UNAVAILABLE",
            "dietaryRestrictions": [
                "VEGAN"
            ]
        }
    ],
    "crusts": [
        {
            "id": "fc8f873c-e0f7-4054-865b-0920b34cc31d",
            "sequence": 2,
            "name": "Edited-BBB-Crust",
            "status": "AVAILABLE",
            "ownerId": "ff4e9e03-588c-4c15-8d16-3225b795c1d0",
            "externalCode": "666"
        }
    ],
    "edges": [
        {
            "id": "cac27696-168d-4fbb-9353-dbefbeca0b1b",
            "name": "Edited-BBB-edge",
            "sequence": 2,
            "status": "AVAILABLE"
        }
    ],
    "sizes": [
        {
            "id": "b602db20-51ce-40a6-acd8-bb6516f4da08",
            "acceptedFractions": [
                1
            ],
            "externalCode": "666",
            "name": "Edited-AAA-Size",
            "sequence": 0,
            "slices": 8,
            "status": "AVAILABLE"
        }
    ],
    "shifts": [
        {
            "startTime": "00:00:00",
            "endTime": "23:15:00",
            "monday": true,
            "wednesday": true,
            "tuesday": true,
            "thursday": true,
            "sunday": false,
            "saturday": true,
            "friday": true
        }
    ]
}'

Resposta:

{
  "id": "5b82a9d0-02e0-4bf2-98bc-6f27e06627ed",
  "toppings": [
    {
      "description": "Edited-string",
      "name": "Edited-bbb-Toppin",
      "externalCode": "Edited-string",
      "id": "26819c3b-cacb-40c1-97ae-44ffa348c107",
      "sequence": 0,
      "status": "UNAVAILABLE",
      "dietaryRestrictions": ["VEGAN"]
    }
  ],
  "crusts": [
    {
      "id": "fc8f873c-e0f7-4054-865b-0920b34cc31d",
      "sequence": 2,
      "name": "Edited-BBB-Crust",
      "status": "AVAILABLE",
      "ownerId": "ff4e9e03-588c-4c15-8d16-3225b795c1d0",
      "externalCode": "666"
    }
  ],
  "edges": [
    {
      "id": "cac27696-168d-4fbb-9353-dbefbeca0b1b",
      "name": "Edited-BBB-edge",
      "sequence": 2,
      "status": "AVAILABLE"
    }
  ],
  "sizes": [
    {
      "id": "b602db20-51ce-40a6-acd8-bb6516f4da08",
      "acceptedFractions": [1],
      "externalCode": "666",
      "name": "Edited-AAA-Size",
      "sequence": 0,
      "slices": 8,
      "status": "AVAILABLE"
    }
  ],
  "shifts": [
    {
      "startTime": "00:00:00 GMT-0300 (GMT-03:00)",
      "endTime": "23:15:00 GMT-0300 (GMT-03:00)",
      "monday": true,
      "wednesday": true,
      "tuesday": true,
      "thursday": true,
      "sunday": false,
      "saturday": true,
      "friday": true
    }
  ]
}

Caso você tenha vários produtos de pizza criados, exemplo, "Pizza Salgada" e "Pizza doce", é possível você listá-las para conferir seus atributos através da API GET /merchants/{merchantId}/pizzas.

curl --location --request GET 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/ff4e9e03-588c-4c15-8d16-3225b795c1d0/pizzas'

Resposta:

[
  {
    "id": "5b82a9d0-02e0-4bf2-98bc-6f27e06627ed",
    "toppings": [
      {
        "description": "Edited-string",
        "name": "Edited-bbb-Toppin",
        "externalCode": "Edited-string",
        "id": "26819c3b-cacb-40c1-97ae-44ffa348c107",
        "sequence": 0,
        "status": "UNAVAILABLE",
        "dietaryRestrictions": ["VEGAN"]
      }
    ],
    "crusts": [
      {
        "id": "fc8f873c-e0f7-4054-865b-0920b34cc31d",
        "sequence": 2,
        "name": "Edited-BBB-Crust",
        "status": "AVAILABLE",
        "ownerId": "ff4e9e03-588c-4c15-8d16-3225b795c1d0",
        "externalCode": "666"
      }
    ],
    "edges": [
      {
        "id": "cac27696-168d-4fbb-9353-dbefbeca0b1b",
        "name": "Edited-BBB-edge",
        "sequence": 2,
        "status": "AVAILABLE"
      }
    ],
    "sizes": [
      {
        "id": "b602db20-51ce-40a6-acd8-bb6516f4da08",
        "acceptedFractions": [1],
        "externalCode": "666",
        "name": "Edited-AAA-Size",
        "sequence": 0,
        "slices": 8,
        "status": "AVAILABLE"
      }
    ],
    "shifts": [
      {
        "startTime": "00:00:00 GMT-0300 (GMT-03:00)",
        "endTime": "23:15:00 GMT-0300 (GMT-03:00)",
        "monday": true,
        "wednesday": true,
        "tuesday": true,
        "thursday": true,
        "sunday": false,
        "saturday": true,
        "friday": true
      }
    ]
  }
]

Você pode pausar e ativar componentes da pizza através da API PATCH /merchants/{merchantId}/pizzas/{pizzaId}:

Request:

curl --location --request PATCH 'https://merchant-api.ifood.com.br/catalog/v1.0/merchants/ff4e9e03-588c-4c15-8d16-3225b795c1d0/pizzas/5b82a9d0-02e0-4bf2-98bc-6f27e06627ed' \
--header 'Content-Type: text/plain' \
--data-raw '{
  "status": "UNAVAILABLE",
  "sizeIds": [
    "b602db20-51ce-40a6-acd8-bb6516f4da08"
  ],
  "crustIds": [
    "fc8f873c-e0f7-4054-865b-0920b34cc31d"
  ],
  "edgeIds": [
    "cac27696-168d-4fbb-9353-dbefbeca0b1b"
  ],
  "toppingIds": [
    "26819c3b-cacb-40c1-97ae-44ffa348c107"
  ]
}'

Resposta

200 - OK