Extole Components API

The Components API from Extole — 21 operation(s) for components.

OpenAPI Specification

extole-components-api-openapi.yml Raw ↑
openapi: 3.0.1
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 Components 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: Components
paths:
  /v1/component-facets:
    get:
      description: Returns component facet (category) definitions for the calling client. Facets group component types into logical categories shown in the campaign editor. Use `GET /v1/component-facets/default` to retrieve the platform-default categories.
      operationId: listComponentFacets
      parameters:
      - in: query
        name: include_archived
        schema:
          type: boolean
      - in: query
        name: limit
        schema:
          format: int32
          type: integer
      - in: query
        name: offset
        schema:
          format: int32
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ComponentFacetResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              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'
                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 component categories
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    post:
      description: Creates a new component facet (category) definition and returns the persisted record. Component facets group types shown in the campaign editor.
      operationId: createComponentFacet
      requestBody:
        content:
          application/json:
            example:
              allowed_values:
              - color: color
                description: description
                display_name: display_name
                icon: icon
                value: value
              display_name: display_name
              name: name
            schema:
              $ref: '#/components/schemas/ComponentFacetCreateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentFacetResponse'
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                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'
                circular_component_reference:
                  $ref: '#/components/examples/circular_component_reference'
                component_facet_display_name_length_out_of_range:
                  $ref: '#/components/examples/component_facet_display_name_length_out_of_range'
                component_facet_name_already_exists:
                  $ref: '#/components/examples/component_facet_name_already_exists'
                component_facet_name_illegal_character:
                  $ref: '#/components/examples/component_facet_name_illegal_character'
                component_facet_name_is_missing:
                  $ref: '#/components/examples/component_facet_name_is_missing'
                component_facet_name_length_out_of_range:
                  $ref: '#/components/examples/component_facet_name_length_out_of_range'
                component_facet_not_found:
                  $ref: '#/components/examples/component_facet_not_found'
                component_facet_value_color_invalid:
                  $ref: '#/components/examples/component_facet_value_color_invalid'
                component_facet_value_description_illegal_character:
                  $ref: '#/components/examples/component_facet_value_description_illegal_character'
                component_facet_value_description_length_out_of_range:
                  $ref: '#/components/examples/component_facet_value_description_length_out_of_range'
                component_facet_value_display_name_length_out_of_range:
                  $ref: '#/components/examples/component_facet_value_display_name_length_out_of_range'
                component_facet_value_icon_illegal_character:
                  $ref: '#/components/examples/component_facet_value_icon_illegal_character'
                component_facet_value_icon_length_out_of_range:
                  $ref: '#/components/examples/component_facet_value_icon_length_out_of_range'
                component_facet_value_illegal_character:
                  $ref: '#/components/examples/component_facet_value_illegal_character'
                component_facet_value_length_out_of_range:
                  $ref: '#/components/examples/component_facet_value_length_out_of_range'
                component_facet_values_size_out_of_range:
                  $ref: '#/components/examples/component_facet_values_size_out_of_range'
                component_facets_not_found:
                  $ref: '#/components/examples/component_facets_not_found'
                excessive_component_reference:
                  $ref: '#/components/examples/excessive_component_reference'
                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'
                facet_associated_with_components:
                  $ref: '#/components/examples/facet_associated_with_components'
                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'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
                orphan_external_component_reference:
                  $ref: '#/components/examples/orphan_external_component_reference'
                redundant_component_reference:
                  $ref: '#/components/examples/redundant_component_reference'
                self_component_reference:
                  $ref: '#/components/examples/self_component_reference'
              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'
                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: Create a component category
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
  /v1/component-facets/default:
    get:
      description: Returns the platform-default component facet (category) definitions. Default facets are provided by Extole and are available to all clients.
      operationId: listDefaultComponentFacets
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ComponentFacetResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
              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'
                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 default component categories
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
  /v1/component-facets/{name}:
    get:
      description: Returns the component facet (category) definition for the supplied name. Returns `400 component_facet_not_found` if the name does not match any accessible facet.
      operationId: getComponentFacet
      parameters:
      - description: Name of the component category to retrieve.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentFacetResponse'
          description: Component facet definition that describes a campaign component category and its allowed values.
        '400':
          content:
            application/json:
              examples:
                component_facet_not_found:
                  $ref: '#/components/examples/component_facet_not_found'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Component facet (category) was not found. The supplied name does not match any component facet accessible to the calling client.
        '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'
                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 component category
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    put:
      description: Applies a partial update to the supplied component facet. Returns `400 component_facet_not_found` if the name does not match any accessible facet.
      operationId: updateComponentFacet
      parameters:
      - description: Name of the component category to update.
        in: path
        name: name
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            example:
              allowed_values:
              - color: color
                description: description
                display_name: display_name
                icon: icon
                value: value
              display_name: display_name
            schema:
              $ref: '#/components/schemas/ComponentFacetUpdateRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentFacetResponse'
          description: Component facet definition that describes a campaign component category and its allowed values.
        '400':
          content:
            application/json:
              examples:
                component_facet_not_found:
                  $ref: '#/components/examples/component_facet_not_found'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Component facet (category) was not found. The supplied name does not match any component facet accessible to the calling client.
        '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'
                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 a component category
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
    delete:
      description: Archives the supplied component facet. Fails with `400 facet_associated_with_components` if the facet is still assigned to active components. Remove those associations before archiving. Returns the archived facet.
      operationId: archiveComponentFacet
      parameters:
      - description: Name of the component category to archive.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComponentFacetResponse'
          description: Archived component facet definition.
        '400':
          content:
            application/json:
              examples:
                component_facet_not_found:
                  $ref: '#/components/examples/component_facet_not_found'
                facet_associated_with_components:
                  $ref: '#/components/examples/facet_associated_with_components'
              schema:
                $ref: '#/components/schemas/RestExceptionResponse'
          description: Cannot archive the component facet because it is still associated with one or more components. Remove those associations first.
        '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'
                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: Archive a component category
      tags:
      - Components
      x-extole-bundle: management-expert
      x-extole-visibility: expert
  /v1/components:
    get:
      description: Returns all components visible to the current client. Components are the reusable building blocks that campaigns assemble — creatives, content blocks, and sub-experiences.
      operationId: listComponents
      parameters:
      - in: query
        name: name
        schema:
          type: string
      - in: query
        name: owner
        schema:
          type: string
      - in: query
        name: state
        schema:
          type: string
      - in: query
        name: version_state
        schema:
          enum:
          - LATEST
          - PUBLISHED
          type: string
      - in: query
        name: campaign_ids
        schema:
          type: string
      - in: query
        name: having_any_tags
        schema:
          type: string
      - in: query
        name: having_all_tags
        schema:
          type: string
      - in: query
        name: exclude_having_any_tags
        schema:
          type: string
      - in: query
        name: exclude_having_all_tags
        schema:
          type: string
      - in: query
        name: having_any_types
        schema:
          type: string
      - in: query
        name: having_all_types
        schema:
          type: string
      - in: query
        name: having_any_settings
        schema:
          type: string
      - in: query
        name: having_all_settings
        schema:
          type: string
      - in: query
        name: target_component_id
        schema:
          type: string
      - in: query
        name: target_setting_name
        schema:
          type: string
      - in: query
        name: target_setting_filter_collection
        schema:
          type: string
      - in: query
        name: target_socket_name
        schema:
          type: string
      - in: query
        name: show_all
        schema:
          type: boolean
      - in: query
        name: include_granted
        schema:
          type: boolean
      - in: query
        name: include_subscribed
        schema:
          type: boolean
      - in: query
        name: limit
        schema:
          format: int32
          type: integer
      - in: query
        name: offset
        schema:
          format: int32
          type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/ComponentResponse'
                type: array
          description: Successful response
        '400':
          content:
            application/json:
              examples:
                binding_error:
                  $ref: '#/components/examples/binding_error'
                component_id_not_accessible:
                  $ref: '#/components/examples/component_id_not_accessible'
                component_not_found:
                  $ref: '#/components/examples/component_not_found'
                component_owner_not_supported:
                  $ref: '#/components/examples/component_owner_not_supported'
                component_state_not_supported:
                  $ref: '#/components/examples/component_state_not_supported'
                default_key_not_allowed:
                  $ref: '#/components/examples/default_key_not_allowed'
                display_name_has_illegal_character:
                  $ref: '#/components/examples/display_name_has_illegal_character'
                invalid_json:
                  $ref: '#/components/examples/invalid_json'
                invalid_limit:
                  $ref: '#/components/examples/invalid_limit'
                invalid_offset:
                  $ref: '#/components/examples/invalid_offset'
                invalid_parameter:
                  $ref: '#/components/examples/invalid_parameter'
                invalid_setting_filter:
                  $ref: '#/components/examples/invalid_setting_filter'
                invalid_translatable_value:
                  $ref: '#/components/examples/invalid_translatable_value'
                max_fetch_size_1000:
                  $ref: '#/components/examples/max_fetch_size_1000'
                missing_request_body:
                  $ref: '#/components/examples/missing_request_body'
                multiple_components_installed_into_single_socket:
                  $ref: '#/components/examples/multiple_components_installed_into_single_socket'
                non_translatable_variable_can_not_be_updated:
                  $ref: '#/components/examples/non_translatable_variable_can_not_be_updated'
                reward_supplier_id_list_invalid_configuration:
                  $ref: '#/components/examples/reward_supplier_id_list_invalid_configuration'
                setting_batch_update_missing_request:
                  $ref: '#/components/examples/setting_batch_update_missing_request'
                setting_display_name_length_out_of_range:
                  $ref: '#/components/examples/setting_display_name_length_out_of_range'
                setting_filter_component_facet_name_missing:
                  $ref: '#/components/examples/setting_filter_component_facet_name_missing'
                setting_filter_component_facet_value_missing:
                  $ref: '#/components/examples/setting_filter_component_facet_value_missing'
                setting_filter_component_type_missing:
                  $ref: '#/components/examples/setting_filter_component_type_missing'
                setting_filter_expression_evaluation_failed:
                  $ref: '#/components/examples/setting_filter_expression_evaluation_failed'
                setting_filter_invalid_component_facet:
                  $ref: '#/components/examples/setting_filter_invalid_component_facet'
                setting_filter_invalid_component_type:
                  $ref: '#/components/examples/setting_filter_invalid_component_type'
                setting_name_duplicated:
                  $ref: '#/components/examples/setting_name_duplicated'
                setting_name_length_out_of_range:
                  $ref: '#/components/examples/setting_name_length_out_of_range'
                setting_name_missing:
                  $ref: '#/components/examples/setting_name_missing'
                setting_name_reserved:
                  $ref: '#/components/examples/setting_name_reserved'
                setting_validation_exception:
                  $ref: '#/components/examples/setting_validation_exception'
                socket_missing_required_parameter:
                  $ref: '#/components/examples/socket_missing_required_parameter'
                tag_length_out_of_range:
                  $ref: '#/components/examples/tag_length_out_of_range'
                unavailable_referenced_variable:
                  $ref: '#/components/examples/unavailable_referenced_variable'
                unknown_source_clients:
                  $ref: '#/compo

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