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 filterlimit- 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
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/tenants | tenants:manage |
| POST | /api/tenants | tenants:manage |
Applications
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/applications | tenants:manage |
| POST | /api/applications | tenants:manage |
| PUT | /api/applications | tenants:manage |
| DELETE | /api/applications | tenants:manage |
Users
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/users | users:manage |
| POST | /api/users | users:manage |
| DELETE | /api/users | users:manage |
Roles
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/roles | roles:manage |
| POST | /api/roles | roles:manage |
Permissions
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/permissions | roles:manage |
User-Tenant-Roles
| Method | Endpoint | Permission |
|---|---|---|
| GET | /api/user-roles | roles:manage |
| POST | /api/user-roles | roles: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
- Authentication - JWT authentication
- RBAC - Role-Based Access Control
- Configuration - Configuration guide