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

One revocation list by version

GET /d/v1/revocations/{version}

https://devices.tanba-ooh.kz/d/v1/revocations/{version}

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

The list of one version on the address of the device channel. It is what the link revocation_list.url in a heartbeat answer points to. The call is open.

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

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

Параметрлер

АтауыОрныТүріМіндеттіСипаттамаМысал
versionжолintegerиәVersion of the list.42
formatсұрауstringжоқSet to json to get JSON instead of 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 өрісімен келеді.

МәртебесіМағынасы
404Nothing there, or not visible to the caller.
defaultAn error as a problem document.

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

curl

curl 'https://devices.tanba-ooh.kz/d/v1/revocations/42'
Python
import requests

response = requests.get(
    "https://devices.tanba-ooh.kz/d/v1/revocations/42",
)
print(response.status_code, response.text)
Go
package main

import (
	"fmt"
	"io"
	"net/http"
)

func main() {
	req, err := http.NewRequest("GET", "https://devices.tanba-ooh.kz/d/v1/revocations/42", 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))
}