Appearance
OpsGenie
OpsGenie (and JSM Ops) Outgoing Webhook integrations POST alert lifecycle events to Exhale. Each tenant gets a unique HTTPS URL token. Exhale scrubs the payload, upserts a Pulse (source=opsgenie), and runs triage on Create.
See Incoming integrations for how OpsGenie fits alongside PagerDuty and Manual webhook.
Alert notes: OAuth connect posts triage notes via the JSM Ops REST API when enabled. GenieKey alert-note write-back for the manual webhook path is not available yet.
OpenAPI: POST /webhooks/opsgenie (header token) and POST /webhooks/opsgenie/{token}.
Endpoint
After Connect in Connections → Integrations → On-call & paging → OpsGenie:
Preferred (keeps tokens out of proxy access logs):
POST https://exhale.kolstromsystems.com/webhooks/opsgenieSend header X-Exhale-Webhook-Token: {token}.
Path form (also supported):
POST https://exhale.kolstromsystems.com/webhooks/opsgenie/{token}Design partners may substitute https://exhale-staging.kolstromsystems.com as the host.
token— opaque URL segment; this token authenticates the delivery (OpsGenie has no platform HMAC like PagerDuty).- Response: 202 Accepted with
pulse_id,status,created, andmessage.
Unknown tokens return 404. Disabled or expired-trial tenants return 403.
Customer setup
- Sign in as admin → Connections → Integrations → OpsGenie.
- Click Connect OpsGenie and copy the webhook URL.
- In OpsGenie / JSM Ops, create an Outgoing Webhook integration and paste the Exhale URL.
- Enable create, acknowledge, and close (or equivalent) alert actions.
- Send test alert creates a synthetic pulse and marks the integration configured.
Rotate webhook token invalidates the previous URL immediately — update OpsGenie after rotating.
OpsGenie (OAuth) — one-click Atlassian connect for Jira Service Management Operations. Prefer the OAuth card when you want Exhale to register the Outgoing Webhook; use the webhook card above for standalone OpsGenie or explicit URL control.
Payload shape
| Field | Required | Notes |
|---|---|---|
alert.alertId | Yes | Stable id for dedupe (source=opsgenie) |
alert.message | No | Pulse title |
action | No | Create, Acknowledge, Close |
Lifecycle mapping
OpsGenie action | Pulse status |
|---|---|
Create | Received → triage |
Acknowledge | Acknowledged |
Close | Resolved |
Example
bash
TOKEN="your-url-token"
curl -i -X POST "https://exhale.kolstromsystems.com/webhooks/opsgenie/${TOKEN}" \
-H "Content-Type: application/json" \
-d '{"action":"Create","alert":{"alertId":"og-1","message":"CPU high"}}'Auth API
| Method | Path | Notes |
|---|---|---|
GET /auth/integrations/opsgenie | Status + webhook path | |
POST /auth/integrations/opsgenie/connect | Admin + CSRF — issue token | |
POST /auth/integrations/opsgenie/rotate-token | Admin + CSRF | |
POST /auth/integrations/opsgenie/test-alert | Admin + CSRF |
See API reference for /auth/integrations/opsgenie/*.