API Reference
Complete API reference documentation for the Central Monitoring API.
Contents
API Reference
Browse all available endpoints with detailed schemas, examples, and responses:
Logs
V1
POST /v1/logs/batch
Description: Recommended for queries retrieving > 100,000 logs. Returns a token to access presigned URLs containing batches of logs.
Request Body:
{
"application": "quasar",
"app_type": "caas",
"domain": "example.domain.com",
"time_range": "now-15m/m",
"size": 1000,
"filters": {"status": "error"}
}
Required Fields:
application(string): Name of the monitored application. Options: "atr", "klewer", "eventops", "quasar"time_range(string): Time range in OpenSearch format (e.g., 'now-15m/m')
Optional Fields:
app_type(string): Type of application environment. Options: "ec2", "caas"domain(string): Domain name of the monitored environmentsize(integer): Maximum number of results to return per requestfilters(object): JSON object containing additional key-value filterslog_group(string): Log group for EventOpstenant(string): Tenant identifier for EventOpsstage(string): Stage identifier for EventOps
Response (200):
{
"logs": [
{
"domain": "example.domain.com",
"time_range": "now-15m/m"
}
],
"token": "czpcL1wvY29nb",
"daily_requests_remaining": 480
}
Error Response (400):
{
"status_code" : 400
"detail": "Invalid application type. Must be one of: atr, klewer, eventops, quasar"
}
POST /v1/logs/batch/urls
Description: Use token from Batch API response to retrieve presigned URLs for S3 buckets containing batches of logs.
Request Body:
{
"token": "1OTk3LCJpc3MiOi"
}
Required Fields:
token(string): Access token for batch log retrieval
Response (200):
{
"presigned_urls": [
{
"presigned_url": "https://cm-api-logs-prod.s3.amazonaws.com/logs-domain-name?AWSAccessKeyId=...",
"time_range": "string",
"ready": true,
"status": "completed"
}
]
}
Error Response (401):
{
"status_code" : 401
"detail": "Invalid or missing token"
}
POST /v1/logs/scroll
Description: Recommended for queries retrieving < 100,000 logs. Retrieve logs using cursor-based pagination with the returned scroll ID.
Request Body:
{
"application": "atr",
"app_type": "caas",
"domain": "example.domain.com",
"time_range": "now-15m/m",
"size": 1000,
"filters": {"message": "cluster down"}
}
Required Fields:
application(string): Name of the monitored application. Options: "atr", "klewer", "eventops", "quasar"time_range(string): Time range in OpenSearch format (e.g., 'now-15m/m')
Optional Fields:
app_type(string): Type of application environment. Options: "ec2", "caas"domain(string): Domain name of the monitored environmentsize(integer): Maximum number of results to return per requestfilters(object): JSON object containing additional key-value filtersscroll_id(string): Identifier used for paginated scrolling through large datasetslog_group(string): Log group for EventOpstenant(string): Tenant identifier for EventOpsstage(string): Stage identifier for EventOps
Response (200):
{
"logs": [
{
"domain": "example.domain.com",
"time_range": "now-15m/m"
}
],
"scroll_id": "DXF1ZXJ5QW5vbmU=",
"has_more": true,
"daily_requests_remaining": 480
}
Error Response (400):
{
"status_code" : 400
"detail": "Invalid application type. Must be one of: atr, klewer, eventops, quasar"
}
Billing
V1
POST /v1/query
Description: Query billing data for a specific domain.
Request Body:
{
"domain": "example.domain.com",
"time_range": "now-15m/m"
}
Required Fields:
domain(string): Domain name of the monitored environmenttime_range(string): Time range in OpenSearch format (e.g., 'now-15m/m')
Response (200):
{
"summary": {
"ticket_count": 125,
"domain": "example.domain.com",
"time_range": "now-15m/m",
"client": "CMClient",
"live_status": "active",
"WBS": "1234ABCD",
"created": "2025-11-11T12:00:00Z",
"infra_type": "EC2",
"billing_type": "monthly",
"point_of_contact": "team@example.com"
},
"daily_requests_remaining": 480
}
Error Response (400):
{
"status_code" : 400
"detail": "Invalid input. Missing domain variable in payload"
}
Rate Limits
The API implements daily request limits to ensure safe usage:
- Each successful response includes a
daily_requests_remainingfield - Monitor this value to track your remaining quota
- Rate limit exceeded requests return HTTP 429 status
Authentication
All endpoints require JWT authentication. Include your token in the Authorization header.
For detailed authentication setup and examples, see Authentication.