Webhook الواردة
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.
استقبال حدث من أداة مراقبة أو DevOps أو أمن
Section titled “استقبال حدث من أداة مراقبة أو DevOps أو أمن”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.
المصادقة: لا يوجد: تتم مصادقة الطلب بالتوقيع الموضح أعلاه.
المعاملات
Section titled “المعاملات”| الاسم | الموضع | النوع | إلزامي | الوصف |
|---|---|---|---|---|
vendor |
المسار | 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) |
نعم | |
project |
المسار | string | نعم | |
X-Exo-Timestamp |
ترويسة | string | لا | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
ترويسة | string | لا | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
X-NH-Connector-Signature |
ترويسة | string | لا | مُهمل Legacy signature, the hex HMAC-SHA256 of the raw body. Sunset 2027-06-30. |
محتوى الطلب
Section titled “محتوى الطلب”application/json
{ "title": "[Triggered] CPU usage above 90% on web-01", "alert_type": "error", "priority": "P2", "host": "web-01", "tags": [ "env:prod", "team:payments" ]}الاستجابات
Section titled “الاستجابات”| الحالة | الوصف |
|---|---|
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. |
مثال 200
{ "ok": true, "normalized": { "severity": "high", "title": "[Triggered] CPU usage above 90% on web-01", "source": "datadog" }, "ticket_created": "ACME-1044"}مثال باستخدام curl
Section titled “مثال باستخدام 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"]}'استقبال حدث لتكامل أو جسر ITSM
Section titled “استقبال حدث لتكامل أو جسر 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.
المصادقة: لا يوجد: تتم مصادقة الطلب بالتوقيع الموضح أعلاه.
المعاملات
Section titled “المعاملات”| الاسم | الموضع | النوع | إلزامي | الوصف |
|---|---|---|---|---|
integration_id |
المسار | string | نعم | |
X-Exo-Timestamp |
ترويسة | string | لا | Unix time in seconds when the request was signed. Required when X-Exo-Signature is sent. |
X-Exo-Signature |
ترويسة | string | لا | v1= + hex HMAC-SHA256(secret, “<X-Exo-Timestamp>.<raw body>”). Several comma-separated values are allowed. |
محتوى الطلب
Section titled “محتوى الطلب”application/json
{ "sys_id": "6f1d2c3b4a5e", "number": "INC0012345", "short_description": "Email delivery delayed", "state": "2", "priority": "3"}الاستجابات
Section titled “الاستجابات”| الحالة | الوصف |
|---|---|
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. |
مثال 200
{ "ok": true, "accepted": true, "ticket_key": "ACME-1045", "action": "created"}مثال باستخدام curl
Section titled “مثال باستخدام 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 من بوابة
Section titled “استقبال SNMP trap من بوابة”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.
المصادقة: لا يوجد: تتم مصادقة الطلب بالتوقيع الموضح أعلاه.
المعاملات
Section titled “المعاملات”| الاسم | الموضع | النوع | إلزامي | الوصف |
|---|---|---|---|---|
tenant |
المسار | string | نعم | Tenant code (case-insensitive). |
X-NH-SNMP-Timestamp |
ترويسة | string | نعم | |
X-NH-SNMP-Signature |
ترويسة | string | نعم |
محتوى الطلب
Section titled “محتوى الطلب”application/json
| الاسم | النوع | إلزامي | الوصف |
|---|---|---|---|
source_ip |
string | لا | |
source_sysname |
string | لا | |
trap_oid |
string | نعم | |
severity |
string (critical, major, minor, warning, info) |
لا | |
varbinds |
object | لا |
{ "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" }}الاستجابات
Section titled “الاستجابات”| الحالة | الوصف |
|---|---|
200 |
Trap ingested. |
400 |
Invalid request. |
401 |
Not authenticated. |
404 |
Resource not found or not configured. |
500 |
Unexpected server error. |
مثال 200
{ "ok": true, "ticket_key": "ACME-1046", "ingestion_id": "ing_c1a2b3d4", "action": "created"}مثال باستخدام curl
Section titled “مثال باستخدام 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"}}'صفحة مُنشأة من مواصفة OpenAPI لواجهة التكامل، الإصدار 1.1.0.