TAŇBA-OOH Разработчикам

List structures

GET /api/v1/structures

https://app.tanba-ooh.kz/api/v1/structures

Технический текст справочника написан на английском.

Scope read:structures. Filters district, format, class, status, org_id (authority only), paging by limit (1-500) and offset.

Аутентификация

Ключ API в заголовке Authorization или сессия консоли.

Право доступа: read:structures

Параметры

ИмяГдеТипОбязательныйОписаниеПример
limitзапросintegerнетHow many structures to return, 1 to 500.100
offsetзапросintegerнетHow many structures to skip.0

Ответы

200 Structures ordered by code.

application/json

ИмяТипОбязательныйОписаниеПример
itemsarray of StructureдаStructures ordered by code.
items[].idstring (uuid)даIdentifier of the structure."b7e4a2c9-0d1f-4a68-8e35-91c7f2d40b16"
items[].org_idstring (uuid)даIdentifier of the operating organisation."3a9d5e71-c4b2-4f08-b6d3-e8a1070c5f92"
items[].org_namestringName of the operating organisation."Alma Outdoor LLP"
items[].codestringдаКод конструкции, напечатанный на наклейке."ALM-0012"
items[].unos_idstring | nullIdentifier of the structure in the external register; null if it has none."A-004711"
items[].addressstringдаStreet address."Al-Farabi Ave 77/7"
items[].district_idstringдаCode of the district."bostandyk"
items[].format_idstringдаCode of the format."cityboard"
items[].latnumberдаLatitude in degrees.43.2186
items[].lngnumberдаLongitude in degrees.76.9279
items[].classstringдаClass of the structure. A, B, C
items[].statusstringдаWhether the structure is in use. active, decommissioned
items[].screen_width_pxinteger | nullNative screen width. Set together with the height; the media check compares uploads with it.1920
items[].screen_height_pxinteger | nullNative screen height.1080
items[].slot_secondsinteger | nullLongest video the structure plays in one slot. Longer videos fail the slot check.10
items[].venue_type_idinteger | nullVenue type of the structure in the OpenOOH venue taxonomy 1.2 (for example 302 for an urban panel). Null while the operator has not set one; market figures then use the default venue type of the format.302
items[].loop_secondsinteger | nullLength in seconds of one full loop of the screen, as set by the operator. Null while unknown.60
items[].face_area_m2number | nullArea of the advertising face in square metres. Null while unknown.22.5
items[].screen_countintegerNumber of screens on the structure.2
items[].height_mnumber | nullHeight of the face above the ground in metres. Null while unknown.6.5
items[].azimuth_deginteger | nullCompass direction the face looks to, in degrees from north. Null while unknown.270
items[].operating_fromstring | nullTime the screen starts each day (Asia/Almaty). Null while unknown."06:00"
items[].operating_tostring | nullTime the screen stops; it may be earlier than the start when the hours cross midnight."01:00"
items[].created_atstringдаWhen the structure was registered."2026-03-12T10:15:00+05:00"
items[].updated_atstringWhen the structure was last changed."2026-09-30T16:40:12+05:00"

Пример

{
  "items": [
    {
      "id": "b7e4a2c9-0d1f-4a68-8e35-91c7f2d40b16",
      "org_id": "3a9d5e71-c4b2-4f08-b6d3-e8a1070c5f92",
      "org_name": "Alma Outdoor LLP",
      "code": "ALM-0012",
      "unos_id": "A-004711",
      "address": "Al-Farabi Ave 77/7",
      "district_id": "bostandyk",
      "format_id": "cityboard",
      "lat": 43.2186,
      "lng": 76.9279,
      "class": "A",
      "status": "active",
      "screen_width_px": 1920,
      "screen_height_px": 1080,
      "slot_seconds": 10,
      "venue_type_id": 302,
      "loop_seconds": 60,
      "face_area_m2": 22.5,
      "screen_count": 2,
      "height_m": 6.5,
      "azimuth_deg": 270,
      "operating_from": "06:00",
      "operating_to": "01:00",
      "created_at": "2026-03-12T10:15:00+05:00",
      "updated_at": "2026-09-30T16:40:12+05:00"
    }
  ]
}

Ошибки

Ошибки приходят документом problem (application/problem+json) со стабильным полем code.

СтатусЗначение
401Нет действительной сессии или ключа API (unauthenticated, session_expired, invalid_api_key).
403Роль или право ключа этого не допускает (forbidden, key_scope_denied, key_route_denied).
422Ошибки полей (validation_failed).
defaultОшибка в виде документа problem.

Примеры кода

curl

curl 'https://app.tanba-ooh.kz/api/v1/structures' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Python
import requests

response = requests.get(
    "https://app.tanba-ooh.kz/api/v1/structures",
    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/structures", 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))
}