Для получения данных мониторинга вам нужно сначала авторизовать клиентское приложение. После авторизации все ваши запросы должны содержать заголовок 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
}