List of open data releases
GET /v1/open/index.json
https://verify.tanba-ooh.kz/v1/open/index.json
The published releases, newest first, with the links to their files and their hashes. No credentials. While publication is switched off it answers 404 with the code not_published.
Authentication
None. This call is public.
Responses
200 The releases.
application/json
OpenDataIndex
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
licence | object | yes | The licence note of the files. The terms of use are the city's decision; until it is made the note says so. | |
licence.status | string | yes | draft until the city decides. draft | |
licence.text | object | yes | The note in English, Russian and Kazakh. | |
licence.text.en | string | yes | English text. | "Draft - pending the city's decision." |
licence.text.ru | string | yes | Russian text. | "Проект - ожидает решения города." |
licence.text.kk | string | yes | Kazakh text. | "Жоба - қаланың шешімін күтуде." |
dictionary_url | string | yes | Path of the data dictionary. | "/v1/open/dictionary.json" |
releases | array of OpenDataRelease | yes | Published releases, newest first. | |
releases[].month | string | yes | The month the figures cover, YYYY-MM. | "2026-08" |
releases[].published_at | string (date) | yes | Almaty date of publication. | "2026-10-01" |
releases[].csv_url | string | yes | Path of the CSV file on the host that answered. | "/v1/open/2026-08.csv" |
releases[].json_url | string | yes | Path of the JSON file on the host that answered. | "/v1/open/2026-08.json" |
releases[].csv_sha256 | string | yes | SHA-256 of the CSV file in hex. | "3f786850e387550fdab836ed7e6dc881de23001b3f786850e387550fdab836ed" |
releases[].json_sha256 | string | yes | SHA-256 of the JSON file in hex. | "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa" |
releases[].digest | string | yes | SHA-256 of the CSV file followed by the JSON file; the value the public ledger carries as the leaf open:YYYY-MM. | "2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3" |
releases[].cells | integer | yes | Number of cells in the two tables. | 41 |
releases[].suppressed_cells | integer | yes | How many of them are left blank by the disclosure rules. | 6 |
Example
{
"licence": {
"status": "draft",
"text": {
"en": "Draft - pending the city's decision.",
"ru": "Проект - ожидает решения города.",
"kk": "Жоба - қаланың шешімін күтуде."
}
},
"dictionary_url": "/v1/open/dictionary.json",
"releases": [
{
"month": "2026-08",
"published_at": "2026-10-01",
"csv_url": "/v1/open/2026-08.csv",
"json_url": "/v1/open/2026-08.json",
"csv_sha256": "3f786850e387550fdab836ed7e6dc881de23001b3f786850e387550fdab836ed",
"json_sha256": "9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa",
"digest": "2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3",
"cells": 41,
"suppressed_cells": 6
}
]
}
Errors
Errors are problem documents (application/problem+json) with a stable code.
| Status | Meaning |
|---|---|
| 404 | Open data is switched off (not_published), or the month or file is not published or does not exist (not_found). |
| 429 | Rate limit; see Retry-After. |
Code samples
curl
curl 'https://verify.tanba-ooh.kz/v1/open/index.json'
Python
import requests
response = requests.get(
"https://verify.tanba-ooh.kz/v1/open/index.json",
)
print(response.status_code, response.text)
Go
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, err := http.NewRequest("GET", "https://verify.tanba-ooh.kz/v1/open/index.json", nil)
if err != nil {
panic(err)
}
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))
}