DokumentasiENarsa.technology

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time
bucket querystring

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
towajib querydate-time

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time
bucket queryenumhour (satu-satunya interval) hour

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time
camera queryinteger
before querystring
limit queryinteger

Respons

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

KolomTipeDeskripsi
idwajib pathinteger
fromwajib querydate-time
towajib querydate-time
camera queryinteger
format queryenumcsv (bawaan) atau xlsx csv, xlsx
language queryenumbahasa judul kolom (bawaan en) en, id

Respons

StatusArti
200file (Content-Disposition: attachment)
401Problem RFC 9457
403Problem RFC 9457
404Problem RFC 9457
422Problem RFC 9457
502Problem 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

KolomTipeDeskripsi
idwajib pathinteger
refwajib pathstring

Respons

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

KolomTipeDeskripsi
idwajib pathinteger

Respons

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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
required_itemswajibenum[]
violation_swajibnumber
targetwajibnumber
band_redwajibnumber
band_greenwajibnumber
stats_dayswajibinteger
evidence_dayswajibinteger
identity_dayswajibinteger
versionintegerversi yang dibaca; versi lama dijawab 409 changed_meanwhile
site_linkerobjectMenghubungkan 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.enabledbooleanfalse: setiap penampakan di setiap kamera dihitung sebagai orang tersendiri
site_linker.reid_thresholdnumberambang kemiripan: seberapa mirip dua penampakan di kamera berbeda agar dapat dihubungkan (makin tinggi makin ketat)
site_linker.reid_marginnumberselisih: seberapa jauh kecocokan terbaik harus mengungguli setiap orang lain sebelum dua penampakan dihubungkan
site_linker.max_gap_snumberjeda terlama, dalam detik, antara dua penampakan satu orang di kamera berbeda
site_linker.overlapping_camerasinteger[][]pasangan ID kamera yang pandangannya mencakup tempat yang sama (seseorang dapat terlihat di keduanya sekaligus)

Respons

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

KolomTipeDeskripsi
idwajib pathinteger

Respons

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

KolomTipeDeskripsi
idwajib pathinteger

Body

KolomTipeDeskripsi
thresholdswajibobjectambang deteksi; null mempertahankan nilai bawaan hasil kalibrasi
thresholds.personnumber
thresholds.hard_hatnumber
thresholds.vestnumber
thresholds.bootsnumber
thresholds.glovesnumber
thresholds.gogglesnumber

Respons

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