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.
Authentication
None. This call is public.
Parameters
| Name | In | Type | Required | Description | Example |
|---|---|---|---|---|---|
version | path | integer | yes | Version of the list. | 42 |
format | query | string | no | Set to json to get JSON instead of the signed file. json | json |
Responses
200 The list.
application/pkcs7-signature
application/json
RevocationList
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
version | integer | yes | Version of the list; it grows with every new list. | 118 |
issued_at | string | yes | When the list was issued. | "2026-10-06T08:00:00+05:00" |
not_after | string | yes | The list must be replaced by this time. | "2026-10-07T08:00:00+05:00" |
body | object | The list itself: the approvals and the devices revoked so far. | ||
body.v | integer | Format version of the body; it stays 1. | 1 | |
body.env | string | The environment the list belongs to. test, prod | ||
body.version | integer | Version of the list. | 42 | |
body.issued_at | string (date-time) | When the list was issued. | "2026-10-06T08:00:00+05:00" | |
body.not_after | string (date-time) | The list must be replaced by this time. | "2026-10-07T08:00:00+05:00" | |
body.revoked | array of object | The approvals revoked so far. | ||
body.revoked[].approval_number | string | Number of the revoked approval. | "TNB-2026-000123" | |
body.revoked[].revoked_at | string (date-time) | When the approval was revoked. | "2026-10-05T14:30:00+05:00" | |
body.revoked[].ground_code | string | Code of the legal ground of the revocation, for example court_order, noncompliant_content, structure_dismantled or applicant_request. | "court_order" | |
body.revoked_devices | array of object | The 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_id | string (uuid) | The revoked device. | "5c0e8f3a-71d2-4b6e-9a14-d8e2f7b30c59" | |
body.revoked_devices[].cert_serial | string | Serial number of a revoked certificate, decimal; certificate channel. | "1234567890123" | |
body.revoked_devices[].pubkey_sha256 | string | SHA-256 of the DER public key, hex; signed channel. | "ab12c4d7e9f0a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f607182930" | |
body.revoked_devices[].revoked_at | string (date-time) | When the device was revoked. | "2026-10-05T14:30:00+05:00" | |
signature | string | Base64 of the signature over the body. | "MIIBpQYJKoZIhvcNAQcCoIIBljCCAZICAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwE=" |
Example
{
"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="
}
Errors
Errors are problem documents (application/problem+json) with a stable code.
| Status | Meaning |
|---|---|
| 404 | Nothing there, or not visible to the caller. |
| default | An error as a problem document. |
Code samples
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))
}