API reference
On-Call API
Version 1.0 OpenAPI 3.1.0
The On-Call API: alerts, incidents, schedules, escalation policies, integrations, maintenance windows and the settings around them. It is the API the EvoHub console itself uses.
Authentication. Send an API key as Authorization: Bearer evohub_… or
X-API-Key: evohub_…. A key works in one organization. See API keys and
scopes and Errors in these docs.
Permissions. Each operation names the permission it needs
(x-evohub-permission); an API key needs it among its scopes. A key is
always held to its scopes, even one made by an administrator. A role that still
holds the older oncall:read or oncall:write permission passes the matching
oncall:<resource>:read or :write checks (not oncall:alert:respond). A
refusal is 403 FORBIDDEN, never 401.
Teams. Schedules, escalation policies and integrations can belong to a team. Those are visible only to callers in that team; others get 404, as if they did not exist. An organization key scoped to a team sees that team's items and the organization-wide ones; an organization key without a team sees the organization-wide ones. A personal key acts as its owner and sees what they see: the organization-wide items and those of the owner's teams.
Responses. Success is {"data": …, "success": true}; paged alert lists
add meta.total. Errors are {"error": {"code", "message"}}, plus details
for VALIDATION_FAILED. Times are RFC 3339 in UTC. Ids are opaque strings.
Not here. Sending alerts into EvoHub from a monitoring tool uses an integration key, not an API key: see the Alert ingest API reference.
Servers
https://evohub.io
Authentication
bearerAuthHTTP BearerAn EvoHub API key (evohub_…) as a bearer token.apiKeyHeaderAPI key in the headerX-API-KeyAn EvoHub API key (evohub_…).
Alerts
The paged objects: list, raise and answer alerts.
| GET | /api/v1/alerts | List alerts |
| POST | /api/v1/alerts | Raise an alert |
| GET | /api/v1/alerts/{id} | Get an alert |
| GET | /api/v1/alerts/{id}/events | List an alert's timeline |
| POST | /api/v1/alerts/{id}/events | Add a note to an alert |
| POST | /api/v1/alerts/{id}/acknowledge | Acknowledge an alert |
| POST | /api/v1/alerts/{id}/resolve | Resolve an alert |
| POST | /api/v1/alerts/{id}/suppress | Suppress an alert |
| POST | /api/v1/alerts/{id}/assign | Assign an alert |
| POST | /api/v1/alerts/{id}/takeover | Take over an alert |
| POST | /api/v1/alerts/{id}/redirect | Redirect an alert to another policy |
| POST | /api/v1/alerts/acknowledge-bulk | Acknowledge several alerts |
| POST | /api/v1/alerts/resolve-bulk | Resolve several alerts |
| POST | /api/v1/alerts/takeover-bulk | Take over several alerts |
| POST | /api/v1/alerts/resolve-by-fingerprint | Resolve an alert by fingerprint |
| GET | /api/v1/alerts/stats | Count alerts by status |
| GET | /api/v1/alerts/fields | List alert field names |
| GET | /api/v1/alerts/sse | Stream alert changes |
Incidents
Human-declared incidents and their timelines.
| GET | /api/v1/incidents | List incidents |
| POST | /api/v1/incidents | Declare an incident |
| GET | /api/v1/incidents/{id} | Get an incident |
| PUT | /api/v1/incidents/{id} | Update an incident |
| POST | /api/v1/incidents/{id}/acknowledge | Mark an incident identified |
| POST | /api/v1/incidents/{id}/resolve | Resolve an incident |
| GET | /api/v1/incidents/{id}/timeline | List an incident's timeline |
| POST | /api/v1/incidents/{id}/timeline | Add a timeline entry |
| DELETE | /api/v1/incidents/{id}/timeline/{entryID} | Delete a timeline entry |
| PATCH | /api/v1/incidents/{id}/timeline/{entryID} | Edit a timeline entry |
| GET | /api/v1/incidents/{id}/sse | Stream an incident's timeline |
Status page publishing
Publish an incident to one of your status pages.
| GET | /api/v1/incidents/{id}/publish | Get publishing state |
| POST | /api/v1/incidents/{id}/publish | Publish to a status page |
| DELETE | /api/v1/incidents/{id}/publish | Remove from the status page |
Postmortems
Post-incident reviews.
| GET | /api/v1/incidents/{id}/postmortem | Get an incident's postmortem |
| PUT | /api/v1/incidents/{id}/postmortem | Write an incident's postmortem (PUT) |
| POST | /api/v1/incidents/{id}/postmortem | Write an incident's postmortem |
Schedules
On-call schedules and who is on call.
| GET | /api/v1/schedules | List schedules |
| POST | /api/v1/schedules | Create a schedule |
| GET | /api/v1/schedules/{id} | Get a schedule |
| PUT | /api/v1/schedules/{id} | Update a schedule |
| DELETE | /api/v1/schedules/{id} | Delete a schedule |
| GET | /api/v1/schedules/{id}/on-call-now | Who is on call on a schedule |
| GET | /api/v1/on-call-now | Who is on call everywhere |
| GET | /api/v1/schedules/my-on-call | My on-call shifts |
Schedule layers
Rotation layers and the people in them.
| POST | /api/v1/schedules/{id}/layers | Add a layer |
| DELETE | /api/v1/schedules/{id}/layers/{layerID} | Delete a layer |
| PATCH | /api/v1/schedules/{id}/layers/{layerID} | Update a layer |
| PUT | /api/v1/schedules/{id}/layers/{layerID}/rotations | Reorder a layer's rota |
| POST | /api/v1/schedules/{id}/layers/{layerID}/rotations | Add a person to a layer |
| DELETE | /api/v1/schedules/{id}/layers/{layerID}/rotations/{rotationID} | Remove a person from a layer |
Overrides
Temporary cover on a schedule.
| GET | /api/v1/schedules/{id}/overrides | List overrides |
| POST | /api/v1/schedules/{id}/overrides | Create an override |
| DELETE | /api/v1/schedules/{id}/overrides/{overrideID} | Delete an override |
Escalation policies
Who is notified about an alert, in what order.
| GET | /api/v1/escalation-policies | List escalation policies |
| POST | /api/v1/escalation-policies | Create an escalation policy |
| GET | /api/v1/escalation-policies/{id} | Get an escalation policy |
| PUT | /api/v1/escalation-policies/{id} | Update an escalation policy |
| DELETE | /api/v1/escalation-policies/{id} | Delete an escalation policy |
Integrations
Monitoring tools that send alerts, and their keys.
| GET | /api/v1/integrations | List integrations |
| POST | /api/v1/integrations | Create an integration |
| GET | /api/v1/integrations/{id} | Get an integration |
| PUT | /api/v1/integrations/{id} | Update an integration |
| DELETE | /api/v1/integrations/{id} | Delete an integration |
| PUT | /api/v1/integrations/{id}/signing-secret | Set or generate a signing secret |
| DELETE | /api/v1/integrations/{id}/signing-secret | Remove a signing secret |
Maintenance windows
Planned work that holds back paging.
| GET | /api/v1/maintenance-windows | List maintenance windows |
| POST | /api/v1/maintenance-windows | Schedule a maintenance window |
| GET | /api/v1/maintenance-windows/{id} | Get a maintenance window |
| DELETE | /api/v1/maintenance-windows/{id} | Delete a maintenance window |
| PATCH | /api/v1/maintenance-windows/{id} | Update a maintenance window |
| POST | /api/v1/maintenance-windows/{id}/complete | End a maintenance window now |
| GET | /api/v1/maintenance-windows/{id}/updates | List a window's updates |
| POST | /api/v1/maintenance-windows/{id}/updates | Post an update |
| DELETE | /api/v1/maintenance-windows/{id}/updates/{updateID} | Delete an update |
| PATCH | /api/v1/maintenance-windows/{id}/updates/{updateID} | Edit an update |
Analytics
MTTA, MTTR, noise and load.
| GET | /api/v1/alerts/analytics | Alert analytics |
| GET | /api/v1/incidents/analytics | Incident analytics |
Message templates
Default status-update texts and the voice-call template.
| GET | /api/v1/update-templates | List status-update templates |
| PUT | /api/v1/update-templates | Save a status-update template |
| GET | /api/v1/voice-template | Get the voice-call template |
| PUT | /api/v1/voice-template | Save the voice-call template |
| POST | /api/v1/voice-template/preview | Preview a voice-call template |
My notifications
How and when the caller is notified.
| GET | /api/v1/notification-preferences | List my notification methods |
| POST | /api/v1/notification-preferences | Add a notification method |
| PUT | /api/v1/notification-preferences/{id} | Update a notification method |
| DELETE | /api/v1/notification-preferences/{id} | Remove a notification method |
| PATCH | /api/v1/notification-preferences/{id} | Update a notification method (PATCH) |
| GET | /api/v1/notification-schedule | Get my notification schedule |
| PUT | /api/v1/notification-schedule | Save my notification schedule |
Slack
The organization's Slack workspace.
| GET | /api/v1/slack | Get the Slack connection |
| DELETE | /api/v1/slack | Disconnect Slack |
| POST | /api/v1/slack/install | Start connecting Slack |
| GET | /api/v1/slack/channels | List Slack channels |
| PUT | /api/v1/slack/default-channel | Set the default Slack channel |
Microsoft Teams
Teams channels and the action links on Teams cards.
| GET | /api/v1/chat | Get chat availability |
| GET | /api/v1/chat/channels | List Teams channels |
| POST | /api/v1/chat/channels | Add a Teams channel |
| DELETE | /api/v1/chat/channels/{id} | Remove a Teams channel |
| PATCH | /api/v1/chat/channels/{id} | Update a Teams channel |
| POST | /api/v1/chat/channels/{id}/test | Send a test message |
| GET | /api/v1/chat/actions/{token} | Preview a Teams action link |
| POST | /api/v1/chat/actions/{token} | Run a Teams action link |
Import
Bring schedules, policies and integrations over from Opsgenie or PagerDuty.
| POST | /api/v1/import/opsgenie/preview | Preview an import from Opsgenie |
| POST | /api/v1/import/opsgenie/apply | Import from Opsgenie |
| POST | /api/v1/import/pagerduty/preview | Preview an import from PagerDuty |
| POST | /api/v1/import/pagerduty/apply | Import from PagerDuty |
Audit log
Who changed what in On-Call.
| GET | /api/v1/oncall-audit-logs | List the On-Call audit log |
