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

# Create a signal action

> Adds a signal action to the specified campaign controller. When the controller's triggers fire, this action fires the configured signal event into the campaign event pipeline. Returns the created signal action with its server-assigned id.



## OpenAPI

````yaml /api-reference/management-expert.json post /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals
openapi: 3.0.1
info:
  description: >-
    Advanced configuration endpoints for Extole platform experts: campaign
    controllers, typed actions and triggers, advanced component types and
    facets, source mapping, report post-handlers, pre-handlers, and other expert
    configuration surfaces not included in the standard Management API.
  title: Management Expert API
  version: '1.0'
servers:
  - description: Production
    url: https://api.extole.io
security:
  - HEADER: []
  - QUERY: []
  - COOKIE: []
tags:
  - name: Authentication
  - name: Campaign Controllers
  - name: Campaign Controllers Actions
  - name: Campaign Controllers Triggers
  - name: Campaign Flow Steps
  - name: Components
  - name: Components Grants
  - name: Components Subscriptions
  - name: Components Types
  - name: Content
  - name: Debug
  - name: Domains
  - name: Email
  - name: Event Prehandlers
  - name: Events
  - name: Javascript Core Extensions
  - name: Persons
  - name: Profiles
  - name: Report Schedules
  - name: Report Types
  - name: Reporting
  - name: Security Keys
  - name: Settings
