TAŇBA-OOH Developers

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

NameTypeRequiredDescriptionExample
licenceobjectyesThe licence note of the files. The terms of use are the city's decision; until it is made the note says so.
licence.statusstringyesdraft until the city decides. draft
licence.textobjectyesThe note in English, Russian and Kazakh.
licence.text.enstringyesEnglish text."Draft - pending the city's decision."
licence.text.rustringyesRussian text."Проект - ожидает решения города."
licence.text.kkstringyesKazakh text."Жоба - қаланың шешімін күтуде."
dictionary_urlstringyesPath of the data dictionary."/v1/open/dictionary.json"
releasesarray of OpenDataReleaseyesPublished releases, newest first.
releases[].monthstringyesThe month the figures cover, YYYY-MM."2026-08"
releases[].published_atstring (date)yesAlmaty date of publication."2026-10-01"
releases[].csv_urlstringyesPath of the CSV file on the host that answered."/v1/open/2026-08.csv"
releases[].json_urlstringyesPath of the JSON file on the host that answered."/v1/open/2026-08.json"
releases[].csv_sha256stringyesSHA-256 of the CSV file in hex."3f786850e387550fdab836ed7e6dc881de23001b3f786850e387550fdab836ed"
releases[].json_sha256stringyesSHA-256 of the JSON file in hex."9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa"
releases[].digeststringyesSHA-256 of the CSV file followed by the JSON file; the value the public ledger carries as the leaf open:YYYY-MM."2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3"
releases[].cellsintegeryesNumber of cells in the two tables.41
releases[].suppressed_cellsintegeryesHow 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.

StatusMeaning
404Open data is switched off (not_published), or the month or file is not published or does not exist (not_found).
429Rate 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))
}