DokumentasiENarsa.technology

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
bucket querystringhour atau day

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
namewajibstringunik di lokasi (dipangkas, tanpa membedakan huruf besar kecil): tayangan dicocokkan dengannya
advertiserstring
flight_startwajibdateYYYY-MM-DD, hari lokal lokasi, termasuk hari itu
flight_endwajibdatesama dengan atau setelah flight_start
screenswajibinteger[]id kamera dari layar di lokasi
external_idstringid kampanye dari CMS, unik di lokasi; null atau kosong: tidak ada
creativesobject[]
creatives[].namewajibstring
creatives[].length_swajibinteger
creatives[].external_idstringid materi iklan dari CMS; null atau kosong: tidak ada
versionintegeruntuk perubahan: versi yang dibaca

Respons

StatusArti
201OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
recordwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
recordwajib pathinteger

Body

KolomTipeDeskripsi
namewajibstringunik di lokasi (dipangkas, tanpa membedakan huruf besar kecil): tayangan dicocokkan dengannya
advertiserstring
flight_startwajibdateYYYY-MM-DD, hari lokal lokasi, termasuk hari itu
flight_endwajibdatesama dengan atau setelah flight_start
screenswajibinteger[]id kamera dari layar di lokasi
external_idstringid kampanye dari CMS, unik di lokasi; null atau kosong: tidak ada
creativesobject[]
creatives[].namewajibstring
creatives[].length_swajibinteger
creatives[].external_idstringid materi iklan dari CMS; null atau kosong: tidak ada
versionintegeruntuk perubahan: versi yang dibaca

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
recordwajib pathinteger

Respons

StatusArti
204OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
namewajibstringnama kampanye yang belum cocok (tanpa membedakan huruf besar kecil)

Respons

StatusArti
201OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
camera queryinteger
status querystringwalk_by, noticed atau engaged
age_band querystring
gender querystring
limit queryinteger
before querystringnext_before dari halaman sebelumnya

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
format querystringcsv atau xlsx
language querystringen atau id

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
format querystringcsv atau xlsx
language querystringen atau id

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
limit queryinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
sitewajib pathinteger
webhook-idwajib headerstringId unik untuk pesan ini, paling banyak 128 karakter. Id yang berulang ditolak.
webhook-timestampwajib headerstringWaktu penandatanganan dalam detik Unix; harus dalam 5 menit dari jam perangkat.
webhook-signaturewajib headerstringv1, 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

KolomTipeDeskripsi
playswajibobject[]
plays[].screenwajibstring
plays[].creativewajibstring
plays[].campaignwajibstring
plays[].startwajibstring
plays[].endwajibstring
plays[].campaign_idstringid kampanye dari CMS (opsional)
plays[].creative_idstringid materi iklan dari CMS (opsional)

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
sitewajib pathinteger
fromwajib querystringRFC 3339
towajib querystringRFC 3339
bucket querystring15m, hour (bawaan) atau day

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
noticed_swajibnumberperhatian yang menjadikan impresi
engaged_swajibnumberperhatian yang menjadikan penonton terlibat; paling sedikit noticed_s
crowd_thresholdintegernull: tanpa peringatan kerumunan
stats_dayswajibinteger
price_per_slotnumberIDR per tayangan, untuk perkiraan biaya dan CPM; null: tanpa perkiraan
versioninteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
namewajibstring
yaw_offset_degnumbersudut yaw kepala orang yang melihat ke layar
pitch_offset_degnumber
cone_yaw_degnumber
cone_pitch_degnumber
versioninteger

Respons

StatusArti
200OK
401Problem details RFC 9457
403Problem details RFC 9457
404Problem details RFC 9457
409Problem details RFC 9457
422Problem details RFC 9457
502Problem 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
}
Apakah halaman ini membantu?