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

One screen of the market

GET /api/v1/market/inventory/{code}

https://app.tanba-ooh.kz/api/v1/market/inventory/{code}

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

Scope read:inventory. The same item as in the list, for one structure code, whatever its status. Send the ETag back in If-None-Match to get 304.

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

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

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

Параметры

ИмяГдеТипОбязательныйОписаниеПример
codeпутьstringдаStructure code.ALM-0001
If-None-MatchзаголовокstringнетThe ETag of a copy you already hold; the answer is then 304 without a body."6f1c0a7d5b2e49c8a3d1e7f0"

Ответы

200 The screen.

application/json

InventoryItem

ИмяТипОбязательныйОписаниеПример
codestringдаStructure code; use it as dooh.id and imp.tagid."ALM-0001"
unos_idstring | nullдаIdentifier in the national outdoor advertising register, when the operator has recorded it."UNOS-4711"
statusstringдаdecommissioned appears only in answers with since. active, decommissioned
operatorobjectдаThe operator that runs the screen, the publisher in a bid request.
operator.idstring (uuid)даId of the operator organisation."0b6f9d0e-6c1e-4a6a-9d55-0f8a6a6f3c11"
operator.namestringдаLegal name of the operator."Almaty Outdoor LLP"
operator.domainstring | nullдаDomain of the operator, when recorded."almaty-outdoor.example"
venue_typeobject | nullдаVenue type; null when neither the structure nor its format has one.
venue_type.v12integerдаId in the OpenOOH venue taxonomy 1.2.304
venue_type.v11integer | nullдаId of the official mapping to OpenOOH 1.1; send this one with venuetypetax 5.301
venue_type.codestringдаString code of the type in the 1.2 taxonomy."outdoor.spectacular"
latnumberдаLatitude in degrees.43.238
lngnumberдаLongitude in degrees.76.945
districtstringдаDistrict code from the reference list."medeu"
formatstringдаFormat code from the reference list."cityboard"
classstringдаClass of the screen. A, B, C
outdoorbooleanдаTrue for outdoor formats.true
screenobjectдаSize of the screen in pixels.
screen.winteger | nullдаWidth in pixels; null when unknown.1920
screen.hinteger | nullдаHeight in pixels; null when unknown.1080
slot_secondsinteger | nullдаLength of one spot in seconds.10
loop_secondsinteger | nullдаLength of the loop in seconds.120
complianceobjectдаWhat the platform knows about the screen's player.
compliance.connectedbooleanдаTrue when a player of the screen reported in the last 24 hours.true
authorised_sellersarray of objectдаSellers whose declaration is valid today, from the structure's own list and from the operator's list for all of its structures.
authorised_sellers[].seller_idstring (uuid)даId of the seller organisation. The account to match with sellers.json is seller_account_id."5d3f3e0a-2a53-4b3c-8d0a-6f63b4d9a111"
authorised_sellers[].seller_account_idstringдаThe seller's account on its exchange, the value that appears in source.schain."pub-4711"
authorised_sellers[].valid_fromstring (date)даFirst day of the authorisation."2026-10-01"
authorised_sellers[].valid_untilstring | null (date)даLast day of the authorisation; null without an end."2026-12-31"
authorised_sellers[].scopestringдаstructure for a declaration on this screen, operator for one on all screens of the operator. structure, operator
ortbobjectдаFragments to copy into an OpenRTB 2.6 bid request.
ortb.doohobjectдаThe dooh object.
ortb.dooh.idstringдаStructure code."ALM-0001"
ortb.dooh.publisherobjectдаThe operator.
ortb.dooh.publisher.idstringдаId of the operator organisation."0b6f9d0e-6c1e-4a6a-9d55-0f8a6a6f3c11"
ortb.dooh.publisher.namestringдаLegal name of the operator."Almaty Outdoor LLP"
ortb.dooh.publisher.domainstringDomain of the operator; absent when not recorded."almaty-outdoor.example"
ortb.dooh.domainstringDomain of the operator; absent when not recorded."almaty-outdoor.example"
ortb.dooh.venuetypearray of stringOpenOOH 1.1 id of the venue type as a string; absent when the screen has none.["301"]
ortb.dooh.venuetypetaxintegerVenue taxonomy list value: 5 is OpenOOH 1.1. Absent when venuetype is.5
ortb.dooh.keywordsstringдаFormat code and outdoor or indoor, comma separated."cityboard,outdoor"
ortb.deviceobjectдаThe device object.
ortb.device.geoobjectдаThe location of the screen.
ortb.device.geo.latnumberдаLatitude in degrees.43.238
ortb.device.geo.lonnumberдаLongitude in degrees.76.945
ortb.device.geo.typeintegerдаSource of the location; 1 is a surveyed position.1
ortb.device.geo.countrystringдаISO 3166-1 alpha-3 country code."KAZ"
ortb.device.extobjectExtension with the OpenOOH 1.2 venue type id; absent when the screen has no venue type.
ortb.device.ext.doohobjectThe dooh extension.
ortb.device.ext.dooh.venuetypeidstringId in the OpenOOH 1.2 taxonomy as a string."304"
updated_atstring (date-time)даWhen the screen or its sellers last changed."2026-10-14T09:30:00+05:00"

Пример

{
  "code": "ALM-0001",
  "unos_id": "UNOS-4711",
  "status": "active",
  "operator": {
    "id": "0b6f9d0e-6c1e-4a6a-9d55-0f8a6a6f3c11",
    "name": "Almaty Outdoor LLP",
    "domain": "almaty-outdoor.example"
  },
  "venue_type": {
    "v12": 304,
    "v11": 301,
    "code": "outdoor.spectacular"
  },
  "lat": 43.238,
  "lng": 76.945,
  "district": "medeu",
  "format": "cityboard",
  "class": "B",
  "outdoor": true,
  "screen": {
    "w": 1920,
    "h": 1080
  },
  "slot_seconds": 10,
  "loop_seconds": 120,
  "compliance": {
    "connected": true
  },
  "authorised_sellers": [
    {
      "seller_id": "5d3f3e0a-2a53-4b3c-8d0a-6f63b4d9a111",
      "seller_account_id": "pub-4711",
      "valid_from": "2026-10-01",
      "valid_until": "2026-12-31",
      "scope": "structure"
    }
  ],
  "ortb": {
    "dooh": {
      "id": "ALM-0001",
      "publisher": {
        "id": "0b6f9d0e-6c1e-4a6a-9d55-0f8a6a6f3c11",
        "name": "Almaty Outdoor LLP",
        "domain": "almaty-outdoor.example"
      },
      "domain": "almaty-outdoor.example",
      "venuetype": [
        "301"
      ],
      "venuetypetax": 5,
      "keywords": "cityboard,outdoor"
    },
    "device": {
      "geo": {
        "lat": 43.238,
        "lon": 76.945,
        "type": 1,
        "country": "KAZ"
      },
      "ext": {
        "dooh": {
          "venuetypeid": "304"
        }
      }
    }
  },
  "updated_at": "2026-10-14T09:30:00+05:00"
}

304 The copy you hold is current.

Без тела.

Ошибки

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

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

Примеры кода

curl

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

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