# Dodo IS API: Выгрузить смены сотрудников для расчёта зарплаты

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

Отработанные часы и доставленные заказы за период — в свою систему расчёта зарплаты или премий курьерам.

1. Получи scopes staffshifts:read, staffmembers:read и user.role:read.
2. Запроси смены: GET /staff/shifts с units, clockInFrom и clockInTo (смены выбираются по времени начала), при необходимости staffTypeName. В сменах — дневные, ночные и праздничные часы в минутах, доставленные заказы и расстояние.
3. Листай по skip и take до isEndOfListReached = true.
4. Имена и статусы сотрудников — GET /staff/members с units и statuses. Это персональные данные: храни их по правилам 152-ФЗ.
5. Кто сейчас на смене — GET /staff/couriers-on-shift с units.

```bash
curl -G "https://api.dodois.io/dodopizza/ru/staff/shifts" \
  -H "Authorization: Bearer $DODO_TOKEN" \
  -d units=<unit_uuid> \
  -d clockInFrom=2026-10-01T00:00:00 -d clockInTo=2026-10-16T00:00:00 \
  -d skip=0 -d take=1000
```

## Базовые 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 /staff/members — Список сотрудников

Сортировка по дате трудоустройства (`hiredOn`); содержит персональные данные. Scopes: `staffmembers:read`, `user.role:read`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `units` | query | string | нет | Заведения (UUID) |
| `staffType` | query | string | нет | Тип сотрудников (одно значение) |
| `statuses` | query | string | нет | Статусы через запятую, например Dismissed, Suspended |
| `hiredFrom` | query | string | нет | Дата трудоустройства, с |
| `hiredTo` | query | string | нет | Дата трудоустройства, по |
| `dismissedFrom` | query | string | нет | Дата увольнения, с |
| `dismissedTo` | query | string | нет | Дата увольнения, по |
| `lastModifiedFrom` | query | string | нет | Дата изменения, с |
| `lastModifiedTo` | query | string | нет | Дата изменения, по |
| `skip` | query | integer | нет | Смещение |
| `take` | query | integer | нет | По умолчанию 100, максимум 1000 |

### GET /staff/shifts — Смены сотрудников по пиццериям

Отработанное время (дневные, ночные, праздничные часы в минутах), доставленные заказы, расстояние. Смены выбираются по времени начала. Scopes: `staffshifts:read`, `user.role:read`.

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

### GET /staff/couriers-on-shift — Курьеры на смене

В `units` — до 30 заведений. Scopes: `staffshifts:read`, `user.role:read`.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `units` | query | string | да | Заведения (UUID) |
| `on` | query | string | нет | Момент времени в прошлом; по умолчанию — текущий |

## Нюансы

- Постраничные методы: увеличивайте `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/sledit-za-skorostyu-dostavki.md)
- [Получать уведомления о стоп-продажах](https://mcp-everything.ru/integrations/dodo-is/scenarios/poluchat-uvedomleniya-o-stop-prodazhah.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
