> ## Documentation Index
> Fetch the complete documentation index at: https://docs.incident.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List

> List all alert sources in your account.



## OpenAPI

````yaml /openapi/tags/alert-sources-v2.json get /v2/alert_sources
openapi: 3.0.3
info:
  description: "This is the API reference for incident.io.\n\nIt documents available API endpoints, provides examples of how to use it, and\ninstructions around things like authentication and error handling.\n\nThe API is hosted at:\n\n- https://api.incident.io/\n\nAnd you will need to create an API key via your [incident.io\ndashboard](https://app.incident.io/settings/api-keys) to make requests.\n\n# Making requests\n\nHere are the key concepts required to make requests to the incident.io API.\n\n## Authentication\n\nFor all requests made to the incident.io API, you'll need an API key.\n\nTo create an API key, head to the incident dashboard and visit [API\nkeys](https://app.incident.io/settings/api-keys). When you create the key, you'll be able to choose what actions it\ncan take for your account: choose carefully, as those roles can only be set\nwhen you first create the key. We'll only show you the token once, so make sure\nyou store it somewhere safe.\n\nAPI keys are global to your incident.io account, and can be managed by anyone\nwho has the right permissions. We display the user that created the API key,\nand the API key will remain valid if that user becomes deactivated.\n\nOnce you have the key, you should make requests to the API that set the\n`Authorization` request header using a \"Bearer\" authentication scheme:\n\n```\nAuthorization: Bearer <YOUR_API_KEY>\n```\n\n## Rate Limits\n\nThe incident.io API enforces rate limits to ensure consistent performance for all users.\n\nThe default rate limit is 1200 requests/minute per API key. This limit applies to most endpoints across the API.\n\nSome endpoints have lower rate limits, particularly those that interact with external third-party systems that impose\ntheir own limitations. These specific limits vary by endpoint, and we recommend relying on the rate-limit error\nresponses to understand usage patterns and implement appropriate retry strategies.\n\nWhen you exceed a rate limit, the API will respond with a `429 Too Many Requests` status code, along with a JSON\nresponse that includes information about the limit and when you can retry:\n\n```json\n{\n    \"type\": \"too_many_requests\",\n    \"status\": 429,\n    \"request_id\": \"b839a403-7704-41c1-bf6a-39a2d68caefa\",\n    \"rate_limit\": {\n        \"name\": \"api_key_name\",\n        \"limit\": 1200,\n        \"remaining\": 0,\n        \"retry_after\": \"Thu, 17 Apr 2025 11:17:18 UTC\"\n    },\n    \"errors\": [\n        {\n            \"code\": \"too_many_requests\",\n            \"message\": \"Too many requests hit the API too quickly. We recommend an exponential backoff of your requests.\"\n        }\n    ]\n}\n```\n\nThe response includes:\n* The name of the API key (`name`)\n* The bucket limit (`limit`)\n* The number of requests remaining (`remaining`)\n* When you can retry requests (`retry_after`)\n\n## Errors\n\nWe use standard HTTP response codes to indicate the status or failure of API\nrequests.\n\nThe API response body will be JSON, and contain more detailed information on the\nnature of the error.\n\nAn example error when a request is made without an API key:\n\n```json\n{\n  \"type\": \"authentication_error\",\n  \"status\": 401,\n  \"request_id\": \"8e3cc412-b49d-4957-9073-2c19d2c61804\",\n  \"errors\": [\n    {\n      \"code\": \"missing_authorization_material\",\n      \"message\": \"No authorization material provided in request\"\n    }\n  ]\n}\n```\n\nNote that the error:\n\n- Contains the HTTP status (`401`)\n- References the type of error (`authentication_error`)\n- Includes a `request_id` that can be provided to incident.io support to help\n\tdebug questions with your API request\n- Provides a list of individual errors, which go into detail about why the error\n\toccurred\n\nThe most common error will be a 422 Validation Error, which is returned when the\nrequest was rejected due to failing validations.\n\nThese errors look like this:\n\n```json\n{\n  \"type\": \"validation_error\",\n  \"status\": 422,\n  \"request_id\": \"631766c4-4afd-4803-997c-cd700928fa4b\",\n  \"errors\": [\n    {\n      \"code\": \"is_required\",\n      \"message\": \"A severity is required to open an incident\",\n      \"source\": {\n        \"field\": \"severity_id\"\n      }\n    }\n  ]\n}\n```\n\nThis error is caused by not providing a severity identifier, which should be at\nthe `severity_id` field of the request payload. Errors like these can be mapped to\nforms, should you be integrating with the API from a user-interface.\n\n## Compatibility\n\nWe won't make breaking changes to existing API services or endpoints, but will\nexpect integrators to upgrade themselves to the latest API endpoints within 3\nmonths of us deprecating the old service.\n\nWe will make changes that are considered backwards compatible, which include:\n\n- Adding new API endpoints and services\n- Adding new properties to responses from existing API endpoints\n- Reordering properties returned from existing API endpoints\n- Adding optional request parameters to existing API endpoints\n- Altering the format or length of IDs\n- Adding new values to enums\n\nIt is important that clients are robust to these changes, to ensure reliable\nintegrations.\n\nAs an example, if you are generating a client using an openapi-generator, ensure\nthe generated client is configured to support unknown enum values, often\nconfigured via the `enumUnknownDefaultCase` parameter.\n\nWhen breaking changes are unavoidable, we'll create a new service version on a\nseparate path, and run them in parallel.\n\nFor example:\n\n- https://api.incident.io/v1/incidents\n- https://api.incident.io/v2/incidents\n\nFor any questions, email support@incident.io.\n"
  title: incident.io
  version: 1.0.0
