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

AdapterCapabilitiesAuth methods
ServiceNowIncident sync, CMDB federationOAuth2, Basic Auth
JiraIssue tracking, project managementOAuth2, API Token
ZendeskTicket management, support portalAPI Token, OAuth
FreshserviceIT support, change managementAPI Key
BMC Remedy/HelixEnterprise IT operationsJWT
OpsGenieAlert management, on-call schedulingAPI Key
NetBoxNetwork inventory, DCIMAPI Token
Device42IT asset discovery, CMDBUsername/Password
Microsoft IntuneMobile device managementOAuth2 (Azure AD)
VMware Workspace ONEUEM, device managementAPI Key, OAuth
HR/LDAPDirectory sync, user provisioningLDAP Bind
CMDBAsset management, CI trackingAPI Key

Communication integrations

IntegrationCapabilitiesAuth methods
Slack (Bolt SDK)OAuth, slash commands, rich formattingOAuth2
Microsoft Teams (Bot Framework)Adaptive cards, Graph APIOAuth2 (Azure AD)
PagerDutyIncident sync, on-call, escalationAPI Key
Email (SMTP)Nodemailer with templatesSMTP credentials
SMS (Twilio)Delivery trackingAccount SID + Auth Token
Push (Firebase FCM)Android, iOS, Web pushService account key
WebhooksGeneric HTTP callbacksHMAC-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, or webhooks.

  • 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, or syncing.

  • Name
    auth_type
    Type
    string
    Description

    Authentication method used by this connector. One of oauth2, api_key, basic, jwt, or ldap.

  • Name
    sync_direction
    Type
    string
    Description

    Data flow direction. One of inbound, outbound, or bidirectional.

  • 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), and error_count (integer).

  • Name
    created_at
    Type
    timestamp
    Description

    Timestamp of when the connector was created.


GET/v1/integrations

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 is 100.

  • Name
    status
    Type
    string
    Description

    Filter by connection status: connected, disconnected, error, or syncing.

  • Name
    type
    Type
    string
    Description

    Filter by integration type, e.g. servicenow, jira, slack.

Request

GET
/v1/integrations
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"
      // ...
    }
  ]
}

POST/v1/integrations/:type/connect

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, or bidirectional. Defaults to bidirectional.

  • Name
    config
    Type
    object
    Description

    Type-specific configuration such as instance URL, project keys, or channel IDs.

Request

POST
/v1/integrations/servicenow/connect
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/v1/integrations/:type/status

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

GET
/v1/integrations/servicenow/status
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
}

POST/v1/integrations/:type/sync

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, or delta. Defaults to incremental.

  • 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 incremental and delta scopes.

Request

POST
/v1/integrations/servicenow/sync
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
}

DELETE/v1/integrations/:type/disconnect

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 to false.

Request

DELETE
/v1/integrations/servicenow/disconnect
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
}

GET/v1/integrations/:type/logs

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 is 200.

  • Name
    level
    Type
    string
    Description

    Filter by log level: info, warn, error, or debug.

  • 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

GET
/v1/integrations/servicenow/logs
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"
      // ...
    }
  ]
}

Was this page helpful?