workplaces.reservation.list
Scope:
workplacesКто может вызывать: Владелец, админ или секретарь офиса (после выборки)
Объект бронирования:
id,userId,workplaceId,dateFrom,dateTo,activetypeOfReservationId,reservationType(xmlId)dateConfirmed,dateCanceled,cancelTypeId,createdBy,workplaceName
Ярлыки: workplaceId, userId, officeId, dateRangeFrom, dateRangeTo, status (confirmed|pending|cancelled)
filter: DATE_FROM, DATE_TO, STATUS (confirmed|pending|cancelled), WORKPLACE_ID, USER_ID
HTTP: GET
Побочные эффекты: none
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
limit |
int |
нет | Размер страницы, по умолчанию 50, максимум 500 |
offset |
int |
нет | Смещение, по умолчанию 0 |
fetchAll |
bool |
нет | Если true — вернуть все записи (лимит rest_fetch_all_max, по умолчанию 5000) |
filter |
object |
нет | Mongo; DATE_FROM, DATE_TO, STATUS — см. раздел ниже |
workplaceId |
int |
нет | |
userId |
int |
нет | |
officeId |
int |
нет | Все места офиса |
dateRangeFrom |
string |
нет | Пересечение: конец брони ≥ from; форматы — Обзор |
dateRangeTo |
string |
нет | Пересечение: начало брони ≤ to |
status |
string |
нет | confirmed / pending / cancelled |
Mongo-фильтр DATE_FROM / DATE_TO / STATUS
Поля в filter (не путать с полями в ответе):
Ключ в filter |
Поле в HL | Поле в ответе API | Смысл |
|---|---|---|---|
DATE_FROM |
UF_BEGIN_DATETIME |
dateFrom |
Начало брони |
DATE_TO |
UF_END_DATETIME |
dateTo |
Конец брони |
WORKPLACE_ID |
UF_WORKPLACE |
workplaceId |
ID рабочего места |
USER_ID |
UF_EMPLOYEE |
userId |
ID сотрудника |
STATUS |
— | — | Семантический статус (см. ниже), не UF_ACTIVE напрямую |
Операторы: $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin — см. Обзор.
Mongo-фильтр STATUS
Значения те же, что у корневого параметра status: confirmed, pending, cancelled (не 0/1 и не UF_ACTIVE).
| Значение | Условие |
|---|---|
confirmed |
UF_ACTIVE=1 и UF_DATE_CONFIRMATION заполнено |
pending |
UF_ACTIVE=1 и UF_DATE_CONFIRMATION пусто |
cancelled |
UF_ACTIVE=0 |
Примеры:
filter[STATUS][$eq]=cancelledfilter[STATUS][$in][0]=confirmed&filter[STATUS][$in][1]=pending
При filter[STATUS] дефолт UF_ACTIVE=1 не накладывается (иначе отменённые брони не попадут в выборку). Корневой status в query игнорируется, если передан filter[STATUS].
Неверное значение (filter[STATUS][$eq]=1 и т.п.) → VALIDATION_ERROR, details.field = filter.STATUS, details.allowed = ["confirmed","pending","cancelled"], сообщение: filter.STATUS: допустимые значения confirmed, pending, cancelled.
Пустой $in или условие без оператора у STATUS → INVALID_FILTER.
Формат даты и времени в filter
Значения в Mongo-фильтре передаются как строки в БД (без автоматического разбора, в отличие от dateRangeFrom / dateRangeTo).
Рекомендуемый формат: dd.mm.yyyy HH:ii:ss — например 01.06.2026 00:00:00.
Допустимо и yyyy-mm-dd HH:ii:ss (2026-06-01 00:00:00), если так же хранятся значения в HL на портале.
В ответе API даты всегда в формате yyyy-mm-dd HH:ii:ss (dateFrom, dateTo). Для фильтра не копируйте значение из ответа «как есть», если на портале в HL используется dd.mm.yyyy — сравнение в выборке может работать некорректно.
GET: пробел между датой и временем в URL
В query-параметре между датой и временем нужен пробел. В URL его кодируют как %20 (это не часть времени):
- в ссылке:
01.06.2026%2000:00:00 - читается как:
01.06.2026+ пробел +00:00:00(полночь) - в Postman в колонке Value можно вводить
01.06.2026 00:00:00— клиент сам закодирует пробел
Примеры смысла условий
filter[DATE_TO][$gte]=01.06.2026 00:00:00— брони, у которых конец (dateTo) не раньше 1 июня 2026.filter[DATE_TO][$lte]=01.06.2026 23:59:59— брони, у которых конец не позже указанного момента.- Пересечение с периодом (бронь «заходит» в июнь):
DATE_FROM$lteконец периода иDATE_TO$gteначало периода.
Для пересечения с диапазоном без Mongo удобнее ярлыки dateRangeFrom / dateRangeTo (другая семантика: «бронь пересекается с интервалом», см. таблицу параметров).
Пример URL (одна строка)
https://{портал}/rest/{user_id}/{webhook_code}/workplaces.reservation.list.json?limit=50&filter[DATE_FROM][$lte]=30.06.2026%2023:59:59&filter[DATE_TO][$gte]=01.06.2026%2000:00:00
Поле TYPE_OF_WORKPLACE в reservation.list не поддерживается (это свойство рабочего места; фильтр по типу — в workplaces.workplace.list) → ответ INVALID_FILTER с details.allowed.
Неизвестный оператор ($like и т.д.) у DATE_* / WORKPLACE_ID / USER_ID → INVALID_FILTER_OPERATOR. Неверный корневой status в query → VALIDATION_ERROR, details.field = status.
Возвращаемые данные
Массив броней в result.result.
Обработка ошибок
Ответ в едином конверте модуля: result, total, next, error (внутри обёртки Bitrix REST — поле result). Справочник всех кодов: error-codes.md.
| Код | Описание |
|---|---|
ACCESS_DENIED |
Бронирование отключено |
VALIDATION_ERROR |
Параметр status или filter.STATUS не confirmed/pending/cancelled; details.field, details.allowed |
INVALID_FILTER |
Неизвестное поле filter (не DATE_FROM, DATE_TO, …); details.allowed |
INVALID_FILTER_OPERATOR |
Неизвестный оператор у поля filter ($like и т.д.) |
UNAUTHORIZED |
Пользователь не авторизован |
INVALID_LIMIT |
limit < 1 или > 500 |
INVALID_OFFSET |
offset < 0 |
FETCH_ALL_LIMIT_EXCEEDED |
Слишком много записей для fetchAll |
INTERNAL_ERROR |
Внутренняя ошибка |
Примеры кода
Пример запроса (GET)
curl -G "https://{портал}/rest/{user_id}/{webhook_code}/workplaces.reservation.list.json?officeId=108&status=confirmed&limit=50" \
-H "Accept: application/json"
Пример ответа
{
"result": {
"result": [
{
"id": 10,
"userId": 1,
"workplaceId": 1234,
"dateFrom": "2026-06-09 10:00:00",
"dateTo": "2026-06-09 18:00:00",
"active": true,
"typeOfReservationId": 60,
"reservationType": "workDay",
"dateConfirmed": null,
"dateCanceled": null,
"cancelTypeId": null,
"createdBy": 1,
"workplaceName": "Место 1"
}
],
"next": null,
"error": null
},
"total": 1
}