Integrations service#

Service for managing integrations with external services.

OpenAPI file: IntegrationsService.json

Endpoints#

Create Slack webhook#

GET /scout/v2/integrations/slack-oauth/redirect

Creates a new Slack integration. Called internally after Slack authorization.

Query parameters

code string required

Temporary authorization code issued by Slack.

state string required

​

Response

No content (HTTP 204).

Request

curl "https://api.gov.nominal.io/api/scout/v2/integrations/slack-oauth/redirect?code=<code>&state=<state>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/slack-oauth/redirect?code=<code>&state=<state>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/slack-oauth/redirect?code=<code>&state=<state>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/scout/v2/integrations/slack-oauth/redirect?code=<code>&state=<state>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Create integration#

POST /scout/v2/integrations

Creates a new integration.

Body

name string required

​

description string

​

createIntegrationDetails CreateIntegrationDetails required

​

Set type to "createSimpleWebhookDetails".

createSimpleWebhookDetails CreateSimpleWebhookDetails

​

Fields of CreateSimpleWebhookDetails
webhook string required

Webhook URL (must be HTTPS in production)

secret string

Optional secret for HMAC-SHA256 signing (recommended)

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "createOpsgenieIntegrationDetails".

createOpsgenieIntegrationDetails CreateOpsgenieIntegrationDetails

​

Fields of CreateOpsgenieIntegrationDetails
apiKey string required

​

region OpsgenieRegion required

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "createTeamsWebhookIntegrationDetails".

createTeamsWebhookIntegrationDetails CreateTeamsWebhookIntegrationDetails

​

Fields of CreateTeamsWebhookIntegrationDetails
webhook string required

​

Set type to "createPagerDutyIntegrationDetails".

createPagerDutyIntegrationDetails CreatePagerDutyIntegrationDetails

​

Fields of CreatePagerDutyIntegrationDetails
routingKey string required

​

workspace string (RID)

The workspace in which to create the integration. If not provided, the integration will be created in the default workspace for the user’s organization, if the default workspace for the organization is configured.

Response

rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v2/integrations" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "createIntegrationDetails": {
    "type": "createSimpleWebhookDetails",
    "createSimpleWebhookDetails": {
      "webhook": "<webhook>"
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "createIntegrationDetails": {
            "type": "createSimpleWebhookDetails",
            "createSimpleWebhookDetails": {"webhook": "<webhook>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "createIntegrationDetails": {
            "type": "createSimpleWebhookDetails",
            "createSimpleWebhookDetails": {"webhook": "<webhook>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v2/integrations",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "createIntegrationDetails": {
                    "type": "createSimpleWebhookDetails",
                    "createSimpleWebhookDetails": {"webhook": "<webhook>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<integration rid>",
  "name": "<name>",
  "description": "<description>",
  "integrationDetails": {
    "type": "slackWebhookIntegration",
    "slackWebhookIntegration": {
      "teamName": "<team name>",
      "channel": "<channel>",
      "channelId": "<channel id>",
      "slackInstance": "COMMERCIAL"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "createdBy": "<created by>",
  "isArchived": true
}

Create secure webhook integration#

POST /scout/v2/integrations/internal/secure-webhook

Creates a new webhook integration with HMAC signing. Returns the integration and the server-generated signing key. The signing key is only returned once — store it securely.

Body

name string required

​

description string

​

workspace string (RID)

The workspace in which to create the integration. If not provided, the integration will be created in the default workspace for the user’s organization, if the default workspace for the organization is configured.

integration SecureWebhookIntegration required

​

Fields of SecureWebhookIntegration
url string required

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig required

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Response

integration Integration

​

Fields of Integration
rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

signingKey string

Server-generated HMAC-SHA256 signing key (256-bit, base64-encoded). Store this securely in your secrets manager (e.g., AWS Secrets Manager, HashiCorp Vault). This key cannot be retrieved again - if you lose it, use rotateSecureWebhookIntegrationSigningKey to generate a new one.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "integration": {
    "url": "<url>",
    "deliveryConfig": {
      "defaultRequestTimeoutSeconds": 1,
      "defaultMaxRetries": 1,
      "defaultRetryIntervalSeconds": 1,
      "defaultExponentialBackoff": true,
      "defaultMaxRetryIntervalSeconds": 1,
      "defaultDeliveryTimeoutSeconds": 1
    }
  }
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "integration": {
            "url": "<url>",
            "deliveryConfig": {
                "defaultRequestTimeoutSeconds": 1,
                "defaultMaxRetries": 1,
                "defaultRetryIntervalSeconds": 1,
                "defaultExponentialBackoff": True,
                "defaultMaxRetryIntervalSeconds": 1,
                "defaultDeliveryTimeoutSeconds": 1,
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "name": "<name>",
        "integration": {
            "url": "<url>",
            "deliveryConfig": {
                "defaultRequestTimeoutSeconds": 1,
                "defaultMaxRetries": 1,
                "defaultRetryIntervalSeconds": 1,
                "defaultExponentialBackoff": True,
                "defaultMaxRetryIntervalSeconds": 1,
                "defaultDeliveryTimeoutSeconds": 1,
            },
        },
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "name": "<name>",
                "integration": {
                    "url": "<url>",
                    "deliveryConfig": {
                        "defaultRequestTimeoutSeconds": 1,
                        "defaultMaxRetries": 1,
                        "defaultRetryIntervalSeconds": 1,
                        "defaultExponentialBackoff": True,
                        "defaultMaxRetryIntervalSeconds": 1,
                        "defaultDeliveryTimeoutSeconds": 1,
                    },
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "integration": {
    "rid": "<integration rid>",
    "name": "<name>",
    "description": "<description>",
    "integrationDetails": {
      "type": "slackWebhookIntegration",
      "slackWebhookIntegration": {
        "teamName": "<team name>",
        "channel": "<channel>",
        "channelId": "<channel id>",
        "slackInstance": "COMMERCIAL"
      }
    },
    "createdAt": "2026-01-01T00:00:00Z",
    "createdBy": "<created by>",
    "isArchived": true
  },
  "signingKey": "<signing key>"
}

Send secure webhook message#

POST /scout/v2/integrations/internal/secure-webhook/{integrationRid}

Sends a message to a secure webhook integration with HMAC-SHA256 signature. Implements retry logic with exponential backoff based on merged delivery configuration. Request configuration overrides take precedence over integration’s stored configuration.

Path parameters

integrationRid string (RID) required

​

Body

payload string required

JSON payload to send. Will be signed with HMAC-SHA256 using the integration’s signing key. Validated before signing to ensure well-formed JSON.

customHeaders map of string to string

Optional custom headers to override integration’s stored customHeaders for this request. Must not include blocked headers (Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, X-Nominal-*). Merged with integration headers, request overrides take precedence.

deliveryConfig WebhookDeliveryConfig

Optional delivery configuration to override integration’s stored deliveryConfig for this request. Merged with integration config, request overrides take precedence. Cross-field constraints (e.g., maxRetryInterval >= retryInterval) validated on merged result.

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Response

An empty JSON object, {}.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook/<integration rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "payload": "<payload>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"payload": "<payload>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"payload": "<payload>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v2/integrations/internal/secure-webhook/<integration rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={"payload": "<payload>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{}

Delete integration#

DELETE /scout/v2/integrations/{integrationRid}

Deletes an integration by archiving.

Path parameters

integrationRid string (RID) required

​

Response

No content (HTTP 204).

Request

curl -X DELETE "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.delete(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import httpx

response = httpx.delete(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.delete(
            "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Update integration metadata#

PUT /scout/v2/integrations/{integrationRid}

Updates the metadata of an integration.

Path parameters

integrationRid string (RID) required

​

Body

name string

​

description string

​

Response

rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

Request

curl -X PUT "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "name": "<name>",
  "description": "<description>"
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"name": "<name>", "description": "<description>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
    json={"name": "<name>", "description": "<description>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.put(
            "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
            headers={"Authorization": "Bearer <api key>"},
            json={"name": "<name>", "description": "<description>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<integration rid>",
  "name": "<name>",
  "description": "<description>",
  "integrationDetails": {
    "type": "slackWebhookIntegration",
    "slackWebhookIntegration": {
      "teamName": "<team name>",
      "channel": "<channel>",
      "channelId": "<channel id>",
      "slackInstance": "COMMERCIAL"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "createdBy": "<created by>",
  "isArchived": true
}

Get integration#

GET /scout/v2/integrations/{integrationRid}

Retrieves an integration with the specified integration RID.

Path parameters

integrationRid string (RID) required

​

Response

rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

Request

curl "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<integration rid>",
  "name": "<name>",
  "description": "<description>",
  "integrationDetails": {
    "type": "slackWebhookIntegration",
    "slackWebhookIntegration": {
      "teamName": "<team name>",
      "channel": "<channel>",
      "channelId": "<channel id>",
      "slackInstance": "COMMERCIAL"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "createdBy": "<created by>",
  "isArchived": true
}

Update integration details#

PUT /scout/v2/integrations/{integrationRid}/details

Updates the integration details for an integration. Intended to allow changing webhooks or rotating API keys.

Path parameters

integrationRid string (RID) required

​

Body

updateIntegrationDetails UpdateIntegrationDetails required

Includes the information needed to rotate the integration-specific secrets. Examples include unsecured webhook URL or API keys.

Set type to "simpleWebhook".

simpleWebhook UpdateSimpleWebhookDetails

​

Fields of UpdateSimpleWebhookDetails
webhook string required

Webhook URL (must be HTTPS in production)

secret string

Optional secret for HMAC-SHA256 signing

contentType WebhookContentType

Content-Type for requests

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration UpdateSecureWebhookIntegrationDetails

​

Fields of UpdateSecureWebhookIntegrationDetails
url string required

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig required

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "opsgenieIntegration".

opsgenieIntegration UpdateOpsgenieIntegrationDetails

​

Fields of UpdateOpsgenieIntegrationDetails
apiKey string required

​

region OpsgenieRegion required

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "teamsWebhook".

teamsWebhook UpdateTeamsWebhookIntegrationDetails

​

Fields of UpdateTeamsWebhookIntegrationDetails
webhook string required

​

Set type to "pagerDuty".

pagerDuty UpdatePagerDutyIntegrationDetails

​

Fields of UpdatePagerDutyIntegrationDetails
routingKey string required

​

Response

rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

Request

curl -X PUT "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>/details" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "updateIntegrationDetails": {
    "type": "simpleWebhook",
    "simpleWebhook": {
      "webhook": "<webhook>"
    }
  }
}'
import requests

response = requests.put(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>/details",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "updateIntegrationDetails": {
            "type": "simpleWebhook",
            "simpleWebhook": {"webhook": "<webhook>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.put(
    "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>/details",
    headers={"Authorization": "Bearer <api key>"},
    json={
        "updateIntegrationDetails": {
            "type": "simpleWebhook",
            "simpleWebhook": {"webhook": "<webhook>"},
        },
    },
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.put(
            "https://api.gov.nominal.io/api/scout/v2/integrations/<integration rid>/details",
            headers={"Authorization": "Bearer <api key>"},
            json={
                "updateIntegrationDetails": {
                    "type": "simpleWebhook",
                    "simpleWebhook": {"webhook": "<webhook>"},
                },
            },
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "rid": "<integration rid>",
  "name": "<name>",
  "description": "<description>",
  "integrationDetails": {
    "type": "slackWebhookIntegration",
    "slackWebhookIntegration": {
      "teamName": "<team name>",
      "channel": "<channel>",
      "channelId": "<channel id>",
      "slackInstance": "COMMERCIAL"
    }
  },
  "createdAt": "2026-01-01T00:00:00Z",
  "createdBy": "<created by>",
  "isArchived": true
}

List integrations#

GET /scout/v2/integrations/list

Lists all integrations. Archived integrations are not included.

Query parameters

workspaces array of string (RID)

If supplied, will return only the integrations within the supplied workspaces. If empty will return all integrations for workspaces that the user is permitted to see.

Response

The body is an array of Integration.

Fields of Integration
rid string (RID)

​

name string

​

description string

​

integrationDetails IntegrationDetails

​

Set type to "slackWebhookIntegration".

slackWebhookIntegration SlackWebhookIntegration

​

Fields of SlackWebhookIntegration
teamName string

​

channel string

​

channelId string

​

slackInstance SlackInstanceType

​

Values of SlackInstanceType
COMMERCIAL

​

GOV

​

Set type to "opsgenieIntegration".

opsgenieIntegration OpsgenieIntegration

​

Fields of OpsgenieIntegration
region OpsgenieRegion

​

Values of OpsgenieRegion
US

​

EU

​

Set type to "simpleWebhookIntegration".

simpleWebhookIntegration SimpleWebhookIntegration

​

Fields of SimpleWebhookIntegration
hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

Values of WebhookContentType
APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

Set type to "secureWebhookIntegration".

secureWebhookIntegration SecureWebhookIntegration

​

Fields of SecureWebhookIntegration
url string

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig

Retry and timeout configuration for webhook delivery attempts

Fields of WebhookDeliveryConfig
defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Set type to "teamsWebhookIntegration".

teamsWebhookIntegration TeamsWebhookIntegration

​

Set type to "pagerDutyIntegration".

pagerDutyIntegration PagerDutyIntegration

​

createdAt string (date-time)

​

createdBy string (RID)

​

isArchived boolean

​

Request

curl "https://api.gov.nominal.io/api/scout/v2/integrations/list" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/list",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.get(
    "https://api.gov.nominal.io/api/scout/v2/integrations/list",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.get(
            "https://api.gov.nominal.io/api/scout/v2/integrations/list",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

[
  {
    "rid": "<integration rid>",
    "name": "<name>",
    "description": "<description>",
    "integrationDetails": {
      "type": "slackWebhookIntegration",
      "slackWebhookIntegration": {
        "teamName": "<team name>",
        "channel": "<channel>",
        "channelId": "<channel id>",
        "slackInstance": "COMMERCIAL"
      }
    },
    "createdAt": "2026-01-01T00:00:00Z",
    "createdBy": "<created by>",
    "isArchived": true
  }
]

Send message#

POST /scout/v2/integrations/send-message

Sends a string message to the specified integration from a checklist execution.

Body

title string

Optional title for the message. 130 characters max.

message string required

​

tags array of string

20 tags max, 50 characters max each. Tags are used to filter messages in Opsgenie. For other integrations, tags are ignored.

opsGenieAlias string

Alias to use for the Opsgenie alert deduplication. 512 characters max.

integrationRid string (RID) required

​

priority Priority

​

Values of Priority
P0

​

P1

​

P2

​

P3

​

P4

​

Response

No content (HTTP 204).

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v2/integrations/send-message" \
  -H "Authorization: Bearer <api key>" \
  -H "Content-Type: application/json" \
  --data '{
  "message": "<message>",
  "integrationRid": "<integration rid>"
}'
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/send-message",
    headers={"Authorization": "Bearer <api key>"},
    json={"message": "<message>", "integrationRid": "<integration rid>"},
)
response.raise_for_status()
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/send-message",
    headers={"Authorization": "Bearer <api key>"},
    json={"message": "<message>", "integrationRid": "<integration rid>"},
)
response.raise_for_status()
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v2/integrations/send-message",
            headers={"Authorization": "Bearer <api key>"},
            json={"message": "<message>", "integrationRid": "<integration rid>"},
        ) as response:
            response.raise_for_status()


asyncio.run(main())

Response: 204

No content.

Rotate secure webhook integration signing key#

POST /scout/v2/integrations/internal/{integrationRid}/rotate-signing-key

Rotates the HMAC signing key for a webhook integration. The old key is immediately invalidated and a new key is generated and returned. This is the only way to retrieve the signing key after initial creation.

Path parameters

integrationRid string (RID) required

​

Response

signingKey string

New HMAC-SHA256 signing key (256-bit, base64-encoded). The old key is immediately invalidated. Store this securely - update your application configuration with the new key before the next webhook delivery.

Request

curl -X POST "https://api.gov.nominal.io/api/scout/v2/integrations/internal/<integration rid>/rotate-signing-key" \
  -H "Authorization: Bearer <api key>"
import requests

response = requests.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/<integration rid>/rotate-signing-key",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import httpx

response = httpx.post(
    "https://api.gov.nominal.io/api/scout/v2/integrations/internal/<integration rid>/rotate-signing-key",
    headers={"Authorization": "Bearer <api key>"},
)
response.raise_for_status()
print(response.json())
import asyncio

import aiohttp


async def main() -> None:
    async with aiohttp.ClientSession() as session:
        async with session.post(
            "https://api.gov.nominal.io/api/scout/v2/integrations/internal/<integration rid>/rotate-signing-key",
            headers={"Authorization": "Bearer <api key>"},
        ) as response:
            response.raise_for_status()
            print(await response.json())


asyncio.run(main())

Response: 200

{
  "signingKey": "<signing key>"
}

Errors#

Errors shows how these errors are sent.

Each error’s errorName is Scout: followed by its name below.

Status

Name

Notes

400

InvalidDeliveryConfig

400

InvalidWebhookHeaders

400

InvalidWebhookUrl

400

NotImplemented

400

SlackIntegrationNotAvailable

400

UnsupportedOperationForIntegration

404

IntegrationNotFound

404

IntegrationTokenNotFound

404

IntegrationsNotFound

Types#

CreateIntegrationDetails#

Set type to the name of one of the other fields, and set only that field.

createSimpleWebhookDetails CreateSimpleWebhookDetails

​

createOpsgenieIntegrationDetails CreateOpsgenieIntegrationDetails

​

createTeamsWebhookIntegrationDetails CreateTeamsWebhookIntegrationDetails

​

createPagerDutyIntegrationDetails CreatePagerDutyIntegrationDetails

​

CreateOpsgenieIntegrationDetails#

apiKey string required

​

region OpsgenieRegion required

​

CreatePagerDutyIntegrationDetails#

routingKey string required

​

CreateSimpleWebhookDetails#

webhook string required

Webhook URL (must be HTTPS in production)

secret string

Optional secret for HMAC-SHA256 signing (recommended)

contentType WebhookContentType

Content-Type for requests (default: application/json)

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

CreateTeamsWebhookIntegrationDetails#

webhook string required

​

Integration#

Configuration details used to connect to an external service.

rid string (RID) required

​

name string required

​

description string

​

integrationDetails IntegrationDetails required

​

createdAt string (date-time) required

​

createdBy string (RID) required

​

isArchived boolean required

​

IntegrationDetails#

Set type to the name of one of the other fields, and set only that field.

slackWebhookIntegration SlackWebhookIntegration

​

opsgenieIntegration OpsgenieIntegration

​

simpleWebhookIntegration SimpleWebhookIntegration

​

secureWebhookIntegration SecureWebhookIntegration

​

teamsWebhookIntegration TeamsWebhookIntegration

​

pagerDutyIntegration PagerDutyIntegration

​

OpsgenieIntegration#

region OpsgenieRegion required

​

OpsgenieRegion#

Opsgenie region for the account linked to the provided API key.

US

​

EU

​

PagerDutyIntegration#

An empty JSON object, {}.

Priority#

P0

​

P1

​

P2

​

P3

​

P4

​

SecureWebhookIntegration#

Advanced webhook integration with HMAC signing, custom headers, and configurable defaults.

Server-side validation enforces: - URL must use HTTPS protocol - customHeaders blocklist (see customHeaders field documentation)

url string required

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig required

Retry and timeout configuration for webhook delivery attempts

SimpleWebhookIntegration#

hmacSecretRid string (RID)

Optional RID of secret containing HMAC-SHA256 signing key

contentType WebhookContentType

Content-Type for requests (default: application/json)

timeoutSeconds integer

HTTP request timeout in seconds (default: 30, max: 120)

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

SlackInstanceType#

COMMERCIAL

​

GOV

​

SlackWebhookIntegration#

teamName string required

​

channel string required

​

channelId string required

​

slackInstance SlackInstanceType

​

TeamsWebhookIntegration#

An empty JSON object, {}.

UpdateIntegrationDetails#

Set type to the name of one of the other fields, and set only that field.

simpleWebhook UpdateSimpleWebhookDetails

​

secureWebhookIntegration UpdateSecureWebhookIntegrationDetails

​

opsgenieIntegration UpdateOpsgenieIntegrationDetails

​

teamsWebhook UpdateTeamsWebhookIntegrationDetails

​

pagerDuty UpdatePagerDutyIntegrationDetails

​

UpdateOpsgenieIntegrationDetails#

apiKey string required

​

region OpsgenieRegion required

​

UpdatePagerDutyIntegrationDetails#

routingKey string required

​

UpdateSecureWebhookIntegrationDetails#

Configuration for updating an advanced webhook integration. This is a full replacement update - all fields must be provided. Optional retry/timeout fields not provided will be reset to server defaults. Note: To rotate the signing key, use the rotateSecureWebhookIntegrationSigningKey endpoint instead.

url string required

Webhook URL (must be HTTPS)

customHeaders map of string to string

Additional HTTP headers to include in all webhook requests. Do not put API keys, tokens, or other secrets in custom headers. Server-side validation rejects security-sensitive headers to prevent credential leakage: Authorization, Cookie, X-API-Key, X-Auth-Token, Proxy-Authorization, and any header starting with X-Nominal-. Validation returns clear error messages for blocked headers.

deliveryConfig WebhookDeliveryConfig required

Retry and timeout configuration for webhook delivery attempts

UpdateSimpleWebhookDetails#

webhook string required

Webhook URL (must be HTTPS in production)

secret string

Optional secret for HMAC-SHA256 signing

contentType WebhookContentType

Content-Type for requests

timeoutSeconds integer

HTTP request timeout in seconds

customHeaders map of string to string

Additional headers to include in all requests. Do not put API keys, tokens, or other secrets in custom headers.

UpdateTeamsWebhookIntegrationDetails#

webhook string required

​

WebhookContentType#

Content-Type for webhook requests

APPLICATION_JSON

application/json

APPLICATION_X_WWW_FORM_URLENCODED

application/x-www-form-urlencoded

WebhookDeliveryConfig#

Retry parameters serve as integration-level defaults that can be overridden at runtime.

Server-side validation enforces: - defaultRequestTimeoutSeconds maximum of 120 - defaultMaxRetryIntervalSeconds must be >= defaultRetryIntervalSeconds when both are provided

defaultRequestTimeoutSeconds integer

Default HTTP request timeout in seconds (server default 10, range 5-120)

defaultMaxRetries integer

Default maximum delivery attempts before failing (server default 3, range 0-10)

defaultRetryIntervalSeconds integer

Default initial interval between retry attempts in seconds (server default 15, range 5-300)

defaultExponentialBackoff boolean

Whether to apply exponential backoff to retry intervals (server default true)

defaultMaxRetryIntervalSeconds integer

Default maximum interval between retries when using exponential backoff in seconds (server default 300, range 5-3600)

defaultDeliveryTimeoutSeconds integer

Default overall delivery timeout in seconds before giving up (server default 600, range 10-86400)

Page design based on Scalar, MIT License.