Evidence pack of a structure and a period
GET /api/v1/stats/evidence.zip
https://app.tanba-ooh.kz/api/v1/stats/evidence.zip
Технический текст справочника написан на английском.
Scope read:stats. Own organisation; the authority sees all. The batches that added plays to the structure in the days asked for, with their keys and daily seals, without bill lines. At most 31 days. Same pack format, rules and audit as the evidence pack of a bill line.
Аутентификация
Ключ API в заголовке Authorization или сессия консоли.
Право доступа: read:stats
Параметры
| Имя | Где | Тип | Обязательный | Описание | Пример |
|---|---|---|---|---|---|
structure | запрос | string | да | Code of the structure. | S-001 |
from | запрос | string (date) | да | First day, Almaty calendar. | 2026-10-01 |
to | запрос | string (date) | да | Last day, Almaty calendar, at most 30 days after from. | 2026-10-31 |
format | запрос | string | нет | Set to zip to download the pack instead of reading its summary. zip | zip |
Ответы
200 The summary, or the pack as a zip file.
application/json
EvidenceSummary
| Имя | Тип | Обязательный | Описание | Пример |
|---|---|---|---|---|
kind | string | да | What the pack is about. accrual, statement, window, dispute | |
key | string | да | Stable name of the subject; a new version of a pack keeps it. | "accrual:4711" |
stored_version | integer | null | да | Version of the stored pack with exactly this content, or null when the next download will create it. | 1 |
stored_pack_id | string | null (uuid) | да | Identifier of that stored pack, or null. | "7d1f0e5a-2b9c-4c63-8a4d-5e0f6b3c9a12" |
batches | integer | да | Telemetry batches in the pack. | 2 |
plays | integer (int64) | да | Plays those batches added in the hours the pack covers. | 9 |
seals | integer | да | Daily seals in the pack. | 1 |
batches_sealed | integer | да | Batches whose receive day is sealed. | 2 |
lines | array of object | да | The bill lines the pack explains; empty for a structure period. | |
lines[].accrual_id | integer (int64) | да | Identifier of the bill line. | 4711 |
lines[].source_ref | string | да | Structure and hours of the line. | "S-001 2026-10-05T10..2026-10-20T11" |
lines[].structure | string | да | Structure code. | "S-001" |
lines[].plays | integer (int64) | да | Plays billed on the line. | 3739 |
lines[].units | string | да | Billing units with three decimals. | "3739.000" |
lines[].amount_kzt | string | да | Line amount in tenge, without VAT. | "1869.50" |
lines[].trueup | boolean | да | True for a line that bills late plays of an earlier month; it is not recomputed from its own hours. | false |
lines[].partial | string | да | Why the batches behind the line cannot all be recounted; empty when they can. | "" |
partial | array of string | да | What cannot be fully recounted, in words; empty for a complete pack. | [] |
manifest_sha256 | string | да | SHA-256 of the manifest in hex. | "9f2c1b7a4e6d8053a1c2b3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718" |
download | string | да | Address that downloads the pack. | "/api/v1/billing/accruals/4711/evidence?format=zip" |
count_rule | string | да | Version of the counting rule the pack was made with. | "tanba.count/1" |
Пример
{
"kind": "accrual",
"key": "accrual:4711",
"stored_version": 1,
"stored_pack_id": "7d1f0e5a-2b9c-4c63-8a4d-5e0f6b3c9a12",
"batches": 2,
"plays": 9,
"seals": 1,
"batches_sealed": 2,
"lines": [
{
"accrual_id": 4711,
"source_ref": "S-001 2026-10-05T10..2026-10-20T11",
"structure": "S-001",
"plays": 3739,
"units": "3739.000",
"amount_kzt": "1869.50",
"trueup": false,
"partial": ""
}
],
"partial": [],
"manifest_sha256": "9f2c1b7a4e6d8053a1c2b3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718",
"download": "/api/v1/billing/accruals/4711/evidence?format=zip",
"count_rule": "tanba.count/1"
}
application/zip
Ошибки
Ошибки приходят документом problem (application/problem+json) со стабильным полем code.
| Статус | Значение |
|---|---|
| 401 | Нет действительной сессии или ключа API (unauthenticated, session_expired, invalid_api_key). |
| 403 | Роль или право ключа этого не допускает (forbidden, key_scope_denied, key_route_denied). |
| 404 | Ничего нет или вызывающему это не видно. |
| 422 | Ошибки полей (validation_failed). |
| 503 | The signing service is not available. |
| default | Ошибка в виде документа problem. |
Примеры кода
curl
curl 'https://app.tanba-ooh.kz/api/v1/stats/evidence.zip?structure=S-001&from=2026-10-01&to=2026-10-31' \
-H 'Authorization: Bearer YOUR_API_KEY'
Python
import requests
response = requests.get(
"https://app.tanba-ooh.kz/api/v1/stats/evidence.zip?structure=S-001&from=2026-10-01&to=2026-10-31",
headers={
"Authorization": "Bearer YOUR_API_KEY",
},
)
print(response.status_code, response.text)
Go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://app.tanba-ooh.kz/api/v1/stats/evidence.zip?structure=S-001&from=2026-10-01&to=2026-10-31", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(resp.Status, string(data))
}