Обработка ошибок
Обратите внимание
Документация на русском языке может быть устаревшей. Самые последние изменения доступны в документации на английском языке.
Любая ошибка от Толоки характеризуется HTTP статусом ответа и телом ответа с уточняющей информацией. Ошибки самодокументирующиеся, то есть из них должно быть понятно, в чём причина.
Пример ошибки c HTTP статусом 409:
{
"request_id": "337d68d1-974d-42b1-a2d0-6234f6373eed",
"code": "INAPPROPRIATE_STATUS",
"message": "This or related resource is in inappropriate status, operation is not allowed",
"payload": {
"appropriate_statuses": [
"OPEN",
"CLOSED"
]
}
}
В тексте каждой ошибки есть поля:
- request_id — внутренний идентификатор HTTP-запроса, в котором произошла ошибка. Его необходимо указывать при обращении в поддержку.
- code — строковый код ошибки. Ошибки, характерные для разных операций, имеют одинаковые коды. Для одного и того же HTTP статуса могут использоваться разные коды ошибок. Специфичные ошибки для конкретных операций имеют свои уникальные коды.
- message — более подробное описание ошибки. Содержание поля может быть разным для одного и того же кода ошибки.
- payload — дополнительная информация об ошибке. Например, поле из запроса и причина ошибки в нём. Это поле необязательное и может отсутствовать.
Список распространённых ошибок
Ниже приведены HTTP статусы, описывающие классы ошибок, с примерами распространённых ошибок.
400 — ошибка в данных, которые переданы в запросе.
{
"code": "VALIDATION_ERROR",
"message": "Validation failed",
}
403 — нет прав для выполнения операции.
{
"code": "ACCESS_DENIED",
"message": "Access denied"
}
404 — запрашиваемый объект не существует.
{
"code": "DOES_NOT_EXIST",
"message": "There are no results for such parameters"
}
409 — операция не может быть выполнена исходя из её логики. Например, нельзя открыть пул, находящийся в архиве.
{
"code": "CONFLICT_STATE",
"message": "Conflict state"
}
429 — превышено допустимое количество запросов в единицу времени.
{
"code": "TOO_MANY_REQUESTS",
"message": "Too many requests"
}
обратиться в поддержку с указанием request_id.
500 — непредвиденная ошибка в сервисе. Для ее решения необходимо{
"code": "INTERNAL_ERROR",
"message": "Internal Error"
}
503 — сервис временно недоступен, запрос можно повторить через некоторое время.
{
"code": "REMOTE_SERVICE_UNAVAILABLE",
"message": "Service is temporary unavailable"
}