TAŇBA-OOH Әзірлеушілерге

Merkle inclusion proof of an approval

GET /v1/approval/{number}/ledger-proof

https://verify.tanba-ooh.kz/v1/approval/{number}/ledger-proof

Анықтамалықтың техникалық мәтіні ағылшын тілінде жазылған.

The proof that the approval's leaf (kind issued, or revoked for its revocation) is in the tree of its day. Check it with tanba-verify inclusion --proof FILE.json --approval NUMBER. 404 until the day is closed and recorded.

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

Қажет емес. Шақыру ашық.

Параметрлер

АтауыОрныТүріМіндеттіСипаттамаМысал
numberжолstringиәApproval number.TNB-2026-000123
kindсұрауstringжоқWhich leaf to prove: issued or revoked. issued, revokedissued

Жауаптар

200 The proof.

application/json

LedgerProof

АтауыТүріМіндеттіСипаттамаМысал
vconstиәVersion of the proof format.1
daystring (date)иәThe Asia/Almaty day of the tree."2026-10-05"
leafoneOfиәOne entry of a ledger day. The kind says what the entry is about.
leaf_sha256stringиәHex SHA-256 of the leaf."3a6e9c0cc1490e884c3b4a9c6bfd39e19d928a0838407cd48b6317ebcc2ed825"
indexintegerиәPosition of the leaf in the tree, counting from 0.3
leaf_countintegerиәNumber of leaves in the tree.14
patharray of objectиәSiblings from the leaf up to the root; a node is SHA-256(0x01, left, right).
path[].sidestringиәWhere the sibling sits. left, right
path[].hashstringиәHex SHA-256 of the sibling node."e6e9ae1d34d7966232cd03927b9cf18c6d1e1c9532cde816ca929ed482e27326"
merkle_rootstringиәHex SHA-256 root of the tree."53f8fe42a83fc01075e856d385cea164e06b7124d4c76b3a498e39de98d7168b"
anchor_sha256stringиәHex SHA-256 of the anchor body of the day."e9f1bb3a2238f73741a8245a599da12c813c8c84ccee623aa5c68c71845db4c4"
digeststringиәHex SHA-256 of the anchor body hash followed by the Merkle root."44eeee2dfc054adad906be43d8d227a8052c19e5080b0ed64dc572fad9ee8f46"

Мысал

{
  "v": 1,
  "day": "2026-10-05",
  "leaf": {
    "kind": "issued",
    "approval_number": "TNB-2026-000123",
    "manifest_sha256": "878a9b0a8452700baaab5574e39716d67a93a07597baab30823639c69bf1e889",
    "signed_at": "2026-10-05T06:20:31.482913Z",
    "revoked_at": "2026-10-05T09:02:44.100200Z"
  },
  "leaf_sha256": "3a6e9c0cc1490e884c3b4a9c6bfd39e19d928a0838407cd48b6317ebcc2ed825",
  "index": 3,
  "leaf_count": 14,
  "path": [
    {
      "side": "left",
      "hash": "e6e9ae1d34d7966232cd03927b9cf18c6d1e1c9532cde816ca929ed482e27326"
    }
  ],
  "merkle_root": "53f8fe42a83fc01075e856d385cea164e06b7124d4c76b3a498e39de98d7168b",
  "anchor_sha256": "e9f1bb3a2238f73741a8245a599da12c813c8c84ccee623aa5c68c71845db4c4",
  "digest": "44eeee2dfc054adad906be43d8d227a8052c19e5080b0ed64dc572fad9ee8f46"
}

Қателер

Қателер problem құжаты (application/problem+json) түрінде, тұрақты code өрісімен келеді.

МәртебесіМағынасы
404Nothing there, or not visible to the caller.
429Rate limit; see Retry-After.

Код мысалдары

curl

curl 'https://verify.tanba-ooh.kz/v1/approval/TNB-2026-000123/ledger-proof'
Python
import requests

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