Dokumentasi / AI Box Dan Software Analitik Video / Referensi API
API Basic Safety Guard
API Basic Safety Guard: alat pelindung diri (APD) pada kamera di suatu lokasi. API ini memberikan indeks kepatuhan dan trennya, angka per area APD, peta panas per jam, log deteksi beserta ekspornya, dan pengaturan lokasi.
Data pribadi. Nama pekerja dan gambar bukti hanya ada bila pemilik lokasi mengaktifkan akuntabilitas. Token hanya melihatnya dengan cakupan personal_data; tanpa cakupan itu, log deteksi dan ekspornya berbentuk anonim (tanpa nama, tanpa bukti, named: false).
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.
1.0.0
Kepatuhan
Indeks kepatuhan, trennya, area, peta panas per jam dan angka per pekerja.
Angka Utama Suatu Periode
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 | date-time | |
towajib query | date-time |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/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/bsg/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/bsg/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
{
"index": 91.4,
"assessed_minutes": 5220,
"exposure_minutes": 5710,
"items": {
"hard_hat": 96.2,
"vest": 93.8,
"boots": null,
"gloves": null,
"goggles": null
},
"violations": 17,
"hazard_entries": 2,
"on_site": {
"people": 34,
"flagged": 1
},
"target": 95,
"bands": {
"red": 80,
"green": 95
},
"required_items": [
"hard_hat",
"vest"
],
"unique_people": {
"period": 52,
"now": 9
}
}Indeks Dan Item Per Jam Atau Hari (Waktu Lokasi)
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 | date-time | |
towajib query | date-time | |
bucket query | string |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/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/bsg/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/bsg/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",
"points": [
{
"t": "2026-11-02T08:00:00Z",
"index": 92.5,
"assessed_minutes": 60,
"exposure_minutes": 60,
"items": {
"hard_hat": 92.5,
"vest": 92.5,
"boots": 92.5,
"gloves": 92.5,
"goggles": 92.5
}
}
]
}Per Area APD, Yang Terburuk Lebih Dulu
GET/sites/{id}/areas
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 | date-time | |
towajib query | date-time |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/areas?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/bsg/v1/sites/1/areas?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/bsg/v1/sites/1/areas?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
{
"items": [
{
"area": "<area>",
"violations": 12,
"index": 92.5,
"assessed_minutes": 60,
"exposure_minutes": 60,
"items": {
"hard_hat": 92.5,
"vest": 92.5,
"boots": 92.5,
"gloves": 92.5,
"goggles": 92.5
}
}
]
}Pelanggaran Per Hari Dalam Seminggu Dan Slot 2 Jam Selama 7 Hari
GET/sites/{id}/heatmap
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
towajib query | date-time |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/heatmap?to=2026-11-02T00%3A00%3A00%2B07%3A00" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/heatmap?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/bsg/v1/sites/1/heatmap?to=2026-11-02T00%3A00%3A00%2B07%3A00", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"days": [
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
],
[
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12,
12
]
]
}Orang Unik Di Lokasi Per Jam (Satu Orang Di Beberapa Kamera Dihitung Sekali)
GET/sites/{id}/people
Orang unik per jam: orang yang terlihat di kamera-kamera lokasi, masing-masing dihitung sekali. Jawabannya memberikan jumlah orang per jam (hanya jam yang ada orang di lokasi), total periode dan berapa orang yang terlihat dalam satu menit terakhir. Orang yang tidak dapat dihubungkan oleh perangkat di antara kamera dihitung sekali per kamera. Anonim: tanpa nama. Jam dimulai pada jam UTC (jam lokal di zona waktu Indonesia).
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 | date-time | |
towajib query | date-time | |
bucket query | enum | hour (satu-satunya interval) hour |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/people?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&bucket=hour" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/people?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&bucket=hour",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/people?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&bucket=hour", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"total": 52,
"now": 9,
"bucket": "hour",
"points": [
{
"t": "2026-11-02T00:00:00Z",
"people": 21
},
{
"t": "2026-11-02T01:00:00Z",
"people": 34
},
{
"t": "2026-11-02T02:00:00Z",
"people": 29
}
]
}Angka Per Pekerja Yang Dikenali (Akuntabilitas Aktif)
GET/sites/{id}/workers
Siapa yang dapat memanggil: Akun yang menjadi Admin di lokasi tersebut. Cakupan token: read, personal_data.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | date-time | |
towajib query | date-time |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/workers?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/bsg/v1/sites/1/workers?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/bsg/v1/sites/1/workers?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
{
"items": [
{
"person_id": "<person_id>",
"name": "Main gate",
"employee_id": "<employee_id>",
"company": "<company>",
"violations": 12,
"last_seen": "<last_seen>",
"last_seen_camera": 12,
"index": 92.5,
"assessed_minutes": 60,
"exposure_minutes": 60,
"items": {
"hard_hat": 92.5,
"vest": 92.5,
"boots": 92.5,
"gloves": 92.5,
"goggles": 92.5
}
}
]
}Log Deteksi
Setiap orang yang terlihat, dengan APD dan pelanggarannya; ekspor dan gambar bukti.
Log Deteksi, 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. Tanpa personal_data jawabannya berbentuk anonim: tanpa nama, nomor polisi, gambar atau rekaman.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | date-time | |
towajib query | date-time | |
camera query | integer | |
before query | string | |
limit query | integer |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&before=2026-11-02T08%3A00%3A00Z&limit=50" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&before=2026-11-02T08%3A00%3A00Z&limit=50",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/logs?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&before=2026-11-02T08%3A00%3A00Z&limit=50", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"named": false,
"next_before": "2026-11-02T01:12:40Z",
"items": [
{
"track": "11:4821",
"camera_id": 11,
"first": "2026-11-02T01:14:05Z",
"last": "2026-11-02T01:15:32Z",
"areas": [
"Loading Bay"
],
"items": {
"hard_hat": 100,
"vest": 38.5,
"boots": null,
"gloves": null,
"goggles": null
},
"index": 69.2,
"violations": 1,
"person": null,
"evidence": null
}
]
}Log Deteksi Suatu Periode Sebagai File CSV Atau XLSX (Filter Dan Akses Sama Dengan Log; Paling Banyak 20 000 Baris; Waktu Di Zona Waktu Lokasi)
GET/sites/{id}/logs/export
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read, export. Tanpa personal_data jawabannya berbentuk anonim: tanpa nama, nomor polisi, gambar atau rekaman.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
fromwajib query | date-time | |
towajib query | date-time | |
camera query | integer | |
format query | enum | csv (bawaan) atau xlsx csv, xlsx |
language query | enum | bahasa judul kolom (bawaan en) en, id |
Respons
| Status | Arti |
|---|---|
200 | file (Content-Disposition: attachment) |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&format=csv&language=en" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&format=csv&language=en",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/logs/export?from=2026-11-01T00%3A00%3A00%2B07%3A00&to=2026-11-02T00%3A00%3A00%2B07%3A00&camera=1&format=csv&language=en", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Gambar Bukti Dari Log Lokasi Ini (Akuntabilitas Aktif)
GET/sites/{id}/media/{ref}
Siapa yang dapat memanggil: Akun dengan peran (Pemantau atau Admin) di lokasi tersebut. Cakupan token: read, personal_data.
Parameter
| Kolom | Tipe | Deskripsi |
|---|---|---|
idwajib path | integer | |
refwajib path | string |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/media/{ref}" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/media/{ref}",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/media/{ref}", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Pengaturan
APD wajib, berapa lama sampai pelanggaran dihitung, target dan rentang warna, retensi, serta sensitivitas setiap kamera.
Pengaturan Basic Safety Guard Di Lokasi (Nilai Bawaan Pada Versi 0)
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 RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/sites/1/settings" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/sites/1/settings",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/settings", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"required_items": [
"hard_hat"
],
"violation_s": 60,
"target": 92.5,
"band_red": 92.5,
"band_green": 92.5,
"stats_days": 30,
"evidence_days": 12,
"identity_days": 12,
"version": 3,
"site_linker": {
"enabled": true,
"reid_threshold": 0.8,
"reid_margin": 0.1,
"max_gap_s": 120,
"overlapping_cameras": [
[
12,
12
]
]
}
}Ubah Pengaturan Basic Safety Guard Di Lokasi (Diterapkan Ke Setiap Kamera Di Lokasi)
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 |
|---|---|---|
required_itemswajib | enum[] | |
violation_swajib | number | |
targetwajib | number | |
band_redwajib | number | |
band_greenwajib | number | |
stats_dayswajib | integer | |
evidence_dayswajib | integer | |
identity_dayswajib | integer | |
version | integer | versi yang dibaca; versi lama dijawab 409 changed_meanwhile |
site_linker | object | Menghubungkan orang di antara kamera: orang yang terlihat di beberapa kamera lokasi dihitung sekali (orang unik, satu peringatan per orang dan APD yang tidak dipakai). Aktif secara bawaan dengan nilai yang hati-hati; tidak disertakan dalam permintaan: tidak berubah. |
site_linker.enabled | boolean | false: setiap penampakan di setiap kamera dihitung sebagai orang tersendiri |
site_linker.reid_threshold | number | ambang kemiripan: seberapa mirip dua penampakan di kamera berbeda agar dapat dihubungkan (makin tinggi makin ketat) |
site_linker.reid_margin | number | selisih: seberapa jauh kecocokan terbaik harus mengungguli setiap orang lain sebelum dua penampakan dihubungkan |
site_linker.max_gap_s | number | jeda terlama, dalam detik, antara dua penampakan satu orang di kamera berbeda |
site_linker.overlapping_cameras | integer[][] | pasangan ID kamera yang pandangannya mencakup tempat yang sama (seseorang dapat terlihat di keduanya sekaligus) |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X PUT "https://<BOX_HOST>/api/bsg/v1/sites/1/settings" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"required_items":["hard_hat"],"violation_s":60,"target":92.5,"band_red":92.5,"band_green":92.5,"stats_days":30,"evidence_days":12,"identity_days":12,"version":3,"site_linker":{"enabled":true,"reid_threshold":0.8,"reid_margin":0.1,"max_gap_s":120,"overlapping_cameras":[[12,12]]}}'import requests
r = requests.put(
"https://<BOX_HOST>/api/bsg/v1/sites/1/settings",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"required_items": [
"hard_hat"
],
"violation_s": 60,
"target": 92.5,
"band_red": 92.5,
"band_green": 92.5,
"stats_days": 30,
"evidence_days": 12,
"identity_days": 12,
"version": 3,
"site_linker": {
"enabled": True,
"reid_threshold": 0.8,
"reid_margin": 0.1,
"max_gap_s": 120,
"overlapping_cameras": [
[
12,
12
]
]
}
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/sites/1/settings", {
method: "PUT",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"required_items": [
"hard_hat"
],
"violation_s": 60,
"target": 92.5,
"band_red": 92.5,
"band_green": 92.5,
"stats_days": 30,
"evidence_days": 12,
"identity_days": 12,
"version": 3,
"site_linker": {
"enabled": true,
"reid_threshold": 0.8,
"reid_margin": 0.1,
"max_gap_s": 120,
"overlapping_cameras": [
[
12,
12
]
]
}
}),
});
console.log(r.status, await r.text());Respons 200
{
"required_items": [
"hard_hat"
],
"violation_s": 60,
"target": 92.5,
"band_red": 92.5,
"band_green": 92.5,
"stats_days": 30,
"evidence_days": 12,
"identity_days": 12,
"version": 3,
"site_linker": {
"enabled": true,
"reid_threshold": 0.8,
"reid_margin": 0.1,
"max_gap_s": 120,
"overlapping_cameras": [
[
12,
12
]
]
}
}Tingkat Keyakinan Per Kamera (null: Bawaan)
GET/cameras/{id}/sensitivity
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 RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X GET "https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity" \
-H "Authorization: Bearer <API_KEY>"import requests
r = requests.get(
"https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity",
headers={"Authorization": "Bearer <API_KEY>"},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity", {
method: "GET",
headers: { "Authorization": "Bearer <API_KEY>" },
});
console.log(r.status, await r.text());Respons 200
{
"camera": 12,
"default": "<default>",
"thresholds": {
"person": 0.95,
"hard_hat": 0.95,
"vest": 0.95,
"boots": 0.95,
"gloves": 0.95,
"goggles": 0.95
}
}Ubah Nilainya (Nilai Kosong Mengembalikan Satu Item Ke Bawaan)
PUT/cameras/{id}/sensitivity
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 |
|---|---|---|
thresholdswajib | object | ambang deteksi; null mempertahankan nilai bawaan hasil kalibrasi |
thresholds.person | number | |
thresholds.hard_hat | number | |
thresholds.vest | number | |
thresholds.boots | number | |
thresholds.gloves | number | |
thresholds.goggles | number |
Respons
| Status | Arti |
|---|---|
200 | OK |
401 | Problem RFC 9457 |
403 | Problem RFC 9457 |
404 | Problem RFC 9457 |
409 | Problem RFC 9457 |
422 | Problem RFC 9457 |
502 | Problem RFC 9457 |
Permintaan
curl -s -X PUT "https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"thresholds":{"person":0.95,"hard_hat":0.95,"vest":0.95,"boots":0.95,"gloves":0.95,"goggles":0.95}}'import requests
r = requests.put(
"https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity",
headers={"Authorization": "Bearer <API_KEY>"},
json={
"thresholds": {
"person": 0.95,
"hard_hat": 0.95,
"vest": 0.95,
"boots": 0.95,
"gloves": 0.95,
"goggles": 0.95
}
},
)
print(r.status_code, r.text)const r = await fetch("https://<BOX_HOST>/api/bsg/v1/cameras/1/sensitivity", {
method: "PUT",
headers: { "Authorization": "Bearer <API_KEY>", "Content-Type": "application/json" },
body: JSON.stringify({
"thresholds": {
"person": 0.95,
"hard_hat": 0.95,
"vest": 0.95,
"boots": 0.95,
"gloves": 0.95,
"goggles": 0.95
}
}),
});
console.log(r.status, await r.text());Respons 200
{
"camera": 12,
"default": "<default>",
"thresholds": {
"person": 0.95,
"hard_hat": 0.95,
"vest": 0.95,
"boots": 0.95,
"gloves": 0.95,
"goggles": 0.95
}
}