Последние дни публичного реестра
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
| Имя | Тип | Обязательный | Описание | Пример |
|---|---|---|---|---|
items | array of LedgerDayItem | да | The days, newest first. | |
items[].day | string (date) | да | The Asia/Almaty day the ledger entry covers. | "2026-10-05" |
items[].leaf_count | integer | да | Number of approvals issued and revoked that day. | 14 |
items[].merkle_root | string | да | Hex SHA-256 root over the day's leaves; SHA-256 of the empty string when the day has none. | "53f8fe42a83fc01075e856d385cea164e06b7124d4c76b3a498e39de98d7168b" |
items[].digest | string | да | Hex SHA-256 of the anchor body hash followed by the Merkle root; this is what is timestamped. | "44eeee2dfc054adad906be43d8d227a8052c19e5080b0ed64dc572fad9ee8f46" |
items[].status | string | да | How far the digest has been anchored in Bitcoin. pending, pending_check, anchored | |
items[].block_height | integer | Bitcoin block of the attestation, present only when anchored: after its header was checked against the proof. | 905432 | |
items[].inputs_url | string | да | Address of the inputs file of the day. | "/v1/ledger-days/2026-10-05" |
items[].ots_url | string | Present 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))
}