Количество и обязательность добавления модификаторов или ингредиентов определяется из схемы продукта.

Получаем идентификатор схемы - products.[].schemeId.

Далее по идентификатору ищем сущность в массиве ingredientsSchemes.

В объекте схемы есть параметр ingredientsGroups - это группа модификаторов или ингредиентов.

Например, бургер, где на выбор уже чизбургер или гамбургер, или, соус, где на выбор сырный, майонез.

В группе заданы правила, но такого понятия, как главный ингредиент нет. Есть обязательность наличия ингредиента.

Условие:

Ни один модификатор не обязателен, но можно добавить 3 штуки.

Важно отметить, что модификаторов может быть в блюде от одного до бесконечности. В случае, если модификатор один - его в этом варианте можно добавить 3 раза.

Пример:

{
  "id": "string"
  "ingredientsGroups": [
    {
     "id": "string",
     "minCount": 0,
     "maxCount": 3
    }
  ]
}  
JSON

Условие:

Один модификатор обязателен и можно добавить только один.

Пример:

{
  "id": "string"
  "ingredientsGroups": [
    {
     "id": "string",
     "minCount": 1,
     "maxCount": 1
    }
  ]
}
JSON

Условие:

Два модификатора обязательны, но добавить можно десять.

Пример:

{
  "id": "string"
  "ingredientsGroups": [
    {
      "id": "string",
      "minCount": 2,
      "maxCount": 10
     }
  ]
}
JSON