Nodeflux Central
Live Events

API Reference — Events

Endpoint REST untuk mengambil event historis dan WebSocket channel untuk feed event real-time dari sistem analitik video.

Semua endpoint memerlukan header Authorization: Bearer <token>. Basis URL mengikuti variabel lingkungan VITE_API_URL yang dikonfigurasi pada instalasi Lenz. Jika Anda belum punya token, lihat halaman Otentikasi.


Event Historis

Endpoint untuk mengambil arsip event dengan cursor-based pagination dan filter multidimensi. Gunakan filter[timestamp_from] dan filter[timestamp_to] untuk membatasi rentang waktu.

GET
/api/event-history/{category}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

category*string

Kategori analitik: fra, mpaa, mvaa, ce, lpr, atau ppe.

Value in"fra" | "mpaa" | "mvaa" | "ce" | "lpr" | "ppe"

Query Parameters

limit?integer

Jumlah event per halaman.

Default20
cursor?string

Cursor untuk halaman berikutnya, diperoleh dari pagination.next_cursor pada respons sebelumnya.

include_total?boolean

Sertakan total count dalam respons. Berguna untuk menampilkan jumlah halaman, namun memperlambat query pada dataset besar.

Defaultfalse
sort?string

Format: field:direction. Contoh: event_time:desc, plate_number:asc.

timezone?string

Timezone untuk konversi waktu tampilan. Contoh: Asia/Jakarta.

instance?string

ID instance untuk mode federation. Kosongkan untuk non-federation.

filter[timestamp_from]?string

Batas awal waktu event (ISO 8601).

Formatdate-time
filter[timestamp_to]?string

Batas akhir waktu event (ISO 8601).

Formatdate-time
filter[stream_ids]?string

ID stream yang ingin difilter, pisahkan koma untuk multiple. Contoh: eb7022a64d9173a6,c1105b1c6e6b4f3a.

filter[analytic_ids]?string

ID analitik engine, pisahkan koma. Contoh: NFV4-FR,NFV4-LPR.

filter[status]?string

Filter status deteksi. Untuk FRA: known,unknown. Pisahkan koma untuk multiple.

filter[gender]?string

Filter berdasarkan gender (FRA/MPAA). Contoh: male,female.

filter[age]?string

Filter berdasarkan rentang usia (FRA/MPAA).

filter[mask]?string

Filter berdasarkan penggunaan masker: yes atau no (FRA/MPAA).

filter[glasses]?string

Filter berdasarkan kacamata: yes atau no (FRA/MPAA).

filter[head_covering]?string

Filter berdasarkan penutup kepala: yes atau no (FRA/MPAA).

filter[upper_color]?string

Filter berdasarkan warna pakaian atas (FRA/MPAA).

filter[lower_color]?string

Filter berdasarkan warna pakaian bawah (FRA/MPAA).

filter[area]?string

Filter berdasarkan nama area (MPAA/MVAA/CE).

filter[direction]?string

Filter berdasarkan arah pergerakan: in atau out (MPAA/MVAA).

filter[logic_type]?string

Filter berdasarkan logic type, contoh: counting, dwelling, density, speed.

filter[vehicle_type]?string

Filter berdasarkan tipe kendaraan (MVAA/LPR). Contoh: car,motorcycle.

filter[brand]?string

Filter berdasarkan merek kendaraan (MVAA).

filter[color]?string

Filter berdasarkan warna kendaraan (MVAA).

filter[from_line]?string

Filter berdasarkan garis asal (MPAA virtual line).

filter[to_line]?string

Filter berdasarkan garis tujuan (MPAA virtual line).

filter[vest]?string

Filter berdasarkan rompi PPE: yes atau no (PPE).

filter[helmet]?string

Filter berdasarkan helm PPE: yes atau no (PPE).

filter[helmet_on_head]?string

Filter berdasarkan helm terpasang di kepala: yes atau no (PPE).

search[keyword]?string

Pencarian kata kunci umum (nama, label, dll.).

search[plate_number]?string

Pencarian berdasarkan nomor plat (LPR).

Response Body

application/json

application/json

