Nodeflux Central

Sites

Kelola lokasi fisik dan area sebagai kelompok logis untuk stream — mendukung hierarki parent-child seperti gedung, lantai, dan ruangan.

Pengenalan

Sites adalah unit pengelompokan logis yang merepresentasikan lokasi atau area fisik di dunia nyata — mulai dari gedung, lantai, hingga ruangan tertentu. Dengan Sites, operator dapat mengorganisasi stream kamera berdasarkan lokasi sehingga pemantauan menjadi lebih terstruktur dan mudah dinavigasi.

Setiap Site dapat memiliki parent site, membentuk hierarki yang mencerminkan struktur fisik lokasi Anda. Sistem mendukung hingga tiga level kedalaman: top-level (misalnya gedung), child (misalnya lantai), dan grandchild (misalnya ruangan). Stream kemudian ditetapkan ke site spesifik — terutama ke node daun (leaf) pada hierarki — agar dapat ditampilkan dan difilter secara terkelompok.

Hierarki Sites bersifat fleksibel. Anda dapat membuat site datar tanpa parent, atau membangun pohon lokasi bertingkat sesuai kebutuhan organisasi Anda.

Bagi integrator, semua operasi Sites tersedia melalui REST API. Endpoint Sites mendukung Federation Mode untuk deployment multi-instance, pembaruan batch, penetapan stream, serta pengurutan stream per site. Site diidentifikasi secara unik oleh id (integer) yang bersifat permanen setelah site dibuat.


Cara Menggunakan

Melihat Daftar Site

Buka halaman Sites

Navigasikan ke /sites dari sidebar. Tampilan utama menampilkan seluruh site dalam bentuk Tree View yang mencerminkan hierarki parent-child. Gunakan tombol Expand Semua atau Collapse Semua di toolbar untuk mengatur tampilan pohon.

Gunakan pencarian untuk menemukan site tertentu

Ketik nama site di kotak Cari Sites yang tersedia di bagian atas daftar. Hasil pencarian akan menyaring tree secara real-time sesuai nama yang diketik.

Baca informasi site

Setiap baris site pada tree menampilkan: nama site, parent site (jika ada), instance asal (pada mode Federation), serta tombol aksi — Edit, Hapus, dan Tambah Child untuk membuat sub-site di bawahnya.


Menambah Site Baru

Klik tombol Tambah Site Baru

Tombol ini tersedia di toolbar kanan atas halaman /sites. Dialog form penambahan site akan muncul.

Isi informasi site

Lengkapi field berikut pada form:

  • Nama Site — nama deskriptif untuk site (wajib, minimal 2 karakter). Contoh: Gedung A, Lantai 3, Ruang Server.
  • Parent Site (Opsional) — pilih site yang akan menjadi induk. Biarkan kosong untuk membuat top-level site. Gunakan kotak pencarian di dalam dropdown untuk menemukan parent yang diinginkan.
  • Instance — (tersedia di Federation Mode) pilih instance tempat site akan dibuat. Instance tidak dapat diubah setelah site disimpan.

Klik Buat Site

Sistem akan menyimpan site baru. Site akan langsung muncul di tree view pada posisi yang sesuai dengan hierarki parent yang dipilih.

Nama site harus unik di dalam level yang sama. Dua site dengan nama yang sama diperbolehkan selama memiliki parent yang berbeda — misalnya dua site bernama "Lantai 1" di bawah gedung yang berbeda.


Mengedit Site

Temukan site yang ingin diedit

Di tree view, cari site menggunakan kotak pencarian atau navigasi manual pada pohon hierarki.

Klik ikon Edit pada baris site

Dialog edit akan muncul dengan data site saat ini yang sudah terisi.

Ubah informasi yang diperlukan

  • Nama Site — perbarui nama site.
  • Parent Site — pindahkan site ke parent yang berbeda untuk mengubah posisinya dalam hierarki. Pilih kosong untuk menjadikannya top-level site.

Instance tidak dapat diubah setelah site dibuat.

Klik Perbarui Site

Perubahan akan diterapkan dan tree view akan diperbarui secara otomatis.

Memindahkan site ke parent yang berbeda tidak memengaruhi stream yang sudah ditetapkan ke site tersebut. Stream tetap terhubung ke site yang sama meskipun posisi site dalam hierarki berubah.


Menambah Child Site

