Extole Campaign Controllers Actions API

The Campaign Controllers Actions API from Extole — 54 operation(s) for campaign controllers actions.

Operations 102

GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions List all campaign controller actions #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/approves/{actionId} Get an approve action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/approves/{actionId} Update an approve action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/approves/{actionId} Delete an approve action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/cancel-rewards/{actionId} Get a cancel-reward action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/cancel-rewards/{actionId} Update a cancel-reward action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/cancel-rewards/{actionId} Delete a cancel-reward action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/create-memberships/{actionId} Get a create-membership action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/create-memberships/{actionId} Update a create-membership action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/create-memberships/{actionId} Delete a create-membership action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives/{actionId} Get a creative action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives/{actionId} Upload a creative action archive #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives/{actionId} Update a creative action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives/{actionId} Delete a creative action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives/{actionId}.zip Download a creative action archive #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/data-intelligences List data-intelligence actions #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/data-intelligences Create a data-intelligence action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/data-intelligences/{actionId} Get a data-intelligence action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/data-intelligences/{actionId} Update a data-intelligence action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/data-intelligences/{actionId} Delete a data-intelligence action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/declines/{actionId} Get a decline action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/declines/{actionId} Update a decline action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/declines/{actionId} Delete a decline action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/earn-rewards/{actionId} Get an earn-reward action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/earn-rewards/{actionId} Update an earn-reward action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/earn-rewards/{actionId} Delete an earn-reward action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/expressions/{actionId} Get an expression action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/expressions/{actionId} Update an expression action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/expressions/{actionId} Delete an expression action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fulfill-rewards/{actionId} Get a fulfill-reward action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fulfill-rewards/{actionId} Update a fulfill-reward action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fulfill-rewards/{actionId} Delete a fulfill-reward action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/redeem-rewards/{actionId} Get a redeem-reward action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/redeem-rewards/{actionId} Update a redeem-reward action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/redeem-rewards/{actionId} Delete a redeem-reward action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/remove-memberships/{actionId} Get a remove-membership action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/remove-memberships/{actionId} Update a remove-membership action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/remove-memberships/{actionId} Delete a remove-membership action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/revoke-rewards/{actionId} Get a revoke-reward action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/revoke-rewards/{actionId} Update a revoke-reward action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/revoke-rewards/{actionId} Delete a revoke-reward action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/schedules/{actionId} Get a schedule action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/schedules/{actionId} Update a schedule action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/schedules/{actionId} Delete a schedule action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/share-events/{actionId} Get a share-event action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/share-events/{actionId} Update a share-event action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/share-events/{actionId} Delete a share-event action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals-v1/{actionId} Get a signal-v1 action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals-v1/{actionId} Update a signal-v1 action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals-v1/{actionId} Delete a signal-v1 action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals/{actionId} Get a signal action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals/{actionId} Update a signal action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals/{actionId} Delete a signal action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/step-signals/{actionId} Get a step-signal action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/step-signals/{actionId} Update a step-signal action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/step-signals/{actionId} Delete a step-signal action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/webhooks/{actionId} Get a webhook action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/webhooks/{actionId} Update a webhook action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/webhooks/{actionId} Delete a webhook action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/{actionId} Get a campaign controller action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays/{actionId} Get a display action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays/{actionId} Update a display action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays/{actionId} Delete a display action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays/{actionId}/built Get the built display action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/emails/{actionId} Get an email action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/emails/{actionId} Update an email action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/emails/{actionId} Delete an email action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/emails/{actionId}/built Get the built email action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fire-as-person/{actionId} Get a fire-as-person action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fire-as-person/{actionId} Update a fire-as-person action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fire-as-person/{actionId} Delete a fire-as-person action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fire-as-person/{actionId}/built Get the built fire-as-person action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivize-status-updates/{actionId} Get an incentivize-status-update action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivize-status-updates/{actionId} Update an incentivize-status-update action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivize-status-updates/{actionId} Delete an incentivize-status-update action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivize-status-updates/{actionId}/built Get the built incentivize-status-update action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivizes/{actionId} Get an incentivize action #
PUT /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivizes/{actionId} Update an incentivize action #
DELETE /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivizes/{actionId} Delete an incentivize action #
GET /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivizes/{actionId}/built Get the built incentivize action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/approves Create an approve action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/cancel-rewards Create a cancel-reward action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/create-memberships Create a create-membership action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/creatives Create a creative action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/declines Create a decline action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/displays Create a display action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/earn-rewards Create an earn-reward action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/emails Create an email action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/expressions Create an expression action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fire-as-person Create a fire-as-person action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/fulfill-rewards Create a fulfill-reward action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivize-status-updates Create an incentivize-status-update action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/incentivizes Create an incentivize action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/redeem-rewards Create a redeem-reward action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/remove-memberships Create a remove-membership action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/revoke-rewards Create a revoke-reward action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/schedules Create a schedule action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/share-events Create a share-event action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals Create a signal action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/signals-v1 Create a signal-v1 action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/step-signals Create a step-signal action #
POST /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/webhooks Create a webhook action #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/extole-campaign-controllers-actions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

