Поделиться через


Коды ответов API рефералов

Область применения: Центр партнеров | Рекомендации Центра партнеров

Соответствующие роли: администратор рефералов | Пользователь рефералов

Рефералы REST API Центра партнеров возвращают объект JSON, содержащий код состояния. Этот код, указывающий, был ли ваш запрос успешным или почему он завершился ошибкой.

Ответы на успех

Код состояния 2xx указывает, что запрос клиента был успешно получен, понят и принят. Следующие коды состояния 2xx указывают на успешный ответ:

  • 200: успешно подтверждено
  • 201: создан ресурс
  • 202: принято
  • 204: Нет содержимого для возврата

Сообщения об ошибках

Любой ответ с кодом состояния 4xx или 5xx содержит сообщение об ошибке с подробными сведениями об условиях ошибки для этого кода.

В следующей таблице перечислены и описаны коды состояния HTTP, которые можно вернуть для сценариев ошибок.

Код состояния Сообщение о состоянии Описание
400 ошибка запроса Не удается обработать запрос, так как он имеет неверный формат или является некорректным.
401 Не авторизовано Необходимые данные для проверки подлинности отсутствуют или не являются допустимыми для ресурса.
403 Запрещено Отказано в доступе к запрашиваемому ресурсу. Возможно, у пользователя недостаточно разрешений.
404 Не найдено Запрашиваемый ресурс не существует.
405 Метод не разрешен Метод HTTP в запросе не разрешен в ресурсе.
406 Недопустимо Эта служба не поддерживает формат, запрашиваемый в заголовке Accept.
409 Конфликт Текущее состояние конфликтует с ожиданиями запроса. Например, указанная родительская папка не существует.
410 Потеряно Запрашиваемый ресурс больше не доступен на сервере.
411 Требуется длина В запросе необходимо указать заголовок Content-Length.
412 Необходимое условие не выполнено Условие, предоставленное в запросе (например, заголовок if-match), не соответствует текущему состоянию ресурса.
413 Размер сущности запроса слишком большой Размер запроса превышает ограничение.
415 Неподдерживаемый тип носителя Тип контента запроса — это формат, который служба не поддерживает.
416 Запрошенный диапазон невыполним Заданный диапазон байтов недопустим или недоступен.
422 Необрабатываемый объект Не удается обработать запрос, так как это семантическая ошибка.
423 Заблокировано Запрашиваемый ресурс заблокирован.
429 Слишком много запросов Клиентское приложение ограничено и не следует повторять запрос некоторое время.
500 Внутренняя ошибка сервера При обработке запроса возникла внутренняя ошибка сервера.
501 Не реализовано Запрашиваемая функция не реализована.
503 Служба недоступна Служба временно недоступна для обслуживания или перегружена. Вы можете повторить запрос по прошествии времени, которое можно указать в заголовке Retry-After.
504 Истекло время ожидания шлюза Сервер, выступая в качестве прокси-сервера, не получил своевременного ответа от вышестоящего сервера, к нему необходимо получить доступ при попытке завершить запрос. Может возникать вместе с 503.
507 Недостаточно места в хранилище Достигнута максимальная квота хранилища.
509 Превышен предел пропускной способности Клиентское приложение ограничено из-за превышения максимального предела пропускной способности. Приложение может повторить запрос еще раз через некоторое время.

Тип ресурса ошибки

Ответ об ошибке — это отдельный объект JSON, содержащий одно свойство с именем error. Этот объект содержит все сведения об ошибке. Вы можете использовать возвращаемые в нем данные вместо кода состояния HTTP или вместе с ним.

В следующей таблице и примерах кода описывается схема ответа на ошибку.

Имя. Тип Описание
код строка Всегда возвращается. Указывает тип возникшей ошибки. Не принимает значение null.
сообщение строка Всегда возвращается. Подробно описывает ошибку и предоставляет дополнительные сведения об отладке. Ненулевое непустое значение. Максимальная длина — 1024 символов.
внутренняя ошибка объект Необязательно. Другой объект ошибки, предоставляющий более конкретные сведения об ошибке.
код внутренней ошибки числовая строка Всегда возвращается, если innerError не равно NULL. Предоставляет более конкретные сведения об коде ошибки в значении верхнего значения кода ошибки.
сообщениеВнутреннейОшибки строка Всегда возвращается, если innerError не равно null. Предоставляет более конкретное сообщение об ошибке в верхней строке сообщения об ошибке.
innerError.details объект массива Необязательно. Содержит дополнительные сведения об ошибке. Прежде всего полезно при ошибках проверки входных данных.
целевой объект строка Необязательно. Целевой объект, в котором возникла ошибка.