Untuk membuat sub-site langsung di bawah site tertentu, klik tombol Tambah Child pada baris site yang diinginkan di tree view. Form yang muncul akan otomatis menetapkan site tersebut sebagai parent — Anda hanya perlu mengisi nama child site yang baru.


Menghapus Site

Klik ikon Hapus pada baris site

Dialog konfirmasi akan muncul, menampilkan ringkasan dampak penghapusan: jumlah stream aktif yang terhubung dan daftar child site yang akan terdampak.

Baca peringatan dengan seksama

Jika site memiliki child site, child langsung akan dipindahkan ke level root setelah penghapusan. Jika site memiliki stream yang terhubung, penetapan stream tersebut ke site ini akan dihapus.

Klik Hapus Site untuk mengonfirmasi

Penghapusan bersifat permanen dan tidak dapat dibatalkan.


Hierarki Site

Sites mendukung struktur pohon (tree) yang merepresentasikan lokasi fisik secara bertingkat. Berikut contoh struktur hierarki tipikal untuk sebuah kompleks perkantoran:

Lobby Depan
Ruang Resepsi
Parkir Basement

Pada struktur di atas:

  • Gedung Utama dan Gedung Annex adalah top-level site (tanpa parent).
  • Lantai 1, Lantai 2, Lantai 3 adalah child site di bawah Gedung Utama.
  • Lobby Depan, Ruang Rapat A, dst. adalah grandchild site (level terdalam).
  • Stream kamera biasanya ditetapkan ke grandchild site — lokasi paling spesifik.

Sistem membatasi kedalaman hierarki hingga 3 level (top-level, child, grandchild). Percobaan membuat site di bawah grandchild akan ditolak oleh sistem.

Pada tampilan Stream berdasarkan Site (/streams/site), stream dari child site secara otomatis rolled up ke tampilan parent site — sehingga operator yang memantau "Lantai 1" dapat melihat seluruh stream dari semua ruangan di lantai tersebut.


Fitur Utama

Tree View Hierarki

Tampilan pohon interaktif yang mencerminkan struktur fisik lokasi Anda. Expand dan collapse node untuk navigasi yang efisien, bahkan pada deployment dengan ratusan site.

Parent-Child Site

Bangun hierarki lokasi bertingkat (gedung → lantai → ruangan) untuk mengorganisasi stream secara terstruktur sesuai layout fisik.

Pembaruan Batch

Perbarui nama, parent, dan urutan beberapa site sekaligus melalui endpoint PATCH /api/sites/batch — ideal untuk reorganisasi skala besar.

Pengurutan Stream

Atur urutan tampilan stream dalam setiap site via drag-and-drop di UI atau endpoint PUT /api/sites/:id/streams/order untuk kontrol lebih presisi.

Stream Rolled Up

Stream yang ditetapkan ke child site otomatis ditampilkan pada parent site — operator dapat memantau seluruh area hanya dengan membuka site level atas.

Federation Support

Dalam deployment multi-instance, site dari seluruh instance dapat dikelola dan ditampilkan secara agregat melalui parameter instance dan is_aggregated.


API Reference

Semua endpoint memerlukan header Authorization: Bearer <token>. Lihat Otentikasi untuk cara mendapatkan token.


GET /api/sites

Mengambil seluruh site yang dapat diakses oleh pengguna yang sedang login.

Prop

Type

GET /api/sites
curl -X GET "${RAISA_API_URL}/api/sites" \
  -H "Authorization: Bearer <token>"

Contoh respons:

Respons GET /api/sites
{
  "ok": true,
  "message": "success",
  "sites": [
    {
      "id": 1,
      "name": "Gedung Utama",
      "parent_id": null,
      "order": 0,
      "created_at": "2025-01-15T08:00:00Z",
      "created_by": 10,
      "updated_at": "2025-01-15T08:00:00Z",
      "instance": "local"
    },
    {
      "id": 2,
      "name": "Lantai 1",
      "parent_id": 1,
      "order": 0,
      "created_at": "2025-01-15T08:05:00Z",
      "created_by": 10,
      "updated_at": "2025-01-15T08:05:00Z",
      "instance": "local"
    },
    {
      "id": 3,
      "name": "Lobby Depan",
      "parent_id": 2,
      "order": 0,
      "created_at": "2025-01-15T08:10:00Z",
      "created_by": 10,
      "updated_at": "2025-01-15T08:10:00Z",
      "instance": "local"
    }
  ]
}

