Skip to main content

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 environment
  • size (integer): Maximum number of results to return per request
  • filters (object): JSON object containing additional key-value filters
  • log_group (string): Log group for EventOps
  • tenant (string): Tenant identifier for EventOps
  • stage (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 environment
  • size (integer): Maximum number of results to return per request
  • filters (object): JSON object containing additional key-value filters
  • scroll_id (string): Identifier used for paginated scrolling through large datasets
  • log_group (string): Log group for EventOps
  • tenant (string): Tenant identifier for EventOps
  • stage (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 environment
  • time_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_remaining field
  • 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.