Получение готового отчета

Для получения отчета выполните запрос:

https://adfox.yandex.ru/api/report/result?taskId=<taskId>

Параметры запроса

Параметр

Описание

taskId

ID задачи на формирование запроса.

Формат ответа

Запрос возвращает готовый отчет. Отчет формируется в формате JSON:

{
  "result": {
      "taskId": ()
      "state": ()
      "fields": [
          <fieldId>,
          ...
      ],
      "fieldsInfo": {
          <filedId>: <fieldInfo>
      },
      "table": [
          [
              <dataRowField>,
              ...
          ],
          ...
      ],
      "totals": {
          <fieldId>: <totalValue>,
          ...
      },
      "eventHorizon": <eventHorizon> 
  },
  "error": <errorCode>
}

Параметр

Описание

state

Готовность отчета в момент запроса:

  • PENDING — ожидает начала формирования;
  • STARTED — отчет формируется;
  • SUCCESS — отчет готов.

fieldId

ID поля данных. Порядок ID полей в массиве fields соответствует порядку в массиве с данными table.

fieldInfo

Описание содержимого поля данных.

dataRowField

Данные отчета.

totalValue

Суммарное значение показателя за весь период. Заполнено не для всех полей.

eventHorizon

День отчетного периода, до которого данные отчета гарантированно полные, в формате YYYY-MM-DD hh:ii:ss.

Порядок значений в массивах table

В ответе приходит поле fields, в котором указан порядок значений в массивах поля table.

Например, колонка с названием campaign_id приходит в fields третьей. В таком случае в каждом массиве в table она так же будет третьей.

Псевдокод:

// Ответ API
var response = {
    ...
    fields: ["campaign_name", "campaign_id", "impressions_total"]
    table: [
        ['campaign 1', 101, 1000],
        ['campaign 2', 102, 1000],
        ['campaign 3', 103, 1000]
    ]
    ...
}

// Для получения значения колонки "impressions_total" нужно узнать ее номер
var impressionsTotalColumnNumber = array_search('impressions_total', response.fields)

// Узнав номер колонки, можем получить ее значение
for (var row of response.table) {
    var value = row[impressionsTotalColumnNumber]
}