Skip to main content

API Endpoints

Overview​

Backend CLM menyediakan REST API dengan base URL http://localhost:8081.

Authentication​

POST /api/login​

Login ke Keycloak dan dapatkan JWT token.

Request:

{
"username": "admin",
"password": "Admin123!"
}

Response (200):

{
"token": {
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 300,
"refresh_token": "...",
"token_type": "Bearer",
"scope": "openid profile email"
},
"user": {
"username": "admin",
"roles": ["admin"],
"email": "admin@bjbsyariah.co.id"
}
}

GET /api/me​

Dapatkan profil user saat ini.

Headers: Authorization: Bearer <token>

Response (200):

{
"username": "admin",
"email": "admin@bjbsyariah.co.id",
"roles": ["admin"],
"claims": { ... }
}

GET /api/admin​

Akses admin (hanya role admin).

Headers: Authorization: Bearer <token>

Response (200):

{
"message": "admin access granted",
"user": "admin",
"roles": ["admin"]
}

Log Endpoints​

GET /api/v1/logs/fields​

Daftar field searchable dari OpenSearch.

Permission: logs:read

Response (200):

{
"indices": ["clm-v2-logs-*"],
"count": 15,
"fields": [
{ "name": "@timestamp", "type": "date" },
{ "name": "message", "type": "text" },
{ "name": "level", "type": "keyword" }
]
}

GET /api/v1/logs/fields/:field/distinct​

Distinct values untuk satu field.

Permission: logs:read

Query Params:

  • q - Prefix filter
  • limit - Max results (default: 10)

Response (200):

{
"field": "level",
"q": "",
"limit": 10,
"values": [
{ "value": "info", "count": 15000 },
{ "value": "error", "count": 2500 },
{ "value": "warn", "count": 800 }
]
}

POST /api/v1/logs/list/paginate​

Cari log dengan paginasi.

Permission: logs:read

Request:

{
"query": "error",
"timeRange": {
"from": "2026-07-01T00:00:00Z",
"to": "2026-07-06T23:59:59Z"
},
"filters": [
{ "field": "level", "value": "error" }
],
"sort": {
"field": "@timestamp",
"order": "desc"
},
"page": 1,
"limit": 20
}

Response (200):

{
"data": [
{
"id": "abc123",
"source": {
"@timestamp": "2026-07-06T10:30:00Z",
"message": "Connection refused",
"level": "error"
}
}
],
"total": 1500,
"page": 1,
"limit": 20,
"request_id": "req-abc123"
}

POST /api/v1/logs/histogram​

Membuat histogram log berdasarkan interval waktu.

Permission: logs:read

Request:

{
"query": "",
"timeRange": {
"from": "2026-07-06T00:00:00Z",
"to": "2026-07-06T23:59:59Z"
},
"interval": "1h"
}

Response (200):

{
"indices": ["clm-v2-logs-*"],
"result": {
"buckets": [
{ "key": "2026-07-06T00:00:00Z", "count": 1500 },
{ "key": "2026-07-06T01:00:00Z", "count": 1200 }
]
}
}

Alert Endpoints​

GET /api/v1/alerts/active​

Daftar alert aktif.

Permission: alerts:read

Response (200):

{
"data": [
{
"alert_id": "alert-001",
"rule_description": "High error rate detected",
"rule_level": 12,
"alert_status": "active",
"agent_name": "server-01",
"timestamp": "2026-07-06T10:30:00Z"
}
]
}

GET /api/v1/alerts/list​

Daftar semua alerts.

Permission: alerts:read

GET /api/v1/alerts/rules​

Daftar alert rules.

Permission: alerts:read

GET /api/v1/alerts/channels​

Daftar notification channels.

Permission: alerts:read

POST /api/v1/alerts/{id}/status​

Update alert status.

Permission: alerts:write

Request:

{
"status": "resolved"
}

Alerting Monitors​

GET /api/v1/alerting/monitors​

Daftar OpenSearch alerting monitors.

Permission: alerts:read

GET /api/v1/alerting/monitors/alerts​

Daftar alerts dari monitors.

Permission: alerts:read

GET /api/v1/alerting/monitors/history​

Riwayat monitor alerts.

Permission: alerts:read

GET /api/v1/alerting/monitors/active-count​

Jumlah active alerts.

Permission: alerts:read

GET /api/v1/alerting/monitors/severity​

Alerts by severity.

Permission: alerts:read

GET /api/v1/alerting/monitors/states​

Monitor states.

Permission: alerts:read

Dashboard Endpoints​

