Skip to main content

Status Pages

Public-facing status pages with components, incidents, and subscriber notifications.

Base path: /api/ext/cockpit-pro/status-pages

Pages

GET /

List status pages with pagination.

POST /

Create a status page.

Request:

{
"name": "Acme Status",
"description": "System status for Acme Corp",
"is_public": true,
"custom_domain": "status.acme.com",
"theme": { "primary_color": "#0e7490" }
}

A URL-friendly slug is auto-generated from the name.

GET /:pageId

Get page with components and active incidents.

PUT /:pageId

Update page settings.

DELETE /:pageId

Delete page and all associated components, incidents, and subscribers.

Components

GET /:pageId/components

List components for a status page.

POST /:pageId/components

Add a component.

Request:

{
"name": "API Server",
"description": "Main REST API",
"status": "operational",
"display_order": 1,
"group_name": "Backend"
}

Valid statuses: operational, degraded_performance, partial_outage, major_outage, under_maintenance

PUT /:pageId/components/:compId

Update component status or details.

DELETE /:pageId/components/:compId

Remove a component.

Incidents

GET /:pageId/incidents

List incidents for a status page. Filter by status.

POST /:pageId/incidents

Create a status page incident.

Request:

{
"title": "API Latency Spike",
"message": "Investigating increased response times",
"severity": "major",
"status": "investigating"
}

PUT /:pageId/incidents/:incId

Update incident (resolving sets resolved_at automatically).

DELETE /:pageId/incidents/:incId

Delete an incident.

Subscribers

POST /:pageId/subscribers

Subscribe to status updates via email or webhook.

Request:

{ "email": "ops@acme.com" }

or

{ "webhook_url": "https://hooks.slack.com/..." }

Returns a verify_token — subscriptions must be verified.

GET /:pageId/subscribers/verify/:token

Verify a subscription.

DELETE /:pageId/subscribers/:subId

Unsubscribe.

Public Endpoint

GET /public/:slug

Get the public-facing status page (no auth required).

Response:

{
"name": "Acme Status",
"slug": "acme-status",
"overall_status": "operational",
"components": [...],
"active_incidents": [...],
"recent_incidents": [...]
}

Limits: 3 status pages on Pro, unlimited on Enterprise.