API: Получение данных

Для получения данных мониторинга вам нужно сначала авторизовать клиентское приложение. После авторизации все ваши запросы должны содержать заголовок Authorization: Bearer {token}.

Далее вы отправляете POST-запросы конечным точкам API, используя формат JSON. Конечная точка для всех запросов <url> = https://nature.mipt.ru/api/flexmonster

Все запросы имеют type свойство в теле запроса. Существует 4 типа запросов, которые можно различить по пути и type значению URL :

  • <url>/handshake (необязательно) - первый запрос (рукопожатие) для установления соединения между клиентской и серверной сторонами.
  • <url>/fields - Запрос всех полей с их типами (например, мета-объект или схема).
  • <url>/members - Запрос для всех уникальных значений поля.
  • <url>/select - Запрос данных.

Параметр typeвсегда будет таким же, как имя конечной точки, например, когда запрос отправлен на <url>/fields, значение типа будет "fields".

Второй обязательный параметр запроса index определяет, из какой таблицы будет происходить выгрузка данных. Возможные варианты:

  • data - сводная таблица по всем опросам;
  • dynamic - таблица с динамическими данными;
  • shipment - таблица отгрузок;
  • fns - данные ФНС.

Подробнее про типы данных и формат вывода читайте в документации API.

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

curl -i 'https://nature.mipt.ru/api/flexmonster/select' \
-H 'Authorization: Bearer MS0xLWMzNWJhNzU3Y2FjNGZmYmE0YjcxMGNhMWI3ODRlZGQzMTNlNDE5MDQ1N2RiMGJjZWMzMWQ3NDg3ZjA2NWE4YzY=' \
-H 'Content-type: application/json' \
--data-binary '{"type":"select","index":"dynamic","query":{"aggs":{"values":[{"func":"count","field":{"uniqueName":"date"}},{"func":"sum","field":{"uniqueName":"production"}}]},"filter":[{"field":{"uniqueName":"date"},"include":[{"member":1585699200000}]}],"fields":[{"uniqueName":"date"},{"uniqueName":"company_name"},{"uniqueName":"production"}]},"page":0}'


Пример ответа:

{
  "fields": [
    {
      "uniqueName": "date"
    },
    {
      "uniqueName": "company_name"
    },
    {
      "uniqueName": "production"
    }
  ],
  "hits": [
    [
      1585699200000,
      "ООО «КИТ»",
      745840
    ],
    [
      1585699200000,
      "ООО УПП Оскольское",
      25000
    ],
    ...
  ],
  "aggs": [
    {
      "values": {
        "date": {
          "count": 16
        },
        "production": {
          "sum": 1519840
        }
      }
    }
  ],
  "page": 0,
  "pageTotal": 1
}