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