# iikoCloud API: Подключиться и найти свои рестораны

Сценарий из mcp-everything. Актуально на 2026-10-24.

Первый шаг любой интеграции: токен, организации и терминальные группы, куда будут уходить заказы.

1. Создай приложение на портале разработчика public-api.iikoweb.ru — получишь appId и clientSecret (показывается один раз). В iikoWeb → «Интеграции» → «API-ключи» сгенерируй apiKey: он определяет, к каким организациям будет доступ.
2. Получи токен: POST /api/v2/access_token с apiKey, appId и clientSecret. Токен живёт час, refresh-токена нет — запрашивай новый заранее, например каждые 50 минут, и передавай в заголовке Authorization: Bearer <token>.
3. Получи организации: POST /api/1/organizations (пустой organizationIds — все доступные). returnAdditionalInfo = true добавит адрес и версию RMS.
4. Получи терминальные группы доставки: POST /api/1/terminal_groups с organizationIds. Их ID понадобятся при создании заказа.

```bash
TOKEN=$(curl -s -X POST https://api-ru.iiko.services/api/v2/access_token \
  -H 'Content-Type: application/json' \
  -d '{"apiKey": "<apiKey>", "appId": "<appId>", "clientSecret": "<clientSecret>"}' | jq -r .token)

curl -s -X POST https://api-ru.iiko.services/api/1/organizations \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"organizationIds": [], "returnAdditionalInfo": true}'

curl -s -X POST https://api-ru.iiko.services/api/1/terminal_groups \
  -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
  -d '{"organizationIds": ["<organizationId>"]}'
```

## Базовые URL

- Боевой: `https://api-ru.iiko.services`

## Авторизация

Тип: Bearer-токен

- Зарегистрируйтесь на портале разработчика `https://public-api.iikoweb.ru/portal` и создайте приложение — получите `appId` и одноразово показываемый `clientSecret`.
- В iikoWeb → «Интеграции» → «API-ключи» сгенерируйте `apiKey`.
- Получите токен методом `POST /api/v2/access_token` и передавайте его во всех запросах: `Authorization: Bearer {token}`.

Токен (JWT) действует 1 час; refresh-токена нет — запрашивайте новый до истечения срока. Старый метод `POST /api/1/access_token` с `apiLogin` устарел.

## Методы сценария

### POST /api/v2/access_token — Получение токена

В ответе: `correlationId` и `token`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `apiKey` | body | string | да | API-ключ из iikoWeb; определяет доступные организации |
| `appId` | body | string | да | ID приложения с портала разработчика (uuid) |
| `clientSecret` | body | string | да | Секрет приложения с портала разработчика |
| `Timeout` | header | integer | нет | Таймаут в секундах, по умолчанию 15 |

### POST /api/1/organizations — Организации

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `organizationIds` | body | array | нет | ID организаций; по умолчанию — все доступные |
| `returnAdditionalInfo` | body | boolean | нет | Вернуть доп. информацию (версия RMS, страна, адрес) |
| `includeDisabled` | body | boolean | нет | Включить отключённые организации |
| `returnExternalData` | body | array | нет | Ключи внешних данных |

### POST /api/1/terminal_groups — Группы терминалов доставки

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `organizationIds` | body | array | да | ID организаций |
| `includeDisabled` | body | boolean | нет | Включить отключённые группы |
| `returnExternalData` | body | array | нет | Ключи внешних данных |

## Нюансы

- Все запросы, кроме получения токена, требуют заголовок `Authorization`; в каждом можно передать заголовок `Timeout` (секунды).
- Методы-команды (создание, отмена, изменение заказов) выполняются асинхронно: в ответе `correlationId`, итог — через `/api/1/commands/status`.
- Форматы: uuid — строка UUID; дата-время — `yyyy-MM-dd HH:mm:ss.fff` без часового пояса, локальное время терминала.
- Методы сгруппированы по группам ограничений (`Data: dictionaries`, `Data: menu`, `Orders: creating` и др.) — права API-ключа настраиваются по этим группам.
- Часть полей доступна только с определённой версии iikoRMS (в документации — пометки «Allowed from version»).
- Устаревшие методы: `/api/1/access_token`, `/api/1/nomenclature`, `/api/2/menu/by_id` — используйте `/api/v2/access_token` и `/api/menu/v3/by_id`.

## Другие сценарии

- [Выгрузить меню на сайт с учётом стоп-листа](https://mcp-everything.ru/integrations/iiko/scenarios/vygruzit-menyu-na-sayt-s-uchetom-stop.md)
- [Передать заказ доставки с сайта на кассу](https://mcp-everything.ru/integrations/iiko/scenarios/peredat-zakaz-dostavki-s-sayta-na-kassu.md)
- [Отменить заказ и получать статусы вебхуками](https://mcp-everything.ru/integrations/iiko/scenarios/otmenit-zakaz-i-poluchat-statusy.md)

---

Если этого недостаточно — официальная документация: https://api-ru.iiko.services/docs
Вся интеграция одним документом: https://mcp-everything.ru/integrations/iiko.md
