Пользовательские ошибки в API грузов [1.0]

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


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

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

 

{
  "Error": "load_conflict_error",
  "Reason": "Найден дубликат в грузах",
  "ConflictLoadId": "271be1d2-2a91-e611-a37f-005056c00008"
}

 

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

{
  "128fc2e1-c48e-e611-a37f-005056c00008": {
    "Status": 2,
    "Error": "load_renew_delay_not_elapsed",
    "Reason": "Груз был обновлен менее 60 минут назад"
  },
  "2fb7bf16-c68e-e611-a37f-005056c00008": {
    "Status": 0
  }
}

В данном случае груз с id=2fb7bf16-c68e-e611-a37f-005056c00008 был успешно обновлен, а груз с id=128fc2e1-c48e-e611-a37f-005056c00008 не был обновлен, так как обновлен менее 60 минут назад. 

 

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

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

 

{
  "Error": "json_validation_error",
  "Reason": "Ошибка валидации json",
  "ErrorsList": [
    {
      "property": "Cargo.Size.Length",
      "reason": "Допустимое значение для параметра длина - от 0 до 50"
    },
    {
      "property": "Payment.RateSum",
      "reason": "Длина параметра RateSum не должна превышать 6 символов"
    }
  ]
}

 

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

Код ошибкиПояснение
deserialization_errorОшибка десериализации json
json_validation_errorОшибка валидации json из тела запроса.
validation_errorОшибка валидации. Возникает в случае любой ошибки валидации, кроме ошибки валидации тела запроса (json_validation_error)
load_conflict_errorНайден дубликат в грузах
load_archive_delay_not_elapsedГруз был помещен в архив менее 60 минут назад
load_renew_delay_not_elapsedГруз был обновлен менее 60 минут назад
boards_access_denied_errorНекоторые из указанных площадок не существуют или вы не имеете доступа к ним
access_denied_errorОтказано в доступе
account_not_found_errorФирма не найдена
contact_not_found_errorКонтакт не существует
city_not_found_errorГород не найден
comment_not_found_errorКомментарий для груза не найден
dictionary_element_not_found_errorЭлемент словаря не найден
load_not_found_errorГруз не найден
response_not_found_errorОтзыв на груз не найден
avatar_not_found_errorАватар не найден
load_reserved_errorГруз зарезервирован/взят, операции с грузом запрещены
load_cant_reserveНевозможно зарезервировать груз. Груз уже зарезервирован, либо не поддерживает резервирование