Dokumentasi / AI Box Dan Software Analitik Video / Autentikasi Dan Cakupan
Autentikasi Dan Cakupan
Akun API dan tokennya, empat cakupan, data pribadi dan bentuk anonim, batas laju, serta galat yang dikembalikan API AI Box kepada sistem Anda.
Sistem Anda memanggil API AI Box dengan token sebuah akun API. Akun itu milik sistem Anda, memiliki namanya sendiri di log audit, dan hanya melihat lokasi serta data yang diberikan kepadanya.
Membuat Akun API
Admin membuat akun di dasbor, pada halaman Akun API:
- Beri nama (3 sampai 64 karakter
a-z,0-9dan. _ -, misalnyaerp-sync). Log audit menampilkan panggilannya sebagaiapi:erp-sync. - Beri peran di satu lokasi atau lebih: Pemantau untuk membaca, Admin untuk juga mengubah pengaturan lokasi itu.
- Pilih cakupannya (di bawah) dan tanggal berakhir, paling lama satu tahun ke depan.
- Simpan, lalu salin tokennya. Token hanya ditampilkan kali ini.
Token berbentuk arsa_pat_ diikuti 43 karakter. Simpan sebagai rahasia di sistem Anda. Jika bocor, buat token baru di
halaman yang sama (Buat token baru): token lama langsung berhenti berlaku. Cabut menghentikan akun untuk
seterusnya; panggilannya tetap ada di log audit.
Pemilik perangkat mengelola setiap akun. Admin suatu lokasi mengelola akun yang semua lokasinya ia kelola.
Mengirim Token
Kirim token di header Authorization, setelah kata Bearer dan satu spasi:
curl --cacert box.pem \
-H "Authorization: Bearer <API_KEY>" \
"https://<BOX_HOST>/api/v1/sites"
Token tidak memerlukan sesi maupun token CSRF. Cookie yang dikirim bersamanya diabaikan.
Sertifikat Perangkat
Dasbor melayani HTTPS dengan sertifikat milik perangkat. Berikan salinannya kepada klien Anda (box.pem di atas) agar
sambungan terverifikasi.
Pada ARSA AI Video Analytics Software, sertifikatnya adalah sertifikat yang dilayani dasbor di server Anda; panel yang sama menampilkan dan mengunduhnya, dan nama yang dicakupnya adalah milik server Anda.
Sambungkan dengan nama host perangkat atau dengan alamat LAN-nya: sertifikat milik perangkat mencakup keduanya, juga
<host>.local. Admin melihat nama dan alamat yang dicakupnya di samping tombol unduh (Berlaku untuk), dan
getBoxCertificateInfo mencantumkannya sebagai names. Pakai
salah satunya sebagai <BOX_HOST>, karena jika tidak, klien menolak sambungan.
- Dari Admin: Admin mengunduhnya di dasbor (Sistem, lalu Akun API, lalu Unduh sertifikat perangkat) dan memberikan berkas itu kepada Anda beserta sidik jari SHA-256 yang tampil di samping tombol.
- Dengan token Anda: akun dengan cakupan
readdapat mengambilnya sendiri (getBoxCertificate). Klien Anda belum memercayai perangkat, jadi unduhan pertama ini melewati pemeriksaan (--insecure); pemeriksaan sidik jari di bawah menggantikannya.
curl --insecure \
-H "Authorization: Bearer <API_KEY>" \
-o box.pem \
"https://<BOX_HOST>/api/v1/system/certificate"
Dengan cara mana pun, bandingkan sidik jari berkas dengan sidik jari yang dibaca Admin di dasbor sebelum Anda memakainya:
openssl x509 -noout -fingerprint -sha256 -in box.pem
Jika berbeda, jangan pakai berkas itu dan beri tahu Admin. Sertifikat baru di perangkat (misalnya sertifikat milik pelanggan) memiliki sidik jari baru: ambil berkasnya lagi dan bandingkan lagi.
Hal yang sama terjadi jika alamat perangkat berubah (sewa DHCP baru, jaringan lain): saat dinyalakan berikutnya, perangkat menerbitkan ulang sertifikatnya untuk alamat baru dengan kunci yang sama, dan sidik jarinya berubah. Unduh berkasnya lagi, periksa sidik jari baru dengan Admin, lalu ganti salinan lama di klien Anda.
Cakupan
| Cakupan | Mengizinkan |
|---|---|
read |
Permintaan GET: data dan pengaturan |
write |
Perubahan: POST, PUT, PATCH, DELETE (pengaturan, menandai peringatan, entri daftar pantau) |
export |
Mengunduh file: ekspor log, laporan, rekaman dan klip |
personal_data |
Nama, nomor polisi, wajah, foto bukti, potongan gambar dan video |
Setiap operasi di referensi mencantumkan cakupan dan peran lokasi yang diperlukannya. Panggilan tanpa cakupan yang
diperlukan dijawab 403 dengan kode scope_required.
Hanya pemilik perangkat yang dapat memberi personal_data, dan dasbor meminta pemilik mengonfirmasi dengan kata sandi
dan kode dua langkahnya.
Data Pribadi Dan Bentuk Anonim
Tanpa personal_data, sebagian operasi menjawab dengan bentuk anonim dan sebagian lainnya ditolak:
- Bentuk anonim: log deteksi Basic Safety Guard dan ekspornya (tanpa nama, tanpa bukti,
named: false); log kendaraan Traffic Monitor, ekspornya dan insiden (tanpa nomor polisi, tanpa potongan gambar); peringatan (detailstanpa nomor polisi, orang, nama, bukti atau media, dan tanpa rekaman). - Ditolak: video langsung, rekaman dan klip, cuplikan kamera, kontak peringatan dan log pengirimannya, angka per pekerja dan gambar bukti Basic Safety Guard, daftar pantau Traffic Monitor, potongan gambar kendaraan dan pencarian log berdasarkan nomor polisi.
Smart Retail Counter dan DOOH Audience Meter menghitung orang secara anonim, sehingga API keduanya tidak memuat data pribadi.
Setiap panggilan akun yang memiliki personal_data, setiap ekspor dan setiap perubahan dicatat di log audit perangkat.
Yang Tidak Dapat Dilakukan Token
Sebagian tindakan memerlukan orang yang masuk ke dasbor. Tindakan itu dijawab 403 dengan kode api_account_refused
untuk token apa pun: masuk dan kata sandi, pengguna dan akun API, lisensi, pembaruan, akses jarak jauh, pemeliharaan
dan akses dukungan ARSA, pengaturan privasi, basis data wajah dan saluran notifikasi. Membuat kunci dan token umpan
mesin juga ditolak; Admin lokasi membuatnya di dasbor.
Batas Laju
Setiap akun API boleh membuat 600 permintaan per menit secara bawaan (pemilik perangkat dapat mengubah batasnya). Di
atas batas itu perangkat menjawab 429 dengan kode rate_limited dan header Retry-After dalam detik. Tunggu selama
itu, lalu lanjutkan.
Galat
Galat berupa problem details RFC 9457 (application/problem+json) dengan code yang tetap, title singkat, status
dan sering kali detail:
{
"code": "scope_required",
"title": "Forbidden",
"status": 403,
"detail": "This call needs the scope read."
}
| Status | Kode | Arti |
|---|---|---|
400 |
bad_request, malformed_json |
Permintaan tidak berbentuk benar |
401 |
token_invalid |
Token tidak ada, salah, dicabut atau kedaluwarsa (dengan WWW-Authenticate: Bearer) |
403 |
scope_required |
Akun tidak memiliki cakupan yang diperlukan operasi |
403 |
api_account_refused |
Operasi hanya untuk orang di dasbor |
404 |
misalnya site_not_found |
Objek tidak ada, atau akun tidak memiliki peran di lokasinya |
409 |
misalnya changed_meanwhile |
Konflik, misalnya version yang sudah usang |
412 |
version_mismatch |
ETag yang dikirim di If-Match sudah usang |
413 |
body_too_large |
Isi permintaan terlalu besar |
422 |
misalnya invalid_body |
Sebagian kolom tidak valid; errors mencantumkan masing-masing dengan pointer dan detail |
428 |
if_match_required |
Perubahan memerlukan If-Match |
429 |
rate_limited |
Terlalu banyak panggilan; lihat Retry-After |
502, 503 |
engine_refused, engine_unavailable |
Mesin analitik perangkat sedang sibuk atau baru menyala; coba lagi nanti |
Bangun integrasi Anda berdasarkan code, karena teks detail dapat berubah.
Konvensi
- Waktu memakai RFC 3339. Kirim periode sebagai
fromdantodengan selisih zona waktu, misalnyafrom=2026-11-01T00:00:00%2B07:00. Angka per jam dan per hari mengikuti zona waktu lokasi. - Daftar panjang dibagi per halaman: berikan
limit, lalunext_beforedari jawaban sebagaibeforeuntuk halaman berikutnya.next_beforebernilainulldi halaman terakhir. - Perubahan yang dapat berbenturan membawa
version(pengaturan) atauETagyang dikirim kembali diIf-Match(kamera dan gambarnya). Nilai yang usang ditolak, jadi baca lagi lalu ulangi.
1.0.0. Diperbarui 2026-11-06