> ## 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.

# Validate

> Check whether an alert source template is valid, without creating or updating anything.

This validates the template in the same way a create or update would: expressions are
compiled and checked against your alert schema and catalog, and merge strategies are checked
against the attributes they bind to. Values that are only known once an alert source exists
are not validated.

🔑 Requires the `alert_sources.view` scope.


## OpenAPI

````yaml /openapi/tags/alert-sources-v2.json post /v2/alert_sources/actions/validate
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\nLimits are token buckets that refill continuously rather than resetting on a fixed window boundary. The default\nbucket holds 1200 requests and refills at 20 per second, so you can burst up to the full bucket and then sustain\n20 requests/second indefinitely. There is no boundary at which your quota resets to full in one step.\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.\n\n### Rate limit headers\n\nResponses to requests authenticated with an API key carry your current allowance, so you can pace yourself rather\nthan waiting to be throttled:\n\n```\nX-RateLimit-Limit: 60, 1200;window=60, 60;window=60\nX-RateLimit-Remaining: 59\nX-RateLimit-Used: 1\nX-RateLimit-Reset: 1785173199\n```\n\n| Header | Meaning |\n| --- | --- |\n| `X-RateLimit-Limit` | The quota that binds this request, followed by every limit that applied and the window it applies over |\n| `X-RateLimit-Remaining` | Requests you can make right now against the binding limit |\n| `X-RateLimit-Used` | Requests you have spent against it |\n| `X-RateLimit-Reset` | Unix timestamp (seconds) at which that limit will be back to full |\n\nMore than one limit can apply to a request: your API key's overall limit, and for some endpoints a lower limit of\ntheir own. `X-RateLimit-Limit` lists all of them, each with its window, so `1200;window=60` means 1200 requests per\nminute. Because our limits refill continuously rather than resetting on a boundary, that window is what tells you\nthe rate you can sustain: 1200 per 60 seconds is 20 requests/second indefinitely.\n\n`Remaining`, `Used` and `Reset` describe whichever limit has the least allowance left, since that is the one you\nwill hit first.\n\n`X-RateLimit-Remaining` may lag by a small number of requests under high concurrency, and can move by more than the\nrequests you made, because limits scoped to your whole organisation are shared with your other API keys.\n\nHeaders are omitted rather than guessed if we cannot determine your allowance for a request.\n\n### Exceeding a rate limit\n\nWhen you exceed a rate limit the API responds with `429 Too Many Requests` and a `Retry-After` header giving the\nnumber of seconds to wait:\n\n```\nX-RateLimit-Limit: 1200, 1200;window=60\nX-RateLimit-Remaining: 0\nX-RateLimit-Used: 1200\nX-RateLimit-Reset: 1785173199\nRetry-After: 1\n```\n\nPrefer `Retry-After` over `X-RateLimit-Reset` when deciding how long to back off. `Retry-After` is when a single\nrequest will succeed; `X-RateLimit-Reset` is the later point at which your whole allowance has returned. It is a\nduration rather than a timestamp, so it does not depend on your clock agreeing with ours.\n\nThe 429 also carries a JSON body with the same information:\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\": \"2025-04-17T11:17:18Z\"\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`), as an RFC3339 timestamp\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/actions/validate:
    post:
      tags:
        - Alert Sources V2
      summary: Validate
      description: >-
        Check whether an alert source template is valid, without creating or
        updating anything.


        This validates the template in the same way a create or update would:
        expressions are

        compiled and checked against your alert schema and catalog, and merge
        strategies are checked

        against the attributes they bind to. Values that are only known once an
        alert source exists

        are not validated.
      operationId: Alert Sources V2_Validate
      requestBody:
        content:
          application/json:
            example:
              owning_team_ids:
                - 01G0J1EXE7AXZ2C93K61WBPYEH
              source_type: alertmanager
              template:
                attributes:
                  - alert_attribute_id: abc123
                    binding:
                      array_value:
                        - literal: SEV123
                          reference: incident.severity
                      merge_strategy: first_wins
                      value:
                        literal: SEV123
                        reference: incident.severity
                description:
                  literal: SEV123
                  reference: incident.severity
                expressions:
                  - else_branch:
                      result:
                        array_value:
                          - literal: SEV123
                            reference: incident.severity
                        value:
                          literal: SEV123
                          reference: incident.severity
                    label: Team Slack channel
                    operations:
                      - branches:
                          branches:
                            - condition_groups:
                                - conditions:
                                    - operation: one_of
                                      param_bindings:
                                        - array_value:
                                            - literal: SEV123
                                              reference: incident.severity
                                          value:
                                            literal: SEV123
                                            reference: incident.severity
                                      subject: incident.severity
                              result:
                                array_value:
                                  - literal: SEV123
                                    reference: incident.severity
                                value:
                                  literal: SEV123
                                  reference: incident.severity
                          returns:
                            array: true
                            type: IncidentStatus
                        cast:
                          returns:
                            array: true
                            type: IncidentStatus
                        concatenate:
                          reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                        filter:
                          condition_groups:
                            - conditions:
                                - operation: one_of
                                  param_bindings:
                                    - array_value:
                                        - literal: SEV123
                                          reference: incident.severity
                                      value:
                                        literal: SEV123
                                        reference: incident.severity
                                  subject: incident.severity
                        navigate:
                          reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                        operation_type: navigate
                        parse:
                          returns:
                            array: true
                            type: IncidentStatus
                          source: metadata.annotations["github.com/repo"]
                    reference: abc123
                    root_reference: incident.status
                is_private: false
                title:
                  literal: SEV123
                  reference: incident.severity
                visible_to_teams:
                  array_value:
                    - literal: SEV123
                      reference: incident.severity
                  value:
                    literal: SEV123
                    reference: incident.severity
            schema:
              $ref: '#/components/schemas/AlertSourcesValidatePayloadV2'
        required: true
      responses:
        '204':
          description: No Content response.