Respons berisi seluruh site dalam satu array datar. Rekonstruksi pohon hierarki dilakukan di sisi klien menggunakan field parent_id.


POST /api/sites — Tambah Site

Membuat site baru.

Prop

Type

POST /api/sites — tambah site baru
curl -X POST "${RAISA_API_URL}/api/sites" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Lantai 1",
    "parent_id": 1
  }'

Contoh respons:

Respons POST /api/sites
{
  "ok": true,
  "message": "success",
  "site": {
    "id": 2,
    "name": "Lantai 1",
    "parent_id": 1,
    "order": 0,
    "created_at": "2025-01-15T08:05:00Z",
    "created_by": 10,
    "updated_at": "2025-01-15T08:05:00Z"
  }
}

PUT /api/sites/:id — Perbarui Site

Memperbarui nama dan/atau parent site yang sudah ada.

ParameterTipeKeterangan
idnumberID site yang akan diperbarui (path parameter).
instancestring(Opsional) ID instance untuk Federation Mode.

Prop

Type

PUT /api/sites/:id — perbarui site
curl -X PUT "${RAISA_API_URL}/api/sites/2" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Lantai 1 (Revisi)",
    "parent_id": 1
  }'

DELETE /api/sites/:id

Menghapus site secara permanen. Child site langsung dari site yang dihapus akan dipindahkan ke level root. Penetapan stream ke site ini akan dihapus.

ParameterTipeKeterangan
idnumberID site yang akan dihapus (path parameter).
instancestring(Opsional) ID instance untuk Federation Mode.
DELETE /api/sites/:id
curl -X DELETE "${RAISA_API_URL}/api/sites/3" \
  -H "Authorization: Bearer <token>"

Respons sukses:

Respons DELETE berhasil
{
  "ok": true,
  "message": "Site berhasil dihapus"
}

PATCH /api/sites/batch — Pembaruan Batch

Memperbarui beberapa site sekaligus dalam satu request — berguna untuk reorganisasi hierarki skala besar atau pembaruan urutan massal.

Prop

Type

Setiap item dalam array sites:

Prop

Type

PATCH /api/sites/batch — perbarui beberapa site
curl -X PATCH "${RAISA_API_URL}/api/sites/batch" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "sites": [
      { "id": 2, "order": 0 },
      { "id": 4, "order": 1 },
      { "id": 5, "parent_id": 2, "order": 0 }
    ]
  }'

POST /api/sites/:id/assign-stream

Menetapkan satu stream ke site tertentu.

ParameterTipeKeterangan
idnumberID site tujuan (path parameter).
instancestring(Opsional) ID instance untuk Federation Mode.

Prop

Type

POST /api/sites/:id/assign-stream
curl -X POST "${RAISA_API_URL}/api/sites/3/assign-stream" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "stream_id": "abc123"
  }'

PUT /api/sites/:id/streams/order — Atur Urutan Stream

Mengatur ulang urutan stream di dalam site tertentu.

ParameterTipeKeterangan
idnumberID site (path parameter).
instancestring(Opsional) ID instance untuk Federation Mode.

Prop

Type

PUT /api/sites/:id/streams/order
curl -X PUT "${RAISA_API_URL}/api/sites/3/streams/order" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "stream_ids": ["abc123", "def456", "ghi789"]
  }'

Membuat Hierarki via Stream API

Selain endpoint Sites, Anda juga dapat membuat hierarki site secara otomatis saat mendaftarkan stream baru menggunakan sintaks path pada field sites di Stream API:

POST /api/streams — buat hierarki site otomatis
{
  "stream_name": "Kamera Lobby",
  "stream_address": "rtsp://192.168.1.100/stream1",
  "sites": [
    "Gedung A/Lantai 1/Lobby Utama",
    "Gedung A/Lantai 1/Area Resepsi"
  ]
}

Sistem akan membuat site Gedung ALantai 1Lobby Utama (dan Area Resepsi) secara otomatis jika belum ada, kemudian menetapkan stream ke node daun (leaf). Site yang sudah ada akan digunakan ulang tanpa duplikasi.

Stream hanya ditetapkan ke node daun (item terakhir dalam setiap path). Site parent dibuat tetapi tidak mendapat penetapan stream langsung — ini mengikuti prinsip bahwa stream berada di lokasi spesifik, bukan area umum.


Tips & Troubleshooting


Selanjutnya

On this page