Connectors & Integrations
Connectors are the bridge between your ITSM Automation platform and external systems — from ticketing platforms like ServiceNow and Jira to communication channels like Slack and Microsoft Teams. On this page, we cover every endpoint you need to list, connect, monitor, sync, and disconnect integrations programmatically.
Supported adapters
The platform ships with 12 ITSM adapters and 7 communication integrations out of the box.
ITSM adapters
| Adapter | Capabilities | Auth methods |
|---|---|---|
| ServiceNow | Incident sync, CMDB federation | OAuth2, Basic Auth |
| Jira | Issue tracking, project management | OAuth2, API Token |
| Zendesk | Ticket management, support portal | API Token, OAuth |
| Freshservice | IT support, change management | API Key |
| BMC Remedy/Helix | Enterprise IT operations | JWT |
| OpsGenie | Alert management, on-call scheduling | API Key |
| NetBox | Network inventory, DCIM | API Token |
| Device42 | IT asset discovery, CMDB | Username/Password |
| Microsoft Intune | Mobile device management | OAuth2 (Azure AD) |
| VMware Workspace ONE | UEM, device management | API Key, OAuth |
| HR/LDAP | Directory sync, user provisioning | LDAP Bind |
| CMDB | Asset management, CI tracking | API Key |
Communication integrations
| Integration | Capabilities | Auth methods |
|---|---|---|
| Slack (Bolt SDK) | OAuth, slash commands, rich formatting | OAuth2 |
| Microsoft Teams (Bot Framework) | Adaptive cards, Graph API | OAuth2 (Azure AD) |
| PagerDuty | Incident sync, on-call, escalation | API Key |
| Email (SMTP) | Nodemailer with templates | SMTP credentials |
| SMS (Twilio) | Delivery tracking | Account SID + Auth Token |
| Push (Firebase FCM) | Android, iOS, Web push | Service account key |
| Webhooks | Generic HTTP callbacks | HMAC-SHA256 |
The connector model
The connector model contains all the information about a configured integration instance, including its type, authentication method, sync direction, and real-time health status.
Properties
- Name
id- Type
- string
- Description
Unique identifier for the connector instance.
- Name
type- Type
- string
- Description
The integration type. One of
servicenow,jira,zendesk,freshservice,bmc_remedy,opsgenie,netbox,device42,intune,workspace_one,hr_ldap,cmdb,slack,teams,pagerduty,email,sms,push, orwebhooks.
- Name
name- Type
- string
- Description
Human-readable display name for this connector instance.
- Name
status- Type
- string
- Description
Current connection status. One of
connected,disconnected,error, orsyncing.
- Name
auth_type- Type
- string
- Description
Authentication method used by this connector. One of
oauth2,api_key,basic,jwt, orldap.
- Name
sync_direction- Type
- string
- Description
Data flow direction. One of
inbound,outbound, orbidirectional.
- Name
last_sync_at- Type
- timestamp
- Description
Timestamp of the last successful data synchronization.
- Name
health- Type
- object
- Description
Real-time health information. Contains
status(string),latency_ms(integer), anderror_count(integer).
- Name
created_at- Type
- timestamp
- Description
Timestamp of when the connector was created.
List all integrations
This endpoint allows you to retrieve a paginated list of all configured integrations across your organization. By default, a maximum of twenty integrations are shown per page.
Optional attributes
- Name
limit- Type
- integer
- Description
Limit the number of integrations returned. Default is
20, maximum is100.
- Name
status- Type
- string
- Description
Filter by connection status:
connected,disconnected,error, orsyncing.
- Name
type- Type
- string
- Description
Filter by integration type, e.g.
servicenow,jira,slack.
Request
curl -G http://localhost:3000/v1/integrations \
-H "Authorization: Bearer {token}" \
-d limit=10 \
-d status=connected
Response
{
"has_more": true,
"data": [
{
"id": "int_sn_7xKpQ2mR4wVb",
"type": "servicenow",
"name": "ServiceNow Production",
"status": "connected",
"auth_type": "oauth2",
"sync_direction": "bidirectional",
"last_sync_at": 1708732800,
"health": {
"status": "healthy",
"latency_ms": 142,
"error_count": 0
},
"created_at": 1706140800
},
{
"id": "int_jira_3nLsW8kF9xYt",
"type": "jira",
"name": "Jira Cloud - Engineering",
"status": "connected",
"auth_type": "oauth2",
"sync_direction": "bidirectional",
"last_sync_at": 1708732500,
"health": {
"status": "healthy",
"latency_ms": 89,
"error_count": 0
},
"created_at": 1706227200
},
{
"id": "int_slack_9pRtH5jN2cEm"
// ...
}
]
}
Connect an integration
This endpoint allows you to establish a new connection to an external service. The required body attributes depend on the integration type and its authentication method. Credentials are encrypted at rest using AES-256-GCM before storage.
Required attributes
- Name
name- Type
- string
- Description
A display name for this connector instance.
- Name
auth- Type
- object
- Description
Authentication credentials. Structure varies by
auth_type— see examples.
Optional attributes
- Name
sync_direction- Type
- string
- Description
Data flow direction:
inbound,outbound, orbidirectional. Defaults tobidirectional.
- Name
config- Type
- object
- Description
Type-specific configuration such as instance URL, project keys, or channel IDs.
Request
curl -X POST http://localhost:3000/v1/integrations/servicenow/connect \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "ServiceNow Production",
"auth": {
"type": "oauth2",
"client_id": "abc123",
"client_secret": "secret456",
"instance_url": "https://company.service-now.com"
},
"sync_direction": "bidirectional",
"config": {
"sync_incidents": true,
"cmdb_federation": true
}
}'
Response
{
"id": "int_sn_7xKpQ2mR4wVb",
"type": "servicenow",
"name": "ServiceNow Production",
"status": "connected",
"auth_type": "oauth2",
"sync_direction": "bidirectional",
"last_sync_at": null,
"health": {
"status": "healthy",
"latency_ms": 215,
"error_count": 0
},
"created_at": 1708732800
}
Get integration status
This endpoint allows you to retrieve the current connection status and health metrics for a specific integration type. The response includes real-time latency, error counts, and sync state.
Request
curl http://localhost:3000/v1/integrations/servicenow/status \
-H "Authorization: Bearer {token}"
Response
{
"id": "int_sn_7xKpQ2mR4wVb",
"type": "servicenow",
"name": "ServiceNow Production",
"status": "connected",
"auth_type": "oauth2",
"sync_direction": "bidirectional",
"last_sync_at": 1708732800,
"health": {
"status": "healthy",
"latency_ms": 142,
"error_count": 0
},
"uptime_percent": 99.97,
"total_syncs": 4821,
"failed_syncs": 3,
"created_at": 1706140800
}
Sync integration data
This endpoint triggers a manual data synchronization for a specific integration. Syncs are enqueued via BullMQ and processed asynchronously. The response returns a sync job ID you can use to track progress via the logs endpoint.
Optional attributes
- Name
scope- Type
- string
- Description
Limit the sync scope:
full,incremental, ordelta. Defaults toincremental.
- Name
entities- Type
- array
- Description
Restrict sync to specific entity types, e.g.
["incidents", "changes"]for ServiceNow or["issues"]for Jira.
- Name
since- Type
- timestamp
- Description
Only sync records modified after this timestamp. Applies to
incrementalanddeltascopes.
Request
curl -X POST http://localhost:3000/v1/integrations/servicenow/sync \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"scope": "incremental",
"entities": ["incidents", "changes"],
"since": 1708646400
}'
Response
{
"sync_job_id": "sync_4kPmN8rT2wXq",
"type": "servicenow",
"scope": "incremental",
"entities": ["incidents", "changes"],
"status": "queued",
"queued_at": 1708733100,
"estimated_records": 247
}
Disconnect an integration
This endpoint disconnects an integration and revokes stored credentials. Active sync jobs for this integration are cancelled. Historical sync logs are retained for 90 days for audit purposes.
Optional attributes
- Name
purge_data- Type
- boolean
- Description
When set to
true, removes all synced data from the local database in addition to disconnecting. Defaults tofalse.
Request
curl -X DELETE http://localhost:3000/v1/integrations/servicenow/disconnect \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"purge_data": false}'
Response
{
"id": "int_sn_7xKpQ2mR4wVb",
"type": "servicenow",
"name": "ServiceNow Production",
"status": "disconnected",
"disconnected_at": 1708733400,
"purge_data": false,
"logs_retained_until": 1716509400
}
View integration logs
This endpoint returns a paginated list of sync and activity logs for a specific integration. Logs include sync operations, authentication events, errors, and webhook deliveries. Retained for 90 days.
Optional attributes
- Name
limit- Type
- integer
- Description
Limit the number of log entries returned. Default is
50, maximum is200.
- Name
level- Type
- string
- Description
Filter by log level:
info,warn,error, ordebug.
- Name
sync_job_id- Type
- string
- Description
Filter logs to a specific sync job by its ID.
- Name
since- Type
- timestamp
- Description
Only return log entries after this timestamp.
Request
curl -G http://localhost:3000/v1/integrations/servicenow/logs \
-H "Authorization: Bearer {token}" \
-d limit=25 \
-d level=error
Response
{
"has_more": true,
"data": [
{
"id": "log_8mWqR3nT5vXp",
"type": "servicenow",
"sync_job_id": "sync_4kPmN8rT2wXq",
"level": "error",
"message": "Failed to sync incident INC0012345: field mapping error on assignment_group",
"details": {
"incident_id": "INC0012345",
"field": "assignment_group",
"expected_type": "string",
"received_type": "null"
},
"timestamp": 1708732900
},
{
"id": "log_2kNpL7mS9wYr",
"type": "servicenow",
"sync_job_id": "sync_4kPmN8rT2wXq",
"level": "error",
"message": "Rate limit exceeded: 429 Too Many Requests — retrying in 30s",
"details": {
"retry_attempt": 2,
"max_retries": 5,
"retry_after_ms": 30000
},
"timestamp": 1708732850
},
{
"id": "log_6jHtK4pR8uWn"
// ...
}
]
}