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

Newest signed revocation list

GET /v1/revocations/latest

https://verify.tanba-ooh.kz/v1/revocations/latest

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

A signed PKCS#7 (CMS) file with the list attached by default; ?format=json returns the body and the signature as JSON.

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

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

Параметрлер

АтауыОрныТүріМіндеттіСипаттамаМысал
formatсұрауstringжоқSet to json to get JSON instead of the page or the signed file. jsonjson

Жауаптар

200 The list.

application/pkcs7-signature

application/json

RevocationList

АтауыТүріМіндеттіСипаттамаМысал
versionintegerиәVersion of the list; it grows with every new list.118
issued_atstringиәWhen the list was issued."2026-10-06T08:00:00+05:00"
not_afterstringиәThe list must be replaced by this time."2026-10-07T08:00:00+05:00"
bodyobjectThe list itself: the approvals and the devices revoked so far.
body.vintegerFormat version of the body; it stays 1.1
body.envstringThe environment the list belongs to. test, prod
body.versionintegerVersion of the list.42
body.issued_atstring (date-time)When the list was issued."2026-10-06T08:00:00+05:00"
body.not_afterstring (date-time)The list must be replaced by this time."2026-10-07T08:00:00+05:00"
body.revokedarray of objectThe approvals revoked so far.
body.revoked[].approval_numberstringNumber of the revoked approval."TNB-2026-000123"
body.revoked[].revoked_atstring (date-time)When the approval was revoked."2026-10-05T14:30:00+05:00"
body.revoked[].ground_codestringCode of the legal ground of the revocation, for example court_order, noncompliant_content, structure_dismantled or applicant_request."court_order"
body.revoked_devicesarray of objectThe devices revoked so far; a list without this field means none. A certificate-channel entry names a certificate serial (decimal), a signed-channel entry the SHA-256 of the DER public key.
body.revoked_devices[].device_idstring (uuid)The revoked device."5c0e8f3a-71d2-4b6e-9a14-d8e2f7b30c59"
body.revoked_devices[].cert_serialstringSerial number of a revoked certificate, decimal; certificate channel."1234567890123"
body.revoked_devices[].pubkey_sha256stringSHA-256 of the DER public key, hex; signed channel."ab12c4d7e9f0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607182930"
body.revoked_devices[].revoked_atstring (date-time)When the device was revoked."2026-10-05T14:30:00+05:00"
signaturestringBase64 of the signature over the body."MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwE="

Мысал

{
  "version": 118,
  "issued_at": "2026-10-06T08:00:00+05:00",
  "not_after": "2026-10-07T08:00:00+05:00",
  "body": {
    "v": 1,
    "env": "prod",
    "version": 42,
    "issued_at": "2026-10-06T08:00:00+05:00",
    "not_after": "2026-10-07T08:00:00+05:00",
    "revoked": [
      {
        "approval_number": "TNB-2026-000123",
        "revoked_at": "2026-10-05T14:30:00+05:00",
        "ground_code": "court_order"
      }
    ],
    "revoked_devices": [
      {
        "device_id": "5c0e8f3a-71d2-4b6e-9a14-d8e2f7b30c59",
        "cert_serial": "1234567890123",
        "pubkey_sha256": "ab12c4d7e9f0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607182930",
        "revoked_at": "2026-10-05T14:30:00+05:00"
      }
    ]
  },
  "signature": "MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwE="
}

Қателер

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

МәртебесіМағынасы
429Rate limit; see Retry-After.
503Not available yet.

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

curl

curl 'https://verify.tanba-ooh.kz/v1/revocations/latest'
Python
import requests

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