Dokumentasi / AI Box Dan Software Analitik Video / Referensi API
API DOOH Audience Meter
API DOOH Audience Meter: audiens layar digital, diukur oleh kamera di samping setiap layar. API ini memberikan peluang untuk melihat (OTS), impresi, perhatian dan keterlibatan, kelompok usia, gender dan suasana hati audiens, log tayangan, log tayang dari CMS atau pemutar layar, pengelola kampanye dasar, audiens per kampanye dan materi iklan beserta biaya per seribu (CPM), serta umpan audiens untuk platform iklan.
Data pribadi. Tayangan bersifat anonim: tidak ada identitas dan tidak ada gambar yang disimpan.
Memanggil API
Sama seperti API platform: token akun API sebagai Authorization: Bearer <API_KEY>. Id lokasi dan kamera berasal dari API platform (GET /api/v1/sites, GET /api/v1/cameras). Setiap operasi menyebutkan siapa yang dapat memanggilnya dan cakupan yang diperlukan. Galat, waktu, halaman dan batas laju mengikuti API platform.
Umpan dengan Kredensialnya Sendiri
Dua operasi ditujukan bagi sistem lain dan memakai kredensialnya sendiri, yang dibuat oleh Admin lokasi di dasbor: kiriman log tayang bertanda tangan dari CMS atau pemutar (kunci log tayang lokasi, tanda tangan Standard Webhooks) dan umpan audiens untuk server iklan (token umpan).
1.0.0
Audiens
Angka utama, tren dan wawasan audiens.
OTS, Impresi, Perhatian Dan Keterlibatan, Audiens Saat Ini, Serta Demografi Dan Suasana Hati Pada Impresi
GET/sites/{id}/overview
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/overview?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/overview?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/overview?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"ots": 9620,
"impressions": 3105,
"engaged": 684,
"attention_rate": 32.3,
"engagement_rate": 7.1,
"avg_attention_s": 3.1,
"avg_dwell_s": 6.4,
"audience_now": {
"in_view": 7,
"watching": 2
},
"demographics": {
"cells": [
{
"age_band": "18-24",
"gender": "male",
"impressions": 512,
"share": 19.8
}
],
"unknown": 514
},
"emotions": {
"neutral": 2210,
"happy": 604,
"sad": 41,
"surprised": 88,
"angry": 12,
"unknown": 150
}
}OTS Dan Impresi Per Jam Atau Hari
GET/sites/{id}/trend
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
bucket query | string | hour atau day |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/trend?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/trend?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/trend?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"bucket": "hour",
"buckets": [
{
"start": "<start>",
"ots": 12,
"impressions": 12
}
]
}Wawasan Audiens: Jam Puncak, Bagian Hari Per Kelompok Usia, Histogram Perhatian, Status Per Hari, Setiap Layar
GET/sites/{id}/analytics
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/analytics?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/analytics?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/analytics?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"summary": {
"ots": 12,
"impressions": 12,
"engaged": 12,
"attention_rate": 12,
"engagement_rate": 12,
"avg_attention_s": 60,
"avg_dwell_s": 60,
"peak_hour": {
"start": "<start>",
"impressions": 12
}
},
"dayparts": {
"dayparts": [
"<daypart>"
],
"age_bands": [
"<age_band>"
],
"impressions": [
[
12
]
]
},
"attention_histogram": {
"edges_s": [
12
],
"counts": [
12
]
},
"status_per_day": [
{
"day": "<day>",
"walk_by": 12,
"noticed": 12,
"engaged": 12
}
],
"screens": [
{
"ots": 12,
"impressions": 12,
"engaged": 12,
"attention_rate": 12,
"engagement_rate": 12,
"avg_attention_s": 60,
"avg_dwell_s": 60,
"camera_id": 1,
"screen": "Screen 1"
}
]
}Catatan Pengelola Kampanye Di Lokasi (Kampanye Dengan Materi Iklannya), Urut Nama
GET/sites/{id}/campaign-records
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"items": [
{
"id": 1,
"site_id": 1,
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "<flight_start>",
"flight_end": "<flight_end>",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"id": 1,
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3,
"updated": "<updated>"
}
]
}Tambahkan Catatan Kampanye Beserta Materi Iklannya (Dicatat Di Log Audit)
POST/sites/{id}/campaign-records
Nama (dipangkas, tanpa membedakan huruf besar kecil) dan id CMS unik di lokasi, nama materi iklan unik di dalam kampanye.
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
namewajib | string | unik di lokasi (dipangkas, tanpa membedakan huruf besar kecil): tayangan dicocokkan dengannya |
advertiser | string | |
flight_startwajib | date | YYYY-MM-DD, hari lokal lokasi, termasuk hari itu |
flight_endwajib | date | sama dengan atau setelah flight_start |
screenswajib | integer[] | id kamera dari layar di lokasi |
external_id | string | id kampanye dari CMS, unik di lokasi; null atau kosong: tidak ada |
creatives | object[] | |
creatives[].namewajib | string | |
creatives[].length_swajib | integer | |
creatives[].external_id | string | id materi iklan dari CMS; null atau kosong: tidak ada |
version | integer | untuk perubahan: versi yang dibaca |
Respons
| Status | Arti |
|---|---|
201 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X POST "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name":"Main gate","advertiser":"Advertiser A","flight_start":"2026-11-02","flight_end":"2026-11-02","screens":[12],"external_id":"<external_id>","creatives":[{"name":"Main gate","length_s":60,"external_id":"<external_id>"}],"version":3}'import requests
r = requests.post(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "2026-11-02",
"flight_end": "2026-11-02",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records", {
method: "POST",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "2026-11-02",
"flight_end": "2026-11-02",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3
}),
});
console.log(r.status, await r.text());Respons 201
{
"id": 1,
"site_id": 1,
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "<flight_start>",
"flight_end": "<flight_end>",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"id": 1,
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3,
"updated": "<updated>"
}Satu Catatan Kampanye
GET/sites/{id}/campaign-records/{record}
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
recordwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"id": 1,
"site_id": 1,
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "<flight_start>",
"flight_end": "<flight_end>",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"id": 1,
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3,
"updated": "<updated>"
}Ganti Catatan Kampanye Dan Materi Iklannya (Berikan Versi Yang Dibaca: Versi Lama Ditolak Dengan 409); Dicatat Di Log Audit
PUT/sites/{id}/campaign-records/{record}
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
recordwajib path | integer |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
namewajib | string | unik di lokasi (dipangkas, tanpa membedakan huruf besar kecil): tayangan dicocokkan dengannya |
advertiser | string | |
flight_startwajib | date | YYYY-MM-DD, hari lokal lokasi, termasuk hari itu |
flight_endwajib | date | sama dengan atau setelah flight_start |
screenswajib | integer[] | id kamera dari layar di lokasi |
external_id | string | id kampanye dari CMS, unik di lokasi; null atau kosong: tidak ada |
creatives | object[] | |
creatives[].namewajib | string | |
creatives[].length_swajib | integer | |
creatives[].external_id | string | id materi iklan dari CMS; null atau kosong: tidak ada |
version | integer | untuk perubahan: versi yang dibaca |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X PUT "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name":"Main gate","advertiser":"Advertiser A","flight_start":"2026-11-02","flight_end":"2026-11-02","screens":[12],"external_id":"<external_id>","creatives":[{"name":"Main gate","length_s":60,"external_id":"<external_id>"}],"version":3}'import requests
r = requests.put(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "2026-11-02",
"flight_end": "2026-11-02",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1", {
method: "PUT",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "2026-11-02",
"flight_end": "2026-11-02",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3
}),
});
console.log(r.status, await r.text());Respons 200
{
"id": 1,
"site_id": 1,
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "<flight_start>",
"flight_end": "<flight_end>",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"id": 1,
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3,
"updated": "<updated>"
}Hapus Catatan Kampanye (Tayangannya Tetap Ada, Kembali Dilaporkan Dengan Namanya); Dicatat Di Log Audit
DELETE/sites/{id}/campaign-records/{record}
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
recordwajib path | integer |
Respons
| Status | Arti |
|---|---|
204 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X DELETE "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.delete(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/1", {
method: "DELETE",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Kampanye Yang Disebut Di Log Tayang Tetapi Tidak Cocok Dengan Catatan Mana Pun
GET/sites/{id}/campaign-records/unmatched
Yang paling sering tayang lebih dulu, dengan keterangan dari tayangannya: tayangan pertama dan terakhir, layar, id CMS yang paling sering terlihat, serta materi iklan dengan durasi rata-ratanya.
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/unmatched" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/unmatched",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/unmatched", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"items": [
{
"name": "Main gate",
"external_id": "<external_id>",
"plays": 12,
"first": "2026-11-02T08:00:00Z",
"last": "2026-11-02T08:00:00Z",
"screens": [
12
],
"creatives": [
{
"name": "Main gate",
"external_id": "<external_id>",
"plays": 12,
"length_s": 60
}
]
}
]
}Tambahkan Kampanye Yang Belum Cocok Ke Pengelola, Terisi Dari Tayangannya
POST/sites/{id}/campaign-records/adopt
Periode tayang berjalan dari hari lokal tayangan pertama sampai terakhir, dengan layar, id CMS dan materi iklan beserta durasi rata-ratanya; tanpa pengiklan. Dicatat di log audit.
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
namewajib | string | nama kampanye yang belum cocok (tanpa membedakan huruf besar kecil) |
Respons
| Status | Arti |
|---|---|
201 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X POST "https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/adopt" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name":"Main gate"}'import requests
r = requests.post(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/adopt",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"name": "Main gate"
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaign-records/adopt", {
method: "POST",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"name": "Main gate"
}),
});
console.log(r.status, await r.text());Respons 201
{
"id": 1,
"site_id": 1,
"name": "Main gate",
"advertiser": "Advertiser A",
"flight_start": "<flight_start>",
"flight_end": "<flight_end>",
"screens": [
12
],
"external_id": "<external_id>",
"creatives": [
{
"id": 1,
"name": "Main gate",
"length_s": 60,
"external_id": "<external_id>"
}
],
"version": 3,
"updated": "<updated>"
}Log Tayangan
Setiap penonton, terbaru lebih dulu, dan ekspornya.
Log Tayangan, Terbaru Lebih Dulu, Per Halaman
GET/sites/{id}/logs
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
camera query | integer | |
status query | string | walk_by, noticed atau engaged |
age_band query | string | |
gender query | string | |
limit query | integer | |
before query | string | next_before dari halaman sebelumnya |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&limit=50&before=2026-11-02T08%3A00%3A00Z" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&limit=50&before=2026-11-02T08%3A00%3A00Z",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&limit=50&before=2026-11-02T08%3A00%3A00Z", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"items": [
{
"id": "<id>",
"camera_id": 1,
"screen": "Screen 1",
"time": "2026-11-02T08:00:00Z",
"dwell_s": 60,
"attention_s": 60,
"first_glance_s": 60,
"status": "walk_by",
"age_band": "<age_band>",
"gender": "female",
"emotion": "<emotion>"
}
],
"next_before": "<next_before>"
}Log Tayangan Sebagai CSV Atau XLSX (EN/ID, Waktu Lokal, Paling Banyak 20 000 Baris; Dicatat Di Log Audit)
GET/sites/{id}/logs/export
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read, export.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
format query | string | csv atau xlsx |
language query | string | en atau id |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Kampanye
Pengelola kampanye (pengiklan, periode tayang, layar, materi iklan; tayangan dicocokkan berdasarkan id CMS, jika tidak berdasarkan nama), nama di log tayang yang belum ada di dalamnya, serta audiens per kampanye dan materi iklan beserta ekspornya.
Audiens Per Kampanye Dan Materi Iklan, Dengan Perkiraan Biaya Dan CPM
GET/sites/{id}/campaigns
Satu tayangan dihitung untuk setiap materi iklan di layarnya selama orang tersebut terlihat. Tayangan dicocokkan dengan catatan pengelola kampanye berdasarkan id CMS bila tayangan membawa id yang dimiliki suatu catatan, jika tidak berdasarkan nama (dipangkas, tanpa membedakan huruf besar kecil). Kampanye dari suatu catatan membawa pengiklan dan periode tayangnya serta menghitung tayangan di luar periode itu; catatan dalam periode tayang tanpa tayangan ditampilkan dengan nilai nol.
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"price_per_slot": null,
"currency": "IDR",
"campaigns": [
{
"campaign_id": "Morning Coffee",
"plays": 320,
"play_s": 4800,
"ots": 2410,
"impressions": 806,
"engaged": 170,
"attention_rate": 33.4,
"engagement_rate": 7.1,
"avg_attention_s": 2.9,
"est_cost": null,
"est_cpm": null,
"out_of_flight": 0,
"record": {
"id": 3,
"advertiser": "Advertiser A",
"flight_start": "2026-11-01",
"flight_end": "2026-11-30",
"external_id": "CMP-1001",
"screens": [
41
]
},
"creatives": [
{
"creative_id": "Coffee 15s",
"record_id": 4,
"length_s": 15,
"plays": 320,
"play_s": 4800,
"ots": 2410,
"impressions": 806,
"engaged": 170,
"attention_rate": 33.4,
"engagement_rate": 7.1,
"avg_attention_s": 2.9,
"est_cost": null,
"est_cpm": null,
"out_of_flight": 0
}
]
}
]
}Audiens Per Kampanye Dan Materi Iklan Sebagai CSV Atau XLSX (EN/ID; Dicatat Di Log Audit)
GET/sites/{id}/campaigns/export
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read, export.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
format query | string | csv atau xlsx |
language query | string | en atau id |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/campaigns/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Log Tayang
Apa yang ditayangkan setiap layar: umpan bertanda tangan dari CMS atau pemutar, atau CSV.
Impor Log Tayang Sebagai CSV
POST/sites/{id}/plays/upload
Kolom screen,creative,campaign,start,end, boleh diikuti campaign_id,creative_id dari CMS. Satu tayangan disimpan sekali per layar, materi iklan dan waktu mulai. Dicatat di log audit.
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X POST "https://<BOX_HOST>/api/dooh/v1/sites/1/plays/upload" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.post(
"https://<BOX_HOST>/api/dooh/v1/sites/1/plays/upload",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/plays/upload", {
method: "POST",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"stored": 12
}Tayangan Terbaru Suatu Periode Dan Apakah Kunci Sudah Diatur
GET/sites/{id}/plays
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
limit query | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/plays?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&limit=50" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/plays?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&limit=50",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/plays?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&limit=50", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"key": true,
"items": [
{
"camera_id": 1,
"screen": "Screen 1",
"creative_id": "<creative_id>",
"campaign_id": "<campaign_id>",
"start": "<start>",
"end": "<end>",
"source": "api",
"cms_campaign_id": "<cms_campaign_id>",
"cms_creative_id": "<cms_creative_id>"
}
]
}Log Tayang Bertanda Tangan Dari CMS Atau Pemutar
POST/feeds/plays/{site}
Ditandatangani dengan kunci log tayang lokasi dengan cara Standard Webhooks: webhook-id, webhook-timestamp (dalam 5 menit) dan webhook-signature: v1,<base64 HMAC-SHA256 dari id.timestamp.body>; id yang berulang ditolak. Layar disebut dengan namanya di dasbor; campaign_id dan creative_id (opsional) adalah id dari CMS, yang dicocokkan lebih dulu oleh pengelola kampanye.
Autentikasi: Kunci log tayang lokasi (dibuat oleh Admin lokasi di dasbor); tanpa token API.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
sitewajib path | integer | |
webhook-idwajib header | string | Id unik untuk pesan ini, paling banyak 128 karakter. Id yang berulang ditolak. |
webhook-timestampwajib header | string | Waktu penandatanganan dalam detik Unix; harus dalam 5 menit dari jam perangkat. |
webhook-signaturewajib header | string | v1, diikuti HMAC-SHA256 dalam base64 atas <webhook-id>.<webhook-timestamp>.<body> dengan kunci lokasi (bagian base64 setelah whsec_). Beberapa tanda tangan boleh diberikan, dipisahkan spasi. |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
playswajib | object[] | |
plays[].screenwajib | string | |
plays[].creativewajib | string | |
plays[].campaignwajib | string | |
plays[].startwajib | string | |
plays[].endwajib | string | |
plays[].campaign_id | string | id kampanye dari CMS (opsional) |
plays[].creative_id | string | id materi iklan dari CMS (opsional) |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X POST "https://<BOX_HOST>/api/dooh/v1/feeds/plays/1" \
-H "webhook-id: <WEBHOOK_ID>" \
-H "webhook-timestamp: <WEBHOOK_TIMESTAMP>" \
-H "webhook-signature: <WEBHOOK_SIGNATURE>" \
-H "Content-Type: application/json" \
-d '{"plays":[{"screen":"Lobby Screen","creative":"Coffee 15s","campaign":"Morning Coffee","start":"2026-11-02T07:00:00+07:00","end":"2026-11-02T07:00:15+07:00","campaign_id":"CMP-1001","creative_id":"CRV-2001"}]}'import requests
r = requests.post(
"https://<BOX_HOST>/api/dooh/v1/feeds/plays/1",
headers={"webhook-id": "<WEBHOOK_ID>", "webhook-timestamp": "<WEBHOOK_TIMESTAMP>", "webhook-signature": "<WEBHOOK_SIGNATURE>"},
json={
"plays": [
{
"screen": "Lobby Screen",
"creative": "Coffee 15s",
"campaign": "Morning Coffee",
"start": "2026-11-02T07:00:00+07:00",
"end": "2026-11-02T07:00:15+07:00",
"campaign_id": "CMP-1001",
"creative_id": "CRV-2001"
}
]
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/feeds/plays/1", {
method: "POST",
headers: { "webhook-id": "<WEBHOOK_ID>", "webhook-timestamp": "<WEBHOOK_TIMESTAMP>", "webhook-signature": "<WEBHOOK_SIGNATURE>", "Content-Type": "application/json" },
body: JSON.stringify({
"plays": [
{
"screen": "Lobby Screen",
"creative": "Coffee 15s",
"campaign": "Morning Coffee",
"start": "2026-11-02T07:00:00+07:00",
"end": "2026-11-02T07:00:15+07:00",
"campaign_id": "CMP-1001",
"creative_id": "CRV-2001"
}
]
}),
});
console.log(r.status, await r.text());Respons 200
{
"stored": 12
}Umpan Audiens
Umpan audiens per layar dan interval yang dilindungi token.
Apakah Token Umpan Audiens Lokasi Sudah Diatur, Dan URL Umpannya
GET/sites/{id}/audience-feed
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/audience-feed" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/audience-feed",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/audience-feed", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"site": 12,
"token": true,
"url": "https://<RECEIVER_HOST>/hooks/arsa"
}Audiens Per Layar Dan Interval, Untuk Server Iklan
GET/feeds/audience/{site}
Interval 15 menit, satu jam atau satu hari di zona waktu lokasi, paling lama 31 hari: OTS, impresi, penonton yang terlibat dan perhatian pada impresi. Kirim token umpan audiens lokasi sebagai Authorization: Bearer <FEED_TOKEN>.
Autentikasi: Token umpan audiens lokasi (dibuat oleh Admin lokasi di dasbor); tanpa token API.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
sitewajib path | integer | |
fromwajib query | string | RFC 3339 |
towajib query | string | RFC 3339 |
bucket query | string | 15m, hour (bawaan) atau day |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/feeds/audience/1?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <FEED_TOKEN>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/feeds/audience/1?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00",
headers={"Authorization": "Bearer <FEED_TOKEN>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/feeds/audience/1?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <FEED_TOKEN>" },
});
console.log(r.status, await r.text());Respons 200
{
"site": 12,
"timezone": "Asia/Jakarta",
"from": "2026-11-02T08:00:00Z",
"to": "2026-11-02T08:00:00Z",
"bucket": "15m",
"definitions": {
"ots": "<ots>",
"impressions": "<impressions>",
"engaged": "<engaged>",
"attention_s": "<attention_s>"
},
"screens": [
{
"camera_id": 1,
"screen": "Screen 1",
"intervals": [
{
"start": "<start>",
"ots": 12,
"impressions": 12,
"engaged": 12,
"attention_s": 60
}
]
}
]
}Pengaturan
Kapan penonton dianggap memperhatikan atau terlibat, ambang kerumunan, harga per slot, retensi, dan layar setiap kamera.
Pengaturan DOOH Audience Meter Di Lokasi
GET/sites/{id}/settings
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/sites/1/settings" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/sites/1/settings",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/settings", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"noticed_s": 60,
"engaged_s": 60,
"crowd_threshold": 12,
"stats_days": 30,
"price_per_slot": 12,
"version": 3
}Ubah Pengaturan DOOH Audience Meter Di Lokasi (Diterapkan Ke Setiap Kamera Di Lokasi; Dicatat Di Log Audit)
PUT/sites/{id}/settings
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
noticed_swajib | number | perhatian yang menjadikan impresi |
engaged_swajib | number | perhatian yang menjadikan penonton terlibat; paling sedikit noticed_s |
crowd_threshold | integer | null: tanpa peringatan kerumunan |
stats_dayswajib | integer | |
price_per_slot | number | IDR per tayangan, untuk perkiraan biaya dan CPM; null: tanpa perkiraan |
version | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X PUT "https://<BOX_HOST>/api/dooh/v1/sites/1/settings" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"noticed_s":60,"engaged_s":60,"crowd_threshold":12,"stats_days":30,"price_per_slot":12,"version":3}'import requests
r = requests.put(
"https://<BOX_HOST>/api/dooh/v1/sites/1/settings",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"noticed_s": 60,
"engaged_s": 60,
"crowd_threshold": 12,
"stats_days": 30,
"price_per_slot": 12,
"version": 3
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/sites/1/settings", {
method: "PUT",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"noticed_s": 60,
"engaged_s": 60,
"crowd_threshold": 12,
"stats_days": 30,
"price_per_slot": 12,
"version": 3
}),
});
console.log(r.status, await r.text());Respons 200
{
"noticed_s": 60,
"engaged_s": 60,
"crowd_threshold": 12,
"stats_days": 30,
"price_per_slot": 12,
"version": 3
}Layar Kamera: Namanya Dan Letaknya Dilihat Dari Kamera
GET/cameras/{id}/screen
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/dooh/v1/cameras/1/screen" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/dooh/v1/cameras/1/screen",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/cameras/1/screen", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"camera": 12,
"name": "Main gate",
"yaw_offset_deg": 90,
"pitch_offset_deg": 90,
"cone_yaw_deg": 90,
"cone_pitch_deg": 90,
"version": 3
}Atur Layar Kamera (Dicatat Di Log Audit)
PUT/cameras/{id}/screen
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: write.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer |
Body
| Kolom | Tipe | Deskripsi |
|---|---|---|
namewajib | string | |
yaw_offset_deg | number | sudut yaw kepala orang yang melihat ke layar |
pitch_offset_deg | number | |
cone_yaw_deg | number | |
cone_pitch_deg | number | |
version | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem details RFC 9457 |
403 | Problem details RFC 9457 |
404 | Problem details RFC 9457 |
409 | Problem details RFC 9457 |
422 | Problem details RFC 9457 |
502 | Problem details RFC 9457 |
Permintaan
curl -s -X PUT "https://<BOX_HOST>/api/dooh/v1/cameras/1/screen" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"name":"Main gate","yaw_offset_deg":90,"pitch_offset_deg":90,"cone_yaw_deg":90,"cone_pitch_deg":90,"version":3}'import requests
r = requests.put(
"https://<BOX_HOST>/api/dooh/v1/cameras/1/screen",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"name": "Main gate",
"yaw_offset_deg": 90,
"pitch_offset_deg": 90,
"cone_yaw_deg": 90,
"cone_pitch_deg": 90,
"version": 3
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/dooh/v1/cameras/1/screen", {
method: "PUT",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"name": "Main gate",
"yaw_offset_deg": 90,
"pitch_offset_deg": 90,
"cone_yaw_deg": 90,
"cone_pitch_deg": 90,
"version": 3
}),
});
console.log(r.status, await r.text());Respons 200
{
"camera": 12,
"name": "Main gate",
"yaw_offset_deg": 90,
"pitch_offset_deg": 90,
"cone_yaw_deg": 90,
"cone_pitch_deg": 90,
"version": 3
}