# Dodo IS API: Следить за скоростью доставки

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

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

1. Получи scopes deliverystatistics и user.role:read.
2. Сводные метрики за период: GET /delivery/statistics с units, from и to (ISO 8601).
3. Детализация по каждому заказу курьеров: GET /delivery/couriers-orders с теми же units (до 30 заведений), from, to и страницами skip / take (до 1000). Время в ответе — UTC.
4. Листай, увеличивая skip на число полученных записей, пока не придёт isEndOfListReached = true.
5. Полные данные проблемного заказа — GET /orders с orderIds.

```python
import requests

API = "https://api.dodois.io/dodopizza/ru"
H = {"Authorization": "Bearer <token>"}
params = {"units": "<unit_uuid>", "from": "2026-10-23T00:00:00", "to": "2026-10-24T00:00:00",
          "skip": 0, "take": 1000}

stats = requests.get(f"{API}/delivery/statistics", headers=H,
                     params={k: params[k] for k in ("units", "from", "to")}).json()

pages = []
while True:
    page = requests.get(f"{API}/delivery/couriers-orders", headers=H, params=params).json()
    pages.append(page)
    if page.get("isEndOfListReached", True):
        break
    params["skip"] += params["take"]
```

## Базовые URL

- Боевой (Россия, Додо Пицца): `https://api.dodois.io/dodopizza/ru`
- Боевой (Россия, Drinkit): `https://api.dodois.io/drinkit/ru`
- Тестовый (mock-сервер): `https://stoplight.io/mocks/dodo-brands/dodo-is/51665679`
- Для других стран: `https://api.dodois.io/dodopizza/{kz,by,kg,uz,tj}`

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

Тип: OAuth 2.0

OAuth 2.0 Authorization Code. Приложение создаётся в личном кабинете разработчика; токен передаётся в заголовке `Authorization: Bearer <token>`.

- Авторизация: `https://auth.dodois.io/connect/authorize`
- Токен и обновление: `https://auth.dodois.io/connect/token`

Основные scopes: `shared`, `orders`, `accounting:read`, `deliverystatistics`, `sales`, `stopsales`, `staffmembers:read`, `staffshifts:read`, `unit:read`, `user.role:read`, `offline_access` (получение `refresh_token`).

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

### GET /delivery/statistics — Статистика доставки

Основные метрики доставки за период по пиццериям. Scopes: `deliverystatistics`, `user.role:read`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `units` | query | string | да | Заведения (UUID через запятую) |
| `from` | query | string | да | Начало периода, ISO 8601 |
| `to` | query | string | да | Конец периода, ISO 8601 |

### GET /delivery/couriers-orders — Заказы курьеров

Метрики по каждому заказу курьеров; время в ответе — UTC. `units` — не больше 30. Scopes: `deliverystatistics`, `user.role:read`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `units` | query | string | да | Заведения (UUID) |
| `from` | query | string | да | Начало периода, ISO 8601 |
| `to` | query | string | да | Конец периода, ISO 8601 |
| `skip` | query | integer | нет | Смещение, по умолчанию 0 |
| `take` | query | integer | нет | Размер страницы, по умолчанию 100, максимум 1000 |

### GET /orders — Заказы по идентификаторам

Не постраничный: возвращаются все найденные заказы, число ID ограничено; заказы недоступных заведений и неизвестные ID в ответ не попадают. Scopes: `orders`, `user.role:read`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `orderIds` | query | string | да | ID заказов (UUID) |

## Нюансы

- Постраничные методы: увеличивайте `skip` на число полученных записей, пока в ответе не придёт `isEndOfListReached = true`.
- Списки UUID (`units` и др.) — через запятую без пробелов; во многих методах не больше 30 заведений за запрос.
- Доступ к данным ограничен ролями пользователя и его заведениями — scope `user.role:read` нужен почти везде.
- Также есть Auth API (заведения и роли пользователя по токену) и Marketplace API (доступ пользователя к платным функциям приложения).
- Статус работы API: `https://status.dodois.io/`.

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

- [Собрать ежедневный отчёт по выручке пиццерий](https://mcp-everything.ru/integrations/dodo-is/scenarios/sobrat-ezhednevnyy-otchet-po-vyruchke.md)
- [Получать уведомления о стоп-продажах](https://mcp-everything.ru/integrations/dodo-is/scenarios/poluchat-uvedomleniya-o-stop-prodazhah.md)
- [Выгрузить смены сотрудников для расчёта зарплаты](https://mcp-everything.ru/integrations/dodo-is/scenarios/vygruzit-smeny-sotrudnikov-dlya-rascheta.md)
- [Проверить складские остатки](https://mcp-everything.ru/integrations/dodo-is/scenarios/proverit-skladskie-ostatki.md)

---

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