# Ошибки вызова сервиса

Полный список запросов вы можете найти в [Коллекции Postman](https://doc.ozforensics.com/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika/api/oz-api/postman), в [Примерах использования](https://doc.ozforensics.com/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika/api/oz-api/use-cases) приведен порядок запросов в наиболее распространенных случаях. В данной статье перечислены коды ответов на запросы и ошибки при обработке запросов.

## Коды HTTP-ответов

* Коды ответов в диапазоне 2XX соответствуют корректно отработавшему запросу (например, при получении данных возвращается код 200, при добавлении новой сущности – 201, при корректном удалении – 204 и так далее);
* Коды ответов в диапазоне 4XX соответствуют ошибке при обработке запроса, произошедшей на стороне вызывающего клиента (например, 404 – обращение к несуществующему ресурсу);
* Коды ответов в диапазоне 5XX соответствуют ошибке при обработке запроса на стороне самой системы (например, при временной недоступности базы данных).

## Тело ответа при ошибке

Каждая ошибка, возникшая при обработке запроса на стороне системы, помимо соответствующего HTTP-кода ошибки содержит также описание самой ошибки в теле ответа с указанием следующих JSON-полей:

* `error_code` – целочисленный код ошибки;
* `error_message`– сообщение с описанием возникшей ошибки (используется только для отладочных задач и расследования инцидентов);
* `details` – детали ошибки (приводятся в произвольном формате, специфичном для каждого отдельного типа ошибки). Необязательное поле.

Пример ответа сервера:

```javascript
{
    "error_code": 0,
    "error_message": "Unknown server side error occurred",
    "details": null
}
```

Коды ошибок:

| **Код ошибки** | **Значение**      | **Описание**                                                                                                                                                                                                                                        |
| -------------- | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 0              | UNKNOWN           | Неизвестная серверная ошибка.                                                                                                                                                                                                                       |
| 1              | NOT ALLOWED       | Вызван недопустимый метод, обычно сопровождается 405 статусом HTTP-ответа при вызове HTTP-метода, не поддерживаемого ресурсом (например PATCH, если ресурс поддерживает только GET/POST).                                                           |
| 2              | NOT REALIZED      | Вызван web-сервис, который не реализован на сервере, может встретиться в случае, если сервис по документации присутствует, однако фактически не реализован (временно или на постоянной основе).                                                     |
| 3              | INVALID STRUCTURE | Некорректная структура запроса, обычно встречается, если не удается найти обязательный параметр или тело запроса передано в некорректном формате.                                                                                                   |
| 4              | INVALID VALUE     | Некорректное значение параметра, например может возникать в случаях: передана строка, которая должна иметь формат UUID, но при этом она не конвертируется корректно, передано отрицательное значение смещения/ширины окна при постраничном запросе. |
| 5              | INVALID TYPE      | Некорректный тип данных для параметра.                                                                                                                                                                                                              |
| 6              | AUTH NOT PROVIDED | Не указан токен [авторизации](https://doc.ozforensics.com/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika/api/oz-api/autentifikaciya-i-obrabotka-dannykh/tokens).                                                                             |
| 7              | AUTH INVALID      | Указан несуществующий [авторизационный токен](https://doc.ozforensics.com/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika/api/oz-api/autentifikaciya-i-obrabotka-dannykh/tokens).                                                             |
| 8              | AUTH EXPIRED      | [Авторизационный токен](https://doc.ozforensics.com/oz-knowledge-ru/rukovodstva/rukovodstvo-razrabotchika/api/oz-api/autentifikaciya-i-obrabotka-dannykh/tokens) просрочен.                                                                         |
| 9              | AUTH FORBIDDEN    | Недостаточно прав для запрошенной операции.                                                                                                                                                                                                         |
| 10             | NOT EXIST         | Запрашиваемый ресурс не существует (аналог HTTP status\_code = 404).                                                                                                                                                                                |
| 11             | EXTERNAL SERVICE  | Ошибка взаимодействия с внешней информационной системой.                                                                                                                                                                                            |
| 12             | DATABASE          | Критическая ошибка работы с базой данных на стороне сервера.                                                                                                                                                                                        |
