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

Один ежедневный якорь аудита

GET /v1/audit-anchors/{day}

https://verify.tanba-ooh.kz/v1/audit-anchors/{day}

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

По умолчанию подпись CMS (PKCS#7 с вложенным телом); ?format=json возвращает тело и подпись в JSON. День это календарный день Asia/Almaty, YYYY-MM-DD. Проверка офлайн: tanba-verify anchor FILE.p7s --ca root.pem.

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

Не требуется. Вызов открытый.

Параметры

ИмяГдеТипОбязательныйОписаниеПример
dayпутьstringдаДень Asia/Almaty, YYYY-MM-DD.2026-10-05
formatзапросstringнетУкажите json, чтобы получить JSON вместо страницы или подписанного файла. jsonjson

Ответы

200 The anchor.

application/pkcs7-signature

application/json

ИмяТипОбязательныйОписаниеПример
daystring (date)даThe Asia/Almaty day of the anchor."2026-10-05"
signed_atstringдаWhen the anchor was signed."2026-10-06T00:05:12+05:00"
bodyobjectдаThe anchor body: the head of the audit chain of that day.
signaturestringдаBase64 от подписи над телом."MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwE="

Пример

{
  "day": "2026-10-05",
  "signed_at": "2026-10-06T00:05:12+05:00",
  "body": {},
  "signature": "MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwE="
}

Ошибки

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

СтатусЗначение
404Ничего нет или вызывающему это не видно.
429Превышен предел частоты; см. Retry-After.

Примеры кода

curl

curl 'https://verify.tanba-ooh.kz/v1/audit-anchors/2026-10-05'
Python
import requests

response = requests.get(
    "https://verify.tanba-ooh.kz/v1/audit-anchors/2026-10-05",
)
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/audit-anchors/2026-10-05", 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))
}