Коды ошибок 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.

См. также

Предыдущая
Следующая