components:
  schemas:
    AlertSourcesValidatePayloadV2:
      example:
        owning_team_ids:
          - 01G0J1EXE7AXZ2C93K61WBPYEH
        source_type: alertmanager
        template:
          attributes:
            - alert_attribute_id: abc123
              binding:
                array_value:
                  - literal: SEV123
                    reference: incident.severity
                merge_strategy: first_wins
                value:
                  literal: SEV123
                  reference: incident.severity
          description:
            literal: SEV123
            reference: incident.severity
          expressions:
            - else_branch:
                result:
                  array_value:
                    - literal: SEV123
                      reference: incident.severity
                  value:
                    literal: SEV123
                    reference: incident.severity
              label: Team Slack channel
              operations:
                - branches:
                    branches:
                      - condition_groups:
                          - conditions:
                              - operation: one_of
                                param_bindings:
                                  - array_value:
                                      - literal: SEV123
                                        reference: incident.severity
                                    value:
                                      literal: SEV123
                                      reference: incident.severity
                                subject: incident.severity
                        result:
                          array_value:
                            - literal: SEV123
                              reference: incident.severity
                          value:
                            literal: SEV123
                            reference: incident.severity
                    returns:
                      array: true
                      type: IncidentStatus
                  cast:
                    returns:
                      array: true
                      type: IncidentStatus
                  concatenate:
                    reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                  filter:
                    condition_groups:
                      - conditions:
                          - operation: one_of
                            param_bindings:
                              - array_value:
                                  - literal: SEV123
                                    reference: incident.severity
                                value:
                                  literal: SEV123
                                  reference: incident.severity
                            subject: incident.severity
                  navigate:
                    reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                  operation_type: navigate
                  parse:
                    returns:
                      array: true
                      type: IncidentStatus
                    source: metadata.annotations["github.com/repo"]
              reference: abc123
              root_reference: incident.status
          is_private: false
          title:
            literal: SEV123
            reference: incident.severity
          visible_to_teams:
            array_value:
              - literal: SEV123
                reference: incident.severity
            value:
              literal: SEV123
              reference: incident.severity
      properties:
        owning_team_ids:
          description: IDs of teams that own this alert source
          example:
            - 01G0J1EXE7AXZ2C93K61WBPYEH
          items:
            example: abc123
            type: string
          type: array
        source_type:
          description: Type of alert source
          enum:
            - alertmanager
            - app_optics
            - azure_monitor
            - big_panda
            - bugsnag
            - checkly
            - chronosphere
            - cloudwatch
            - cloudflare
            - coralogix
            - cronitor
            - crowdstrike_falcon
            - dash0
            - 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
            - service_now
            - splunk
            - status_cake
            - status_page_views
            - sumo_logic
            - uptime
            - vercel
            - wiz
            - zendesk
          example: alertmanager
          type: string
        template:
          $ref: '#/components/schemas/AlertTemplatePayloadV2'
      required:
        - source_type
        - template
      type: object
    AlertTemplatePayloadV2:
      example:
        attributes:
          - alert_attribute_id: abc123
            binding:
              array_value:
                - literal: SEV123
                  reference: incident.severity
              merge_strategy: first_wins
              value:
                literal: SEV123
                reference: incident.severity
        description:
          literal: SEV123
          reference: incident.severity
        expressions:
          - else_branch:
              result:
                array_value:
                  - literal: SEV123
                    reference: incident.severity
                value:
                  literal: SEV123
                  reference: incident.severity
            label: Team Slack channel
            operations:
              - branches:
                  branches:
                    - condition_groups:
                        - conditions:
                            - operation: one_of
                              param_bindings:
                                - array_value:
                                    - literal: SEV123
                                      reference: incident.severity
                                  value:
                                    literal: SEV123
                                    reference: incident.severity
                              subject: incident.severity
                      result:
                        array_value:
                          - literal: SEV123
                            reference: incident.severity
                        value:
                          literal: SEV123
                          reference: incident.severity
                  returns:
                    array: true
                    type: IncidentStatus
                cast:
                  returns:
                    array: true
                    type: IncidentStatus
                concatenate:
                  reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                filter:
                  condition_groups:
                    - conditions:
                        - operation: one_of
                          param_bindings:
                            - array_value:
                                - literal: SEV123
                                  reference: incident.severity
                              value:
                                literal: SEV123
                                reference: incident.severity
                          subject: incident.severity
                navigate:
                  reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                operation_type: navigate
                parse:
                  returns:
                    array: true
                    type: IncidentStatus
                  source: metadata.annotations["github.com/repo"]
            reference: abc123
            root_reference: incident.status
        is_private: false
        title:
          literal: SEV123
          reference: incident.severity
        visible_to_teams:
          array_value:
            - literal: SEV123
              reference: incident.severity
          value:
            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:
                  - literal: SEV123
                    reference: incident.severity
                merge_strategy: first_wins
                value:
                  literal: SEV123
                  reference: incident.severity
          items:
            $ref: '#/components/schemas/AlertTemplateAttributePayloadV2'
          type: array
        description:
          $ref: '#/components/schemas/EngineParamBindingValuePayloadV2'
        expressions:
          description: Expressions available for use in bindings within this template
          example:
            - else_branch:
                result:
                  array_value:
                    - literal: SEV123
                      reference: incident.severity
                  value:
                    literal: SEV123
                    reference: incident.severity
              label: Team Slack channel
              operations:
                - branches:
                    branches:
                      - condition_groups:
                          - conditions:
                              - operation: one_of
                                param_bindings:
                                  - array_value:
                                      - literal: SEV123
                                        reference: incident.severity
                                    value:
                                      literal: SEV123
                                      reference: incident.severity
                                subject: incident.severity
                        result:
                          array_value:
                            - literal: SEV123
                              reference: incident.severity
                          value:
                            literal: SEV123
                            reference: incident.severity
                    returns:
                      array: true
                      type: IncidentStatus
                  cast:
                    returns:
                      array: true
                      type: IncidentStatus
                  concatenate:
                    reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                  filter:
                    condition_groups:
                      - conditions:
                          - operation: one_of
                            param_bindings:
                              - array_value:
                                  - literal: SEV123
                                    reference: incident.severity
                                value:
                                  literal: SEV123
                                  reference: incident.severity
                            subject: incident.severity
                  navigate:
                    reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
                  operation_type: navigate
                  parse:
                    returns:
                      array: true
                      type: IncidentStatus
                    source: metadata.annotations["github.com/repo"]
              reference: abc123
              root_reference: incident.status
          items:
            $ref: '#/components/schemas/ExpressionPayloadV2'
          type: array
        is_private:
          description: Whether or not alerts produced by this source should be private
          example: false
          type: boolean
        title:
          $ref: '#/components/schemas/EngineParamBindingValuePayloadV2'
        visible_to_teams:
          $ref: '#/components/schemas/EngineParamBindingPayloadV2'
      required:
        - expressions
        - title
        - description
        - attributes
      type: object
    AlertTemplateAttributePayloadV2:
      example:
        alert_attribute_id: abc123
        binding:
          array_value:
            - literal: SEV123
              reference: incident.severity
          merge_strategy: first_wins
          value:
            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/AlertTemplateAttributeBindingPayloadV2'
      required:
        - alert_attribute_id
        - binding
      type: object
    EngineParamBindingValuePayloadV2:
      example:
        literal: SEV123
        reference: incident.severity
      properties:
        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
      type: object
    ExpressionPayloadV2:
      example:
        else_branch:
          result:
            array_value:
              - literal: SEV123
                reference: incident.severity
            value:
              literal: SEV123
              reference: incident.severity
        label: Team Slack channel
        operations:
          - branches:
              branches:
                - condition_groups:
                    - conditions:
                        - operation: one_of
                          param_bindings:
                            - array_value:
                                - literal: SEV123
                                  reference: incident.severity
                              value:
                                literal: SEV123
                                reference: incident.severity
                          subject: incident.severity
                  result:
                    array_value:
                      - literal: SEV123
                        reference: incident.severity
                    value:
                      literal: SEV123
                      reference: incident.severity
              returns:
                array: true
                type: IncidentStatus
            cast:
              returns:
                array: true
                type: IncidentStatus
            concatenate:
              reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
            filter:
              condition_groups:
                - conditions:
                    - operation: one_of
                      param_bindings:
                        - array_value:
                            - literal: SEV123
                              reference: incident.severity
                          value:
                            literal: SEV123
                            reference: incident.severity
                      subject: incident.severity
            navigate:
              reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
            operation_type: navigate
            parse:
              returns:
                array: true
                type: IncidentStatus
              source: metadata.annotations["github.com/repo"]
        reference: abc123
        root_reference: incident.status
      properties:
        else_branch:
          $ref: '#/components/schemas/ExpressionElseBranchPayloadV2'
        label:
          description: The human readable label of the expression
          example: Team Slack channel
          type: string
        operations:
          example:
            - branches:
                branches:
                  - condition_groups:
                      - conditions:
                          - operation: one_of
                            param_bindings:
                              - array_value:
                                  - literal: SEV123
                                    reference: incident.severity
                                value:
                                  literal: SEV123
                                  reference: incident.severity
                            subject: incident.severity
                    result:
                      array_value:
                        - literal: SEV123
                          reference: incident.severity
                      value:
                        literal: SEV123
                        reference: incident.severity
                returns:
                  array: true
                  type: IncidentStatus
              cast:
                returns:
                  array: true
                  type: IncidentStatus
              concatenate:
                reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
              filter:
                condition_groups:
                  - conditions:
                      - operation: one_of
                        param_bindings:
                          - array_value:
                              - literal: SEV123
                                reference: incident.severity
                            value:
                              literal: SEV123
                              reference: incident.severity
                        subject: incident.severity
              navigate:
                reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
              operation_type: navigate
              parse:
                returns:
                  array: true
                  type: IncidentStatus
                source: metadata.annotations["github.com/repo"]
          items:
            $ref: '#/components/schemas/ExpressionOperationPayloadV2'
          type: array
        reference:
          description: A short ID that can be used to reference the expression
          example: abc123
          type: string
        root_reference:
          description: >-
            The root reference for this expression (i.e. where the expression
            starts)
          example: incident.status
          type: string
      required:
        - label
        - reference
        - root_reference
        - operations
      type: object
    EngineParamBindingPayloadV2:
      example:
        array_value:
          - literal: SEV123
            reference: incident.severity
        value:
          literal: SEV123
          reference: incident.severity
      properties:
        array_value:
          description: If set, this is the array value of the step parameter
          example:
            - literal: SEV123
              reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingValuePayloadV2'
          type: array
        value:
          $ref: '#/components/schemas/EngineParamBindingValuePayloadV2'
      type: object
    AlertTemplateAttributeBindingPayloadV2:
      example:
        array_value:
          - literal: SEV123
            reference: incident.severity
        merge_strategy: first_wins
        value:
          literal: SEV123
          reference: incident.severity
      properties:
        array_value:
          description: If set, this is the array value of the step parameter
          example:
            - literal: SEV123
              reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingValuePayloadV2'
          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/EngineParamBindingValuePayloadV2'
      type: object
    ExpressionElseBranchPayloadV2:
      example:
        result:
          array_value:
            - literal: SEV123
              reference: incident.severity
          value:
            literal: SEV123
            reference: incident.severity
      properties:
        result:
          $ref: '#/components/schemas/EngineParamBindingPayloadV2'
      required:
        - result
      type: object
    ExpressionOperationPayloadV2:
      example:
        branches:
          branches:
            - condition_groups:
                - conditions:
                    - operation: one_of
                      param_bindings:
                        - array_value:
                            - literal: SEV123
                              reference: incident.severity
                          value:
                            literal: SEV123
                            reference: incident.severity
                      subject: incident.severity
              result:
                array_value:
                  - literal: SEV123
                    reference: incident.severity
                value:
                  literal: SEV123
                  reference: incident.severity
          returns:
            array: true
            type: IncidentStatus
        cast:
          returns:
            array: true
            type: IncidentStatus
        concatenate:
          reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
        filter:
          condition_groups:
            - conditions:
                - operation: one_of
                  param_bindings:
                    - array_value:
                        - literal: SEV123
                          reference: incident.severity
                      value:
                        literal: SEV123
                        reference: incident.severity
                  subject: incident.severity
        navigate:
          reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
        operation_type: navigate
        parse:
          returns:
            array: true
            type: IncidentStatus
          source: metadata.annotations["github.com/repo"]
      properties:
        branches:
          $ref: '#/components/schemas/ExpressionBranchesOptsPayloadV2'
        cast:
          $ref: '#/components/schemas/ExpressionCastOptsPayloadV2'
        concatenate:
          $ref: '#/components/schemas/ExpressionConcatenateOptsPayloadV2'
        filter:
          $ref: '#/components/schemas/ExpressionFilterOptsPayloadV2'
        navigate:
          $ref: '#/components/schemas/ExpressionNavigateOptsPayloadV2'
        operation_type:
          description: The type of the operation
          enum:
            - navigate
            - filter
            - concatenate
            - count
            - min
            - max
            - sum
            - random
            - first
            - parse
            - branches
            - cast
          example: navigate
          type: string
        parse:
          $ref: '#/components/schemas/ExpressionParseOptsPayloadV2'
      required:
        - operation_type
      type: object
    ExpressionBranchesOptsPayloadV2:
      example:
        branches:
          - condition_groups:
              - conditions:
                  - operation: one_of
                    param_bindings:
                      - array_value:
                          - literal: SEV123
                            reference: incident.severity
                        value:
                          literal: SEV123
                          reference: incident.severity
                    subject: incident.severity
            result:
              array_value:
                - literal: SEV123
                  reference: incident.severity
              value:
                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: one_of
                      param_bindings:
                        - array_value:
                            - literal: SEV123
                              reference: incident.severity
                          value:
                            literal: SEV123
                            reference: incident.severity
                      subject: incident.severity
              result:
                array_value:
                  - literal: SEV123
                    reference: incident.severity
                value:
                  literal: SEV123
                  reference: incident.severity
          items:
            $ref: '#/components/schemas/ExpressionBranchPayloadV2'
          type: array
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
      required:
        - branches
        - returns
      type: object
    ExpressionCastOptsPayloadV2:
      example:
        returns:
          array: true
          type: IncidentStatus
      properties:
        returns:
          $ref: '#/components/schemas/ReturnsMetaV2'
      required:
        - returns
      type: object
    ExpressionConcatenateOptsPayloadV2:
      example:
        reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
      properties:
        reference:
          description: The reference that you want to concatenate with
          example: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
          type: string
      required:
        - reference
      type: object
    ExpressionFilterOptsPayloadV2:
      example:
        condition_groups:
          - conditions:
              - operation: one_of
                param_bindings:
                  - array_value:
                      - literal: SEV123
                        reference: incident.severity
                    value:
                      literal: SEV123
                      reference: incident.severity
                subject: 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: one_of
                  param_bindings:
                    - array_value:
                        - literal: SEV123
                          reference: incident.severity
                      value:
                        literal: SEV123
                        reference: incident.severity
                  subject: incident.severity
          items:
            $ref: '#/components/schemas/ConditionGroupPayloadV2'
          type: array
      required:
        - condition_groups
      type: object
    ExpressionNavigateOptsPayloadV2:
      example:
        reference: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
      properties:
        reference:
          description: The reference that you want to navigate to
          example: catalog_attribute["01FCNDV6P870EA6S7TK1DSYD5H"]
          type: string
      required:
        - reference
      type: object
    ExpressionParseOptsPayloadV2:
      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
    ExpressionBranchPayloadV2:
      example:
        condition_groups:
          - conditions:
              - operation: one_of
                param_bindings:
                  - array_value:
                      - literal: SEV123
                        reference: incident.severity
                    value:
                      literal: SEV123
                      reference: incident.severity
                subject: incident.severity
        result:
          array_value:
            - literal: SEV123
              reference: incident.severity
          value:
            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: one_of
                  param_bindings:
                    - array_value:
                        - literal: SEV123
                          reference: incident.severity
                      value:
                        literal: SEV123
                        reference: incident.severity
                  subject: incident.severity
          items:
            $ref: '#/components/schemas/ConditionGroupPayloadV2'
          type: array
        result:
          $ref: '#/components/schemas/EngineParamBindingPayloadV2'
      required:
        - condition_groups
        - result
      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
    ConditionGroupPayloadV2:
      example:
        conditions:
          - operation: one_of
            param_bindings:
              - array_value:
                  - literal: SEV123
                    reference: incident.severity
                value:
                  literal: SEV123
                  reference: incident.severity
            subject: incident.severity
      properties:
        conditions:
          description: >-
            All conditions in this list must be satisfied for the group to be
            satisfied
          example:
            - operation: one_of
              param_bindings:
                - array_value:
                    - literal: SEV123
                      reference: incident.severity
                  value:
                    literal: SEV123
                    reference: incident.severity
              subject: incident.severity
          items:
            $ref: '#/components/schemas/ConditionPayloadV2'
          type: array
      required:
        - conditions
      type: object
    ConditionPayloadV2:
      example:
        operation: one_of
        param_bindings:
          - array_value:
              - literal: SEV123
                reference: incident.severity
            value:
              literal: SEV123
              reference: incident.severity
        subject: incident.severity
      properties:
        operation:
          description: The name of the operation on the subject
          example: one_of
          type: string
        param_bindings:
          description: List of parameter bindings
          example:
            - array_value:
                - literal: SEV123
                  reference: incident.severity
              value:
                literal: SEV123
                reference: incident.severity
          items:
            $ref: '#/components/schemas/EngineParamBindingPayloadV2'
          type: array
        subject:
          description: The reference of the subject in the trigger scope
          example: incident.severity
          type: string
      required:
        - subject
        - operation
        - param_bindings
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key from your incident.io dashboard (Settings → API keys)

````