Записи графика
Возвращает опубликованные записи графика смен — по дням, с пагинацией и фильтрами по периоду, отделу и сотруднику.
Скоуп
Требуется скоуп schedule.read. Без него ключ получит 403 missing_scope. Какое право у создателя ключа нужно, чтобы выдать этот скоуп, — в Скоупах и правах → Таблица скоупов.
Query-параметры
| Параметр | Обязателен | Описание |
|---|---|---|
limit |
нет | Целое 1..200, по умолчанию 100. |
cursor |
нет | Курсор meta.next_cursor предыдущего ответа — для следующей страницы. |
from, to |
нет | Даты YYYY-MM-DD в таймзоне организации, границы включительно — фильтр по entry_date. Передаются только парой; максимальный диапазон — 366 дней. Без них — текущий календарный месяц. |
department_id |
нет | UUID отдела. Матчится через отдел сотрудника, а не через собственную колонку записи: вернутся записи сотрудников этого отдела. Неизвестный или чужой department_id — не ошибка, просто пустой список. |
employee_id |
нет | UUID сотрудника — строгое равенство. Неизвестный или чужой employee_id — тоже пустой список, не ошибка. |
Других параметров у ресурса нет: любой лишний параметр → 400 validation_error — отклоняется явно, а не игнорируется молча (см. Конвенции → Фильтры). Передать только from без to (или наоборот) тоже нельзя — 400 с подсказкой pass both from and to, or neither.
Запрос
Без параметров — записи текущего месяца в таймзоне организации:
curl -s https://smengo.com/api/v1/schedule-entries \
-H "Authorization: Bearer smg_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
За конкретный период и по одному сотруднику:
curl -s "https://smengo.com/api/v1/schedule-entries?from=2026-07-01&to=2026-07-31&employee_id=5e6d9f2a-3b7c-4e2f-9a1d-7c8e2f6b4a10" \
-H "Authorization: Bearer smg_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
Ответ
{
"data": [
{
"id": "7a3c1d5e-8f2b-4c6a-9e1f-2d4b6a8c0e13",
"employee_id": "5e6d9f2a-3b7c-4e2f-9a1d-7c8e2f6b4a10",
"employee_full_name": "Иванова Мария",
"entry_date": "2026-07-14",
"status_id": "c2e4a6b8-1d3f-4a5c-8e7b-9f0a1b2c3d4e",
"shift_preset_id": "3f8e2a1c-6b5d-4e9f-a2c1-7d8e9f0a1b2c",
"start_time": null,
"end_time": null
},
{
"id": "b91f4e2d-0a7c-4b3e-8d6f-1c2a3b4c5d6e",
"employee_id": "0b2f5e7a-9c31-4d6e-8a2b-4f1e6c9d3a52",
"employee_full_name": "Петров Игорь",
"entry_date": "2026-07-14",
"status_id": "c2e4a6b8-1d3f-4a5c-8e7b-9f0a1b2c3d4e",
"shift_preset_id": null,
"start_time": "22:00:00",
"end_time": "06:00:00"
}
],
"meta": { "next_cursor": null }
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id |
string (uuid) |
Уникальный идентификатор записи графика. |
employee_id |
string (uuid) |
Сотрудник, которому принадлежит запись (см. Сотрудники). |
employee_full_name |
string |
Полное имя сотрудника. Вложено сознательно: BI-выгрузка графика обходится без второго запроса к /employees. |
entry_date |
string (YYYY-MM-DD) |
День записи, в таймзоне организации; список отсортирован по этому полю (плюс id как тай-брейкер). |
status_id |
string (uuid) |
Статус дня — рабочий день, отпуск, больничный и т.д.; расшифровка в Типах статусов. |
shift_preset_id |
string (uuid) | null |
Пресет смены (см. Пресеты смен); null, если запись к пресету не привязана. |
start_time |
string (HH:MM:SS) | null |
Начало смены — переопределение на уровне конкретной записи, в таймзоне организации. |
end_time |
string (HH:MM:SS) | null |
Конец смены — тоже per-entry-переопределение. |
start_time/end_time — это сырые переопределения времени для конкретной записи. null не значит «времени нет»: в этом случае время смены определяется пресетом (shift_preset_id) или статусом (status_id) — оба справочника отдают свои дефолтные времена. Ночные смены могут пересекать полночь, поэтому start_time < end_time не гарантирован: "22:00:00" → "06:00:00" — смена до утра следующего дня.
Черновики графика в этом ответе не появляются никогда — эндпоинт отдаёт только опубликованные записи; уволенные сотрудники исключены целиком вместе со своими записями. Служебные поля note, created_by, updated_by в выборку не входят.
Пагинация
Список отсортирован по entry_date, id. Если записей больше, чем limit, meta.next_cursor содержит курсор для следующей страницы; передайте его в cursor следующего запроса как есть:
curl -s "https://smengo.com/api/v1/schedule-entries?limit=1&cursor=eyJrIjoiMjAyNi0wNy0xNCIsImlkIjoiN2EzYzFkNWUtOGYyYi00YzZhLTllMWYtMmQ0YjZhOGMwZTEzIn0" \
-H "Authorization: Bearer smg_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
meta.next_cursor равен null, когда записей больше нет. Общие правила пагинации — в Конвенциях → Пагинация.
Что дальше
- Пресеты смен — расшифровка
shift_preset_idи дефолтные времена смен. - Типы статусов — расшифровка
status_id. - Чек-ины — фактические отметки прихода и ухода к записям графика.