Extole Components Subscriptions API
The Components Subscriptions API from Extole — 4 operation(s) for components subscriptions.
The Components Subscriptions API from Extole — 4 operation(s) for components subscriptions.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/extole-components-subscriptions-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
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 Components Subscriptions API
version: '1.0'
servers:
- description: Production
url: https://api.extole.io
security:
- HEADER: []
- QUERY: []
- COOKIE: []
tags:
- name: Components Subscriptions
paths:
/v1/component-subscriptions:
get:
description: Returns all component subscriptions for the current client.
operationId: listComponentSubscriptions
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ComponentSubscriptionResponse'
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 subscriptions
tags:
- Components Subscriptions
x-extole-bundle: management-expert
x-extole-visibility: expert
post:
description: Subscribes a client to receive updates from the specified shared component.
operationId: subscribeComponent
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentSubscriptionResponse'
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_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'
invalid_component_installed_into_socket:
$ref: '#/components/examples/invalid_component_installed_into_socket'
invalid_component_path:
$ref: '#/components/examples/invalid_component_path'
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_client_id:
$ref: '#/components/examples/missing_client_id'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
missing_required_grant:
$ref: '#/components/examples/missing_required_grant'
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: Subscribe to a component
tags:
- Components Subscriptions
x-extole-bundle: management-expert
x-extole-visibility: expert
/v1/component-subscriptions/built:
get:
description: Returns all component subscriptions in their built (evaluated) form.
operationId: listBuiltComponentSubscriptions
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/BuiltComponentSubscriptionResponse'
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 built component subscriptions
tags:
- Components Subscriptions
x-extole-bundle: management-expert
x-extole-visibility: expert
/v1/component-subscriptions/subscribers:
get:
description: Returns the clients subscribed to the specified shared component.
operationId: listSubscribers
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ComponentSubscriberResponse'
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 subscribers
tags:
- Components Subscriptions
x-extole-bundle: management-expert
x-extole-visibility: expert
/v1/component-subscriptions/{subscriptionId}:
delete:
description: Removes a client's subscription to the specified shared component.
operationId: unsubscribeComponent
parameters:
- in: path
name: subscriptionId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ComponentSubscriptionResponse'
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_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'
invalid_component_installed_into_socket:
$ref: '#/components/examples/invalid_component_installed_into_socket'
invalid_component_path:
$ref: '#/components/examples/invalid_component_path'
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_client_id:
$ref: '#/components/examples/missing_client_id'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
missing_required_grant:
$ref: '#/components/examples/missing_required_grant'
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: Unsubscribe from a component
tags:
- Components Subscriptions
x-extole-bundle: management-expert
x-extole-visibility: expert
components:
schemas:
ZonedDateTime:
description: '[RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) or [RFC 9557](https://datatracker.ietf.org/doc/html/rfc9557#section-4) date-time with a numeric [UTC offset](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and an optional [IANA time-zone](https://datatracker.ietf.org/doc/html/rfc9557#section-4) suffix in square brackets. Precision up to milliseconds.'
example: '2025-10-24T02:00:00-07:00'
pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$
type: string
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
BuiltComponentSubscriptionResponse:
properties:
client_id:
type: string
component_ids:
items:
type: string
type: array
component_path:
type: string
component_references:
items:
$ref: '#/components/schemas/ComponentReferenceResponse'
type: array
subscribed_date:
$ref: '#/components/schemas/ZonedDateTime'
subscription_id:
type: string
required:
- client_id
- component_ids
- component_path
- component_references
- subscribed_date
- subscription_id
type: object
ComponentReferenceResponse:
properties:
component_id:
type: string
socket_names:
items:
type: string
type: array
type: object
ComponentSubscriptionResponse:
properties:
client_id:
type: string
component_ids:
items:
type: string
type: array
component_path:
type: string
component_references:
items:
$ref: '#/components/schemas/ComponentReferenceResponse'
type: array
subscribed_date:
$ref: '#/components/schemas/ZonedDateTime'
subscription_id:
type: string
required:
- client_id
- component_ids
- component_path
- component_references
- subscribed_date
- subscription_id
type: object
ComponentSubscriberResponse:
properties:
client_id:
type: string
component_ids:
items:
type: string
type: array
component_references:
items:
$ref: '#/components/schemas/ComponentReferenceResponse'
type: array
subscribed_date:
$ref: '#/components/schemas/ZonedDateTime'
subscription_id:
type: string
required:
- client_id
- component_ids
- component_references
- subscribed_date
- subscription_id
type: object
examples:
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
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_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
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
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
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
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
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
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
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
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
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
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
missing_client_id:
summary: missing_client_id
value:
code: missing_client_id
http_status_code: 400
message: Client id is missing in the request
parameters: {}
unique_id: 00000000-0000-0000-0000-000000000000
missing_required_grant:
summary: missing_required_grant
value:
code: missing_required_grant
http_status_code: 400
message: Components subscription requires a valid grant from counterpart client
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_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
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
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
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_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
redundant_component_reference:
summary: redundant_component
# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-components-subscriptions-api-openapi.yml