Коды ошибок REST API модуля ithive.workplaces
Методы workplaces.* возвращают ошибки в конверте модуля внутри обёртки Bitrix REST. HTTP-статус при этом часто остаётся 200 — ориентируйтесь на поле error внутри result, а не только на error / error_description верхнего уровня Bitrix.
Формат ответа при ошибке
{
"result": {
"result": null,
"total": 0,
"next": null,
"error": {
"code": "VALIDATION_ERROR",
"message": "Обязательный параметр id не указан или некорректен.",
"details": {
"field": "id"
}
}
},
"total": 0,
"time": { }
}
| Поле | Описание |
|---|---|
error.code |
Машиночитаемый код (строка, UPPER_SNAKE_CASE) |
error.message |
Текст для человека (локализация ru) |
error.details |
Дополнительный контекст: field, officeId и т.д. |
При успехе: error = null, данные в result.result.
Ошибка вебхука на уровне Bitrix (неверный URL, scope) может прийти без конверта модуля.
Общие коды
| Код | Когда возникает |
|---|---|
UNAUTHORIZED |
Нет авторизованного пользователя в контексте REST |
ACCESS_DENIED |
Нет прав на операцию или объект |
VALIDATION_ERROR |
Обязательный параметр не передан, пустой или ≤ 0 |
INTERNAL_ERROR |
Необработанное исключение |
NOT_FOUND |
Объект не найден (общий код) |
INVALID_LIMIT |
limit вне диапазона 1..500 |
INVALID_OFFSET |
offset < 0 |
INVALID_FILTER |
Некорректный filter: невалидный JSON, неизвестное поле, условие без оператора $eq/$gte/… |
INVALID_FILTER_OPERATOR |
Неизвестный оператор в filter ($like и т.д.; допустимы $eq, $gte, $in, …) |
FETCH_ALL_LIMIT_EXCEEDED |
Превышен лимит при fetchAll=true |
Пример: workplaces.city.get без id
GET /rest/1/{webhook}/workplaces.city.get.json
→ VALIDATION_ERROR, details.field = id. Корректно: workplaces.city.get.json?id=101 (ID из workplaces.city.list).
Структура офиса (city / office / room)
| Код | Когда возникает |
|---|---|
VALIDATION_ERROR |
Параметр id не передан или ≤ 0; пустое name; нет полей для update; неверный cityId/officeId |
NOT_FOUND |
Раздел с id не существует или существует, но другого уровня (например, передан id офиса в city.get) |
ACCESS_DENIED |
Нет права R/W на раздел |
INVALID_SVG / FILE_TOO_LARGE |
Ошибка загрузки SVG в add/update |
CITY_HAS_OFFICES |
Удаление города: есть дочерние офисы |
OFFICE_HAS_CHILDREN |
Удаление офиса: есть дочерние комнаты |
OFFICE_HAS_WORKPLACES |
Удаление: есть рабочие места в комнатах |
ROOM_HAS_WORKPLACES |
Удаление комнаты: есть рабочие места |
Рабочие места
| Код | Когда возникает |
|---|---|
WORKPLACE_NOT_FOUND |
Рабочее место не найдено |
USER_NOT_FOUND |
linkedUserId не существует |
FILE_TOO_LARGE |
Файл превышает лимит |
INVALID_SVG |
SVG не прошёл проверку |
Бронирования
| Код | Когда возникает |
|---|---|
RESERVATION_NOT_FOUND |
Бронь не найдена |
RESERVATION_CONFLICT |
Пересечение по времени |
LIMIT_EXCEEDED |
Лимит бронирований для типа места |
INVALID_DATE_RANGE |
Некорректный dateFrom / dateTo |
INVALID_CANCEL_TYPE |
Неизвестный тип отмены |
workplaces.reservation.list (дополнительно к общим кодам списков)
| Код | Когда возникает |
|---|---|
VALIDATION_ERROR |
Параметр status или значение filter[STATUS] не из списка confirmed, pending, cancelled (или пустое) |
INVALID_FILTER |
В filter указано неизвестное поле (например TYPE_OF_WORKPLACE); пустой $in у STATUS; условие STATUS без оператора; в details.allowed — разрешённые ключи |
INVALID_FILTER_OPERATOR |
Неизвестный оператор у известного поля, например filter[DATE_FROM][$like]=… |
Пример: неверный корневой status:
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Параметр status: допустимые значения confirmed, pending, cancelled.",
"details": {
"field": "status",
"allowed": ["confirmed", "pending", "cancelled"]
}
}
}
Пример: неверный filter[STATUS] (например 1 вместо семантического статуса):
{
"error": {
"code": "VALIDATION_ERROR",
"message": "filter.STATUS: допустимые значения confirmed, pending, cancelled.",
"details": {
"field": "filter.STATUS",
"allowed": ["confirmed", "pending", "cancelled"]
}
}
}
Пример: неизвестное поле в filter:
{
"error": {
"code": "INVALID_FILTER",
"message": "Неизвестное поле filter: TYPE_OF_WORKPLACE",
"details": {
"field": "TYPE_OF_WORKPLACE",
"allowed": ["DATE_FROM", "DATE_TO", "STATUS", "WORKPLACE_ID", "USER_ID"]
}
}
}
Подробнее: workplaces.reservation.list.
workplaces.batch
| Код | Когда возникает |
|---|---|
BATCH_LIMIT_EXCEEDED |
Больше 50 вызовов в одном batch |
BATCH_NESTED_NOT_ALLOWED |
Вложенный workplaces.batch |
BATCH_INVALID_CALL |
Некорректный элемент calls[] |
METHOD_NOT_FOUND |
Метод не зарегистрирован |
Ошибки вложенных методов возвращаются в error соответствующего элемента ответа batch.
См. также
Предыдущая
Следующая