Skip to content

Integrations

Manage third-party integrations including Slack, Jira, and GitHub App.

Slack Integration

Base path: /api/auth (Slack settings are under auth routes)

Authentication: Bearer token required

Get Slack Settings

GET /api/auth/slack

Get the current Slack webhook configuration.

Response

json
{
  "success": true,
  "data": {
    "enabled": true,
    "webhookUrl": "https://hooks.slack.com/services/T****/B****/****",
    "channel": "#infra-alerts",
    "events": ["scan_completed", "drift_detected", "drift_resolved"]
  }
}

Example

bash
curl -H "Authorization: Bearer TOKEN" \
  https://api.controlinfra.com/api/auth/slack

Update Slack Settings

PUT /api/auth/slack

Update Slack webhook configuration.

Request Body

FieldTypeRequiredDescription
webhookUrlstringYesSlack webhook URL
channelstringNoChannel name (for display)
eventsstring[]NoEvents to notify on

Test Slack Webhook

POST /api/auth/slack/test

Send a test message to the configured Slack webhook.

Example

bash
curl -X POST -H "Authorization: Bearer TOKEN" \
  https://api.controlinfra.com/api/auth/slack/test

Delete Slack Integration

DELETE /api/auth/slack

Remove the Slack webhook configuration.

Jira Integration

Base path: /api/jira

Authentication: Bearer token required (except OAuth callback)

Initiate OAuth

GET /api/jira/oauth/initiate

Authentication: Bearer token required

Start the Jira OAuth flow. Returns the Atlassian authorization URL.

Response

json
{
  "success": true,
  "data": {
    "authorizationUrl": "https://auth.atlassian.com/authorize?..."
  }
}

OAuth Callback

GET /api/jira/oauth/callback

Authentication: None (public)

Handles the Atlassian OAuth callback. Validates state and stores tokens.

Get Jira Config

GET /api/jira/config

Get the current Jira integration configuration.

Response

json
{
  "success": true,
  "data": {
    "connected": true,
    "siteUrl": "https://mycompany.atlassian.net",
    "defaultProject": "INFRA",
    "defaultIssueType": "Bug"
  }
}

Save Jira Config

POST /api/jira/config

Save or update Jira configuration settings (project defaults, issue type, etc.).

Request Body

FieldTypeRequiredDescription
defaultProjectstringNoDefault Jira project key
defaultIssueTypestringNoDefault issue type

Test Connection

POST /api/jira/test-connection

Test the Jira connection using stored OAuth tokens.

Get Jira Projects

GET /api/jira/projects

List available Jira projects.

Get Issue Types

GET /api/jira/projects/:projectKey/issue-types

Get issue types for a specific Jira project.

Path Parameters

ParameterTypeDescription
projectKeystringJira project key (e.g., INFRA)

Get Priorities

GET /api/jira/priorities

Get available Jira priorities.

Create Ticket from Widget

POST /api/jira/widgets/:widgetId/create-ticket

Create a Jira ticket from a drift widget.

Path Parameters

ParameterTypeDescription
widgetIdstringDrift widget ID

Verify Widget Ticket

GET /api/jira/widgets/:widgetId/verify-ticket

Verify that a linked Jira ticket still exists.

Path Parameters

ParameterTypeDescription
widgetIdstringDrift widget ID

Disconnect Jira

DELETE /api/jira/disconnect

Disconnect the Jira integration and remove stored OAuth credentials.

GitHub App

GitHub App management is handled under the Authentication endpoints:

  • GET /api/auth/github-app/install — Get install URL
  • GET /api/auth/github-app/callback — Installation callback
  • GET /api/auth/github-app/installations — List installations
  • POST /api/auth/github-app/set-active — Set active installation
  • POST /api/auth/github-app/sync-repos — Sync repositories
  • DELETE /api/auth/github-app/installations/:installationId — Uninstall