Для получения XML-файла с группами и списком блюд необходимо сформировать GET-запрос в котором передаются параметры авторизации и параметр file=dish.
GET| Параметр | Обязательный | Описание |
|---|---|---|
| LOGIN | Да | Логин пользователя на FOODCOST к которому привязана компания. |
| PASSWORD | Да | Пароль пользователя на FOODCOST к которому привязана компания. |
| KEY | Да | Ключ интеграции, получаемый пользователем после активации подписки на FOODCOST и к которому привязана компания. |
| KEY_SESSION | Да | Идентификатор сессии получается при каждом новом сеансе работы пользователя с вашим приложением. При последующих заходах того же пользователя это значение будет другим, поэтому его нужно сохранить для последующей авторизации. |
| file | Да | dish |
| v |
Версия файлов, доступ к которым нужно получить. Параметр необязательный. Для доступа к актуальным данным требуется установить значение 2. Если этот параметр не используется, будут загружены данные актуальные на 01.10.2018 |
Внимание! При формировании запроса, названия параметров должны быть написаны прописными или строчными буквами так, как указано в настоящей документации.
GET
GET /personal/exchange/?LOGIN=user&PASSWORD=qWerTy&KEY=UHui9B7zAST4AAK9Z&KEY_SESSION=6f347c1f5817502451ec1a5d91e42823&file=dish&v=2 HTTP/1.1
Host: foodcost.pro
Cache-Control: no-cache
В случае успешной авторизации, сервер ответит предоставит для скачивания XML-файл с описанием групп и данные для формирования Технико-технологических карт, включая все необходимые методологичекие материалы для формирования печатной формы Технико-технологической карты по ГОСТ 31987–2012:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="comments" type="xs:string" />
<xs:element minOccurs="0" name="elements">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="element">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="fc_id" type="xs:string" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="timestamp" type="xs:string" />
<xs:element minOccurs="0" name="parent_id" type="xs:string" />
<xs:element minOccurs="0" name="description" type="xs:string" />
<xs:element minOccurs="0" name="weight_units" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="storage_unit" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="link" type="xs:string" />
<xs:element minOccurs="0" name="image" type="xs:string" />
<xs:element minOccurs="0" name="out" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="type" type="xs:string" />
<xs:element minOccurs="0" name="out_conv" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="out_main" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="out_garnir" type="xs:unsignedShort" />
<xs:element minOccurs="0" name="out_sous" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="recipe">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="nutrition">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="alcohol" type="xs:decimal" />
<xs:element minOccurs="0" name="proteins" type="xs:decimal" />
<xs:element minOccurs="0" name="fat" type="xs:decimal" />
<xs:element minOccurs="0" name="carbohydrates" type="xs:decimal" />
<xs:element minOccurs="0" name="caloric" type="xs:decimal" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="requirements" type="xs:string" />
<xs:element minOccurs="0" name="microb">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="organoleptic">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="technology" type="xs:string" />
<xs:element minOccurs="0" name="ban">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="sale">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="raw_list">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="best_before">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="serve">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="national">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="item">
<xs:complexType>
<xs:attribute name="value" type="xs:unsignedInt" use="optional" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="recipes">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="recipe">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="fc_id" type="xs:string" />
<xs:element minOccurs="0" name="brutto" type="xs:decimal" />
<xs:element minOccurs="0" name="netto" type="xs:decimal" />
<xs:element minOccurs="0" name="output" type="xs:string" />
<xs:element minOccurs="0" name="ingredient" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="properties">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="microb">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
<xs:element minOccurs="0" name="index" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="organoleptic">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="productview" type="xs:string" />
<xs:element minOccurs="0" name="color" type="xs:string" />
<xs:element minOccurs="0" name="consistency" type="xs:string" />
<xs:element minOccurs="0" name="taste" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="raw_list">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="ban">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="best_before">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
<xs:element minOccurs="0" name="time" type="xs:unsignedByte" />
<xs:element minOccurs="0" name="unit" type="xs:string" />
<xs:element minOccurs="0" name="temp" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="sale">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="serve">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="time" type="xs:string" />
<xs:element minOccurs="0" name="unit" type="xs:string" />
<xs:element minOccurs="0" name="temp" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="national">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" name="item">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="id" type="xs:unsignedInt" />
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="text" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="data" type="xs:string" use="optional" />
</xs:complexType>
</xs:element>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<catalog date="30-09-2013">
<program value="Название программы" />
<comments><div style="background:#FFF; width:100%;padding:10px;"> <a href="http://foodcost.ru/"> <img src="/upload/medialibrary/d8b/d8b2022632b023e9cfac04838bc69726.png" title="Фуд Кост" border="0" alt="Фуд Кост" width="195" height="34" /> </a> <br/> <h3 style="color:#FF6300">Благодарим за использование наших сервисов!</h3> </div> <div style="background:#edf5dd; width:100%; padding:10px;"> <h4 style="color:#7ea348">Дополнительно:</h4> <ul> <li><a href="http://foodcost.ru/support/faq/" title="Открыть" target="_blank">Часто задаваемые вопросы</a></li> <li><a href="http://foodcost.ru/support/tiket/" title="Открыть" target="_blank">Техническая поддержка </a></li> </ul> </div></comments>
<sections>
<section>
<fc_id>2267</fc_id>
<name>Солянки</name>
<description>В состав солянок входят соленые огурцы, репчатый лук, томатное пюре, каперсы, маслины или оливки. Солянки готовят с разнообразными мясными и рыбными продуктами, а также со свежими и сушеными грибами. Для рыбных солянок используют рыбные бульоны, которые варят из рыбных отходов или голов рыб семейства осетровых.</description>
<parent_id>1431</parent_id>
</section>
</sections>
<…>
<elements>
<element>
<fc_id>125234</fc_id>
<name>Солянка сборная мясная</name>
<description>Традиционная сборная солянка с мясными продуктами</description>
<link>http://foodcost.ru/services/recipes/element/solyanki/solyanka-sbornaya-myasnaya/</link>
<parent_id>2267</parent_id>
<recipe>
<item value="317091"/>
<item value="317059"/>
<item value="316886"/>
<item value="316885"/>
<item value="316884"/>
<item value="316883"/>
<item value="302103"/>
<item value="302104"/>
<item value="327827"/>
<item value="302097"/>
<item value="302098"/>
<item value="302099"/>
<item value="302100"/>
<item value="302101"/>
<item value="302102"/>
<item value="302096"/>
</recipe>
<out>1280</out>
<out_main>180</out_main>
<out_sous>100</out_sous>
<out_garnir>1000</out_garnir>
<type>кг.</type>
<recomend>4</recomend>
<nutrition>
<proteins>3.89</proteins>
<fat>6.14</fat>
<carbohydrates>2.43</carbohydrates>
<alcohol>0</alcohol>
<caloric>80.54</caloric>
</nutrition>
<best_before>
<item value="161948"/>
</best_before>
<requirements>Блюдо реализуют в порционной посуде сразу после приготовления. При отпуске в в солянку кладут маслины, кружочек лимона, сметану и посыпают рубленной зеленью петрушки.</requirements>
<microb>
<item value="191893"/>
</microb>
<organoleptic>
<item value="162346"/>
</organoleptic>
<technology>В кипящий бульон закладывают пассерованные репчатый лук и томатную пасту, припущенные солёные огурцы, нарезанные соломкой, каперсы (вместе с рассолом), подготовленные мясные продукты, нарезанные соломкой, перец горошком, соль, лавровый лист и варят 5-10 мин.</technology>
<raw>В качестве замены «Бульона говяжьего (заготовка)» рекомендуется использование бульона, полученного при приготовлении Грудинки отварной (заготовка).</raw>
<raw_list>
<item value="191799"/>
<item value="191861"/>
</raw_list>
<sale>
<item value="191801"/>
</sale>
<serve>
<item value="191804"/>
</serve>
</element>
</elements>
…
<recipes>
<recipe>
<fc_id>317091</fc_id>
<brutto>14</brutto>
<netto>10</netto>
<ingredient>26670</ingredient>
</recipe>
<recipe>
<fc_id>317059</fc_id>
<brutto>10</brutto>
<netto>10</netto>
<ingredient>22047</ingredient>
</recipe>
<recipe>
<fc_id>316886</fc_id>
<brutto>10</brutto>
<netto>10</netto>
<ingredient>27015</ingredient>
</recipe>
<recipe>
<fc_id>316885</fc_id>
<brutto>0.2</brutto>
<netto>0.2</netto>
<ingredient>25562</ingredient>
</recipe>
<recipe>
<fc_id>316884</fc_id>
<brutto>1</brutto>
<netto>1</netto>
<ingredient>26646</ingredient>
</recipe>
<recipe>
<fc_id>316883</fc_id>
<brutto>100</brutto>
<netto>100</netto>
<output>100</output>
<ingredient>26997</ingredient>
</recipe>
<recipe>
<fc_id>302103</fc_id>
<brutto>50</brutto>
<netto>50</netto>
<output>50</output>
<ingredient>205051</ingredient>
</recipe>
<recipe>
<fc_id>302104</fc_id>
<brutto>50</brutto>
<netto>50</netto>
<output>50</output>
<ingredient>203872</ingredient>
</recipe>
<recipe>
<fc_id>327827</fc_id>
<brutto>750</brutto>
<netto>750</netto>
<ingredient>125220</ingredient>
</recipe>
<recipe>
<fc_id>302097</fc_id>
<brutto>50</brutto>
<netto>50</netto>
<ingredient>27077</ingredient>
</recipe>
<recipe>
<fc_id>302098</fc_id>
<brutto>50</brutto>
<netto>50</netto>
<ingredient>26204</ingredient>
</recipe>
<recipe>
<fc_id>302099</fc_id>
<brutto>40</brutto>
<netto>20</netto>
<ingredient>24799</ingredient>
</recipe>
<recipe>
<fc_id>302100</fc_id>
<brutto>82</brutto>
<netto>80</netto>
<output>80</output>
<ingredient>27019</ingredient>
</recipe>
<recipe>
<fc_id>302101</fc_id>
<brutto>119</brutto>
<netto>100</netto>
<ingredient>22020</ingredient>
</recipe>
<recipe>
<fc_id>302102</fc_id>
<brutto>62</brutto>
<netto>60</netto>
<ingredient>26582</ingredient>
</recipe>
<recipe>
<fc_id>302096</fc_id>
<brutto>24</brutto>
<netto>24</netto>
<ingredient>22058</ingredient>
</recipe>
</recipes>
<…>
<properties>
<microb>
<item>
<id>191893</id>
<index>1.9.15.8.</index>
</item>
</microb>
<organoleptic>
<item>
<id>162346</id>
<productview>В блюде гармоничное соотношение жидкости и продуктов. Компоненты не разваренные, распределены равномерно.</productview>
<color>Бульона — прозрачный, при добавлении томата или свеклы — красноватый, ингредиентов — свойственный компонентам, входящим в состав блюда.</color>
<consistency>Жидкая, компонентов в составе — достаточно плотная, не разваренная, свойственная типам ингредиентов в составе блюда</consistency>
<taste>Приятные, свойственные компонентам. В меру острый, соленый. Без посторонних примесей и порочащих признаков.</taste>
</item>
</organoleptic>
<raw_list>
<item>
<id>191799</id>
<text>Овощи должны быть свежими овощей, упругой консистенции; вкус, цвет и запах должны соответствовать используемым продуктам.</text>
</item>
<item>
<id>191861</id>
<text>Запрещается использовать консервы с нарушением герметичности банок, бомбажные, «хлопуши», банки с ржавчиной, деформированные, без этикеток.</text>
</item>
</raw_list>
<ban>//секция приведена справочно, для демонстрации
<item>
<id>191807</id>
<text>В соответствии с требованиями СанПиН 2.3.6.1079-01, оставлять блюдо на следующий день ЗАПРЕЩАЕТСЯ!!!</text>
</item>
</ban>
<best_before>
<item>
<id>161948</id>
<time>48</time>
<unit>час</unit>
<temp>от +2°С до +6°С</temp>
</item>
</best_before>
<sale>
<item>
<id>191801</id>
<text>Согласно требования СанПин 2.3.6.1079-01, температура блюда при подаче должна быть не ниже 75°C.</text>
</item>
</sale>
<serve>
<item>
<id>191804</id>
<time>2–3</time>
<unit>часа</unit>
<temp>не ниже 75°C</temp>
</item>
</serve>
</properties>
<session_id value="ID сессии"/>
</catalog>
| наименование | описание |
|---|---|
| catalog date | Дата редактирования файла |
| program value | Название ПО, указанного пользователем при подключении сервиса |
| comments | Сервисные для пользователей в формате HTML |
| sections | Раздел с описанием групп |
| section | Описание группы |
| elements | Раздел с описанием элементов |
| element | Описание элемента |
| name | Название |
| link | Ссылка на элемент в каталоге foodCOST |
| image | Изображение |
| description | Краткое текстовое описание раздела, элемента |
| recipes | Раздел с рецептурами |
| recipe | Рецептура блюда |
| brutto | Вес ингредиента БРУТТО в базовой единице измерения (граммы) |
| netto | Вес ингредиента НЕТТО в базовой единице измерения (граммы) |
| output | Вес готового ингредиента после тепловой обработки в базовой единице измерения (граммы) |
| technology | Описание технологии приготовления блюда |
| type | Тип рецептуры — кг/порц |
| out_conv | Масса полуфабриката в базовой единице измерения (граммы) |
| out | Общий выход блюда в базовой единице измерения (граммы) |
| out_main | Вес основного продукта в блюде в базовой единице измерения (граммы) |
| out_sous | Вес соуса в блюде в базовой единице измерения (граммы) |
| out_garnir | Вес гарнира в блюде в базовой единице измерения (граммы) |
| raw_list | Требования к сырью |
| raw | Дополнительные требования к сырью |
| nutrition | Раздел ТТК для показателей пищевой ценности |
| proteins | Содержание белка в 100 г продукта в граммах |
| fats | Содержание жиров в 100 г продукта в граммах |
| carbohydrates | Содержание углеводов в 100 г продукта в граммах |
| alcohol | Содержание спирта в 100 г продукта в граммах |
| caloric | Калорийность 100 г продукта в граммах |
| properties | Раздел со значениями свойств ТТК |
| microb | Раздел ТТК для микробиологических показателей качества блюда |
| best_before | Раздел ТТК для сроков и условий хранения блюда |
| requirements | Дополнительные требования к реализации и оформлению |
| sale | Раздел ТТК для типовых требований к реализации |
| serve | Раздел ТТК для правил подачи блюда |
| ban | Информация о запрете оставлять блюдо на следующий день |
| recomend | Рекомендованное количество порций для рецептуры |
| parent_id | ID родительского раздела |
| session_id | ID сессии |