Check one approval
GET /v1/approval/{number}
https://verify.tanba-ooh.kz/v1/approval/{number}
Анықтамалықтың техникалық мәтіні ағылшын тілінде жазылған.
The same answer for an unknown number, a malformed number, a submission number and a rejected submission. Send Accept of application/json for JSON, anything else gets the HTML page.
Аутентификация
Қажет емес. Шақыру ашық.
Параметрлер
| Атауы | Орны | Түрі | Міндетті | Сипаттама | Мысал |
|---|---|---|---|---|---|
number | жол | string | иә | Approval number. | TNB-2026-000123 |
p | сұрау | string | жоқ | Presence token printed in the QR code of a player that holds the key. A valid token adds one count to the presence of that player; the answer is the same with, without or with a wrong token. | m2oTq0cFk1gAAl3x-9Q |
Жауаптар
200 The approval and its signed manifest.
application/json
PublicApproval
| Атауы | Түрі | Міндетті | Сипаттама | Мысал |
|---|---|---|---|---|
approval | object | иә | The approval. | |
approval.number | string | иә | Approval number. | "TNB-2026-000123" |
approval.status | string | иә | State of the approval. | "active" |
approval.ledger | array of object | Where the approval and its revocation are recorded in the public ledger; empty until the day is closed. | ||
approval.ledger[].kind | string | иә | Whether the entry records the issue or the revocation. issued, revoked | |
approval.ledger[].day | string (date) | иә | Day of the ledger entry, Asia/Almaty. | "2026-10-06" |
approval.ledger[].status | string | иә | How far the day has been anchored in Bitcoin. pending, pending_check, anchored | |
approval.ledger[].block_height | integer | Number of the Bitcoin block that holds the attestation; present once the day is anchored. | 905432 | |
approval.ledger[].proof_url | string | иә | Address of the inclusion proof for this entry. | "/v1/approval/TNB-2026-000123/ledger-proof" |
manifest | object | иә | The signed manifest with the advertiser's number masked. | |
manifest_masked | boolean | Always true: the advertiser's number in manifest is masked, so it is not the signed bytes. | true | |
manifest_sha256 | string | Hex SHA-256 of the original signed manifest bytes, before masking. | "878a9b0a8452700baaab5574e39716d67a93a07597baab30823639c69bf1e889" |
Мысал
{
"approval": {
"number": "TNB-2026-000123",
"status": "active",
"ledger": [
{
"kind": "issued",
"day": "2026-10-06",
"status": "pending",
"block_height": 905432,
"proof_url": "/v1/approval/TNB-2026-000123/ledger-proof"
}
]
},
"manifest": {},
"manifest_masked": true,
"manifest_sha256": "878a9b0a8452700baaab5574e39716d67a93a07597baab30823639c69bf1e889"
}
text/html
304 Not modified (ETag).
Денесі жоқ.
Қателер
Қателер problem құжаты (application/problem+json) түрінде, тұрақты code өрісімен келеді.
| Мәртебесі | Мағынасы |
|---|---|
| 404 | Not an issued approval. |
| 429 | Rate limit; see Retry-After. |
Код мысалдары
curl
curl 'https://verify.tanba-ooh.kz/v1/approval/TNB-2026-000123' \
-H 'Accept: application/json'
Python
import requests
response = requests.get(
"https://verify.tanba-ooh.kz/v1/approval/TNB-2026-000123",
headers={
"Accept": "application/json",
},
)
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", nil)
if err != nil {
panic(err)
}
req.Header.Set("Accept", "application/json")
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))
}