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

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

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

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

Параметр

Описание

taskId

Идентификатор задачи на формирование запроса.

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

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

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

Параметр

Описание

state

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

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

fieldId

Идентификатор поля данных. Порядок идентификаторов полей в массиве 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]
}