GET /api/v1/dashboard/pipeline/status​

Status semua komponen pipeline.

Permission: dashboard:read

Response (200):

{
"data": [
{
"component": "Fluent Bit",
"status": "healthy",
"healthy_count": 276,
"total_count": 280,
"eps": 18200
}
]
}

GET /api/v1/dashboard/dc/status​

Status semua data center.

Permission: dashboard:read

Response (200):

{
"data": [
{
"dc_name": "DC-Bandung",
"dc_type": "primary",
"status": "operational",
"ok_count": 23,
"cpu_percent": 50,
"memory_percent": 50
}
]
}

GET /api/v1/dashboard/throughput​

Throughput EPS per kategori.

Permission: dashboard:read

GET /api/v1/dashboard/overview​

Overview semua metrics dashboard.

Permission: dashboard:read

GET /api/v1/dashboard/log-volume/24h​

Log volume 24 jam.

Permission: dashboard:read

GET /api/v1/dashboard/systems/count/24h​

Jumlah sistem 24 jam.

Permission: dashboard:read

GET /api/v1/dashboard/systems/error-rate/24h/top​

Top error rates 24 jam.

Permission: dashboard:read

GET /api/v1/dashboard/systems/latency/24h​

Latency 24 jam.

Permission: dashboard:read

GET /api/v1/dashboard/systems/throughput/eps/24h​

Throughput EPS 24 jam.

Permission: dashboard:read

Audit Endpoints​

GET /api/v1/log-audit/search​

Search audit logs.

Permission: audit:read

POST /api/v1/log-audit/input​

Input audit log.

Permission: audit:write

GET /api/v1/log-audit/export/csv​

Export audit logs ke CSV.

Permission: audit:export

GET /api/v1/log-audit/export/excel​

Export audit logs ke Excel.

Permission: audit:export

Telegram Endpoints​

POST /api/v1/telegram/generate-code​

Generate verification code untuk Telegram.

Permission: alerts:write

POST /api/v1/telegram/validate​

Validasi verification code.

Permission: Public

GET /api/v1/telegram/status​

Cek status Telegram link.

Permission: alerts:read

GET /api/v1/telegram/verified-chat-ids​

Dapatkan verified chat IDs.

Permission: API Key

POST /api/v1/telegram/unlink​

Unlink Telegram.

Permission: alerts:write

POST /api/v1/telegram/webhook​

Telegram webhook endpoint.

Permission: Public

RBAC Management​

Tenants​

MethodEndpointPermission
GET/api/tenantstenants:manage
POST/api/tenantstenants:manage

Applications​

MethodEndpointPermission
GET/api/applicationstenants:manage
POST/api/applicationstenants:manage
PUT/api/applicationstenants:manage
DELETE/api/applicationstenants:manage

Users​

MethodEndpointPermission
GET/api/usersusers:manage
POST/api/usersusers:manage
DELETE/api/usersusers:manage

Roles​

MethodEndpointPermission
GET/api/rolesroles:manage
POST/api/rolesroles:manage

Permissions​

MethodEndpointPermission
GET/api/permissionsroles:manage

User-Tenant-Roles​

MethodEndpointPermission
GET/api/user-rolesroles:manage
POST/api/user-rolesroles:manage

Kubernetes​

GET /api/v1/k8s/cluster/health​

Kubernetes cluster health.

Permission: dashboard:read

GET /api/v1/k8s/nodes​

Daftar Kubernetes nodes.

Permission: dashboard:read

GET /api/v1/k8s/nodes/{name}​

Detail node.

Permission: dashboard:read

GET /api/v1/k8s/pods​

Daftar pods.

Permission: dashboard:read

GET /api/v1/k8s/namespaces​

Daftar namespaces.

Permission: dashboard:read

APM​

GET /api/v1/apm/service-map​

Service map visualization.

Permission: dashboard:read

GET /api/v1/apm/traces​

Service traces.

Permission: dashboard:read

Infrastructure​

GET /api/v1/infra/metrics​

Infrastructure metrics.

Permission: dashboard:read

GET /api/v1/infra/network​

Network metrics.

Permission: dashboard:read

GET /api/v1/infra/history​

Infrastructure history.

Permission: dashboard:read

GET /api/v1/infra/containers​

Container metrics.

Permission: dashboard:read

GET /api/v1/infra/collectors​

Collector health.

Permission: dashboard:read

Camel Integration​

GET /api/v1/camel/health​

Apache Camel health.

Permission: camel:read

GET /api/v1/camel/routes​

Apache Camel routes.

Permission: camel:read

Next Steps​