Коды ошибок REST API модуля ithive.ipr

Методы ipr.* возвращают ошибки в конверте модуля (Vibe API) внутри стандартной обёртки Bitrix REST.

Полный перечень кодов совпадает с IPR\Rest\RestApi. На страницах методов указаны только актуальные для конкретного endpoint'а коды — этот справочник содержит все коды модуля.

Формат ответа при ошибке

{
          "result": {
            "result": null,
            "total": null,
            "next": null,
            "error": {
              "code": "VALIDATION_ERROR",
              "message": "Required parameter \"userId\" must be a positive integer",
              "details": {
                "field": "userId"
              }
            }
          },
          "time": {}
        }
        

details опционален (часто field, id, userId, allowed и т. п.).

HTTP-статус

HTTP-статус ответа выставляется по коду ошибки (RestApi::getHttpStatusForCode). Важная особенность модуля: коды, не перечисленные явно в таблице ниже как 401/403/500, отдаются с HTTP 400 (в том числе NOT_FOUND и METHOD_NOT_FOUND) — в отличие от привычного REST-соглашения «404 для NOT_FOUND». Ориентируйтесь на поле error.code в теле ответа, а не только на HTTP-статус.

Общие коды

Код HTTP Когда возникает
UNAUTHORIZED 401 Пользователь не авторизован (нет пользователя в контексте REST-вызова)
PERMISSION_DENIED 403 Недостаточно прав на операцию или сущность. В коде также встречается алиас ERROR_ACCESS_DENIED — это то же самое значение PERMISSION_DENIED, отдельного кода ACCESS_DENIED в ответах нет
VALIDATION_ERROR 400 Некорректные, неполные или несовместимые параметры запроса
NOT_FOUND 400 Сущность не найдена или недоступна вызывающему
INVALID_LIMIT 400 limit не является положительным целым числом
LIMIT_EXCEEDED 400 limit больше 500
INVALID_OFFSET 400 offset отрицательный
INVALID_FILTER 400 Некорректная структура filter (например, пустой массив в $in/$nin)
INVALID_FILTER_OPERATOR 400 Неизвестный оператор фильтра (разрешены $eq, $ne, $gt, $gte, $lt, $lte, $in, $nin)
FETCH_ALL_LIMIT_EXCEEDED 400 При fetchAll=true количество подходящих записей больше 5000
METHOD_NOT_FOUND 400 Метод REST не зарегистрирован (зарезервированный код; фактически на неизвестный метод отвечает REST-движок Bitrix)
NOT_IMPLEMENTED 400 Метод зарегистрирован, но бизнес-логика ещё не реализована
IPR_ALREADY_EXISTS 400 У сотрудника уже достигнут лимит активных ИПР/ПИС (опция модуля «Количество возможных программ», по умолчанию 2)
FILE_TOO_LARGE 400 Загружаемый файл превышает лимит размера (зарезервировано)
INTERNAL_ERROR 500 Непредвиденная ошибка на сервере

Специфичные для методов ситуации

  • ipr.ipr.add / ipr.programtemplate.launch / ipr.programtemplate.masslaunch — при достижении лимита активных программ у сотрудника: IPR_ALREADY_EXISTS.
  • ipr.ipr.update (смена status), ipr.ipr.complete / approve / reject / reopen — недопустимый переход статуса из текущего состояния карточки: VALIDATION_ERROR (поле status в details).
  • ipr.ipr.delete, ipr.action.delete (без force) — попытка удалить карточку/обязательное мероприятие без прав или в неудаляемом состоянии: PERMISSION_DENIED.
  • ipr.test.attempt.start — если у теста нет привязанных вопросов: VALIDATION_ERROR.
  • ipr.test.attempt.answer — вопрос не относится к попытке или попытка уже завершена (STATUS = F): VALIDATION_ERROR / NOT_FOUND.
  • Методы, зависящие от модуля iblock или learning (все, кроме currentUser/schema/history.*): если модуль не подключён на портале — INTERNAL_ERROR.

См. также

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