Stat API: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
'''[https://kaminari.click/api/doc Подробное описание request-response по каждому эндпойнту].''' | '''[https://kaminari.click/api/doc Подробное описание request-response по каждому эндпойнту].''' | ||
{| class="wikitable" | {| class="wikitable" | ||
|+'''Список эндпойнтов:''' | |+'''Список эндпойнтов:''' | ||
Line 10: | Line 11: | ||
|OPTIONS | |OPTIONS | ||
|/api/stat/get | |/api/stat/get | ||
| | |Возвращает все возможные группировки и метрики, сгруппированные по категориям. | ||
|- | |- | ||
|POST | |POST | ||
Line 35: | Line 20: | ||
|/api/stat/data | |/api/stat/data | ||
|получение данных для таблицы | |получение данных для таблицы | ||
|} | |||
{| class="wikitable mw-collapsible" | |||
|+'''OPTIONS /api/stat/get''' | |||
!Key | |||
!Type | |||
!Description | |||
|- | |||
|success | |||
|Boolean | |||
| | |||
|- | |||
|code | |||
| | |||
| | |||
|- | |||
|msg | |||
| | |||
| | |||
|- | |||
| colspan="3" |data | |||
|- | |||
|data.groups | |||
|{ groupTitle: ['''<item>''', …] } | |||
|Каждый groupTitle должен быть ключом в словаре <code>reportConstructor</code> | |||
|- | |||
|data.metrics | |||
|{ metricTitle: ['''<item>''', …] } | |||
|Каждый metricTitle должен быть ключом в словаре <code>reportConstructor</code> | |||
|- | |- | ||
| | |data.periods | ||
| | |[ 'today', 'yesterday', '7days', '14days', 'month', 'prevMonth' ] | ||
| | |У каждого параметра должен быть ключ в словаре <code>datePicker</code> | ||
|- | |- | ||
| | |data.ttl | ||
|/ | |{ 1: <code>null</code><nowiki> | </nowiki><code>number</code>, ... } | ||
| | | | ||
|} | |} | ||
{| class="wikitable mw-collapsible" | |||
|+Описание '''<item>''' | |||
!Key | |||
!Type | |||
!Description | |||
|- | |||
|id | |||
|String | |||
|<groupTitle или metricTitle> | |||
+ подчёркивание | |||
+ <название метрики или группировки> (groupTitle_id) | |||
Должен иметь ключ в словаре <code>reportConstructor</code> | |||
|- | |||
|icon | |||
|<code>date</code><nowiki> | </nowiki><code>text</code><nowiki> | </nowiki><code>number</code> | |||
|Иконка типа | |||
|- | |||
|sources | |||
|[Number] | |||
| | |||
|- | |||
|filterType | |||
|<code>range</code><nowiki> | </nowiki><code>list</code><nowiki> | </nowiki><code>value</code><nowiki> | </nowiki><code>value_like</code><nowiki> | </nowiki><code>value_combined</code> | |||
|см. Описание filterType | |||
|- | |||
|filterSync | |||
|Boolean * | |||
|<code>list</code> с поиском на сервере | |||
|} | |||
=== '''Примеры запросов.''' === | |||
'''CURL''' | '''CURL''' | ||
<code>curl -X 'OPTIONS' \ '<nowiki>https:// | <code>curl -X 'OPTIONS' \ '<nowiki>https://kaminari.click/api/stat/get'</nowiki> \ -H 'accept: */*' 'Authorization: Bearer API_TOKEN'</code> | ||
<code>curl -X POST '<nowiki>https:// | <code>curl -X POST '<nowiki>https://kaminari.click/api/stat/filter'</nowiki> -d '{"id":"device_type","searchQuery":"","dateFrom":"2023-01-05","dateTo":"2023-01-05"}' -H 'content-type: application/json' -H 'Authorization: Bearer API_TOKEN'</code> | ||
<code>curl -X POST '<nowiki>https://kaminari.click/api/stat/data'</nowiki> -d '{"id":null,"name":null,"groups":["time_day"],"metrics":["summary_totalVisits"],"filters":{"filters":[],"period":null,"timezone":0,"dateTo":"2022-08-15","dateFrom":"2022-08-15"},"compare":null}' -H 'content-type: application/json' -H 'Authorization: Bearer API_TOKEN'</code> | |||
'''NodeJS''' | '''NodeJS''' | ||
const https = require('https'); | |||
const options = { | const options = { | ||
<nowiki> </nowiki> host: ' | <nowiki> </nowiki> host: 'kaminari.click', | ||
<nowiki> </nowiki> port: 443, | <nowiki> </nowiki> port: 443, | ||
<nowiki> </nowiki> path: '/api/stat/get', | <nowiki> </nowiki> path: '/api/stat/get', | ||
Line 86: | Line 127: | ||
<nowiki> </nowiki> .on("error", (err) => { | <nowiki> </nowiki> .on("error", (err) => { | ||
<nowiki> </nowiki> console.log("Error: " + err.message); | <nowiki> </nowiki> console.log("Error: " + err.message); | ||
<nowiki> </nowiki> });</ | <nowiki> </nowiki> }); | ||
[[Категория: Private]] | |||
==== PHP ==== | |||
<?php | |||
$ch = curl_init(); | |||
curl_setopt($ch, CURLOPT_URL, '<nowiki>https://kaminari.click/api/stat/get'</nowiki>); | |||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |||
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'OPTIONS'); | |||
curl_setopt($ch, CURLOPT_HTTPHEADER, [ | |||
'accept: */*', | |||
]); | |||
$response = curl_exec($ch); | |||
curl_close($ch); | |||
==== Python ==== | |||
import requests | |||
headers = { | |||
'accept': '*/*', | |||
} | |||
response = requests.options('<nowiki>https://kaminari.click/api/stat/get'</nowiki>, headers=headers) | |||
response = requests.options('<nowiki>http://Authorization</nowiki>: Bearer API_TOKEN', headers=headers) | |||
[[Категория:Private]] |
Revision as of 07:22, 12 April 2023
Подробное описание request-response по каждому эндпойнту.
Method | Path | Description |
---|---|---|
OPTIONS | /api/stat/get | Возвращает все возможные группировки и метрики, сгруппированные по категориям. |
POST | /api/stat/filter | получение данных для фильтра |
POST | /api/stat/data | получение данных для таблицы |
Key | Type | Description |
---|---|---|
success | Boolean | |
code | ||
msg | ||
data | ||
data.groups | { groupTitle: [<item>, …] } | Каждый groupTitle должен быть ключом в словаре reportConstructor
|
data.metrics | { metricTitle: [<item>, …] } | Каждый metricTitle должен быть ключом в словаре reportConstructor
|
data.periods | [ 'today', 'yesterday', '7days', '14days', 'month', 'prevMonth' ] | У каждого параметра должен быть ключ в словаре datePicker
|
data.ttl | { 1: null | number , ... }
|
Key | Type | Description |
---|---|---|
id | String | <groupTitle или metricTitle>
+ подчёркивание + <название метрики или группировки> (groupTitle_id) Должен иметь ключ в словаре |
icon | date | text | number
|
Иконка типа |
sources | [Number] | |
filterType | range | list | value | value_like | value_combined
|
см. Описание filterType |
filterSync | Boolean * | list с поиском на сервере
|
Примеры запросов.
CURL
curl -X 'OPTIONS' \ 'https://kaminari.click/api/stat/get' \ -H 'accept: */*' 'Authorization: Bearer API_TOKEN'
curl -X POST 'https://kaminari.click/api/stat/filter' -d '{"id":"device_type","searchQuery":"","dateFrom":"2023-01-05","dateTo":"2023-01-05"}' -H 'content-type: application/json' -H 'Authorization: Bearer API_TOKEN'
curl -X POST 'https://kaminari.click/api/stat/data' -d '{"id":null,"name":null,"groups":["time_day"],"metrics":["summary_totalVisits"],"filters":{"filters":[],"period":null,"timezone":0,"dateTo":"2022-08-15","dateFrom":"2022-08-15"},"compare":null}' -H 'content-type: application/json' -H 'Authorization: Bearer API_TOKEN'
NodeJS
const https = require('https'); const options = { host: 'kaminari.click', port: 443, path: '/api/stat/get', method: 'POST', headers: { 'Authorization': 'Bearer API_TOKEN' } }; https .get(options, (resp) => { let data = ''; resp.on('data', (chunk) => { data += chunk; }); resp.on('end', () => { try { data = JSON.parse(data); } catch { console.log(data); } }); }) .on("error", (err) => { console.log("Error: " + err.message); });
PHP
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://kaminari.click/api/stat/get'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'OPTIONS'); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'accept: */*', ]); $response = curl_exec($ch); curl_close($ch);
Python
import requests headers = { 'accept': '*/*', } response = requests.options('https://kaminari.click/api/stat/get', headers=headers) response = requests.options('http://Authorization: Bearer API_TOKEN', headers=headers)