servers:
  - url: https://api.incident.io
security:
  - BearerAuth: []
tags:
  - description: >-
      Configure your alert sources in incident.io.


      Alert sources are the systems that send alerts to incident.io, which can
      then be routed to the right people and teams.
    name: Alert Sources V2
paths:
  /v2/alert_sources:
    get:
      tags:
        - Alert Sources V2
      summary: List
      description: List all alert sources in your account.
      operationId: Alert Sources V2_List
      responses:
        '200':
          content:
            application/json:
              example:
                alert_sources:
                  - alert_events_url: >-
                      https://api.incident.io/v2/alert_events/http/01GW2G3V0S59R238FAHPDS1R66
                    auto_resolve_incident_alerts: false
                    auto_resolve_timeout_minutes: 1
                    email_options:
                      email_address: lawrence@example.com
                      redactions:
                        - credit_card_numbers
                      transform_expression: |-
                        return {
                          title: $.subject,
                          description: $.text,
                          status: $.subject.startsWith('[RESOLVED]') ? 'resolved' : 'firing',
                          deduplication_key: $.header_message_id,
                        }
                    heartbeat_options:
                      failure_threshold: 1
                      grace_period_seconds: 0
                      interval_seconds: 60
                      ping_url: >-
                        https://api.incident.io/v2/heartbeat/01GW2G3V0S59R238FAHPDS1R66/ping
                    http_custom_options:
                      deduplication_key_path: $.alert_id
                      transform_expression: |-
                        return {
                          title: $.title || $.name || 'Unknown Alert',
                          status: $.status === 'resolved' ? 'resolved' : 'firing',
                          description: $.description || $.message || '',
                          sourceURL: $.url || $.link || '',
                          metadata: { team: $.team, severity: $.severity }
                        }
                    id: 01GW2G3V0S59R238FAHPDS1R66
                    jira_options:
                      project_ids:
                        - 01GBSQF3FHF7FWZQNWGHAVQ804
                        - '10043'
                    name: Production Web Dashboard Alerts
                    owning_team_ids:
                      - 01G0J1EXE7AXZ2C93K61WBPYEH
                    secret_token: some-secret-token
                    source_type: alertmanager
                    template:
                      attributes:
                        - alert_attribute_id: abc123
                          binding:
                            array_value:
                              - label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                            merge_strategy: first_wins
                            value:
                              label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                      description:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                      expressions:
                        - else_branch:
                            result:
                              array_value:
                                - label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                              value:
                                label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                          label: Team Slack channel
                          operations:
                            - branches:
                                branches:
                                  - condition_groups:
                                      - conditions:
                                          - operation:
                                              label: Lawrence Jones
                                              value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                            param_bindings:
                                              - array_value:
                                                  - label: Lawrence Jones
                                                    literal: SEV123
                                                    reference: incident.severity
                                                value:
                                                  label: Lawrence Jones
                                                  literal: SEV123
                                                  reference: incident.severity
                                            subject:
                                              label: Incident Severity
                                              reference: incident.severity
                                    result:
                                      array_value:
                                        - label: Lawrence Jones
                                          literal: SEV123
                                          reference: incident.severity
                                      value:
                                        label: Lawrence Jones
                                        literal: SEV123
                                        reference: incident.severity
                                returns:
                                  array: true
                                  type: IncidentStatus
                              filter:
                                condition_groups:
                                  - conditions:
                                      - operation:
                                          label: Lawrence Jones
                                          value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                        param_bindings:
                                          - array_value:
                                              - label: Lawrence Jones
                                                literal: SEV123
                                                reference: incident.severity
                                            value:
                                              label: Lawrence Jones
                                              literal: SEV123
                                              reference: incident.severity
                                        subject:
                                          label: Incident Severity
                                          reference: incident.severity
                              navigate:
                                reference: '1235'
                                reference_label: Teams
                              operation_type: navigate
                              parse:
                                returns:
                                  array: true
                                  type: IncidentStatus
                                source: metadata.annotations["github.com/repo"]
                              returns:
                                array: true
                                type: IncidentStatus
                          reference: abc123
                          returns:
                            array: true
                            type: IncidentStatus
                          root_reference: incident.status
                      is_private: false
                      title:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                      visible_to_teams:
                        array_value:
                          - label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                        value:
                          label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
              schema:
                $ref: '#/components/schemas/AlertSourcesListResultV2'
          description: OK response.
