> For the complete documentation index, see [llms.txt](https://wiki.qolio.ru/qolio-or-baza-znanii/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.qolio.ru/qolio-or-baza-znanii/integracii/podklyuchenie-po-api/vozmozhnye-oshibki-api.md).

# Возможные ошибки API

## Общий принцип

Необходимо быть готовым обрабатывать различные ошибки. В этом документе мы опишем http ошибки, которые могут возвращаться со стороны сервиса DealApp, однако так же следует предусмотреть работу с ошибками, которые возникают вне этого сервиса - ошибки доступа по сети.

## Как проверить работоспособность сервиса

Сервис DealApp имеет 2 домена: один домен для frontend'a (для облачной версии это [app.dealapp.io](http://app.dealapp.io/)), другой - для backend API (пример для облачной версии это [api.prod1.dealapp.io](http://api.prod1.dealapp.io/)).

При обращении на домен Backend сервера, возвращается JSON документ с данными о версии приложения. Этот endpoint используется для проверки работоспособности и доступности приложения.

<figure><img src="/files/7NL3oKkLkc2IzL4UtP3H" alt=""><figcaption></figcaption></figure>

## Стандартные Ошибки (http)

В случаях, если API доступно и работоспособно, сервер будет отвечать на запросы с ошибка используя http коды ответов. Это значит, что все запросы с кодом 400+ могут быть интерпретированы, как ошибка. Каждый тип ошибок с кодами 400-500 возвращает дополнительную информацию в JSON формате с сообщением о причинах, по которым происходит ошибка.

### 400 Invalid Document

Неверно отформатированный запрос. Такая ошибка возвращается, если сервер не может распознать и разобрать документ, который высылается с запросом.

Пример:

```
{
  "status": 400,
  "code": "invalid_json",
  "title": "Error parsing JSON request"
}
```

### 401 Unauthorized

Ошибка авторизации. Такая ошибка происходит в 2ух случаях: либо вы используете неверные данные для логина, либо вы пытаетесь сделать действие, на которое у вас нету прав. Для решения вопроса с авторизацией, обратитесь к соответствующему разделу в документации API.

Пример:

```
{
  "errors": [
    {
      "status": 401,
      "code": "unauthorized",
      "title": "Unauthorized",
      "detail": "Недостаточно прав"
    }
  ]
}
```

#### 408 Request Timeout

Превышение времени ожидания. Такая ошибка может возникнуть при невозможности получить информацию от внутренних сервисов: недоступность базы данных, ошибка подключения к redis.

#### 422 Unprocessable entity

Ошибка валидации данных. Такая ошибка происходит при POST / PUT / DELETE запросах и означает, что выполняемое действие не соответствует внутренней логике приложения. Также такой ответ может приходить в результате GET запроса с неверными фильтрами.Пример:

```
{
  "errors": [
    {
      "status": 401,
      "code": "unauthorized",
      "title": "Unauthorized",
      "detail": "Недостаточно прав"
    }
  ]
}
```

### 500 Internal Server Error

Ошибка в работе сервиса. Такая ошибка может значить нарушение внутренней логики приложения, либо ошибку с инфраструктурой приложения: недоступность или неверная работа контейнерной среды, ошибка подключения к базе данных и прочее.

## Ошибки инфраструктуры

При возникновении таких ошибок, обращайтесь в техническую поддержку DealApp.

### 502 Bad Gateway

Ошибка с доступом (nginx ошибка). Приложение запущено, но не отвечает на запросы. Обычно это происходит при инициализации контейнера, когда приложение еще не запустилось.

### 503 Service Unavailable

Сервис недоступен (nginx ошибка). Процесс с контейнером сервиса выходит с ошибкой. Обычно это значит, что приложение не может запуститься - в этом случае необходимо ознакомиться с логами приложения и исправить возникающую ошибку.
