Формат JSON

Взаимодействие с API Яндекс.Директа в формате JSON.

Преимущество JSON в большей компактности по сравнению с SOAP/XML, а также в скорости анализа запросов на стороне Яндекс.Директа.

Во многих языках программирования существуют модули и библиотеки для работы с JSON. Ниже перечислены рекомендуемые модули и библиотеки для популярных языков.

  • Perl: модуль JSON.
  • PHP: встроенная поддержка JSON началась в версии 5.2.0. В предыдущих версиях можно использовать библиотеку Services_JSON.
  • Python: модуль json.

В документе содержатся примеры работы с JSON: Perl, PHP, Python.

Запросы JSON

Запросы в формате JSON передаются методом HTTP POST на следующий адрес:

Версия 4
https://api.direct.yandex.ru/v4/json/ 
Версия Live 4
https://api.direct.yandex.ru/live/v4/json/

Запрос всегда содержит ключ method с именем вызываемого метода и в большинстве случаев ключ param (см. пример ниже). Некоторые методы не имеют входных параметров, и для них ключ param не требуется.

Пример запроса JSON

Пример демонстрирует вызов метода GetClientInfo. В ключе param передается массив из одной строки, которая является логином пользователя. Ключ locale устанавливает русский язык для ответных сообщений. Ключ token — авторизационный токен, выданный OAuth-сервером Яндекса с согласия пользователя (подробнее см. Авторизационные токены).

POST /v4/json/ HTTP/1.1
Host: api.direct.yandex.ru
Content-Length: 204
Content-Type: application/json; charset=utf-8

{
    "method": "GetClientInfo",
    "param": ["agrom"],
    "locale": "ru",
    "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
}

Язык ответных сообщений

Запрос может содержать ключ locale, указывающий язык ответных сообщений. На выбранном языке возвращаются статусы кампаний, статусы баннеров и сообщения об ошибках. Возможны следующие значения locale:

  • ru — русский;
  • ua — украинский;
  • en — английский.

Если ключ locale отсутствует, подразумевается английский язык.

Доступ к финансовым методам

Для вызова финансовых методов CreateInvoice, TransferMoney, GetCreditLimits, PayCampaigns необходимо дополнительно указывать номер операции и финансовый токен в ключах operation_num и finance_token. Об их формировании рассказывается в разделе Доступ к финансовым методам.

Пример вызова финансового метода

Вызов финансового метода GetCreditLimits.

{
    "method": "GetCreditLimits",
    "finance_token": "07c2fbae9722634918bb00a70d2c467cf1bd07255012008ff249ba41b7a5cd6c",
    "operation_num": 123,
    "token": "0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"
}

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

При возникновении ошибок обработка запроса прекращается и возвращается сообщение об ошибке в формате JSON. Пример сообщения показан ниже.

{
    "error_detail":"Метод HTTP запроса должен быть POST",
    "error_str":"Неверный метод запроса",
    "error_code":512
}

Параметр error_code содержит код ошибки, error_str — краткое описание ошибки, error_detail — дополнительные пояснения, если имеются. Краткое описание и дополнительное пояснение могут выводиться на разных языках, что определяется параметром locale, указанным при вызове метода.