Eingehende Webhooks
Endpoints that receive events from external tools (monitoring, CI/CD, SIEM/EDR, ITSM bridges, SNMP gateways) and turn them into tickets or updates. Requests are authenticated with an HMAC signature computed with the connector’s secret.
Ereignis eines Monitoring-, DevOps- oder Security-Tools empfangen
Abschnitt betitelt „Ereignis eines Monitoring-, DevOps- oder Security-Tools empfangen“POST /api/connectors/{vendor}/{project}
Point your tool’s webhook at this URL. project is the exoCortex tenant/project the
connector was configured for in Core → Integrations. The payload is the vendor’s
native webhook format and exoCortex normalizes it.
Authentication depends on the vendor:
- Vendors with native signing are verified with their own scheme: GitHub
X-Hub-Signature-256, GitLabX-Gitlab-Token, PagerDutyX-PagerDuty-Signature, OpsgenieAuthorization: GenieKey, Statuspage. - All other vendors use the exoCortex scheme:
X-Exo-Timestamp+X-Exo-Signature: v1=HMAC-SHA256(secret, "<timestamp>.<raw body>"), with a 300-second tolerance. See Webhook signatures. The legacyX-NH-Connector-Signature(hex HMAC of the body, no timestamp) is deprecated.
Authentifizierung: Keine: Die Anfrage wird durch die oben beschriebene Signatur authentifiziert.
Parameter
Abschnitt betitelt „Parameter“| Name | Ort | Typ | Pflicht | Beschreibung |
|---|---|---|---|---|
vendor |
Pfad | string (datadog, newrelic, prometheus, grafana, github, gitlab, jenkins, bitbucket, nagios, icinga, centreon, statuspage, pagerduty, opsgenie, wazuh, sentinel, tenable, qualys, splunk, elastic, crowdstrike, sentinelone, qradar, cyberprotect, edr_network, fortigate, checkpoint, ninjaone) |
ja | |
project |
Pfad | string | ja | |
X-Exo-Timestamp |
Header | string | nein | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
Header | string | nein | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
X-NH-Connector-Signature |
Header | string | nein | veraltet Legacy signature, the hex HMAC-SHA256 of the raw body. Sunset 2027-06-30. |
Request-Body
Abschnitt betitelt „Request-Body“application/json
{ "title": "[Triggered] CPU usage above 90% on web-01", "alert_type": "error", "priority": "P2", "host": "web-01", "tags": [ "env:prod", "team:payments" ]}Antworten
Abschnitt betitelt „Antworten“| Status | Beschreibung |
|---|---|
200 |
Event processed. |
400 |
Invalid request. |
401 |
Not authenticated. |
403 |
Signature invalid, expired or missing. |
404 |
Resource not found or not configured. |
503 |
The connector’s circuit breaker is open after repeated failures. Retry later. |
Beispiel 200
{ "ok": true, "normalized": { "severity": "high", "title": "[Triggered] CPU usage above 90% on web-01", "source": "datadog" }, "ticket_created": "ACME-1044"}Beispiel mit curl
Abschnitt betitelt „Beispiel mit curl“curl -X POST "https://exocortex-api.ai-exo-cortex.com/api/connectors/<vendor>/ACME" \ -H "X-Exo-Timestamp: $TS" \ -H "X-Exo-Signature: v1=$SIGNATURE" \ -H "Content-Type: application/json" \ --data '{"title":"[Triggered] CPU usage above 90% on web-01","alert_type":"error","priority":"P2","host":"web-01","tags":["env:prod","team:payments"]}'Ereignis für eine Integration oder ITSM-Bridge empfangen
Abschnitt betitelt „Ereignis für eine Integration oder ITSM-Bridge empfangen“POST /api/integration/webhook/{integration_id}
Generic inbound endpoint for integrations configured in Core → Integration Center (for example ServiceNow, Jira, Zendesk, BMC or a generic REST source). The payload is mapped with the integration’s field mapping.
Signature: X-Exo-Timestamp + X-Exo-Signature (recommended). Otherwise one of
X-Bridge-Signature, X-Hub-Signature-256 or X-Signature carrying
sha256=<hex HMAC of the raw body>. A signature is mandatory when the integration has
a webhook secret, and integrations in webhook mode must have one.
Authentifizierung: Keine: Die Anfrage wird durch die oben beschriebene Signatur authentifiziert.
Parameter
Abschnitt betitelt „Parameter“| Name | Ort | Typ | Pflicht | Beschreibung |
|---|---|---|---|---|
integration_id |
Pfad | string | ja | |
X-Exo-Timestamp |
Header | string | nein | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
Header | string | nein | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
Request-Body
Abschnitt betitelt „Request-Body“application/json
{ "sys_id": "6f1d2c3b4a5e", "number": "INC0012345", "short_description": "Email delivery delayed", "state": "2", "priority": "3"}Antworten
Abschnitt betitelt „Antworten“| Status | Beschreibung |
|---|---|
200 |
Event processed. |
202 |
Event queued for durable processing. |
400 |
Invalid request. |
401 |
Signature missing or invalid. |
404 |
Resource not found or not configured. |
500 |
Unexpected server error. |
503 |
Circuit breaker open for this integration. |
Beispiel 200
{ "ok": true, "accepted": true, "ticket_key": "ACME-1045", "action": "created"}Beispiel mit curl
Abschnitt betitelt „Beispiel mit curl“curl -X POST "https://exocortex-api.ai-exo-cortex.com/api/integration/webhook/servicenow_acme" \ -H "X-Exo-Timestamp: $TS" \ -H "X-Exo-Signature: v1=$SIGNATURE" \ -H "Content-Type: application/json" \ --data '{"sys_id":"6f1d2c3b4a5e","number":"INC0012345","short_description":"Email delivery delayed","state":"2","priority":"3"}'SNMP-Trap von einem Gateway empfangen
Abschnitt betitelt „SNMP-Trap von einem Gateway empfangen“POST /api/snmp-gateway/trap/{tenant}
Your SNMP-to-HTTP gateway converts traps to JSON and posts them here. Authentication:
X-NH-SNMP-Timestamp (Unix time in milliseconds) and
X-NH-SNMP-Signature: sha256=<hex HMAC-SHA256(secret, "<timestamp>|<raw body>")>,
with a 5-minute tolerance. The secret is set in Core → Integrations → SNMP gateway.
Authentifizierung: Keine: Die Anfrage wird durch die oben beschriebene Signatur authentifiziert.
Parameter
Abschnitt betitelt „Parameter“| Name | Ort | Typ | Pflicht | Beschreibung |
|---|---|---|---|---|
tenant |
Pfad | string | ja | Tenant code (case-insensitive). |
X-NH-SNMP-Timestamp |
Header | string | ja | |
X-NH-SNMP-Signature |
Header | string | ja |
Request-Body
Abschnitt betitelt „Request-Body“application/json
| Name | Typ | Pflicht | Beschreibung |
|---|---|---|---|
source_ip |
string | nein | |
source_sysname |
string | nein | |
trap_oid |
string | ja | |
severity |
string (critical, major, minor, warning, info) |
nein | |
varbinds |
object | nein |
{ "source_ip": "192.0.2.10", "source_sysname": "core-sw-01", "trap_oid": "1.3.6.1.6.3.1.1.5.3", "severity": "major", "varbinds": { "1.3.6.1.2.1.2.2.1.1": "12", "1.3.6.1.2.1.2.2.1.2": "GigabitEthernet1/0/12" }}Antworten
Abschnitt betitelt „Antworten“| Status | Beschreibung |
|---|---|
200 |
Trap ingested. |
400 |
Invalid request. |
401 |
Not authenticated. |
404 |
Resource not found or not configured. |
500 |
Unexpected server error. |
Beispiel 200
{ "ok": true, "ticket_key": "ACME-1046", "ingestion_id": "ing_c1a2b3d4", "action": "created"}Beispiel mit curl
Abschnitt betitelt „Beispiel mit curl“curl -X POST "https://exocortex-api.ai-exo-cortex.com/api/snmp-gateway/trap/ACME" \ -H "Content-Type: application/json" \ --data '{"source_ip":"192.0.2.10","source_sysname":"core-sw-01","trap_oid":"1.3.6.1.6.3.1.1.5.3","severity":"major","varbinds":{"1.3.6.1.2.1.2.2.1.1":"12","1.3.6.1.2.1.2.2.1.2":"GigabitEthernet1/0/12"}}'Seite generiert aus der OpenAPI-Spezifikation der Integrations-API, Version 1.1.0.