Nodeflux Central
Extensions

API Reference — Extensions

Endpoint untuk mengelola Extension di Lenz Dashboard — daftar, katalog, install, uninstall, update konfigurasi, dan pengurutan sidebar.

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

Endpoint install, update, reorder, dan uninstall hanya dapat diakses oleh pengguna dengan peran admin.


Daftar & Katalog

Endpoint untuk mengambil extension yang sudah terinstall dan seluruh katalog dari Extension Server.

GET
/api/extensions

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Query Parameters

enabled_only?boolean

Jika true, hanya mengembalikan extension yang berstatus aktif (is_enabled: true)

Defaultfalse

Response 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": "ChartBar",      "scope": "lenz-extensions",      "module_name": "AnalyticsDashboard",      "remote_url": "https://extensions.perusahaan.com/remoteEntry.js",      "is_enabled": true,      "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"}
GET
/api/extensions/catalog

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Response Body

application/json

application/json

application/json

curl -X GET "https://lenz.example.com/api/extensions/catalog"
{  "ok": true,  "server_url": "https://extensions.perusahaan.com",  "extensions": [    {      "slug": "analytics-dashboard",      "name": "Analytics Dashboard",      "description": "Visualisasi data analitik kustom",      "icon": "ChartBar",      "moduleName": "AnalyticsDashboard",      "is_installed": true,      "is_enabled": true,      "display_order": 1    },    {      "slug": "report-generator",      "name": "Report Generator",      "description": "Generator laporan otomatis berbasis template",      "icon": "FileText",      "moduleName": "ReportGenerator",      "is_installed": false,      "is_enabled": false,      "display_order": 0    }  ]}
{  "ok": false,  "message": "invalid request"}
{  "ok": false,  "message": "extension server URL not configured"}

Install & Uninstall

Endpoint untuk menginstall satu atau lebih extension dari katalog, serta menguninstall extension yang sudah terpasang.

POST
/api/extensions/install

Authorization

bearerAuth
AuthorizationBearer <token>

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 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": "ChartBar",      "scope": "lenz-extensions",      "module_name": "AnalyticsDashboard",      "remote_url": "https://extensions.perusahaan.com/remoteEntry.js",      "is_enabled": true,      "display_order": 1,      "installed_by": 5,      "created_at": "2024-06-01T08:00:00Z",      "updated_at": "2024-06-01T08:00:00Z"    }  ]}
{  "ok": false,  "message": "extension 'unknown-plugin' not found in manifest"}
{  "ok": false,  "message": "invalid request"}
DELETE
/api/extensions/{slug}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

slug*string

Slug unik extension

Response Body

application/json

application/json

application/json

curl -X DELETE "https://lenz.example.com/api/extensions/analytics-dashboard"
{  "ok": true,  "message": "extension uninstalled successfully"}
{  "ok": false,  "message": "invalid request"}
{  "ok": false,  "message": "record not found"}

Update & Pengurutan

Endpoint untuk memperbarui konfigurasi extension (nama, ikon, status aktif) dan mengatur ulang urutan tampilan di sidebar.

PATCH
/api/extensions/{slug}

Authorization

bearerAuth
AuthorizationBearer <token>

In: header

Path Parameters

slug*string

Slug unik extension

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

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": "BarChart2",    "is_enabled": true  }'
{  "ok": true,  "extension": {    "id": 1,    "slug": "analytics-dashboard",    "name": "Dashboard Analitik",    "description": "Visualisasi data analitik kustom",    "icon": "BarChart2",    "scope": "lenz-extensions",    "module_name": "AnalyticsDashboard",    "remote_url": "https://extensions.perusahaan.com/remoteEntry.js",    "is_enabled": true,    "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": "record not found"}
PUT
/api/extensions/reorder

Authorization

bearerAuth
AuthorizationBearer <token>

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": "extensions reordered successfully"}
{  "ok": false,  "message": "invalid request"}
{  "ok": false,  "message": "invalid request"}

On this page