paths:
  /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals:
    post:
      tags:
        - Campaign Controllers Actions
      summary: Create a signal action
      description: >-
        Adds a signal action to the specified campaign controller. When the
        controller's triggers fire, this action fires the configured signal
        event into the campaign event pipeline. Returns the created signal
        action with its server-assigned id.
      operationId: createSignalAction
      parameters:
        - in: path
          name: campaignId
          required: true
          schema:
            type: string
        - in: path
          name: version
          required: true
          schema:
            pattern: (/version/.+)?
            type: string
        - in: path
          name: controllerId
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            example:
              component_ids:
                - component_id
              component_references:
                - component_id: component_id
                  socket_names:
                    - socket_name
              data:
                data_key: {}
              enabled: true
              name: name
              quality: ALWAYS
              signal_polling_id: signal_polling_id
            schema:
              $ref: '#/components/schemas/CampaignControllerActionSignalCreateRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionSignalResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                campaign_build_failed:
                  $ref: '#/components/examples/campaign_build_failed'
                campaign_component_absolute_name_missing:
                  $ref: >-
                    #/components/examples/campaign_component_absolute_name_missing
                campaign_component_description_out_of_range:
                  $ref: >-
                    #/components/examples/campaign_component_description_out_of_range
                campaign_component_display_name_contains_illegal_character:
                  $ref: >-
                    #/components/examples/campaign_component_display_name_contains_illegal_character
                campaign_component_display_name_out_of_range:
                  $ref: >-
                    #/components/examples/campaign_component_display_name_out_of_range
                campaign_component_id_missing:
                  $ref: '#/components/examples/campaign_component_id_missing'
                campaign_component_name_already_in_use:
                  $ref: '#/components/examples/campaign_component_name_already_in_use'
                campaign_component_name_contains_illegal_character:
                  $ref: >-
                    #/components/examples/campaign_component_name_contains_illegal_character
                campaign_component_name_out_of_range:
                  $ref: '#/components/examples/campaign_component_name_out_of_range'
                campaign_component_type_validation_failed:
                  $ref: >-
                    #/components/examples/campaign_component_type_validation_failed
                campaign_concurrent_update:
                  $ref: '#/components/examples/campaign_concurrent_update'
                campaign_has_pending_changes:
                  $ref: '#/components/examples/campaign_has_pending_changes'
                campaign_locked:
                  $ref: '#/components/examples/campaign_locked'
                campaign_stale_version:
                  $ref: '#/components/examples/campaign_stale_version'
                campaign_version_malformed:
                  $ref: '#/components/examples/campaign_version_malformed'
                circular_component_reference:
                  $ref: '#/components/examples/circular_component_reference'
                component_facets_not_found:
                  $ref: '#/components/examples/component_facets_not_found'
                controller_state_misconfiguration:
                  $ref: '#/components/examples/controller_state_misconfiguration'
                data_name_invalid:
                  $ref: '#/components/examples/data_name_invalid'
                data_name_length_invalid:
                  $ref: '#/components/examples/data_name_length_invalid'
                data_value_invalid:
                  $ref: '#/components/examples/data_value_invalid'
                data_value_length_invalid:
                  $ref: '#/components/examples/data_value_length_invalid'
                date_invalid:
                  $ref: '#/components/examples/date_invalid'
                excessive_component_reference:
                  $ref: '#/components/examples/excessive_component_reference'
                expression_invalid_syntax:
                  $ref: '#/components/examples/expression_invalid_syntax'
                external_element_is_referenced_by_active_configuration:
                  $ref: >-
                    #/components/examples/external_element_is_referenced_by_active_configuration
                external_elements_cannot_have_multiple_references:
                  $ref: >-
                    #/components/examples/external_elements_cannot_have_multiple_references
                invalid_campaign_id:
                  $ref: '#/components/examples/invalid_campaign_id'
                invalid_campaign_state:
                  $ref: '#/components/examples/invalid_campaign_state'
                invalid_campaign_version:
                  $ref: '#/components/examples/invalid_campaign_version'
                invalid_component_installed_into_socket:
                  $ref: >-
                    #/components/examples/invalid_component_installed_into_socket
                invalid_component_reference:
                  $ref: '#/components/examples/invalid_component_reference'
                invalid_component_reference_socket_name:
                  $ref: >-
                    #/components/examples/invalid_component_reference_socket_name
                invalid_external_component_reference:
                  $ref: '#/components/examples/invalid_external_component_reference'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                lock_missing_lock_types:
                  $ref: '#/components/examples/lock_missing_lock_types'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
                name_length_invalid:
                  $ref: '#/components/examples/name_length_invalid'
                orphan_external_component_reference:
                  $ref: '#/components/examples/orphan_external_component_reference'
                rebuild_campaigns_build_failed:
                  $ref: '#/components/examples/rebuild_campaigns_build_failed'
                redundant_component_reference:
                  $ref: '#/components/examples/redundant_component_reference'
                self_component_reference:
                  $ref: '#/components/examples/self_component_reference'
                signal_polling_id_length_invalid:
                  $ref: '#/components/examples/signal_polling_id_length_invalid'
                unlock_missing_lock_types:
                  $ref: '#/components/examples/unlock_missing_lock_types'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              examples:
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unauthorized
        '402':
          content:
            application/json:
              examples:
                payment_required:
                  $ref: '#/components/examples/payment_required'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Payment Required
        '403':
          content:
            application/json:
              examples:
                access_denied:
                  $ref: '#/components/examples/access_denied'
                invalid_campaign_controller_id:
                  $ref: '#/components/examples/invalid_campaign_controller_id'
                invalid_controller_action_id:
                  $ref: '#/components/examples/invalid_controller_action_id'
                invalid_controller_trigger_id:
                  $ref: '#/components/examples/invalid_controller_trigger_id'
                method_unauthorized:
                  $ref: '#/components/examples/method_unauthorized'
                missing_access_token:
                  $ref: '#/components/examples/missing_access_token'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Forbidden
        '415':
          content:
            application/json:
              examples:
                unsupported_media_type:
                  $ref: '#/components/examples/unsupported_media_type'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Unsupported Media Type
        '429':
          content:
            application/json:
              examples:
                too_many_requests:
                  $ref: '#/components/examples/too_many_requests'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Too Many Requests