curl -X GET "https://lenz.example.com/api/event-history/fra?sort=event_time%3Adesc&timezone=Asia%2FJakarta&filter%5Btimestamp_from%5D=2026-04-30T00%3A00%3A00%2B07%3A00&filter%5Btimestamp_to%5D=2026-04-30T23%3A59%3A59%2B07%3A00&search%5Bplate_number%5D=B+1234"
{  "ok": true,  "data": {    "analytics_type": "fra",    "events": [      {        "id": "01HXYZ1234567890ABCDEF",        "event_id": "evt-abc123",        "analytic_id": "NFV4-FR",        "stream_id": "eb7022a64d9173a6",        "stream_name": "Kamera Lobby Utama",        "primary_image_url": "https://raisa.example.com/images/primary/abc123.jpg",        "secondary_image_url": "https://raisa.example.com/images/secondary/abc123.jpg",        "label": "UNKNOWN",        "location": "Lobby Utama",        "event_time": "2026-04-30T08:23:45+07:00",        "created_at": "2026-04-30T08:23:46+07:00",        "status": "unknown",        "face_id": null,        "similarity": null,        "gender": "male",        "age": "30-40",        "mask": "no",        "glasses": "no",        "instance": null      }    ],    "pagination": {      "limit": 20,      "has_next": true,      "has_prev": false,      "next_cursor": "eyJpZCI6IjE2MzQ1NiJ9",      "prev_cursor": null,      "total": 1240    }  }}
{  "ok": false,  "message": "unauthorized"}
GET
/api/event-history/{category}/{eventId}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

category*string

Kategori analitik event.

Value in"fra" | "mpaa" | "mvaa" | "ce" | "lpr" | "ppe"
eventId*string

ID unik event.

Query Parameters

instance?string

ID instance untuk mode federation (opsional).

Response Body

application/json

application/json

curl -X GET "https://lenz.example.com/api/event-history/fra/evt-abc123"
{  "ok": true,  "data": {    "id": "01HXYZ1234567890ABCDEF",    "event_id": "evt-abc123",    "analytic_id": "NFV4-FR",    "stream_id": "eb7022a64d9173a6",    "stream_name": "Kamera Lobby Utama",    "primary_image_url": "https://raisa.example.com/images/primary/abc123.jpg",    "secondary_image_url": "https://raisa.example.com/images/secondary/abc123.jpg",    "label": "Budi Santoso",    "location": "Lobby Utama",    "event_time": "2026-04-30T08:23:45+07:00",    "created_at": "2026-04-30T08:23:46+07:00",    "status": "known",    "face_id": "abc123def456",    "similarity": 0.9234,    "gender": "male",    "age": "30-40",    "mask": "no",    "glasses": "no",    "pipeline_data": {      "face_id": "118747588341006337",      "similarity": 0.9234,      "status": "KNOWN",      "confidence_detection": 0.9988,      "variation": "13219648471735459236"    },    "instance": null  }}
{  "ok": false,  "message": "event not found"}

Opsi Filter

Endpoint untuk mengambil nilai-nilai yang tersedia pada setiap dimensi filter — misalnya daftar stream, status, warna, dan atribut lainnya yang sudah ada di database. Digunakan untuk mengisi dropdown filter secara dinamis.

GET
/api/event-history/{category}/filters

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

category*string

Kategori analitik untuk mengambil opsi filter.

Value in"fra" | "mpaa" | "mvaa" | "ce" | "lpr" | "ppe"

Query Parameters

logic_type?string

Filter opsi berdasarkan logic type tertentu (contoh: counting).

instance?string

ID instance untuk mode federation (opsional).

Response Body

application/json

curl -X GET "https://lenz.example.com/api/event-history/fra/filters"
{  "ok": true,  "data": {    "category": "fra",    "logic_type": null,    "filters": {      "status": [        "known",        "unknown"      ],      "gender": [        "male",        "female"      ],      "age": [        "20-30",        "30-40",        "40-50"      ],      "mask": [        "yes",        "no"      ],      "stream_ids": [        "eb7022a64d9173a6",        "c1105b1c6e6b4f3a"      ]    },    "last_updated": "2026-04-30T08:00:00Z"  }}

Webhook & Streaming

WebSocket channel untuk menerima feed event secara real-time. Setiap event baru yang diproses oleh sistem analitik langsung di-broadcast ke semua klien yang terhubung.

Endpoint /api/event_channel menggunakan protokol WebSocket — bukan HTTP biasa. Gunakan ws:// atau wss:// sebagai skema URL, dan sertakan Authorization: Bearer <token> pada header saat WebSocket handshake.

GET
/api/event_channel

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Query Parameters

stream_ids?string

ID stream yang ingin dimonitor, pisahkan koma. Kosongkan untuk menerima dari semua stream.

analytic_id?string

ID analitik untuk difilter, pisahkan koma. Contoh: NFV4-FR,NFV4-LPR.

node_num?integer

Nomor node Visionaire (default: 0 = semua node).

Default0
disable_base64_image?boolean

Set true untuk menonaktifkan gambar base64 dalam payload. Sangat disarankan pada volume tinggi untuk menghemat bandwidth.

Defaultfalse
logic?string

Filter event berdasarkan logic type tertentu.

instance?string

ID instance untuk arsitektur federation.

is_aggregated?boolean

Set true untuk menerima event dari semua instance dalam mode federation.

Response Body

curl -X GET "https://lenz.example.com/api/event_channel?stream_ids=eb7022a64d9173a6%2Cc1105b1c6e6b4f3a"
Empty
Empty

On this page