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

Последние дни публичного реестра

GET /v1/ledger-days

https://verify.tanba-ooh.kz/v1/ledger-days

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

Новейшие 30 дней, сначала самые свежие. Для каждого заякоренного дня платформа считает корень Меркла по согласованиям, выданным и отозванным в этот день, и дайджест (SHA-256 от хэша тела якоря и корня) и отправляет дайджест на отметку времени в Биткоине через OpenTimestamps. status равен pending, пока в доказательстве нет аттестации блока Биткоина, затем pending_check, пока платформа не сверит значение, под которым стоит доказательство, с корнем Меркла в заголовке этого блока, прочитанным у двух независимых обозревателей блоков, и anchored с block_height только после успешной сверки. Выдается на хостах verify и app, кэшируется на 60 секунд.

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

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

Ответы

200 The days.

application/json

ИмяТипОбязательныйОписаниеПример
itemsarray of LedgerDayItemдаThe days, newest first.
items[].daystring (date)даThe Asia/Almaty day the ledger entry covers."2026-10-05"
items[].leaf_countintegerдаNumber of approvals issued and revoked that day.14
items[].merkle_rootstringдаHex SHA-256 root over the day's leaves; SHA-256 of the empty string when the day has none."53f8fe42a83fc01075e856d385cea164e06b7124d4c76b3a498e39de98d7168b"
items[].digeststringдаHex SHA-256 of the anchor body hash followed by the Merkle root; this is what is timestamped."44eeee2dfc054adad906be43d8d227a8052c19e5080b0ed64dc572fad9ee8f46"
items[].statusstringдаHow far the digest has been anchored in Bitcoin. pending, pending_check, anchored
items[].block_heightintegerBitcoin block of the attestation, present only when anchored: after its header was checked against the proof.905432
items[].inputs_urlstringдаAddress of the inputs file of the day."/v1/ledger-days/2026-10-05"
items[].ots_urlstringPresent once the digest has been submitted to the calendars."/v1/ledger-days/2026-10-05/proof.ots"

Пример

{
  "items": [
    {
      "day": "2026-10-05",
      "leaf_count": 14,
      "merkle_root": "53f8fe42a83fc01075e856d385cea164e06b7124d4c76b3a498e39de98d7168b",
      "digest": "44eeee2dfc054adad906be43d8d227a8052c19e5080b0ed64dc572fad9ee8f46",
      "status": "pending",
      "block_height": 905432,
      "inputs_url": "/v1/ledger-days/2026-10-05",
      "ots_url": "/v1/ledger-days/2026-10-05/proof.ots"
    }
  ]
}

Ошибки

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

СтатусЗначение
429Превышен предел частоты; см. Retry-After.

Примеры кода

curl

curl 'https://verify.tanba-ooh.kz/v1/ledger-days'
Python
import requests

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