Stat API: Difference between revisions

From Wiki Kaminari Click
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
|список метрик и группировок
|Возвращает все возможные группировки и метрики, сгруппированные по категориям.
|-
|PUT
|/api/stat/get
|создание или сохранение отчета
|-
|POST
|/api/stat/get
|список отчётов
|-
|POST
|/api/stat/get/id/{id}
|информация об отчёте
|-
|DELETE
|/api/stat/get/id/{id}
|удаление отчёта
|-
|-
|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>
|-
|-
|POST
|data.periods
|/api/stat/share
|[ 'today', 'yesterday', '7days', '14days', 'month', 'prevMonth' ]
|cохранение отчёта для шаринга
|У каждого параметра должен быть ключ в словаре <code>datePicker</code>
|-
|-
|GET
|data.ttl
|/api/stat/share/id/{id}
|{ 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://dev.kaminari.click/api/stat/get'</nowiki> \  -H 'accept: */*' 'Authorization: Bearer API_TOKEN'</code>
<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://dev.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://dev.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>
<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 https = require('https');
   
   
  const options = {
  const options = {
  <nowiki> </nowiki>  host: 'dev.kaminari.click',
  <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>  });</code>
  <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 получение данных для таблицы
OPTIONS /api/stat/get
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, ... }
Описание <item>
Key Type Description
id String <groupTitle или metricTitle>

+ подчёркивание

+ <название метрики или группировки> (groupTitle_id)

Должен иметь ключ в словаре reportConstructor

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)

Категория:Private