# r_keeper Delivery API: Отслеживать статусы заказов

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

Гость видит на сайте, что заказ принят, готовится или уже у курьера.

1. Опрашивай изменения: GET /orders/api/v1/orders с fromDate (начало окна), orderBy = updatedAt, sortOrder = desc и, при необходимости, includeStatusIds — например, 1, 2, 3 (новый, подтверждённый, принят рестораном).
2. В result[] — orderId, orderStatusId, orderStatusName, courierName и состав заказа. Сравнивай статус с сохранённым и обновляй только изменившиеся заказы.
3. Чтобы не опрашивать API, настрой push-уведомления в админке: внешний API с URL и токеном в заголовке и шаблон в разделе «Коммуникации» с каналом API и условием по статусу. Неотправленные события стоят в очереди и повторяются.

```bash
curl -s -G "https://delivery.ucs.ru/orders/api/v1/orders" \
  -H "Authorization: Bearer $TOKEN" \
  -d fromDate=2026-10-24T00:00:00+03:00 -d orderBy=updatedAt -d sortOrder=desc \
  -d includeStatusIds=1 -d includeStatusIds=2 -d includeStatusIds=3
```

## Базовые URL

- Боевой: `https://delivery.ucs.ru`
- Авторизация: `https://auth-delivery.ucs.ru`

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

Тип: OAuth 2.0

В админке: «Интеграции» → «Подключение по API» → добавить подключение (заведения, представление меню, GUID валют для онлайн-оплаты). В карточке появятся Client ID (16 символов) и Client Secret (128 символов).

Токен получают запросом `POST https://auth-delivery.ucs.ru/connect/token` (`application/x-www-form-urlencoded`) с параметрами `client_Id`, `client_secret`, `grant_type=client_credentials`, `scopes=orders`. Токен (JWT) действует 3600 секунд и передаётся во всех запросах:

```
Authorization: Bearer eyJhbGciOiJSUzI....aXHgrHV-I
```

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

### GET /orders/api/v1/orders — Поиск заказов

В ответе `result[]`: `orderId`, `restaurantId`, `orderStatusId`, `orderStatusName`, даты, `guest`, суммы, `expeditionType`, `address`, `courierName`, `dishList` и др.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `includeStatusIds` | query | array | нет | Статусы: 1 новый, 2 подтверждённый, 3 принят рестораном, 4 передан на кухню, 5 готовится, 6 приготовлен, 7 сборка, 8 собран, 9 у курьера, 10 в пути, 13 доставлен, 11 выполнен, 12 отменён |
| `sortOrder` | query | string | нет | asc или desc |
| `orderBy` | query | string | нет | updatedAt или expectedAt |
| `q` | query | string | нет | Поисковый запрос |
| `fromDate` | query | string | нет | Начало выборки (дата или дата-время) |
| `toDate` | query | string | нет | Конец выборки |

## Нюансы

- `expectedAt` передаётся обязательно с часовым поясом, например `2021-06-16T14:03:42.504+03:00`.
- Позиции заказа ссылаются на ID блюд и ингредиентов из представления меню, назначенного подключению; блюдо в стоп-листе или неверная цена дают ошибку `order_validation`.
- Push-уведомления о статусах настраиваются в админке: внешний API (URL и токен в заголовке) + шаблон в разделе «Коммуникации» с каналом API и условием (например, статус «Передан на кухню»). При ошибке доставки — повтор, неотправленные события хранятся в очереди.
- Есть также методы изменения заказа, оплаты и завершения, предоплаты, справочники стран, городов, валют и курьеров.

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

- [Подключить сайт и загрузить меню](https://mcp-everything.ru/integrations/r-keeper-delivery/scenarios/podklyuchit-sayt-i-zagruzit-menyu.md)
- [Передать заказ с сайта в ресторан](https://mcp-everything.ru/integrations/r-keeper-delivery/scenarios/peredat-zakaz-s-sayta-v-restoran.md)
- [Отменить заказ](https://mcp-everything.ru/integrations/r-keeper-delivery/scenarios/otmenit-zakaz.md)

---

Если этого недостаточно — официальная документация: https://docs.rkeeper.ru/delivery/vozmoyonosti-api-4041552.html
Вся интеграция одним документом: https://mcp-everything.ru/integrations/r-keeper-delivery.md
