API Reference — People Analytics
Endpoint REST API untuk membuat, mengelola, dan memantau pipeline People Analytics (MPA/MPAA).
← Kembali ke People Analytics
Penjelasan kemampuan, cara kerja, konfigurasi, dan best practice People Analytics.
Face Recognition
Kenali identitas wajah secara real-time dengan enrollment dan matching.
Semua endpoint pada halaman ini menggunakan basis URL dari variabel VISIONAIRE_API_URL yang dikonfigurasi pada instalasi Visionaire (default: http://localhost:4004). Tidak ada autentikasi tambahan yang diperlukan selain akses jaringan ke host tersebut — pastikan port sudah dapat dijangkau dari klien Anda.
Manajemen Pipeline
Endpoint untuk membuat, memantau, dan menghapus pipeline People Analytics. Setiap pipeline diidentifikasi oleh kombinasi node_num, stream_id, dan analytic_id.
Gunakan NFV4-MPA untuk analitik counting/dwelling/density tanpa atribut, atau NFV4-MPAA untuk menambahkan attribute classification (usia, gender, masker, kacamata, penutup kepala, warna pakaian).
Authorization
bearerAuth In: header
Path Parameters
Nomor node (0 untuk single-node deployment).
ID stream video yang akan diproses.
ID analitik: NFV4-MPA untuk People Analytics tanpa atribut, NFV4-MPAA untuk People Analytics dengan attribute classification.
"NFV4-MPA" | "NFV4-MPAA"Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X POST "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA" \ -H "Content-Type: application/json" \ -d '{ "object_confidence_threshold": 0.53, "sub_analytics": [ { "name": "counting", "is_active": true, "dumping_sampling_time": 500, "lines": [ { "id": "entrance", "name": "Main Entrance", "points": [ [ 0.2, 0.5 ], [ 0.8, 0.5 ] ], "direction": "both" } ] }, { "name": "roi_counting", "is_active": false }, { "name": "dwelling", "is_active": false }, { "name": "density", "is_active": false } ] }'{ "code": 200, "message": "Pipeline created successfully", "data": { "pipeline_id": "NFV4-MPA", "stream_id": "stream_001", "status": "running" }}{ "code": 400, "message": "Invalid configuration: lines array is required for counting"}Authorization
bearerAuth In: header
Path Parameters
Nomor node (0 untuk single-node deployment).
ID stream video yang akan diproses.
ID analitik: NFV4-MPA untuk People Analytics tanpa atribut, NFV4-MPAA untuk People Analytics dengan attribute classification.
"NFV4-MPA" | "NFV4-MPAA"Response Body
application/json
application/json
curl -X GET "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA"{ "code": 200, "data": { "analytic_id": "NFV4-MPA", "stream_id": "stream_001", "status": "running", "uptime_seconds": 3600, "processed_frames": 25200 }}{ "code": 404, "message": "Pipeline not found"}Authorization
bearerAuth In: header
Path Parameters
Nomor node (0 untuk single-node deployment).
ID stream video yang akan diproses.
ID analitik: NFV4-MPA untuk People Analytics tanpa atribut, NFV4-MPAA untuk People Analytics dengan attribute classification.
"NFV4-MPA" | "NFV4-MPAA"Response Body
application/json
application/json
curl -X DELETE "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA"{ "code": 200, "message": "Pipeline deleted successfully"}{ "code": 404, "message": "Pipeline not found"}Konfigurasi Pipeline
Endpoint untuk memperbarui parameter pipeline yang sedang berjalan tanpa perlu me-restart. Berguna untuk menyesuaikan threshold, mengaktifkan/menonaktifkan sub-analytics, atau mengubah posisi garis dan zona secara dinamis.
Authorization
bearerAuth In: header
Path Parameters
Nomor node.
ID stream video.
ID analitik.
"NFV4-MPA" | "NFV4-MPAA"Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X PUT "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA/config" \ -H "Content-Type: application/json" \ -d '{ "object_confidence_threshold": 0.6, "sub_analytics": [ { "name": "counting", "is_active": true, "object_confidence_threshold": 0.6 } ] }'{ "code": 200, "message": "Configuration updated successfully"}{ "code": 400, "message": "Cannot update configuration: invalid parameter value"}Visual Output
Endpoint untuk mendapatkan output visual dari pipeline yang berjalan — berguna untuk verifikasi konfigurasi garis counting dan polygon ROI.
Authorization
bearerAuth In: header
Path Parameters
Nomor node.
ID stream video.
ID analitik.
"NFV4-MPA" | "NFV4-MPAA"Query Parameters
Kualitas JPEG (1–100).
801 <= value <= 100Target frame rate stream.
71 <= value <= 30Response Body
multipart/x-mixed-replace
curl -X GET "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA/mjpeg""string"Authorization
bearerAuth In: header
Path Parameters
Nomor node.
ID stream video.
ID analitik.
"NFV4-MPA" | "NFV4-MPAA"Response Body
image/jpeg
curl -X GET "http://localhost:4004/pipeline/0/stream_001/NFV4-MPA/snapshot""string"Event Streaming (WebSocket)
Visionaire4 mengirim setiap event hasil deteksi/inferensi melalui WebSocket. Untuk berlangganan event yang dihasilkan oleh pipeline People Analytics pada stream tertentu, buka koneksi WebSocket ke endpoint berikut:
ws://<host>:4004/event_channel/{node_num}/{stream_id}/NFV4-MPASetelah koneksi terbuka, server akan langsung mendorong (push) setiap event ke client tanpa perlu handshake atau pesan subscribe. Tutup koneksi untuk berhenti menerima event.
Parameter Path
| Parameter | Tipe | Deskripsi |
|---|---|---|
node_num | integer | Nomor node tempat stream berjalan (0 = master) |
stream_id | string | ID stream yang akan dipantau |
Query Parameter (Opsional)
| Parameter | Tipe | Deskripsi |
|---|---|---|
logic | string | Filter event berdasarkan nama logic rule yang aktif pada pipeline. Tanpa parameter ini, semua event dari analitik akan dikirim. |
Format Pesan
Setiap event yang diterima berbentuk JSON dengan struktur berikut:
{
"event_id": "evt_123456",
"stream_id": "<stream_id>",
"analytic_id": "NFV4-MPA",
"node_num": 0,
"timestamp_ms": 1674123456789,
"primary_text": "5 people detected",
"secondary_text": "Zone A",
"pipeline_data": {
/* field spesifik module — lihat "Output yang Dihasilkan" pada index.mdx */
},
"image_jpeg": "base64-encoded JPEG..."
}Detail field pipeline_data untuk People Analytics dijelaskan pada Output yang Dihasilkan di halaman utama.
Contoh Koneksi
const ws = new WebSocket(
'ws://localhost:4004/event_channel/0/<stream_id>/NFV4-MPA'
);
ws.onmessage = (msg) => {
const event = JSON.parse(msg.data);
console.log(event.primary_text, event.pipeline_data);
};
ws.onerror = (err) => console.error('WebSocket error', err);
ws.onclose = () => console.log('Disconnected');import asyncio
import json
import websockets
async def listen():
url = "ws://localhost:4004/event_channel/0/<stream_id>/NFV4-MPA"
async with websockets.connect(url) as ws:
async for msg in ws:
event = json.loads(msg)
print(event["primary_text"], event["pipeline_data"])
asyncio.run(listen())Filter Berdasarkan Logic
Jika pipeline menjalankan beberapa logic rule (misalnya line-counting, ROI density), Anda dapat memfilter event hanya untuk satu logic dengan menambahkan query parameter:
ws://<host>:4004/event_channel/{node_num}/{stream_id}/NFV4-MPA?logic=<logic_name>Endpoint Channel Lainnya
Untuk mendengarkan event yang lebih luas (lintas analitik atau lintas stream), gunakan endpoint berikut yang dijelaskan pada Developer Guide:
| Endpoint | Cakupan |
|---|---|
WS /event_channel/ | Semua event dari seluruh node |
WS /event_channel/{node_num}/ | Semua event dari satu node |
WS /event_channel/{node_num}/{stream_id} | Semua event dari satu stream (semua analitik) |
People Analytics (MPAA / MPA2)
Analitik real-time untuk mendeteksi, menghitung, dan menganalisis orang dalam video — counting, dwelling, kepadatan, dan atribut demografis. Tersedia dalam dua varian: NFV4-MPAA dan NFV4-MPA2.
Vehicle Analytics (MVA/MVAA)
Analitik kendaraan real-time dengan counting, ROI counting, dwelling, density, dan klasifikasi atribut (warna, tipe, merek) untuk berbagai skenario traffic dan parkir.