Пример ответа об ошибке

{
  "error": {
    "code": "unauthenticated",
    "message": "The caller is not authenticated.",
    "innerError": {
      "code": "99902",
      "message": "Request not authenticated",
      "details": null
    }
  }
}

Другой пример с заполненным объектом innerError.details :

{
  "error": {
    "code": "invalidRequest",
    "message": "The request is malformed or incorrect.",
    "innerError": {
      "code": "99901",
      "message": "InvalidInput",
      "details": [
        {
          "InvalidReferralForCoSellConversion": [
            "If PartnerLed referral has no solution it cannot be converted to co-sell referral"
          ]
        }
      ]
    }
  }
}

Свойство Code

Свойство code содержит одно из перечисленных ниже возможных значений. Приложения должны быть готовы к обработке любой из этих ошибок.

Код Код состояния HTTP Описание
invalidRequest 400 Запрос представлен в неправильном формате или является некорректным.
unauthenticated 401 Вызывающий не прошёл проверку подлинности.
accessDenied 403 У вызывающего нет разрешения на выполнение действия.
itemNotFound 404 Не удалось найти ресурс.
resourceModified 409 Обновляемый ресурс изменился с момента последнего чтения вызывающим объектом, обычно это несоответствие eTag.
предварительное условие не выполнено 412 Условие, предоставленное в запросе (например, заголовок if-match), не соответствует текущему состоянию ресурса.
generalException 500 Произошла неизвестная ошибка.
serviceNotAvailable 503 Служба недоступна. Повторите попытку через некоторое время. Возможно, задан заголовок Retry-After.

Свойство сообщения

Свойство message в корне содержит сообщение об ошибке, предназначенное для разработчика. Сообщения об ошибках не локализованы и не должны отображаться непосредственно пользователю. Код не должен проверять значения message только потому, что они могут изменяться в любое время, и они часто содержат динамические сведения, относящиеся к неудачном запросу. В вашем коде следует учитывать коды ошибок, возвращаемые в свойствах code, а затем для получения более подробной информации комбинировать их с текстом сообщения.

Объект InnerError

Объект innererror может рекурсивно содержать больше innererror объектов с более конкретными кодами ошибок. Клиентское приложение при обработке ошибки должно прокрутить все доступные коды ошибок и использовать наиболее подробный, который они понимают.

В вашем приложении могут возникнуть некоторые ошибки при работе с вложенными объектами innererror. Приложения не обязаны обрабатывать эти ошибки, но могут сделать это, если захотят. Служба может добавлять новые коды ошибок или перестать возвращать старые в любое время, поэтому важно, чтобы все приложения могли обрабатывать [основные коды ошибок].

Коды ошибок

Ниже приведены коды ошибок, возвращаемые API:

Состояние HTTP Код ошибки HTTP Код ошибки Описание
Неправильный запрос 400 99901 недопустимые входные данные
Не авторизовано 401 99902 Несанкционированный доступ
Неверный запрос 400 99903 Отсутствующие входные данные
Не найдено 404 99904 Ресурс не найден
Внутренняя ошибка сервера 500 99905 Ошибка не указана
Слишком много запросов 429 99906 Слишком много запросов
Внутренняя ошибка сервера 500 99907 Временная внутренняя ошибка
Неверный запрос 400 99908 Свойство не подлежит обновлению
Неверный запрос 400 99909 Свойство не допускает значение NULL
Предварительное условие не выполнено 412 99910 Значение Etag не совпадает
Ошибка запроса 400 99911 Недопустимый статус направления для приглашения
Неверный запрос 400 99912 Требуется решение с типом "имя"
Запрещено 403 99913 Организация не находится в списке разрешенных на создание ресурса.
Запрещено 403 Доступ запрещён 99914 Организация не включена в белый список для участия в совместных продажах.
ВнутренняяОшибкаСервера 500 99915 Сбой выполнения внутреннего запроса
Конфликт 409 99917 Ресурс уже изменен с помощью другого запроса
Предварительное условие не выполнено 412 99918 Условие, предоставленное в запросе (например, заголовок if-match), не соответствует текущему состоянию ресурса.
Некорректный запрос 400 99919 Недопустимая квалификация рефералов для обновления
Внутренняя ошибка сервера 500 99999 Общее исключение при обработке запроса