API Reference — Extensions
Endpoint untuk mengelola Extension di Lenz Dashboard — daftar, katalog, install, uninstall, update konfigurasi, dan pengurutan sidebar.
← Kembali ke Extensions
Panduan penggunaan: install, konfigurasi, dan troubleshooting Extension.
Otentikasi
API key untuk integrasi, Bearer token untuk sesi pengguna, dan otentikasi WebSocket.
Semua endpoint memerlukan otentikasi. Untuk integrasi, kirim header X-Api-Key: <key> di setiap request tanpa header Authorization. Bearer token (Authorization: Bearer <access_token>, berlaku 30 menit) hanya untuk aplikasi yang menampilkan login Lenz ke penggunanya sendiri dan wajib menyertakan X-Integration-Signature. Basis URL mengikuti variabel lingkungan VITE_API_URL yang dikonfigurasi pada instalasi Lenz. Lihat Otentikasi untuk memilih jalur yang tepat.
Lenz meneruskan semua request /api/extensions/* ke Extension Server yang dikonfigurasi lewat EXTENSION_SERVER_URL; aksi install, edit, pengurutan, dan uninstall tercatat di Audit Logs. Akses dicek terhadap izin peran pada resource Extension: GET butuh Read, POST (install) butuh Create, PATCH/PUT (edit dan urutan) butuh Update, dan DELETE (uninstall) butuh Delete.
Bila EXTENSION_SERVER_URL tidak diatur, GET /api/extensions dan GET /api/extensions/* selalu mengembalikan daftar kosong ({"ok": true, "message": "extensions disabled", "data": []}), dan endpoint lain tidak tersedia.
Daftar & Katalog
Endpoint untuk mengambil extension yang sudah terinstall dan seluruh katalog dari Extension Server.
Daftar Extension Terinstall
Authorization
bearerAuth In: header
Query Parameters
Jika true, hanya mengembalikan extension yang berstatus aktif (is_enabled: true)
falseResponse Body
application/json
application/json
curl -X GET "https://lenz.example.com/api/extensions"{ "ok": true, "extensions": [ { "id": 1, "slug": "analytics-dashboard", "name": "Analytics Dashboard", "description": "Visualisasi data analitik kustom", "icon": "chart-bar", "scope": "lenz_extensions", "module_name": "./AnalyticsDashboard", "remote_url": "/extensions/static/remoteEntry.js", "is_enabled": true, "is_system": false, "display_order": 1, "installed_by": 5, "created_at": "2024-06-01T08:00:00Z", "updated_at": "2024-06-01T09:00:00Z" } ]}{ "ok": false, "message": "invalid request"}Katalog Extension
Authorization
bearerAuth In: header
Response Body
application/json
application/json
application/json
curl -X GET "https://lenz.example.com/api/extensions/catalog"{ "ok": true, "extensions": [ { "slug": "analytics-dashboard", "name": "Analytics Dashboard", "description": "Visualisasi data analitik kustom", "icon": "chart-bar", "scope": "lenz_extensions", "module_name": "./AnalyticsDashboard", "remote_url": "/extensions/static/remoteEntry.js", "is_installed": true, "is_enabled": true, "is_system": false, "display_order": 1 }, { "slug": "report-generator", "name": "Report Generator", "description": "Generator laporan otomatis berbasis template", "icon": "file-text", "scope": "lenz_extensions", "module_name": "./ReportGenerator", "remote_url": "/extensions/static/remoteEntry.js", "is_installed": false, "is_enabled": false, "is_system": false, "display_order": 0 } ]}{ "ok": false, "message": "invalid request"}{ "ok": false, "message": "internal server error"}Install & Uninstall
Endpoint untuk menginstall satu atau lebih extension dari katalog, serta menguninstall extension yang sudah terpasang.
Install Extension
Authorization
bearerAuth In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://lenz.example.com/api/extensions/install" \ -H "Content-Type: application/json" \ -d '{ "slugs": [ "analytics-dashboard", "report-generator" ] }'{ "ok": true, "extensions": [ { "id": 1, "slug": "analytics-dashboard", "name": "Analytics Dashboard", "description": "Visualisasi data analitik kustom", "icon": "chart-bar", "scope": "lenz_extensions", "module_name": "./AnalyticsDashboard", "remote_url": "/extensions/static/remoteEntry.js", "is_enabled": true, "is_system": false, "display_order": 1, "installed_by": 5, "created_at": "2024-06-01T08:00:00Z", "updated_at": "2024-06-01T08:00:00Z" } ]}{ "ok": false, "message": "invalid request body"}{ "ok": false, "message": "invalid request"}{ "ok": false, "message": "extension not found"}{ "ok": false, "message": "operation not allowed on system extension"}Uninstall Extension
Authorization
bearerAuth In: header
Path Parameters
Slug unik extension
Response Body
application/json
application/json
application/json
curl -X DELETE "https://lenz.example.com/api/extensions/analytics-dashboard"{ "ok": false, "message": "invalid request"}{ "ok": false, "message": "not found"}{ "ok": false, "message": "system extension cannot be uninstalled"}Update & Pengurutan
Endpoint untuk memperbarui extension (nama, ikon, dan status aktif — yang terakhir hanya lewat API) serta mengatur ulang urutan tampilan di grup Extensions sidebar.
Update Konfigurasi Extension
Authorization
bearerAuth In: header
Path Parameters
Slug unik extension
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X PATCH "https://lenz.example.com/api/extensions/analytics-dashboard" \ -H "Content-Type: application/json" \ -d '{ "name": "Dashboard Analitik", "icon": "chart-line", "is_enabled": true }'{ "ok": true, "extension": { "id": 1, "slug": "analytics-dashboard", "name": "Dashboard Analitik", "description": "Visualisasi data analitik kustom", "icon": "chart-line", "scope": "lenz_extensions", "module_name": "./AnalyticsDashboard", "remote_url": "/extensions/static/remoteEntry.js", "is_enabled": true, "is_system": false, "display_order": 1, "installed_by": 5, "created_at": "2024-06-01T08:00:00Z", "updated_at": "2024-06-15T10:30:00Z" }}{ "ok": false, "message": "invalid request"}{ "ok": false, "message": "not found"}{ "ok": false, "message": "cannot disable system extension"}Atur Ulang Urutan Extension
Authorization
bearerAuth In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X PUT "https://lenz.example.com/api/extensions/reorder" \ -H "Content-Type: application/json" \ -d '{ "slugs": [ "report-generator", "analytics-dashboard" ] }'{ "ok": true, "message": "reordered"}{ "ok": false, "message": "invalid request"}{ "ok": false, "message": "invalid request"}Extensions
Tambahkan halaman baru ke Lenz Dashboard — misalnya analitik khusus industri — lewat extension yang dipasang dari katalog, tanpa memperbarui Lenz itu sendiri.
User Access
Kelola User, Role, dan Permission dalam satu tempat — tambah anggota tim, tentukan hak akses berbasis Role, dan kendalikan siapa dapat melakukan apa di Lenz Dashboard.