components:
  schemas:
    AlertSourcesListResultV2:
      example:
        alert_sources:
          - alert_events_url: >-
              https://api.incident.io/v2/alert_events/http/01GW2G3V0S59R238FAHPDS1R66
            auto_resolve_incident_alerts: false
            auto_resolve_timeout_minutes: 1
            email_options:
              email_address: lawrence@example.com
              redactions:
                - credit_card_numbers
              transform_expression: |-
                return {
                  title: $.subject,
                  description: $.text,
                  status: $.subject.startsWith('[RESOLVED]') ? 'resolved' : 'firing',
                  deduplication_key: $.header_message_id,
                }
            heartbeat_options:
              failure_threshold: 1
              grace_period_seconds: 0
              interval_seconds: 60
              ping_url: >-
                https://api.incident.io/v2/heartbeat/01GW2G3V0S59R238FAHPDS1R66/ping
            http_custom_options:
              deduplication_key_path: $.alert_id
              transform_expression: |-
                return {
                  title: $.title || $.name || 'Unknown Alert',
                  status: $.status === 'resolved' ? 'resolved' : 'firing',
                  description: $.description || $.message || '',
                  sourceURL: $.url || $.link || '',
                  metadata: { team: $.team, severity: $.severity }
                }
            id: 01GW2G3V0S59R238FAHPDS1R66
            jira_options:
              project_ids:
                - 01GBSQF3FHF7FWZQNWGHAVQ804
                - '10043'
            name: Production Web Dashboard Alerts
            owning_team_ids:
              - 01G0J1EXE7AXZ2C93K61WBPYEH
            secret_token: some-secret-token
            source_type: alertmanager
            template:
              attributes:
                - alert_attribute_id: abc123
                  binding:
                    array_value:
                      - label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                    merge_strategy: first_wins
                    value:
                      label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
              description:
                label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
              expressions:
                - else_branch:
                    result:
                      array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                  label: Team Slack channel
                  operations:
                    - branches:
                        branches:
                          - condition_groups:
                              - conditions:
                                  - operation:
                                      label: Lawrence Jones
                                      value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                    param_bindings:
                                      - array_value:
                                          - label: Lawrence Jones
                                            literal: SEV123
                                            reference: incident.severity
                                        value:
                                          label: Lawrence Jones
                                          literal: SEV123
                                          reference: incident.severity
                                    subject:
                                      label: Incident Severity
                                      reference: incident.severity
                            result:
                              array_value:
                                - label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                              value:
                                label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                        returns:
                          array: true
                          type: IncidentStatus
                      filter:
                        condition_groups:
                          - conditions:
                              - operation:
                                  label: Lawrence Jones
                                  value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                param_bindings:
                                  - array_value:
                                      - label: Lawrence Jones
                                        literal: SEV123
                                        reference: incident.severity
                                    value:
                                      label: Lawrence Jones
                                      literal: SEV123
                                      reference: incident.severity
                                subject:
                                  label: Incident Severity
                                  reference: incident.severity
                      navigate:
                        reference: '1235'
                        reference_label: Teams
                      operation_type: navigate
                      parse:
                        returns:
                          array: true
                          type: IncidentStatus
                        source: metadata.annotations["github.com/repo"]
                      returns:
                        array: true
                        type: IncidentStatus
                  reference: abc123
                  returns:
                    array: true
                    type: IncidentStatus
                  root_reference: incident.status
              is_private: false
              title:
                label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
              visible_to_teams:
                array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
      properties:
        alert_sources:
          example:
            - alert_events_url: >-
                https://api.incident.io/v2/alert_events/http/01GW2G3V0S59R238FAHPDS1R66
              auto_resolve_incident_alerts: false
              auto_resolve_timeout_minutes: 1
              email_options:
                email_address: lawrence@example.com
                redactions:
                  - credit_card_numbers
                transform_expression: |-
                  return {
                    title: $.subject,
                    description: $.text,
                    status: $.subject.startsWith('[RESOLVED]') ? 'resolved' : 'firing',
                    deduplication_key: $.header_message_id,
                  }
              heartbeat_options:
                failure_threshold: 1
                grace_period_seconds: 0
                interval_seconds: 60
                ping_url: >-
                  https://api.incident.io/v2/heartbeat/01GW2G3V0S59R238FAHPDS1R66/ping
              http_custom_options:
                deduplication_key_path: $.alert_id
                transform_expression: |-
                  return {
                    title: $.title || $.name || 'Unknown Alert',
                    status: $.status === 'resolved' ? 'resolved' : 'firing',
                    description: $.description || $.message || '',
                    sourceURL: $.url || $.link || '',
                    metadata: { team: $.team, severity: $.severity }
                  }
              id: 01GW2G3V0S59R238FAHPDS1R66
              jira_options:
                project_ids:
                  - 01GBSQF3FHF7FWZQNWGHAVQ804
                  - '10043'
              name: Production Web Dashboard Alerts
              owning_team_ids:
                - 01G0J1EXE7AXZ2C93K61WBPYEH
              secret_token: some-secret-token
              source_type: alertmanager
              template:
                attributes:
                  - alert_attribute_id: abc123
                    binding:
                      array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      merge_strategy: first_wins
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                description:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
                expressions:
                  - else_branch:
                      result:
                        array_value:
                          - label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                        value:
                          label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                    label: Team Slack channel
                    operations:
                      - branches:
                          branches:
                            - condition_groups:
                                - conditions:
                                    - operation:
                                        label: Lawrence Jones
                                        value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                      param_bindings:
                                        - array_value:
                                            - label: Lawrence Jones
                                              literal: SEV123
                                              reference: incident.severity
                                          value:
                                            label: Lawrence Jones
                                            literal: SEV123
                                            reference: incident.severity
                                      subject:
                                        label: Incident Severity
                                        reference: incident.severity
                              result:
                                array_value:
                                  - label: Lawrence Jones
                                    literal: SEV123
                                    reference: incident.severity
                                value:
                                  label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                          returns:
                            array: true
                            type: IncidentStatus
                        filter:
                          condition_groups:
                            - conditions:
                                - operation:
                                    label: Lawrence Jones
                                    value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                  param_bindings:
                                    - array_value:
                                        - label: Lawrence Jones
                                          literal: SEV123
                                          reference: incident.severity
                                      value:
                                        label: Lawrence Jones
                                        literal: SEV123
                                        reference: incident.severity
                                  subject:
                                    label: Incident Severity
                                    reference: incident.severity
                        navigate:
                          reference: '1235'
                          reference_label: Teams
                        operation_type: navigate
                        parse:
                          returns:
                            array: true
                            type: IncidentStatus
                          source: metadata.annotations["github.com/repo"]
                        returns:
                          array: true
                          type: IncidentStatus
                    reference: abc123
                    returns:
                      array: true
                      type: IncidentStatus
                    root_reference: incident.status
                is_private: false
                title:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
                visible_to_teams:
                  array_value:
                    - label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
                  value:
                    label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
          items:
            $ref: '#/components/schemas/AlertSourceV2'
          type: array
      required:
        - alert_sources
      type: object
    AlertSourceV2:
      properties:
        alert_events_url:
          description: >-
            URL that can be used to send alert events to this source. This is
            only set for sources that accept webhook/HTTP events; email sources
            use the email_address field, and integration-based sources (like
            Jira) receive events through their native integrations.
          example: >-
            https://api.incident.io/v2/alert_events/http/01GW2G3V0S59R238FAHPDS1R66
          type: string
        auto_resolve_incident_alerts:
          description: >-
            Whether to auto-resolve incident alerts when the alert
            auto-resolves. Defaults to true. Only use in conjunction with
            auto_resolve_timeout_minutes.
          example: false
          type: boolean
        auto_resolve_timeout_minutes:
          description: >-
            When set, alerts from this source will automatically resolve after
            this many minutes.
          example: 1
          format: int64
          type: integer
        email_options:
          $ref: '#/components/schemas/AlertSourceEmailOptionsV2'
        heartbeat_options:
          $ref: '#/components/schemas/AlertSourceHeartbeatOptionsV2'
        http_custom_options:
          $ref: '#/components/schemas/AlertSourceHTTPCustomOptionsV2'
        id:
          description: The ID of this alert source
          example: 01GW2G3V0S59R238FAHPDS1R66
          type: string
        jira_options:
          $ref: '#/components/schemas/AlertSourceJiraOptionsV2'
        name:
          description: Unique name of the alert source
          example: Production Web Dashboard Alerts
          type: string
        owning_team_ids:
          description: IDs of teams that own this alert source
          example:
            - 01G0J1EXE7AXZ2C93K61WBPYEH
          items:
            example: abc123
            type: string
          type: array
        secret_token:
          description: >-
            Secret token used to authenticate this source, if applicable. If
            applicable, this is the token that must be included in either the
            query string or the 'Authorization' header when sending events to
            this alert source.
          example: some-secret-token
          type: string
        source_type:
          description: Type of alert source
          enum:
            - alertmanager
            - app_optics
            - azure_monitor
            - bugsnag
            - checkly
            - chronosphere
            - cloudwatch
            - cloudflare
            - coralogix
            - cronitor
            - crowdstrike_falcon
            - datadog
            - dynatrace
            - elasticsearch
            - email
            - expel
            - github_issue
            - google_cloud
            - grafana
            - heartbeat
            - http
            - http_custom
            - honeycomb
            - incoming_calls
            - jira
            - jsm
            - monte_carlo
            - nagios
            - new_relic
            - opsgenie
            - prtg
            - pager_duty
            - panther
            - pingdom
            - runscope
            - sns
            - sentry
            - sentry_metric
            - splunk
            - status_cake
            - status_page_views
            - sumo_logic
            - uptime
            - vercel
            - zendesk
          example: alertmanager
          type: string
          x-public-api-version: v2
        template:
          $ref: '#/components/schemas/AlertTemplateV2'
      required:
        - id
        - name
        - source_type
        - template
      type: object
    AlertSourceEmailOptionsV2:
      example:
        email_address: lawrence@example.com
        redactions:
          - credit_card_numbers
        transform_expression: |-
          return {
            title: $.subject,
            description: $.text,
            status: $.subject.startsWith('[RESOLVED]') ? 'resolved' : 'firing',
            deduplication_key: $.header_message_id,
          }
      properties:
        email_address:
          description: Email address this alert source receives alerts to
          example: lawrence@example.com
          type: string
        redactions:
          description: >-
            Which PII types to automatically redact from incoming email content
            before storage
          example:
            - credit_card_numbers
          items:
            description: >-
              Which PII type to automatically redact from incoming email content
              before storage
            enum:
              - credit_card_numbers
              - us_social_security_numbers
              - phone_numbers
            example: credit_card_numbers
            type: string
            x-public-api-version: v2
          type: array
        transform_expression:
          description: >-
            JavaScript expression to transform email fields into structured
            alert fields
          example: |-
            return {
              title: $.subject,
              description: $.text,
              status: $.subject.startsWith('[RESOLVED]') ? 'resolved' : 'firing',
              deduplication_key: $.header_message_id,
            }
          type: string
      required:
        - email_address
        - redactions
      type: object
    AlertSourceHeartbeatOptionsV2:
      example:
        failure_threshold: 1
        grace_period_seconds: 0
        interval_seconds: 60
        ping_url: https://api.incident.io/v2/heartbeat/01GW2G3V0S59R238FAHPDS1R66/ping
      properties:
        failure_threshold:
          description: Number of consecutive missed pings before an alert fires.
          example: 1
          format: int64
          type: integer
        grace_period_seconds:
          description: >-
            How long after a missed ping before the heartbeat is considered
            late, in seconds. If zero, it transitions directly to failing.
          example: 0
          format: int64
          type: integer
        interval_seconds:
          description: How often a ping is expected, in seconds.
          example: 60
          format: int64
          type: integer
        ping_url:
          description: The URL to POST to in order to send a heartbeat ping.
          example: https://api.incident.io/v2/heartbeat/01GW2G3V0S59R238FAHPDS1R66/ping
          type: string
      required:
        - interval_seconds
        - grace_period_seconds
        - failure_threshold
        - ping_url
      type: object
    AlertSourceHTTPCustomOptionsV2:
      example:
        deduplication_key_path: $.alert_id
        transform_expression: |-
          return {
            title: $.title || $.name || 'Unknown Alert',
            status: $.status === 'resolved' ? 'resolved' : 'firing',
            description: $.description || $.message || '',
            sourceURL: $.url || $.link || '',
            metadata: { team: $.team, severity: $.severity }
          }
      properties:
        deduplication_key_path:
          description: JSON path to extract the deduplication key from the payload
          example: $.alert_id
          type: string
        transform_expression:
          description: JavaScript expression that returns an object with all alert fields
          example: |-
            return {
              title: $.title || $.name || 'Unknown Alert',
              status: $.status === 'resolved' ? 'resolved' : 'firing',
              description: $.description || $.message || '',
              sourceURL: $.url || $.link || '',
              metadata: { team: $.team, severity: $.severity }
            }
          type: string
      required:
        - transform_expression
        - deduplication_key_path
      type: object
    AlertSourceJiraOptionsV2:
      example:
        project_ids:
          - 01GBSQF3FHF7FWZQNWGHAVQ804
          - '10043'
      properties:
        project_ids:
          description: >-
            Which projects in Jira should this alert source watch for new
            issues? IDs can either be IDs of the projects in Jira, or ID of
            catalog entries in the 'Jira Project' catalog type.
          example:
            - 01GBSQF3FHF7FWZQNWGHAVQ804
            - '10043'
          items:
            example: abc123
            type: string
          type: array
      required:
        - project_ids
      type: object
    AlertTemplateV2:
      example:
        attributes:
          - alert_attribute_id: abc123
            binding:
              array_value:
                - label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
              merge_strategy: first_wins
              value:
                label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
        description:
          label: Lawrence Jones
          literal: SEV123
          reference: incident.severity
        expressions:
          - else_branch:
              result:
                array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
            label: Team Slack channel
            operations:
              - branches:
                  branches:
                    - condition_groups:
                        - conditions:
                            - operation:
                                label: Lawrence Jones
                                value: 01FCQSP07Z74QMMYPDDGQB9FTG
                              param_bindings:
                                - array_value:
                                    - label: Lawrence Jones
                                      literal: SEV123
                                      reference: incident.severity
                                  value:
                                    label: Lawrence Jones
                                    literal: SEV123
                                    reference: incident.severity
                              subject:
                                label: Incident Severity
                                reference: incident.severity
                      result:
                        array_value:
                          - label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                        value:
                          label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                  returns:
                    array: true
                    type: IncidentStatus
                filter:
                  condition_groups:
                    - conditions:
                        - operation:
                            label: Lawrence Jones
                            value: 01FCQSP07Z74QMMYPDDGQB9FTG
                          param_bindings:
                            - array_value:
                                - label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                              value:
                                label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                          subject:
                            label: Incident Severity
                            reference: incident.severity
                navigate:
                  reference: '1235'
                  reference_label: Teams
                operation_type: navigate
                parse:
                  returns:
                    array: true
                    type: IncidentStatus
                  source: metadata.annotations["github.com/repo"]
                returns:
                  array: true
                  type: IncidentStatus
            reference: abc123
            returns:
              array: true
              type: IncidentStatus
            root_reference: incident.status
        is_private: false
        title:
          label: Lawrence Jones
          literal: SEV123
          reference: incident.severity
        visible_to_teams:
          array_value:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          value:
            label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
      properties:
        attributes:
          description: >-
            Attributes to set on alerts coming from this source, with a binding
            describing how to set them.
          example:
            - alert_attribute_id: abc123
              binding:
                array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                merge_strategy: first_wins
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
          items:
            $ref: '#/components/schemas/AlertTemplateAttributeV2'
          type: array
        description:
          $ref: '#/components/schemas/EngineParamBindingValueV2'
        expressions:
          description: Expressions available for use in bindings within this template
          example:
            - else_branch:
                result:
                  array_value:
                    - label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
                  value:
                    label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
              label: Team Slack channel
              operations:
                - branches:
                    branches:
                      - condition_groups:
                          - conditions:
                              - operation:
                                  label: Lawrence Jones
                                  value: 01FCQSP07Z74QMMYPDDGQB9FTG
                                param_bindings:
                                  - array_value:
                                      - label: Lawrence Jones
                                        literal: SEV123
                                        reference: incident.severity
                                    value:
                                      label: Lawrence Jones
                                      literal: SEV123
                                      reference: incident.severity
                                subject:
                                  label: Incident Severity
                                  reference: incident.severity
                        result:
                          array_value:
                            - label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                          value:
                            label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                    returns:
                      array: true
                      type: IncidentStatus
                  filter:
                    condition_groups:
                      - conditions:
                          - operation:
                              label: Lawrence Jones
                              value: 01FCQSP07Z74QMMYPDDGQB9FTG
                            param_bindings:
                              - array_value:
                                  - label: Lawrence Jones
                                    literal: SEV123
                                    reference: incident.severity
                                value:
                                  label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                            subject:
                              label: Incident Severity
                              reference: incident.severity
                  navigate:
                    reference: '1235'
                    reference_label: Teams
                  operation_type: navigate
                  parse:
                    returns:
                      array: true
                      type: IncidentStatus
                    source: metadata.annotations["github.com/repo"]
                  returns:
                    array: true
                    type: IncidentStatus
              reference: abc123
              returns:
                array: true
                type: IncidentStatus
              root_reference: incident.status
          items:
            $ref: '#/components/schemas/ExpressionV2'
          type: array
        is_private:
          description: Whether or not alerts produced by this source should be private
          example: false
          type: boolean
        title:
          $ref: '#/components/schemas/EngineParamBindingValueV2'
        visible_to_teams:
          $ref: '#/components/schemas/EngineParamBindingV2'
      required:
        - expressions
        - title
        - description
        - attributes
        - is_private
      type: object
    AlertTemplateAttributeV2:
      example:
        alert_attribute_id: abc123
        binding:
          array_value:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          merge_strategy: first_wins
          value:
            label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
      properties:
        alert_attribute_id:
          description: ID of the alert attribute to set with this binding
          example: abc123
          type: string
        binding:
          $ref: '#/components/schemas/AlertTemplateAttributeBindingV2'
      required:
        - alert_attribute_id
        - binding
      type: object
    EngineParamBindingValueV2:
      example:
        label: Lawrence Jones
        literal: SEV123
        reference: incident.severity
      properties:
        label:
          description: Human readable label to be displayed for user to select
          example: Lawrence Jones
          type: string
        literal:
          description: If set, this is the literal value of the step parameter
          example: SEV123
          type: string
        reference:
          description: >-
            If set, this is the reference into the trigger scope that is the
            value of this parameter
          example: incident.severity
          type: string
      required:
        - label
      type: object
    ExpressionV2:
      example:
        else_branch:
          result:
            array_value:
              - label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
            value:
              label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
        label: Team Slack channel
        operations:
          - branches:
              branches:
                - condition_groups:
                    - conditions:
                        - operation:
                            label: Lawrence Jones
                            value: 01FCQSP07Z74QMMYPDDGQB9FTG
                          param_bindings:
                            - array_value:
                                - label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                              value:
                                label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                          subject:
                            label: Incident Severity
                            reference: incident.severity
                  result:
                    array_value:
                      - label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                    value:
                      label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
              returns:
                array: true
                type: IncidentStatus
            filter:
              condition_groups:
                - conditions:
                    - operation:
                        label: Lawrence Jones
                        value: 01FCQSP07Z74QMMYPDDGQB9FTG
                      param_bindings:
                        - array_value:
                            - label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                          value:
                            label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                      subject:
                        label: Incident Severity
                        reference: incident.severity
            navigate:
              reference: '1235'
              reference_label: Teams
            operation_type: navigate
            parse:
              returns:
                array: true
                type: IncidentStatus
              source: metadata.annotations["github.com/repo"]
            returns:
              array: true
              type: IncidentStatus
        reference: abc123
        returns:
          array: true
          type: IncidentStatus
        root_reference: incident.status
      properties:
        else_branch:
          $ref: '#/components/schemas/ExpressionElseBranchV2'
        label:
          description: The human readable label of the expression
          example: Team Slack channel
          type: string
        operations:
          example:
            - branches:
                branches:
                  - condition_groups:
                      - conditions:
                          - operation:
                              label: Lawrence Jones
                              value: 01FCQSP07Z74QMMYPDDGQB9FTG
                            param_bindings:
                              - array_value:
                                  - label: Lawrence Jones
                                    literal: SEV123
                                    reference: incident.severity
                                value:
                                  label: Lawrence Jones
                                  literal: SEV123
                                  reference: incident.severity
                            subject:
                              label: Incident Severity
                              reference: incident.severity
                    result:
                      array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                returns:
                  array: true
                  type: IncidentStatus
              filter:
                condition_groups:
                  - conditions:
                      - operation:
                          label: Lawrence Jones
                          value: 01FCQSP07Z74QMMYPDDGQB9FTG
                        param_bindings:
                          - array_value:
                              - label: Lawrence Jones
                                literal: SEV123
                                reference: incident.severity
                            value:
                              label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                        subject:
                          label: Incident Severity
                          reference: incident.severity
              navigate:
                reference: '1235'
                reference_label: Teams
              operation_type: navigate
              parse:
                returns:
                  array: true
                  type: IncidentStatus
                source: metadata.annotations["github.com/repo"]
              returns:
                array: true
                type: IncidentStatus
          items:
            $ref: '#/components/schemas/ExpressionOperationV2'
          type: array
        reference:
          description: A short ID that can be used to reference the expression
          example: abc123
          type: string
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
        root_reference:
          description: >-
            The root reference for this expression (i.e. where the expression
            starts)
          example: incident.status
          type: string
      required:
        - label
        - reference
        - returns
        - root_reference
        - operations
      type: object
    EngineParamBindingV2:
      example:
        array_value:
          - label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
        value:
          label: Lawrence Jones
          literal: SEV123
          reference: incident.severity
      properties:
        array_value:
          description: If array_value is set, this helps render the values
          example:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingValueV2'
          type: array
        value:
          $ref: '#/components/schemas/EngineParamBindingValueV2'
      type: object
    AlertTemplateAttributeBindingV2:
      example:
        array_value:
          - label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
        merge_strategy: first_wins
        value:
          label: Lawrence Jones
          literal: SEV123
          reference: incident.severity
      properties:
        array_value:
          description: If array_value is set, this helps render the values
          example:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingValueV2'
          type: array
        merge_strategy:
          description: Merge strategy for this attribute when alert updates
          enum:
            - first_wins
            - last_wins
            - append
            - max
            - min
          example: first_wins
          type: string
        value:
          $ref: '#/components/schemas/EngineParamBindingValueV2'
      type: object
    ExpressionElseBranchV2:
      example:
        result:
          array_value:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          value:
            label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
      properties:
        result:
          $ref: '#/components/schemas/EngineParamBindingV2'
      required:
        - result
      type: object
    ExpressionOperationV2:
      example:
        branches:
          branches:
            - condition_groups:
                - conditions:
                    - operation:
                        label: Lawrence Jones
                        value: 01FCQSP07Z74QMMYPDDGQB9FTG
                      param_bindings:
                        - array_value:
                            - label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                          value:
                            label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                      subject:
                        label: Incident Severity
                        reference: incident.severity
              result:
                array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
          returns:
            array: true
            type: IncidentStatus
        filter:
          condition_groups:
            - conditions:
                - operation:
                    label: Lawrence Jones
                    value: 01FCQSP07Z74QMMYPDDGQB9FTG
                  param_bindings:
                    - array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                  subject:
                    label: Incident Severity
                    reference: incident.severity
        navigate:
          reference: '1235'
          reference_label: Teams
        operation_type: navigate
        parse:
          returns:
            array: true
            type: IncidentStatus
          source: metadata.annotations["github.com/repo"]
        returns:
          array: true
          type: IncidentStatus
      properties:
        branches:
          $ref: '#/components/schemas/ExpressionBranchesOptsV2'
        filter:
          $ref: '#/components/schemas/ExpressionFilterOptsV2'
        navigate:
          $ref: '#/components/schemas/ExpressionNavigateOptsV2'
        operation_type:
          description: The type of the operation
          enum:
            - navigate
            - filter
            - concatenate
            - count
            - min
            - max
            - sum
            - random
            - first
            - parse
            - branches
          example: navigate
          type: string
        parse:
          $ref: '#/components/schemas/ExpressionParseOptsV2'
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
      required:
        - operation_type
        - returns
      type: object
    ReturnsMetaV2:
      example:
        array: true
        type: IncidentStatus
      properties:
        array:
          description: Whether the return value should be single or multi-value
          example: true
          type: boolean
        type:
          description: >-
            Expected return type of this expression (what to try casting the
            result to)
          example: IncidentStatus
          type: string
      required:
        - type
        - array
      type: object
    ExpressionBranchesOptsV2:
      example:
        branches:
          - condition_groups:
              - conditions:
                  - operation:
                      label: Lawrence Jones
                      value: 01FCQSP07Z74QMMYPDDGQB9FTG
                    param_bindings:
                      - array_value:
                          - label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                        value:
                          label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                    subject:
                      label: Incident Severity
                      reference: incident.severity
            result:
              array_value:
                - label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
              value:
                label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
        returns:
          array: true
          type: IncidentStatus
      properties:
        branches:
          description: The branches to apply for this operation
          example:
            - condition_groups:
                - conditions:
                    - operation:
                        label: Lawrence Jones
                        value: 01FCQSP07Z74QMMYPDDGQB9FTG
                      param_bindings:
                        - array_value:
                            - label: Lawrence Jones
                              literal: SEV123
                              reference: incident.severity
                          value:
                            label: Lawrence Jones
                            literal: SEV123
                            reference: incident.severity
                      subject:
                        label: Incident Severity
                        reference: incident.severity
              result:
                array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
          items:
            $ref: '#/components/schemas/ExpressionBranchV2'
          type: array
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
      required:
        - branches
        - returns
      type: object
    ExpressionFilterOptsV2:
      example:
        condition_groups:
          - conditions:
              - operation:
                  label: Lawrence Jones
                  value: 01FCQSP07Z74QMMYPDDGQB9FTG
                param_bindings:
                  - array_value:
                      - label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                    value:
                      label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
                subject:
                  label: Incident Severity
                  reference: incident.severity
      properties:
        condition_groups:
          description: >-
            The condition groups to apply in this filter. Only one group needs
            to be satisfied for the filter to pass.
          example:
            - conditions:
                - operation:
                    label: Lawrence Jones
                    value: 01FCQSP07Z74QMMYPDDGQB9FTG
                  param_bindings:
                    - array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                  subject:
                    label: Incident Severity
                    reference: incident.severity
          items:
            $ref: '#/components/schemas/ConditionGroupV2'
          type: array
      required:
        - condition_groups
      type: object
    ExpressionNavigateOptsV2:
      example:
        reference: '1235'
        reference_label: Teams
      properties:
        reference:
          description: The reference within the scope to navigate to
          example: '1235'
          type: string
        reference_label:
          description: The name of the reference to navigate to
          example: Teams
          type: string
      required:
        - reference
        - reference_label
      type: object
    ExpressionParseOptsV2:
      example:
        returns:
          array: true
          type: IncidentStatus
        source: metadata.annotations["github.com/repo"]
      properties:
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
        source:
          description: Source expression that is evaluated to a result
          example: metadata.annotations["github.com/repo"]
          type: string
      required:
        - source
        - returns
      type: object
    ExpressionBranchV2:
      example:
        condition_groups:
          - conditions:
              - operation:
                  label: Lawrence Jones
                  value: 01FCQSP07Z74QMMYPDDGQB9FTG
                param_bindings:
                  - array_value:
                      - label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                    value:
                      label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
                subject:
                  label: Incident Severity
                  reference: incident.severity
        result:
          array_value:
            - label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
          value:
            label: Lawrence Jones
            literal: SEV123
            reference: incident.severity
      properties:
        condition_groups:
          description: >-
            When one of these condition groups are satisfied, this branch will
            be evaluated
          example:
            - conditions:
                - operation:
                    label: Lawrence Jones
                    value: 01FCQSP07Z74QMMYPDDGQB9FTG
                  param_bindings:
                    - array_value:
                        - label: Lawrence Jones
                          literal: SEV123
                          reference: incident.severity
                      value:
                        label: Lawrence Jones
                        literal: SEV123
                        reference: incident.severity
                  subject:
                    label: Incident Severity
                    reference: incident.severity
          items:
            $ref: '#/components/schemas/ConditionGroupV2'
          type: array
        result:
          $ref: '#/components/schemas/EngineParamBindingV2'
      required:
        - condition_groups
        - result
      type: object
    ConditionGroupV2:
      example:
        conditions:
          - operation:
              label: Lawrence Jones
              value: 01FCQSP07Z74QMMYPDDGQB9FTG
            param_bindings:
              - array_value:
                  - label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
                value:
                  label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
            subject:
              label: Incident Severity
              reference: incident.severity
      properties:
        conditions:
          description: >-
            All conditions in this list must be satisfied for the group to be
            satisfied
          example:
            - operation:
                label: Lawrence Jones
                value: 01FCQSP07Z74QMMYPDDGQB9FTG
              param_bindings:
                - array_value:
                    - label: Lawrence Jones
                      literal: SEV123
                      reference: incident.severity
                  value:
                    label: Lawrence Jones
                    literal: SEV123
                    reference: incident.severity
              subject:
                label: Incident Severity
                reference: incident.severity
          items:
            $ref: '#/components/schemas/ConditionV2'
          type: array
      required:
        - conditions
      type: object
    ConditionV2:
      example:
        operation:
          label: Lawrence Jones
          value: 01FCQSP07Z74QMMYPDDGQB9FTG
        param_bindings:
          - array_value:
              - label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
            value:
              label: Lawrence Jones
              literal: SEV123
              reference: incident.severity
        subject:
          label: Incident Severity
          reference: incident.severity
      properties:
        operation:
          $ref: '#/components/schemas/ConditionOperationV2'
        param_bindings:
          description: Bindings for the operation parameters
          example:
            - array_value:
                - label: Lawrence Jones
                  literal: SEV123
                  reference: incident.severity
              value:
                label: Lawrence Jones
                literal: SEV123
                reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingV2'
          type: array
        subject:
          $ref: '#/components/schemas/ConditionSubjectV2'
      required:
        - subject
        - operation
        - param_bindings
      type: object
    ConditionOperationV2:
      example:
        label: Lawrence Jones
        value: 01FCQSP07Z74QMMYPDDGQB9FTG
      properties:
        label:
          description: Human readable label to be displayed for user to select
          example: Lawrence Jones
          type: string
        value:
          description: Unique identifier for this option
          example: 01FCQSP07Z74QMMYPDDGQB9FTG
          type: string
      required:
        - label
        - value
      type: object
    ConditionSubjectV2:
      example:
        label: Incident Severity
        reference: incident.severity
      properties:
        label:
          description: Human readable identifier for the subject
          example: Incident Severity
          type: string
        reference:
          description: Reference into the scope for the value of the subject
          example: incident.severity
          type: string
      required:
        - label
        - reference
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key from your incident.io dashboard (Settings → API keys)

````