components:
  schemas:
    CampaignControllerActionSignalCreateRequest:
      description: >-
        Body of a `POST
        /v2/campaigns/{campaignId}{version:(/version/.+)?}/controllers/{controllerId}/actions/signals`
        request.
      properties:
        component_ids:
          items:
            type: string
          type: array
        component_references:
          items:
            $ref: '#/components/schemas/ComponentReferenceRequest'
          type: array
        data:
          $ref: >-
            #/components/schemas/DataMapInCampaignControllerActionSignalCreateRequest
        enabled:
          $ref: >-
            #/components/schemas/EnabledInCampaignControllerActionSignalCreateRequest
        name:
          $ref: >-
            #/components/schemas/NameInCampaignControllerActionSignalCreateRequest
        quality:
          enum:
            - ALWAYS
            - HIGH
            - LOW
          type: string
        signal_polling_id:
          $ref: >-
            #/components/schemas/SignalPollingIdInCampaignControllerActionSignalCreateRequest
      type: object
    CampaignControllerActionSignalResponse:
      allOf:
        - $ref: '#/components/schemas/CampaignControllerActionResponseBase'
        - properties:
            action_type:
              enum:
                - SIGNAL
              type: string
            data:
              $ref: >-
                #/components/schemas/DataMapInCampaignControllerActionSignalResponse
            name:
              $ref: >-
                #/components/schemas/NameInCampaignControllerActionSignalResponse
            signal_polling_id:
              $ref: >-
                #/components/schemas/SignalPollingIdInCampaignControllerActionSignalResponse
          type: object
      type: object
      title: SIGNAL
    RestExceptionResponse:
      description: Represents the API error response
      properties:
        code:
          description: Specific error code for this error type, documented per endpoint
          type: string
        http_status_code:
          description: >-
            HTTP status code that was returned with this error, useful if client
            get response code
          format: int32
          type: integer
        message:
          description: User readable English description of the error
          type: string
        parameters:
          additionalProperties:
            description: >-
              Attributes related to the error, varies be error code, documented
              per endpoint
            type: object
          description: >-
            Attributes related to the error, varies be error code, documented
            per endpoint
          type: object
        unique_id:
          description: >-
            Unique id associated with this error, useful for discussions with
            Extole
          type: string
      required:
        - code
        - http_status_code
        - message
        - parameters
        - unique_id
      type: object
    ComponentReferenceRequest:
      properties:
        component_id:
          type: string
        socket_names:
          items:
            type: string
          type: array
      type: object
    DataMapInCampaignControllerActionSignalCreateRequest:
      additionalProperties:
        $ref: '#/components/schemas/DataInCampaignControllerActionSignalCreateRequest'
      type: object
    EnabledInCampaignControllerActionSignalCreateRequest:
      description: Choose between static or dynamic enabled
      oneOf:
        - description: Static enabled
          title: Static Value
          type: boolean
        - description: >-
            Handlebars expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: handlebars@buildtime:{{enabled}}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^handlebars@buildtime:.*
          title: Buildtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: >-
            javascript@buildtime:function() { return
            context.getVariableContext().get('enabled');}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^javascript@buildtime:.*
          title: Buildtime - Javascript
          type: string
    NameInCampaignControllerActionSignalCreateRequest:
      description: Choose between static or dynamic name
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Static name
          title: Static Value
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{name}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('name');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    SignalPollingIdInCampaignControllerActionSignalCreateRequest:
      description: Choose between static or dynamic signal polling id
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Static signal polling id
          title: Static Value
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{signalPollingId}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: >-
            javascript@runtime:function() { return
            context.get('signalPollingId');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    CampaignControllerActionResponseBase:
      properties:
        action_id:
          type: string
        action_type:
          enum:
            - APPROVE
            - CANCEL_REWARD
            - CREATE_MEMBERSHIP
            - CREATIVE
            - DATA_INTELLIGENCE
            - DECLINE
            - DISPLAY
            - EARN_REWARD
            - EMAIL
            - EXPRESSION
            - FIRE_AS_PERSON
            - FULFILL_REWARD
            - INCENTIVIZE
            - INCENTIVIZE_STATUS_UPDATE
            - REDEEM_REWARD
            - REMOVE_MEMBERSHIP
            - REVOKE_REWARD
            - SCHEDULE
            - SHARE_EVENT
            - SIGNAL
            - SIGNAL_V1
            - STEP_SIGNAL
            - WEBHOOK
          type: string
        component_ids:
          items:
            type: string
          type: array
        component_references:
          items:
            $ref: '#/components/schemas/ComponentReferenceResponse'
          type: array
        enabled:
          $ref: '#/components/schemas/EnabledInCampaignControllerActionResponseBase'
        quality:
          enum:
            - ALWAYS
            - HIGH
            - LOW
          type: string
      type: object
    DataMapInCampaignControllerActionSignalResponse:
      additionalProperties:
        $ref: '#/components/schemas/DataInCampaignControllerActionSignalResponse'
      type: object
    NameInCampaignControllerActionSignalResponse:
      description: >-
        The name as configured: a literal value, or an expression (type:string)
        when defined dynamically.
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Literal name
          title: Static Value
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{name}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('name');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    SignalPollingIdInCampaignControllerActionSignalResponse:
      description: >-
        The signal polling id as configured: a literal value, or an expression
        (type:string) when defined dynamically.
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Literal signal polling id
          title: Static Value
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{signalPollingId}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: >-
            javascript@runtime:function() { return
            context.get('signalPollingId');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    DataInCampaignControllerActionSignalCreateRequest:
      description: Choose between static or dynamic data
      oneOf:
        - description: Static data
          title: Static Value
          type: object
        - description: >-
            Handlebars expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: handlebars@buildtime:{{data}}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^handlebars@buildtime:.*
          title: Buildtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: >-
            javascript@buildtime:function() { return
            context.getVariableContext().get('data');}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^javascript@buildtime:.*
          title: Buildtime - Javascript
          type: string
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{data}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('data');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    ComponentReferenceResponse:
      properties:
        component_id:
          type: string
        socket_names:
          items:
            type: string
          type: array
      type: object
    EnabledInCampaignControllerActionResponseBase:
      description: >-
        The enabled as configured: a literal value, or an expression
        (type:string) when defined dynamically.
      oneOf:
        - description: Literal enabled
          title: Static Value
          type: boolean
        - description: >-
            Handlebars expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: handlebars@buildtime:{{enabled}}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^handlebars@buildtime:.*
          title: Buildtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: >-
            javascript@buildtime:function() { return
            context.getVariableContext().get('enabled');}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^javascript@buildtime:.*
          title: Buildtime - Javascript
          type: string
    DataInCampaignControllerActionSignalResponse:
      description: >-
        The data as configured: a literal value, or an expression (type:string)
        when defined dynamically.
      oneOf:
        - description: Literal data
          title: Static Value
          type: object
        - description: >-
            Handlebars expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: handlebars@buildtime:{{data}}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^handlebars@buildtime:.*
          title: Buildtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [ControllerBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts).
          example: >-
            javascript@buildtime:function() { return
            context.getVariableContext().get('data');}
          externalDocs:
            description: ControllerBuildtimeContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/campaign/ControllerBuildtimeContext.d.ts
          pattern: ^javascript@buildtime:.*
          title: Buildtime - Javascript
          type: string
        - description: >-
            Handlebars expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: handlebars@runtime:{{data}}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [SignalActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('data');}
          externalDocs:
            description: SignalActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/signal/SignalActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
  examples:
    binding_error:
      summary: binding_error
      value:
        code: binding_error
        http_status_code: 400
        message: Argument is not of the expected type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_build_failed:
      summary: campaign_build_failed
      value:
        code: campaign_build_failed
        http_status_code: 400
        message: Campaign build failed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_absolute_name_missing:
      summary: campaign_component_absolute_name_missing
      value:
        code: campaign_component_absolute_name_missing
        http_status_code: 400
        message: Campaign component absolute name is missing
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_description_out_of_range:
      summary: campaign_component_description_out_of_range
      value:
        code: campaign_component_description_out_of_range
        http_status_code: 400
        message: Campaign component description length is out of range
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_display_name_contains_illegal_character:
      summary: campaign_component_display_name_contains_illegal_character
      value:
        code: campaign_component_display_name_contains_illegal_character
        http_status_code: 400
        message: >-
          Campaign component display name can only contain alphanumeric, dash,
          underscore, whitespace, asterisk, hash, dollar characters
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_display_name_out_of_range:
      summary: campaign_component_display_name_out_of_range
      value:
        code: campaign_component_display_name_out_of_range
        http_status_code: 400
        message: Campaign component display name length is out of range
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_id_missing:
      summary: campaign_component_id_missing
      value:
        code: campaign_component_id_missing
        http_status_code: 400
        message: Campaign component id is missing
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_name_already_in_use:
      summary: campaign_component_name_already_in_use
      value:
        code: campaign_component_name_already_in_use
        http_status_code: 400
        message: Campaign component name is already used by another component
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_name_contains_illegal_character:
      summary: campaign_component_name_contains_illegal_character
      value:
        code: campaign_component_name_contains_illegal_character
        http_status_code: 400
        message: >-
          Campaign component name can only contain alphanumeric, dash and
          underscore characters
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_name_out_of_range:
      summary: campaign_component_name_out_of_range
      value:
        code: campaign_component_name_out_of_range
        http_status_code: 400
        message: Campaign component name length is out of range
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_component_type_validation_failed:
      summary: campaign_component_type_validation_failed
      value:
        code: campaign_component_type_validation_failed
        http_status_code: 400
        message: Campaign component type validation failed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_concurrent_update:
      summary: campaign_concurrent_update
      value:
        code: campaign_concurrent_update
        http_status_code: 400
        message: >-
          Could not perform the operation. Campaign is currently updated by
          other process/user
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_has_pending_changes:
      summary: campaign_has_pending_changes
      value:
        code: campaign_has_pending_changes
        http_status_code: 400
        message: Could not perform the operation. Campaign has pending changes
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_locked:
      summary: campaign_locked
      value:
        code: campaign_locked
        http_status_code: 400
        message: Could not perform the operation. The campaign is locked
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_stale_version:
      summary: campaign_stale_version
      value:
        code: campaign_stale_version
        http_status_code: 400
        message: You can only modify the latest version of the campaign
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    campaign_version_malformed:
      summary: campaign_version_malformed
      value:
        code: campaign_version_malformed
        http_status_code: 400
        message: Campaign version is malformed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    circular_component_reference:
      summary: circular_component_reference
      value:
        code: circular_component_reference
        http_status_code: 400
        message: Circular campaign component reference is not allowed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    component_facets_not_found:
      summary: component_facets_not_found
      value:
        code: component_facets_not_found
        http_status_code: 400
        message: Component facets not found
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    controller_state_misconfiguration:
      summary: controller_state_misconfiguration
      value:
        code: controller_state_misconfiguration
        http_status_code: 400
        message: A controller has not properly configured state
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    data_name_invalid:
      summary: data_name_invalid
      value:
        code: data_name_invalid
        http_status_code: 400
        message: Data name is invalid
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    data_name_length_invalid:
      summary: data_name_length_invalid
      value:
        code: data_name_length_invalid
        http_status_code: 400
        message: Data name can't be blank or longer than maximum length
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    data_value_invalid:
      summary: data_value_invalid
      value:
        code: data_value_invalid
        http_status_code: 400
        message: Data value is invalid
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    data_value_length_invalid:
      summary: data_value_length_invalid
      value:
        code: data_value_length_invalid
        http_status_code: 400
        message: Data value can't be blank or longer than maximum length
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    date_invalid:
      summary: date_invalid
      value:
        code: date_invalid
        http_status_code: 400
        message: Date is invalid or not ISO-8601 compliant
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    excessive_component_reference:
      summary: excessive_component_reference
      value:
        code: excessive_component_reference
        http_status_code: 400
        message: Root campaign component may have at most one reference
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    expression_invalid_syntax:
      summary: expression_invalid_syntax
      value:
        code: expression_invalid_syntax
        http_status_code: 400
        message: Campaign build failed due expression invalid syntax
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    external_element_is_referenced_by_active_configuration:
      summary: external_element_is_referenced_by_active_configuration
      value:
        code: external_element_is_referenced_by_active_configuration
        http_status_code: 400
        message: External element is referenced by active configuration
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    external_elements_cannot_have_multiple_references:
      summary: external_elements_cannot_have_multiple_references
      value:
        code: external_elements_cannot_have_multiple_references
        http_status_code: 400
        message: External elements cannot have multiple references
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_campaign_id:
      summary: invalid_campaign_id
      value:
        code: invalid_campaign_id
        http_status_code: 400
        message: Invalid Campaign Id
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_campaign_state:
      summary: invalid_campaign_state
      value:
        code: invalid_campaign_state
        http_status_code: 400
        message: Invalid campaign state
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_campaign_version:
      summary: invalid_campaign_version
      value:
        code: invalid_campaign_version
        http_status_code: 400
        message: Invalid Campaign Version
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_component_installed_into_socket:
      summary: invalid_component_installed_into_socket
      value:
        code: invalid_component_installed_into_socket
        http_status_code: 400
        message: Invalid component installed into socket
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_component_reference:
      summary: invalid_component_reference
      value:
        code: invalid_component_reference
        http_status_code: 400
        message: Unknown referenced campaign component
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_component_reference_socket_name:
      summary: invalid_component_reference_socket_name
      value:
        code: invalid_component_reference_socket_name
        http_status_code: 400
        message: Invalid component reference socket name
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_external_component_reference:
      summary: invalid_external_component_reference
      value:
        code: invalid_external_component_reference
        http_status_code: 400
        message: Unknown external referenced campaign component
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_json:
      summary: invalid_json
      value:
        code: invalid_json
        http_status_code: 400
        message: JSON is invalid
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_parameter:
      summary: invalid_parameter
      value:
        code: invalid_parameter
        http_status_code: 400
        message: Parameter is invalid.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    lock_missing_lock_types:
      summary: lock_missing_lock_types
      value:
        code: lock_missing_lock_types
        http_status_code: 400
        message: Unable to unlock, lock types should be specified
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    missing_request_body:
      summary: missing_request_body
      value:
        code: missing_request_body
        http_status_code: 400
        message: Missing request body
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    name_length_invalid:
      summary: name_length_invalid
      value:
        code: name_length_invalid
        http_status_code: 400
        message: Name can't be longer than maximum length
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    orphan_external_component_reference:
      summary: orphan_external_component_reference
      value:
        code: orphan_external_component_reference
        http_status_code: 400
        message: Orphan external referenced campaign component
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    rebuild_campaigns_build_failed:
      summary: rebuild_campaigns_build_failed
      value:
        code: rebuild_campaigns_build_failed
        http_status_code: 400
        message: Rebuild campaigns build failed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    redundant_component_reference:
      summary: redundant_component_reference
      value:
        code: redundant_component_reference
        http_status_code: 400
        message: Same reference defined multiple times
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    self_component_reference:
      summary: self_component_reference
      value:
        code: self_component_reference
        http_status_code: 400
        message: Self campaign component reference is not allowed
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    signal_polling_id_length_invalid:
      summary: signal_polling_id_length_invalid
      value:
        code: signal_polling_id_length_invalid
        http_status_code: 400
        message: Signal polling id can't be blank or longer than maximum length
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    unlock_missing_lock_types:
      summary: unlock_missing_lock_types
      value:
        code: unlock_missing_lock_types
        http_status_code: 400
        message: Unable to lock, lock types should be specified
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    method_unauthorized:
      summary: method_unauthorized
      value:
        code: method_unauthorized
        http_status_code: 401
        message: Unauthorized access to this endpoint
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    payment_required:
      summary: payment_required
      value:
        code: payment_required
        http_status_code: 402
        message: The access_token provided is associated with an unpaid account.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    access_denied:
      summary: access_denied
      value:
        code: access_denied
        http_status_code: 403
        message: >-
          The access_token provided is not permitted to access the specified
          resource.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_campaign_controller_id:
      summary: invalid_campaign_controller_id
      value:
        code: invalid_campaign_controller_id
        http_status_code: 403
        message: Invalid campaign controller id
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_controller_action_id:
      summary: invalid_controller_action_id
      value:
        code: invalid_controller_action_id
        http_status_code: 403
        message: Invalid campaign controller action id
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    invalid_controller_trigger_id:
      summary: invalid_controller_trigger_id
      value:
        code: invalid_controller_trigger_id
        http_status_code: 403
        message: Invalid campaign controller trigger id
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    missing_access_token:
      summary: missing_access_token
      value:
        code: missing_access_token
        http_status_code: 403
        message: No access_token was provided with this request.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    unsupported_media_type:
      summary: unsupported_media_type
      value:
        code: unsupported_media_type
        http_status_code: 415
        message: Request had an unsupported or no media type
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
    too_many_requests:
      summary: too_many_requests
      value:
        code: too_many_requests
        http_status_code: 429
        message: >-
          The server is unable to process your request at the moment, please
          retry later.
        parameters: {}
        unique_id: 00000000-0000-0000-0000-000000000000
  securitySchemes:
    HEADER:
      in: header
      name: Authorization
      type: apiKey
      x-bearer-format: bearer
    QUERY:
      in: query
      name: access_token
      type: apiKey
    COOKIE:
      in: cookie
      name: extole_token
      type: apiKey

````