extole-campaign-controllers-actions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.'
  title: Integration API - Consumer to Extole Audiences Campaign Controllers Actions API
  version: '1.0'
servers:
- description: Production
  url: https://{brand}.extole.io
  variables:
    brand:
      default: yourcompany
      description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io)
security:
- HEADER: []
- QUERY: []
- COOKIE: []
tags:
- name: Campaign Controllers Actions
paths:
  /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions:
    get:
      description: Returns all actions configured on the specified campaign controller, across all action types.
      operationId: listCampaignControllerActions
      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
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/CampaignControllerActionResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                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_version_malformed:
                  $ref: '#/components/examples/campaign_version_malformed'
                date_invalid:
                  $ref: '#/components/examples/date_invalid'
                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_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'
                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
      summary: List all campaign controller actions
      tags:
      - Campaign Controllers Actions
      x-extole-bundle: management-expert
      x-extole-visibility: expert
  /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/approves/{actionId}:
    get:
      description: Returns the approve action configuration for the specified action id on the given campaign controller.
      operationId: getApproveAction
      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
      - in: path
        name: actionId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionApproveResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                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_version_malformed:
                  $ref: '#/components/examples/campaign_version_malformed'
                date_invalid:
                  $ref: '#/components/examples/date_invalid'
                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_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'
                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
      summary: Get an approve action
      tags:
      - Campaign Controllers Actions
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    put:
      description: Updates the approve action on the specified campaign controller. Only fields present in the request body are changed. Returns the updated action.
      operationId: updateApproveAction
      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
      - in: path
        name: actionId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              cause_type: cause_type
              component_ids:
              - component_id
              component_references:
              - component_id: component_id
                socket_names:
                - socket_name
              enabled: true
              event_type: event_type
              force: force
              legacy_action_id: legacy_action_id
              note: note
              partner_event_id: partner_event_id
              polling_id: polling_id
              polling_name: polling_name
              quality: ALWAYS
              reward_tags:
              - reward_tag
            schema:
              $ref: '#/components/schemas/CampaignControllerActionApproveUpdateRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionApproveResponse'
          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_controller_action_approve_cause_type_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_cause_type_length'
                campaign_controller_action_approve_event_type_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_event_type_length'
                campaign_controller_action_approve_force_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_force_length'
                campaign_controller_action_approve_legacy_action_id_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_legacy_action_id_length'
                campaign_controller_action_approve_note_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_note_length'
                campaign_controller_action_approve_partner_event_id_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_partner_event_id_length'
                campaign_controller_action_approve_polling_id_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_polling_id_length'
                campaign_controller_action_approve_polling_name_length:
                  $ref: '#/components/examples/campaign_controller_action_approve_polling_name_length'
                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
      summary: Update an approve action
      tags:
      - Campaign Controllers Actions
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    delete:
      description: Removes the approve action from the specified campaign controller. Returns the deleted action record.
      operationId: deleteApproveAction
      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
      - in: path
        name: actionId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionApproveResponse'
          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_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'
                controller_state_misconfiguration:
                  $ref: '#/components/examples/controller_state_misconfiguration'
                date_invalid:
                  $ref: '#/components/examples/date_invalid'
                expression_invalid_syntax:
                  $ref: '#/components/examples/expression_invalid_syntax'
                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_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'
                rebuild_campaigns_build_failed:
                  $ref: '#/components/examples/rebuild_campaigns_build_failed'
                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
      summary: Delete an approve action
      tags:
      - Campaign Controllers Actions
      x-extole-bundle: management-expert
      x-extole-visibility: expert
  /v2/campaigns/{campaignId}{version}/controllers/{controllerId}/actions/cancel-rewards/{actionId}:
    get:
      description: Returns the cancel-reward action configuration for the specified action id on the given campaign controller.
      operationId: getCancelRewardAction
      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
      - in: path
        name: actionId
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignControllerActionCancelRewardResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                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_version_malformed:
                  $ref: '#/components/examples/campaign_version_malformed'
                date_invalid:
                  $ref: '#/components/examples/date_invalid'
                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_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'
                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
      summary: Get a cancel-reward action
      tags:
      - Campaign Controllers Actions
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    put:
      description: Updates the cancel-reward action on the specified campaign controller. Only fields present in the request body are changed. Returns the updated action.
      operationId: updateCancelRewardAction
      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
      - in: path
        name: actionId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              component_ids:
              - component_id
              component_references:
              - componen

# --- truncated at 32 KB (1383 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-campaign-controllers-actions-api-openapi.yml