Webhooki przychodzące
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.
Odbiór zdarzenia z narzędzia monitoringu, DevOps lub bezpieczeństwa
Dział zatytułowany „Odbiór zdarzenia z narzędzia monitoringu, DevOps lub bezpieczeństwa”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.
Uwierzytelnianie: Brak: żądanie jest uwierzytelniane podpisem opisanym powyżej.
Parametry
Dział zatytułowany „Parametry”| Nazwa | Miejsce | Typ | Wymagany | Opis |
|---|---|---|---|---|
vendor |
ścieżka | 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) |
tak | |
project |
ścieżka | string | tak | |
X-Exo-Timestamp |
nagłówek | string | nie | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
nagłówek | string | nie | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
X-NH-Connector-Signature |
nagłówek | string | nie | wycofywany Legacy signature, the hex HMAC-SHA256 of the raw body. Sunset 2027-06-30. |
Treść żądania
Dział zatytułowany „Treść żądania”application/json
{ "title": "[Triggered] CPU usage above 90% on web-01", "alert_type": "error", "priority": "P2", "host": "web-01", "tags": [ "env:prod", "team:payments" ]}Odpowiedzi
Dział zatytułowany „Odpowiedzi”| Status | Opis |
|---|---|
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. |
Przykład 200
{ "ok": true, "normalized": { "severity": "high", "title": "[Triggered] CPU usage above 90% on web-01", "source": "datadog" }, "ticket_created": "ACME-1044"}Przykład z curl
Dział zatytułowany „Przykład z 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"]}'Odbiór zdarzenia dla integracji lub mostu ITSM
Dział zatytułowany „Odbiór zdarzenia dla integracji lub mostu ITSM”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.
Uwierzytelnianie: Brak: żądanie jest uwierzytelniane podpisem opisanym powyżej.
Parametry
Dział zatytułowany „Parametry”| Nazwa | Miejsce | Typ | Wymagany | Opis |
|---|---|---|---|---|
integration_id |
ścieżka | string | tak | |
X-Exo-Timestamp |
nagłówek | string | nie | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
nagłówek | string | nie | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
Treść żądania
Dział zatytułowany „Treść żądania”application/json
{ "sys_id": "6f1d2c3b4a5e", "number": "INC0012345", "short_description": "Email delivery delayed", "state": "2", "priority": "3"}Odpowiedzi
Dział zatytułowany „Odpowiedzi”| Status | Opis |
|---|---|
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. |
Przykład 200
{ "ok": true, "accepted": true, "ticket_key": "ACME-1045", "action": "created"}Przykład z curl
Dział zatytułowany „Przykład z 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"}'Odbiór pułapki SNMP z bramy
Dział zatytułowany „Odbiór pułapki SNMP z bramy”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.
Uwierzytelnianie: Brak: żądanie jest uwierzytelniane podpisem opisanym powyżej.
Parametry
Dział zatytułowany „Parametry”| Nazwa | Miejsce | Typ | Wymagany | Opis |
|---|---|---|---|---|
tenant |
ścieżka | string | tak | Tenant code (case-insensitive). |
X-NH-SNMP-Timestamp |
nagłówek | string | tak | |
X-NH-SNMP-Signature |
nagłówek | string | tak |
Treść żądania
Dział zatytułowany „Treść żądania”application/json
| Nazwa | Typ | Wymagany | Opis |
|---|---|---|---|
source_ip |
string | nie | |
source_sysname |
string | nie | |
trap_oid |
string | tak | |
severity |
string (critical, major, minor, warning, info) |
nie | |
varbinds |
object | nie |
{ "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" }}Odpowiedzi
Dział zatytułowany „Odpowiedzi”| Status | Opis |
|---|---|
200 |
Trap ingested. |
400 |
Invalid request. |
401 |
Not authenticated. |
404 |
Resource not found or not configured. |
500 |
Unexpected server error. |
Przykład 200
{ "ok": true, "ticket_key": "ACME-1046", "ingestion_id": "ing_c1a2b3d4", "action": "created"}Przykład z curl
Dział zatytułowany „Przykład z 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"}}'Strona wygenerowana ze specyfikacji OpenAPI API integracji, wersja 1.1.0.