Пользовательские ошибки в API машин [1.0]

В API машин может произойти достаточно много пользовательских ошибок, и для идентификации конкретной ошибки не всегда достаточно http кода ошибки. Поэтому при возникновении ошибки в теле ответа всегда будет присутствовать объект ошибки, содержащий 2 поля: error с кодом ошибки в виде строки и reason с пояснением. В групповых операциях поля error и reason будут указаны для каждой машины, с которой произошла ошибка во время выполнения операции.


Примеры ошибок

Ошибка при одиночной операции (на примере добавления машины)


{
    "error": "truck_duplicate",
    "reason": "Машина имеет дубликат в системе. Операция невозможна.",
    "duplicate_truck_id": "2fb37893-3587-eb11-bb9f-0cc47af30c1b"
}

Ошибка при групповой операции (на примере группового обновления)


{
    "2fb37893-3587-eb11-bb9f-0cc47af30c1b": {
        "error": "truck_renew_delay_not_elapsed_error",
        "reason": "Машина была обновлена менее 60 минут назад. Следующее обновление возможно через 57 минут.",
        "remaining_minutes": 57
    },
    "89d8e0db-3587-eb11-bb9f-0cc47af30c1b": {
        "error": "truck_renew_delay_not_elapsed_error",
        "reason": "Машина была обновлена менее 60 минут назад. Следующее обновление возможно через 59 минут.",
        "remaining_minutes": 59
    }
}


Ошибка валидации (на примере добавления машины)

В случае ошибки валидации json в теле запроса возникает ошибка json_validation_error. В теле ответа будут поля error и reason, и, кроме того, поле error_list, содержащее массив объектов вида {property;reason}, где property – название поля, в котором произошла ошибка, а  reason – причина ошибки. 

{
    "error": "json_validation_error",
    "reason": "Одна или несколько машин не прошли проверку. Отредактируйте машину, чтобы исправить ошибки.",
    "details": [
        {
            "property": "priority.view_rate",
            "reason": "Параметр  \"Ставка за просмотр\" должен должен принимать значения от  0.60 атисов до значения вашего баланса включительно"
        },
        {
            "property": "first_date",
            "reason": "Если значение параметра date_type равно 1, допустимое значение параметра first_date - от текущей даты до 60 дней вперед"
        }
    ]
}


Ошибка доступа (на примере добавления машины)

{
    "error": "contact_access_denied_error",
    "reason": "У данного контакта имеются ограничения на данную операцию"
}

Список возможных ошибок

Код ошибки
Пояснение
deserialization_errorОшибка десериализации json
json_validation_errorОшибка валидации json из тела запроса.
validation_errorОшибка валидации. Возникает в случае любой ошибки валидации, кроме ошибки валидации тела запроса (json_validation_error)
contact_access_denied_errorОтказано в доступе
truck_renew_delay_not_elapsed_errorМашина была обновлена менее 60 минут назад
dictionary_element_not_found_errorЭлемент словаря не найден
truck_not_found_errorМашина не найдена