> ## 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 display action

> Adds a display action to the specified campaign controller. When the controller's triggers fire, this action controls which content zone or creative is displayed to the participant. Returns the created display action with its server-assigned id.



## OpenAPI

````yaml /api-reference/management-expert.json post /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays
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/displays:
    post:
      tags:
        - Campaign Controllers Actions
      summary: Create a display action
      description: >-
        Adds a display action to the specified campaign controller. When the
        controller's triggers fire, this action controls which content zone or
        creative is displayed to the participant. Returns the created display
        action with its server-assigned id.
      operationId: createDisplayAction
      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:
              body: body
              component_ids:
                - component_id
              component_references:
                - component_id: component_id
                  socket_names:
                    - socket_name
              enabled: true
              headers:
                headers_key: headers_key
              quality: ALWAYS
              response:
                body: body
                headers:
                  headers_key: headers_key
                statusCode: 1
            schema:
              $ref: >-
                #/components/schemas/CampaignControllerActionDisplayCreateRequest
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionDisplayResponse'
          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'
                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'
                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'
                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:
    CampaignControllerActionDisplayCreateRequest:
      description: >-
        Body of a `POST
        /v2/campaigns/{campaignId}{version:(/version/.+)?}/controllers/{controllerId}/actions/displays`
        request.
      properties:
        body:
          $ref: >-
            #/components/schemas/BodyInCampaignControllerActionDisplayCreateRequest
        component_ids:
          items:
            type: string
          type: array
        component_references:
          items:
            $ref: '#/components/schemas/ComponentReferenceRequest'
          type: array
        enabled:
          $ref: >-
            #/components/schemas/EnabledInCampaignControllerActionDisplayCreateRequest
        headers:
          $ref: >-
            #/components/schemas/HeadersInCampaignControllerActionDisplayCreateRequest
        quality:
          enum:
            - ALWAYS
            - HIGH
            - LOW
          type: string
        response:
          $ref: >-
            #/components/schemas/ResponseInCampaignControllerActionDisplayCreateRequest
      type: object
    CampaignControllerActionDisplayResponse:
      allOf:
        - $ref: '#/components/schemas/CampaignControllerActionResponseBase'
        - properties:
            action_type:
              enum:
                - DISPLAY
              type: string
            body:
              $ref: >-
                #/components/schemas/BodyInCampaignControllerActionDisplayResponse
            headers:
              $ref: >-
                #/components/schemas/HeadersInCampaignControllerActionDisplayResponse
            response:
              $ref: >-
                #/components/schemas/ResponseInCampaignControllerActionDisplayResponse
          type: object
      type: object
      title: DISPLAY
    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
    BodyInCampaignControllerActionDisplayCreateRequest:
      description: Choose between static or dynamic body
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@buildtime:.*
                    type: string
                  - pattern: ^javascript@buildtime:.*
                    type: string
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Static body
          title: Static Value
        - 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:{{body}}
          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('body');}
          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
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: handlebars@runtime:{{body}}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('body');}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    ComponentReferenceRequest:
      properties:
        component_id:
          type: string
        socket_names:
          items:
            type: string
          type: array
      type: object
    EnabledInCampaignControllerActionDisplayCreateRequest:
      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
    HeadersInCampaignControllerActionDisplayCreateRequest:
      description: Choose between static or dynamic headers
      oneOf:
        - additionalProperties:
            type: string
          description: Static headers
          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:{{headers}}
          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('headers');}
          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
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: handlebars@runtime:{{headers}}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('headers');}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    ResponseInCampaignControllerActionDisplayCreateRequest:
      description: Choose between static or dynamic response
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/ApiResponse'
          description: Static response
          title: Static Value
        - 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:{{response}}
          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('response');}
          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
            [DisplayActionResponseContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts).
          example: handlebars@runtime:{{response}}
          externalDocs:
            description: DisplayActionResponseContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionResponseContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts).
          example: javascript@runtime:function() { return context.get('response');}
          externalDocs:
            description: DisplayActionResponseContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.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
    BodyInCampaignControllerActionDisplayResponse:
      description: >-
        The body as configured: a literal value, or an expression (type:string)
        when defined dynamically.
      oneOf:
        - allOf:
            - type: string
            - not:
                anyOf:
                  - pattern: ^handlebars@buildtime:.*
                    type: string
                  - pattern: ^javascript@buildtime:.*
                    type: string
                  - pattern: ^handlebars@runtime:.*
                    type: string
                  - pattern: ^javascript@runtime:.*
                    type: string
              type: string
          description: Literal body
          title: Static Value
        - 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:{{body}}
          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('body');}
          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
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: handlebars@runtime:{{body}}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('body');}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    HeadersInCampaignControllerActionDisplayResponse:
      description: >-
        The headers as configured: a literal value, or an expression
        (type:string) when defined dynamically.
      oneOf:
        - additionalProperties:
            type: string
          description: Literal headers
          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:{{headers}}
          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('headers');}
          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
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: handlebars@runtime:{{headers}}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts).
          example: javascript@runtime:function() { return context.get('headers');}
          externalDocs:
            description: DisplayActionContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    ResponseInCampaignControllerActionDisplayResponse:
      description: >-
        The response as configured: a literal value, or an expression
        (type:string) when defined dynamically.
      oneOf:
        - allOf:
            - $ref: '#/components/schemas/ApiResponse'
          description: Literal response
          title: Static Value
        - 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:{{response}}
          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('response');}
          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
            [DisplayActionResponseContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts).
          example: handlebars@runtime:{{response}}
          externalDocs:
            description: DisplayActionResponseContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts
          pattern: ^handlebars@runtime:.*
          title: Runtime - Handlebars
          type: string
        - description: >-
            Javascript expression with
            [DisplayActionResponseContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts).
          example: javascript@runtime:function() { return context.get('response');}
          externalDocs:
            description: DisplayActionResponseContext
            url: >-
              https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/step/action/display/DisplayActionResponseContext.d.ts
          pattern: ^javascript@runtime:.*
          title: Runtime - Javascript
          type: string
    ApiResponse:
      properties:
        body:
          type: string
        headers:
          additionalProperties:
            type: string
          type: object
        statusCode:
          format: int32
          type: integer
      type: object
    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
  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
    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
    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
    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

````