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

Сверка заявленных показов с подтвержденными плеерами

GET /api/v1/plays/claims/verification

https://app.tanba-ooh.kz/api/v1/plays/claims/verification

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

Право write:plays (тот же ключ, что передает заявки). Администратор и сотрудник рекламной платформы.

Для каждой строки заявки организации в периоде возвращает, сколько показов подтвердили плееры, и статус: matched (подтверждено все заявленное), over_claimed (подтверждено меньше заявленного, но не ноль), unmatched (ничего не подтверждено). verified это меньшее из заявленного и подтвержденного. Подтверждают показы, которые плеер пометил вашей организацией как продавцом (detail.src записи показа) и, если строка называет сделку, этой сделкой. Если у строки нет такой метки, считаются показы часа, которые не объясняются метками других продавцов, а строка получает untagged: true. Берется наибольшее по уровням доказательства число, а не сумма; basis_tier называет этот уровень, tiers показывает подтвержденное по уровням. Показы, переданные операторами из своих CMS, не доказательство и не учитываются.

Метка это указание источника, а не доказательство. Заявка не меняет начисления: тарификация идет только по показам плееров. Период from–to: даты (дни Asia/Almaty) или моменты RFC 3339, to не включается, не больше 62 дней.

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

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

Право доступа: write:plays

Параметры

ИмяГдеТипОбязательныйОписаниеПример
fromзапросstringдаНачало периода: дата или момент RFC 3339.2026-10-06
toзапросstringдаКонец периода, не включается.2026-10-07

Ответы

200 Строка на каждую строку заявки в периоде.

application/json

ИмяТипОбязательныйОписаниеПример
fromstringдаStart of the range."2026-10-06T00:00:00+05:00"
tostringдаEnd of the range."2026-10-07T00:00:00+05:00"
summaryobjectдаTotals over the lines.
summary.linesintegerNumber of claim lines in the range.2
summary.matchedintegerLines whose claim is fully proved.1
summary.over_claimedintegerLines proved in part.1
summary.unmatchedintegerLines with nothing proved.0
summary.claimedintegerPlays claimed over all lines.238
summary.verifiedintegerPlays proved over all lines, each line capped at its claim.230
linesarray of objectдаThe claim lines in time order.
lines[].structure_codestringдаCode of the structure."ALM-0012"
lines[].approval_numberstringдаNumber of the approval of the line."TNB-2026-000123"
lines[].hourstringдаThe hour of the line in Asia/Almaty time."2026-10-06T14:00:00+05:00"
lines[].deal_idstringдаEmpty when the line names no deal."deal-4411"
lines[].claimedintegerдаPlays claimed for the hour.118
lines[].verifiedintegerдаThe smaller of the claim and the plays proved.110
lines[].statusstringдаmatched when all of the claim is proved, over_claimed when part, unmatched when none. matched, over_claimed, unmatched
lines[].untaggedbooleanдаTrue when no tag of the platform backs the line and all untagged plays of the hour were counted.false
lines[].basis_tierstring | nullдаEvidence tier of the proved plays; null when none. mtls, signed, attested, native, <nil>
lines[].tiersobjectдаProved plays by evidence tier.{"mtls": 110}

Пример

{
  "from": "2026-10-06T00:00:00+05:00",
  "to": "2026-10-07T00:00:00+05:00",
  "summary": {
    "lines": 2,
    "matched": 1,
    "over_claimed": 1,
    "unmatched": 0,
    "claimed": 238,
    "verified": 230
  },
  "lines": [
    {
      "structure_code": "ALM-0012",
      "approval_number": "TNB-2026-000123",
      "hour": "2026-10-06T14:00:00+05:00",
      "deal_id": "deal-4411",
      "claimed": 118,
      "verified": 110,
      "status": "over_claimed",
      "untagged": false,
      "basis_tier": "mtls",
      "tiers": {
        "mtls": 110
      }
    }
  ]
}

Ошибки

Ошибки приходят документом 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/plays/claims/verification?from=2026-10-06&to=2026-10-07' \
  -H 'Authorization: Bearer YOUR_API_KEY'
Python
import requests

response = requests.get(
    "https://app.tanba-ooh.kz/api/v1/plays/claims/verification?from=2026-10-06&to=2026-10-07",
    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/plays/claims/verification?from=2026-10-06&to=2026-10-07", 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))
}