Stat API: Difference between revisions
No edit summary |
No edit summary Tag: Reverted |
||
| Line 152: | Line 152: | ||
response = requests.options('<nowiki>https://kaminari.click/api/stat/get'</nowiki>, headers=headers) | 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) | response = requests.options('<nowiki>http://Authorization</nowiki>: Bearer API_TOKEN', headers=headers) | ||
[[Категория:Private]] | [[Категория: Private]] | ||
Revision as of 08:50, 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)