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 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: Audiences paths: /v1/audiences: get: description: 'Returns the client''s audience definitions sorted by creation date, newest first. By default archived audiences are excluded; pass `include_archived=true` to include them. Use `limit` and `offset` to page (defaults: `limit=1000`, `offset=0`). Each entry is the editable definition - for runtime targeting reads, use `GET /v1/audiences/built` instead.' operationId: listAudiences 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/AudienceResponse' 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 audiences tags: - Audiences x-extole-bundle: management x-extole-visibility: visible post: description: Creates a new audience definition. `name` is required; `enabled`, `tags`, and `component_references` are optional. New audiences default to enabled. Tags must be 255 characters or fewer each; the resolved name must also be 255 characters or fewer. Returns the created audience. operationId: createAudience requestBody: content: application/json: example: component_ids: - component_id component_references: - component_id: component_id socket_names: - socket_name enabled: true name: name tags: - tag schema: $ref: '#/components/schemas/AudienceCreateRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Created audience. '400': content: application/json: examples: invalid_audience_tag: $ref: '#/components/examples/invalid_audience_tag' invalid_component_reference: $ref: '#/components/examples/invalid_component_reference' missing_audience_name: $ref: '#/components/examples/missing_audience_name' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad request. The named examples below cover the validation errors that are specific to this operation. Other 400 causes include malformed JSON, an empty request body, and an invalid `Time-Zone` header - inspect the response `code` field for the specific error. '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 audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/built: get: description: 'Returns the rendered (built) audience snapshots that the runtime evaluates against - the resolved name, enabled flag, tags, and component references for every audience the client owns. Filter by `name` (supports a trailing `*` wildcard), by `enabled` (`ENABLED`, `DISABLED`, or `ANY`), and by archived status. Use `limit` and `offset` to page (defaults: `limit=1000`, `offset=0`). Use `GET /v1/audiences` for the editable definitions.' operationId: listBuiltAudiences parameters: - in: query name: name schema: type: string - in: query name: include_archived schema: type: boolean - in: query name: enabled schema: description: Filter applied by `GET /v1/audiences/built?enabled=...`. `ENABLED` returns only audiences whose enabled flag resolves to `true`, `DISABLED` only those that resolve to `false`, and `ANY` returns both. enum: - ANY - DISABLED - ENABLED type: string - 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/BuiltAudienceResponse' 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 audiences tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}: get: description: Returns the editable audience definition for the supplied `audience_id`, including its name, enabled state, tags, and the campaign components that reference it. For the rendered (runtime) snapshot use `GET /v1/audiences/{audience_id}/built` instead. operationId: getAudience parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Audience definition. '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: The supplied `audience_id` does not match an existing audience for this client. Inspect the response `code` field for the specific error. '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 audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible put: description: Updates an existing audience. Only fields supplied in the body are changed; omitted fields are left untouched. Sending `null` for `name` returns `400 invalid_null` because `name` is a required attribute on the audience. Returns the updated audience. operationId: updateAudience parameters: - in: path name: audience_id required: true schema: type: string requestBody: content: application/json: example: component_ids: - component_id component_references: - component_id: component_id socket_names: - socket_name enabled: true name: name tags: - tag schema: $ref: '#/components/schemas/AudienceUpdateRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Updated audience. '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' invalid_audience_name: $ref: '#/components/examples/invalid_audience_name' invalid_audience_tag: $ref: '#/components/examples/invalid_audience_tag' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad request. The named examples below cover the validation errors that are specific to this operation. Other 400 causes include malformed JSON, an empty request body, and an invalid `Time-Zone` header - inspect the response `code` field for the specific error. '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 audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible delete: description: Soft-archives the audience. Archived audiences disappear from default `GET /v1/audiences` and `GET /v1/audiences/built` responses; pass `include_archived=true` to surface them. Reversible via `POST /v1/audiences/{audience_id}/unarchive`. Fails if the audience is still referenced by a campaign-controller membership trigger, a create- or remove-membership controller action, or a campaign component variable. operationId: archiveAudience parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Archived audience. '400': content: application/json: examples: audience_associated_with_audience_membership_controller_trigger: $ref: '#/components/examples/audience_associated_with_audience_membership_controller_trigger' audience_associated_with_component_variable: $ref: '#/components/examples/audience_associated_with_component_variable' audience_associated_with_create_membership_controller_action: $ref: '#/components/examples/audience_associated_with_create_membership_controller_action' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Bad request. The named examples below cover the most common reasons an audience cannot be archived, deleted, or unarchived: it is still referenced by a campaign-controller membership trigger, by a create-/remove-membership controller action, or by a campaign component variable. The audience must be detached from those references before the lifecycle operation can succeed. The full set of association codes is auto-derived; inspect the response `code` field for the specific error.' '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 audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/built: get: description: Returns the rendered (built) snapshot for the supplied `audience_id`. The snapshot has the same shape as `GET /v1/audiences/{audience_id}/built` items in the list response and is what the runtime evaluates against during targeting. operationId: getBuiltAudience parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/BuiltAudienceResponse' description: Built audience snapshot. '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: The supplied `audience_id` does not match an existing audience for this client. Inspect the response `code` field for the specific error. '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 built audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/members: get: description: Returns the person IDs of all current members of the specified audience. operationId: listAudienceMemberIds parameters: - in: path name: audience_id required: true schema: type: string - in: query name: email schema: type: string - in: query name: sort_order schema: type: string - in: query name: limit schema: format: int32 type: integer - in: query name: offset schema: format: int32 type: integer - in: query name: has_data_attributes schema: items: type: string type: array - in: query name: include_data_attributes schema: items: type: string type: array responses: '200': content: application/json: schema: items: type: string type: array description: Successful response '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_query_limit: $ref: '#/components/examples/invalid_query_limit' 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 audience member IDs tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/members/download{format}: get: description: Downloads the full member list for the specified audience. Append a format extension (`.csv`, `.json`, `.xlsx`) to select the download format. operationId: downloadAudienceMembers parameters: - in: path name: audience_id required: true schema: type: string - in: header name: Content-Type schema: nullable: true type: string - in: path name: format required: true schema: nullable: true pattern: (\.csv|\.json|\.xlsx)? type: string - in: query name: filename schema: type: string - in: query name: sort_order schema: type: string - in: query name: limit schema: format: int32 type: integer - in: query name: offset schema: format: int32 type: integer responses: '200': content: '*/*': {} description: Successful response '400': content: application/json: examples: audience_member_list_content_type_not_supported: $ref: '#/components/examples/audience_member_list_content_type_not_supported' audience_member_list_format_not_supported: $ref: '#/components/examples/audience_member_list_format_not_supported' audience_not_found: $ref: '#/components/examples/audience_not_found' binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_query_limit: $ref: '#/components/examples/invalid_query_limit' 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: Download audience members tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/members/view/details: get: description: Returns detailed profiles for all current members of the specified audience. operationId: listAudienceMembers parameters: - in: path name: audience_id required: true schema: type: string - in: query name: email schema: type: string - in: query name: sort_order schema: type: string - in: query name: limit schema: format: int32 type: integer - in: query name: offset schema: format: int32 type: integer - in: query name: has_data_attributes schema: items: type: string type: array - in: query name: include_data_attributes schema: items: type: string type: array responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/AudienceMemberWithDataResponse' type: array description: Successful response '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_query_limit: $ref: '#/components/examples/invalid_query_limit' 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 audience members tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations: get: description: Returns all operations for the specified audience, optionally filtered by the provided query parameters. operationId: listAudienceOperations parameters: - in: path name: audience_id required: true schema: type: string - in: query name: audience_id schema: type: string - in: query name: states schema: items: enum: - BUILDING - CANCELED - EXPIRED - FAILED - PREPARING - READY - VALIDATING type: string type: array uniqueItems: true - in: query name: tags schema: items: type: string type: array uniqueItems: true - in: query name: type schema: enum: - ACTION - ADD - REMOVE - REPLACE type: string - 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/AudienceOperationResponse' type: array description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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 audience operations tags: - Audiences x-extole-bundle: management x-extole-visibility: visible post: description: Creates a new operation for the specified audience. An operation modifies audience membership by adding, removing, or syncing members from a data source. operationId: createAudienceOperation parameters: - in: path name: audience_id required: true schema: type: string requestBody: content: application/json: example: data_source: event_columns: - event_column event_data: event_data_key: event_data_key event_name: event_name type: ACTION tags: - tag type: ACTION schema: $ref: '#/components/schemas/AudienceOperationCreateRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationResponse' description: Successful response '400': content: application/json: examples: action_audience_operation_action_data_source_missing_event_name: $ref: '#/components/examples/action_audience_operation_action_data_source_missing_event_name' audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_missing_data_source: $ref: '#/components/examples/audience_operation_missing_data_source' audience_operation_missing_data_source_type: $ref: '#/components/examples/audience_operation_missing_data_source_type' audience_operation_missing_type: $ref: '#/components/examples/audience_operation_missing_type' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' binding_error: $ref: '#/components/examples/binding_error' invalid_identity_key_value: $ref: '#/components/examples/invalid_identity_key_value' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' modification_audience_operation_file_asset_data_source_empty_file_asset: $ref: '#/components/examples/modification_audience_operation_file_asset_data_source_empty_file_asset' modification_audience_operation_file_asset_data_source_file_asset_not_found: $ref: '#/components/examples/modification_audience_operation_file_asset_data_source_file_asset_not_found' modification_audience_operation_file_asset_data_source_missing_file_asset_id: $ref: '#/components/examples/modification_audience_operation_file_asset_data_source_missing_file_asset_id' modification_audience_operation_file_asset_data_source_unsupported_file_asset_format: $ref: '#/components/examples/modification_audience_operation_file_asset_data_source_unsupported_file_asset_format' modification_audience_operation_report_data_source_missing_report_id: $ref: '#/components/examples/modification_audience_operation_report_data_source_missing_report_id' modification_audience_operation_report_data_source_report_not_accessible: $ref: '#/components/examples/modification_audience_operation_report_data_source_report_not_accessible' modification_audience_operation_report_data_source_report_not_found: $ref: '#/components/examples/modification_audience_operation_report_data_source_report_not_found' 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 an audience operation tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}: get: description: Returns the audience operation identified by its operation ID for the specified audience. operationId: getAudienceOperation parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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: Get an audience operation tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}/state: get: description: Returns the current state of the specified audience operation, including progress counters and any error details. operationId: getAudienceOperationState parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationStateResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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: Get audience operation state tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}/state/debug: get: description: Returns the detailed debug state of the specified audience operation, including internal processing information. Restricted to client superusers. operationId: getAudienceOperationStateDebug parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationStateDebugResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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: Get audience operation debug state tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}/view/details: get: description: Returns the audience operation with its full detail view, including data source configuration and processing statistics. operationId: getAudienceOperationWithDetails parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationDetailedResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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: Get audience operation with details tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/stats: get: description: Returns membership statistics for the specified audience, including total member count and any size change since the last operation. operationId: getAudienceStats parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceStatsResponse' description: Successful response '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_query_limit: $ref: '#/components/examples/invalid_query_limit' 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: Get audience membership statistics tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/delete: post: description: 'Hard-deletes the audience. Unlike `DELETE /v1/audiences/{audience_id}` (which archives and is reversible), a deleted audience cannot be recovered. Fails with the same association errors as archive: the audience must be detached from any campaign-controller membership trigger, create- or remove-membership controller action, or campaign component variable before deletion can succeed.' operationId: deleteAudience parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Deleted audience. '400': content: application/json: examples: audience_associated_with_audience_membership_controller_trigger: $ref: '#/components/examples/audience_associated_with_audience_membership_controller_trigger' audience_associated_with_component_variable: $ref: '#/components/examples/audience_associated_with_component_variable' audience_associated_with_remove_membership_controller_action: $ref: '#/components/examples/audience_associated_with_remove_membership_controller_action' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Bad request. The named examples below cover the most common reasons an audience cannot be archived, deleted, or unarchived: it is still referenced by a campaign-controller membership trigger, by a create-/remove-membership controller action, or by a campaign component variable. The audience must be detached from those references before the lifecycle operation can succeed. The full set of association codes is auto-derived; inspect the response `code` field for the specific error.' '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: Delete audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}/cancel: post: description: Cancels a pending or in-progress audience operation identified by its operation ID. operationId: cancelAudienceOperation parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationStateResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' binding_error: $ref: '#/components/examples/binding_error' cancel_audience_operation_data_source_type_not_supported: $ref: '#/components/examples/cancel_audience_operation_data_source_type_not_supported' cancel_audience_operation_type_not_supported: $ref: '#/components/examples/cancel_audience_operation_type_not_supported' 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: Cancel an audience operation tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/operations/{operation_id}/retry: post: description: Retries a failed audience operation identified by its operation ID. operationId: retryAudienceOperation parameters: - in: path name: audience_id required: true schema: type: string - in: path name: operation_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceOperationResponse' description: Successful response '400': content: application/json: examples: audience_operation_another_operation_in_progress: $ref: '#/components/examples/audience_operation_another_operation_in_progress' audience_operation_audience_not_found: $ref: '#/components/examples/audience_operation_audience_not_found' audience_operation_operation_not_found: $ref: '#/components/examples/audience_operation_operation_not_found' 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' retry_audience_operation_state_not_allowed: $ref: '#/components/examples/retry_audience_operation_state_not_allowed' retry_audience_operation_type_not_supported: $ref: '#/components/examples/retry_audience_operation_type_not_supported' 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: Retry an audience operation tags: - Audiences x-extole-bundle: management x-extole-visibility: visible /v1/audiences/{audience_id}/unarchive: post: description: Restores a previously archived audience so it appears in default `GET /v1/audiences` and `GET /v1/audiences/built` responses again. Fails with `400 audience_not_found` if the audience does not exist or has been hard-deleted via `POST /v1/audiences/{audience_id}/delete`. operationId: unarchiveAudience parameters: - in: path name: audience_id required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/AudienceResponse' description: Unarchived audience. '400': content: application/json: examples: audience_not_found: $ref: '#/components/examples/audience_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: The supplied `audience_id` does not match an existing audience for this client. Inspect the response `code` field for the specific error. '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: Unarchive audience tags: - Audiences x-extole-bundle: management x-extole-visibility: visible components: examples: invalid_audience_tag: summary: invalid_audience_tag value: code: invalid_audience_tag http_status_code: 400 message: Invalid audience tag parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_file_asset_data_source_empty_file_asset: summary: modification_audience_operation_file_asset_data_source_empty_file_asset value: code: modification_audience_operation_file_asset_data_source_empty_file_asset http_status_code: 400 message: File is empty parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_query_limit: summary: invalid_query_limit value: code: invalid_query_limit http_status_code: 400 message: Query limits are invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_file_asset_data_source_file_asset_not_found: summary: modification_audience_operation_file_asset_data_source_file_asset_not_found value: code: modification_audience_operation_file_asset_data_source_file_asset_not_found http_status_code: 400 message: File asset not found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_not_found: summary: audience_not_found value: code: audience_not_found http_status_code: 400 message: Audience was not found 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 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 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 audience_operation_missing_data_source: summary: audience_operation_missing_data_source value: code: audience_operation_missing_data_source http_status_code: 400 message: Audience operation required data source is not specified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_associated_with_audience_membership_controller_trigger: summary: audience_associated_with_audience_membership_controller_trigger value: code: audience_associated_with_audience_membership_controller_trigger http_status_code: 400 message: Can't archive an audience associated with audience membership controller triggers 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 payment_required: summary: payment_required value: code: payment_required http_status_code: 402 message: The access_token provided is associated with an unpaid account. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_associated_with_create_membership_controller_action: summary: audience_associated_with_create_membership_controller_action value: code: audience_associated_with_create_membership_controller_action http_status_code: 400 message: Can't archive an audience associated with create membership controller actions 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 audience_associated_with_remove_membership_controller_action: summary: audience_associated_with_remove_membership_controller_action value: code: audience_associated_with_remove_membership_controller_action http_status_code: 400 message: Can't archive an audience associated with remove membership controller actions parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_operation_operation_not_found: summary: audience_operation_operation_not_found value: code: audience_operation_operation_not_found http_status_code: 400 message: Operation was not found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 cancel_audience_operation_data_source_type_not_supported: summary: cancel_audience_operation_data_source_type_not_supported value: code: cancel_audience_operation_data_source_type_not_supported http_status_code: 400 message: Cancellation is not supported for data source type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 access_denied: summary: access_denied value: code: access_denied http_status_code: 403 message: The access_token provided is not permitted to access the specified resource. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_report_data_source_report_not_accessible: summary: modification_audience_operation_report_data_source_report_not_accessible value: code: modification_audience_operation_report_data_source_report_not_accessible http_status_code: 400 message: Report is not accessible for clients parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 action_audience_operation_action_data_source_missing_event_name: summary: action_audience_operation_action_data_source_missing_event_name value: code: action_audience_operation_action_data_source_missing_event_name http_status_code: 400 message: Event name 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 modification_audience_operation_file_asset_data_source_unsupported_file_asset_format: summary: modification_audience_operation_file_asset_data_source_unsupported_file_asset_format value: code: modification_audience_operation_file_asset_data_source_unsupported_file_asset_format http_status_code: 400 message: File asset format is not supported parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_operation_audience_not_found: summary: audience_operation_audience_not_found value: code: audience_operation_audience_not_found http_status_code: 400 message: Audience was not found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_file_asset_data_source_missing_file_asset_id: summary: modification_audience_operation_file_asset_data_source_missing_file_asset_id value: code: modification_audience_operation_file_asset_data_source_missing_file_asset_id http_status_code: 400 message: File asset ID is missing parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 unsupported_media_type: summary: unsupported_media_type value: code: unsupported_media_type http_status_code: 415 message: Request had an unsupported or no media type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_member_list_content_type_not_supported: summary: audience_member_list_content_type_not_supported value: code: audience_member_list_content_type_not_supported http_status_code: 400 message: Audience member list content type not supported parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_associated_with_component_variable: summary: audience_associated_with_component_variable value: code: audience_associated_with_component_variable http_status_code: 400 message: Can't archive an audience associated with component variables parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_operation_missing_type: summary: audience_operation_missing_type value: code: audience_operation_missing_type http_status_code: 400 message: Audience operation required type is not specified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_operation_another_operation_in_progress: summary: audience_operation_another_operation_in_progress value: code: audience_operation_another_operation_in_progress http_status_code: 400 message: Another operation in progress was found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 retry_audience_operation_state_not_allowed: summary: retry_audience_operation_state_not_allowed value: code: retry_audience_operation_state_not_allowed http_status_code: 400 message: Retry is not allowed for state parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_member_list_format_not_supported: summary: audience_member_list_format_not_supported value: code: audience_member_list_format_not_supported http_status_code: 400 message: Audience member list format not supported parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_report_data_source_missing_report_id: summary: modification_audience_operation_report_data_source_missing_report_id value: code: modification_audience_operation_report_data_source_missing_report_id http_status_code: 400 message: Report ID is missing parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 audience_operation_missing_data_source_type: summary: audience_operation_missing_data_source_type value: code: audience_operation_missing_data_source_type http_status_code: 400 message: Audience operation required data source type is not specified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 retry_audience_operation_type_not_supported: summary: retry_audience_operation_type_not_supported value: code: retry_audience_operation_type_not_supported http_status_code: 400 message: Retry is not supported for type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_component_reference: summary: invalid_component_reference value: code: invalid_component_reference http_status_code: 400 message: Unknown referenced campaign component parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_audience_name: summary: invalid_audience_name value: code: invalid_audience_name http_status_code: 400 message: Invalid audience name 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 invalid_identity_key_value: summary: invalid_identity_key_value value: code: invalid_identity_key_value http_status_code: 400 message: Invalid identity key value parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 cancel_audience_operation_type_not_supported: summary: cancel_audience_operation_type_not_supported value: code: cancel_audience_operation_type_not_supported http_status_code: 400 message: Cancellation is not supported for type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 modification_audience_operation_report_data_source_report_not_found: summary: modification_audience_operation_report_data_source_report_not_found value: code: modification_audience_operation_report_data_source_report_not_found http_status_code: 400 message: Report not found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_audience_name: summary: missing_audience_name value: code: missing_audience_name http_status_code: 400 message: Audience required name is not specified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 schemas: AudienceOperationStateResponseBase: properties: created_date: $ref: '#/components/schemas/ZonedDateTime' error_code: enum: - COLUMN_CONFIGURATION_ERROR - CONFIGURATION_ERROR - EVENTS_EXECUTION_ERROR - EXECUTION_ERROR - INPUT_FILE_ERROR - INTERRUPT - MEMBERS_COUNT_VALIDATION_RETRIES_EXHAUSTED - MEMORY_ERROR - MISMATCH_EVENTS_EXECUTION_ERROR - ROW_COUNT_VALIDATION_RETRIES_EXHAUSTED - SOFTWARE_ERROR - STORAGE_ERROR - UNKNOWN type: string input_rows_count: format: int64 type: integer state: enum: - BUILDING - CANCELED - EXPIRED - FAILED - PREPARING - READY - VALIDATING type: string state_reached_date: $ref: '#/components/schemas/ZonedDateTime' type: enum: - ACTION - ADD - REMOVE - REPLACE type: string updated_date: $ref: '#/components/schemas/ZonedDateTime' type: object ReportAudienceOperationDataSourceResponse: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceResponseBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object name: type: string report_id: type: string type: enum: - REPORT type: string type: object required: - event_columns - event_data - name - report_id - type type: object PersonListAudienceOperationDataSourceResponse: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceResponseBase' - properties: audience_members: items: $ref: '#/components/schemas/MemberResponse' type: array type: enum: - PERSON_LIST type: string type: object required: - audience_members - type type: object AudienceOperationStateDebugResponse: discriminator: mapping: ACTION: '#/components/schemas/ActionAudienceOperationStateDebugResponse' ADD: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsAdd' REMOVE: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsRemove' REPLACE: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsReplace' propertyName: type oneOf: - $ref: '#/components/schemas/ActionAudienceOperationStateDebugResponse' - $ref: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsAdd' - $ref: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsRemove' - $ref: '#/components/schemas/ModificationAudienceOperationStateDebugResponseAsReplace' required: - created_date - debug_message - error_code - error_message - input_rows_count - state - state_reached_date - type - updated_date ActionAudienceOperationDataSourceResponse: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceResponseBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object event_name: type: string type: enum: - ACTION type: string type: object required: - event_columns - event_data - event_name - type type: object AudienceMemberWithDataResponse: properties: blocked: type: boolean data: additionalProperties: $ref: '#/components/schemas/PersonDataResponse' type: object email: type: string first_name: type: string id: readOnly: true type: string identity_key: type: string identity_key_value: type: string last_name: type: string locale: $ref: '#/components/schemas/PersonLocaleResponse' partner_user_id: type: string picture_url: type: string version: type: string required: - blocked - data - email - first_name - id - identity_key - identity_key_value - last_name - locale - partner_user_id - picture_url - version type: object AudienceOperationDataSourceResponseBase: properties: type: enum: - ACTION - FILE_ASSET - PERSON_LIST - REPORT type: string type: object AudienceUpdateRequest: description: Body of a `PUT /v1/audiences/{audience_id}` request. properties: component_ids: items: type: string type: array component_references: items: $ref: '#/components/schemas/ComponentReferenceRequest' type: array enabled: $ref: '#/components/schemas/EnabledInAudienceUpdateRequest' name: $ref: '#/components/schemas/NameInAudienceUpdateRequest' tags: description: Replaces the audience's tag set with the supplied set. Pass an empty set to clear all tags. Each tag must be 255 characters or fewer. items: type: string type: array type: object AudienceOperationDataSourceRequest: discriminator: mapping: ACTION: '#/components/schemas/ActionAudienceOperationDataSourceRequest' FILE_ASSET: '#/components/schemas/FileAssetAudienceOperationDataSourceRequest' PERSON_LIST: '#/components/schemas/PersonListAudienceOperationDataSourceRequest' REPORT: '#/components/schemas/ReportAudienceOperationDataSourceRequest' propertyName: type oneOf: - $ref: '#/components/schemas/ActionAudienceOperationDataSourceRequest' - $ref: '#/components/schemas/FileAssetAudienceOperationDataSourceRequest' - $ref: '#/components/schemas/PersonListAudienceOperationDataSourceRequest' - $ref: '#/components/schemas/ReportAudienceOperationDataSourceRequest' NameInAudienceCreateRequest: description: Display name for the audience. Provide a literal string (`provided@buildtime:My audience`) or any buildtime evaluatable that resolves to a string. Must be 255 characters or fewer once resolved. oneOf: - allOf: - type: string - not: anyOf: - pattern: ^handlebars@buildtime:.* type: string - pattern: ^javascript@buildtime:.* type: string type: string description: Static name title: Static Value - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{name}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('name');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string MemberResponse: properties: data: additionalProperties: type: string type: object email: type: string identity_key: type: string identity_key_value: type: string type: object AudienceStatsResponse: properties: active_members_count: format: int64 type: integer required: - active_members_count type: object AudienceOperationDataSourceRequestBase: properties: type: enum: - ACTION - FILE_ASSET - PERSON_LIST - REPORT type: string type: object AudienceOperationDataSourceResponse: discriminator: mapping: ACTION: '#/components/schemas/ActionAudienceOperationDataSourceResponse' FILE_ASSET: '#/components/schemas/FileAssetAudienceOperationDataSourceResponse' PERSON_LIST: '#/components/schemas/PersonListAudienceOperationDataSourceResponse' REPORT: '#/components/schemas/ReportAudienceOperationDataSourceResponse' propertyName: type oneOf: - $ref: '#/components/schemas/ActionAudienceOperationDataSourceResponse' - $ref: '#/components/schemas/FileAssetAudienceOperationDataSourceResponse' - $ref: '#/components/schemas/PersonListAudienceOperationDataSourceResponse' - $ref: '#/components/schemas/ReportAudienceOperationDataSourceResponse' BuiltAudienceResponse: description: audience after buildtime evaluation. Fields `name` and `enabled` are already evaluated. properties: component_ids: items: type: string type: array component_references: items: $ref: '#/components/schemas/ComponentReferenceResponse' type: array enabled: description: Resolved enabled flag for the audience. `true` means the runtime evaluates the audience; `false` means it is currently inert. type: boolean id: description: Stable Extole identifier for the audience. readOnly: true type: string name: description: Resolved display name for the audience. type: string tags: description: Free-form tags applied to the audience. items: type: string type: array required: - component_ids - component_references - enabled - id - name - tags type: object NameInAudienceResponse: description: Display name for the audience, in the same buildtime-evaluatable form that was supplied on create or update. oneOf: - allOf: - type: string - not: anyOf: - pattern: ^handlebars@buildtime:.* type: string - pattern: ^javascript@buildtime:.* type: string type: string description: Literal name title: Static Value - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{name}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('name');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string AudienceOperationStateResponse: discriminator: mapping: ACTION: '#/components/schemas/ActionAudienceOperationStateResponse' ADD: '#/components/schemas/ModificationAudienceOperationStateResponseAsAdd' REMOVE: '#/components/schemas/ModificationAudienceOperationStateResponseAsRemove' REPLACE: '#/components/schemas/ModificationAudienceOperationStateResponseAsReplace' propertyName: type oneOf: - $ref: '#/components/schemas/ActionAudienceOperationStateResponse' - $ref: '#/components/schemas/ModificationAudienceOperationStateResponseAsAdd' - $ref: '#/components/schemas/ModificationAudienceOperationStateResponseAsRemove' - $ref: '#/components/schemas/ModificationAudienceOperationStateResponseAsReplace' required: - created_date - error_code - input_rows_count - state - state_reached_date - type - updated_date FileAssetAudienceOperationDataSourceResponse: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceResponseBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object file_asset_id: type: string name: type: string type: enum: - FILE_ASSET type: string type: object required: - event_columns - event_data - file_asset_id - name - type type: object ActionAudienceOperationDataSourceRequest: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceRequestBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object event_name: type: string type: enum: - ACTION type: string type: object required: - event_name - type type: object MemberRequest: properties: data: additionalProperties: type: string type: object email: type: string writeOnly: true identity_key_value: type: string type: object AudienceOperationResultResponse: properties: anonymous_count: format: int64 type: integer last_update: $ref: '#/components/schemas/ZonedDateTime' member_count: format: int64 type: integer non_processed_count: format: int64 type: integer type: object EnabledInAudienceCreateRequest: description: Whether the audience evaluates at runtime. Defaults to `true` when omitted. Provide a literal boolean or a buildtime evaluatable that resolves to a boolean. oneOf: - description: Static enabled title: Static Value type: boolean - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{enabled}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('enabled');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string ModificationAudienceOperationStateResponseAsReplace: allOf: - $ref: '#/components/schemas/AudienceOperationStateResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - REPLACE type: string type: object required: - created_date - error_code - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object AudienceOperationStateDebugResponseBase: properties: created_date: $ref: '#/components/schemas/ZonedDateTime' debug_message: type: string error_code: enum: - COLUMN_CONFIGURATION_ERROR - CONFIGURATION_ERROR - EVENTS_EXECUTION_ERROR - EXECUTION_ERROR - INPUT_FILE_ERROR - INTERRUPT - MEMBERS_COUNT_VALIDATION_RETRIES_EXHAUSTED - MEMORY_ERROR - MISMATCH_EVENTS_EXECUTION_ERROR - ROW_COUNT_VALIDATION_RETRIES_EXHAUSTED - SOFTWARE_ERROR - STORAGE_ERROR - UNKNOWN type: string error_message: type: string input_rows_count: format: int64 type: integer state: enum: - BUILDING - CANCELED - EXPIRED - FAILED - PREPARING - READY - VALIDATING type: string state_reached_date: $ref: '#/components/schemas/ZonedDateTime' type: enum: - ACTION - ADD - REMOVE - REPLACE type: string updated_date: $ref: '#/components/schemas/ZonedDateTime' type: object ModificationAudienceOperationStateDebugResponseAsAdd: allOf: - $ref: '#/components/schemas/AudienceOperationStateDebugResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - ADD type: string type: object required: - created_date - debug_message - error_code - error_message - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object AudienceOperationDetailedResponse: properties: created_date: $ref: '#/components/schemas/ZonedDateTime' data_source: $ref: '#/components/schemas/AudienceOperationDataSourceResponse' id: readOnly: true type: string tags: items: type: string type: array uniqueItems: true type: enum: - ACTION - ADD - REMOVE - REPLACE type: string updated_date: $ref: '#/components/schemas/ZonedDateTime' user_id: type: string required: - created_date - data_source - id - tags - type - updated_date - user_id type: object ActionAudienceOperationStateDebugResponse: allOf: - $ref: '#/components/schemas/AudienceOperationStateDebugResponseBase' - properties: type: enum: - ACTION type: string required: - created_date - debug_message - error_code - error_message - input_rows_count - state - state_reached_date - type - updated_date type: object ModificationAudienceOperationStateResponseAsAdd: allOf: - $ref: '#/components/schemas/AudienceOperationStateResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - ADD type: string type: object required: - created_date - error_code - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object FileAssetAudienceOperationDataSourceRequest: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceRequestBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object file_asset_id: type: string type: enum: - FILE_ASSET type: string type: object required: - file_asset_id - type type: object ModificationAudienceOperationStateDebugResponseAsReplace: allOf: - $ref: '#/components/schemas/AudienceOperationStateDebugResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - REPLACE type: string type: object required: - created_date - debug_message - error_code - error_message - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object AudienceOperationCreateRequest: description: Body of a `POST /v1/audiences/{audience_id}/operations` request. properties: data_source: $ref: '#/components/schemas/AudienceOperationDataSourceRequest' tags: items: type: string type: array uniqueItems: true type: enum: - ACTION - ADD - REMOVE - REPLACE type: string required: - data_source - type type: object AudienceOperationResponse: properties: data_source: $ref: '#/components/schemas/AudienceOperationDataSourceResponse' id: readOnly: true type: string tags: items: type: string type: array uniqueItems: true type: enum: - ACTION - ADD - REMOVE - REPLACE type: string required: - data_source - id - tags - type type: object NameInAudienceUpdateRequest: description: New display name. Same shape and 255-character cap as on `POST /v1/audiences`. Sending `null` returns `400 invalid_null` because `name` is required on the audience. oneOf: - allOf: - type: string - not: anyOf: - pattern: ^handlebars@buildtime:.* type: string - pattern: ^javascript@buildtime:.* type: string type: string description: Static name title: Static Value - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{name}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('name');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string ModificationAudienceOperationStateResponseAsRemove: allOf: - $ref: '#/components/schemas/AudienceOperationStateResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - REMOVE type: string type: object required: - created_date - error_code - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object ActionAudienceOperationStateResponse: allOf: - $ref: '#/components/schemas/AudienceOperationStateResponseBase' - properties: type: enum: - ACTION type: string required: - created_date - error_code - input_rows_count - state - state_reached_date - type - updated_date type: object 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 ComponentReferenceResponse: properties: component_id: type: string socket_names: items: type: string type: array type: object EnabledInAudienceResponse: description: Whether the audience is currently evaluated at runtime. oneOf: - description: Literal enabled title: Static Value type: boolean - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{enabled}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('enabled');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string ReportAudienceOperationDataSourceRequest: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceRequestBase' - properties: event_columns: items: type: string type: array uniqueItems: true event_data: additionalProperties: type: string type: object report_id: type: string type: enum: - REPORT type: string type: object required: - report_id - type type: object PersonDataResponse: properties: created_date: $ref: '#/components/schemas/ZonedDateTime' id: description: Extole-assigned unique identifier for this data parameter entry. readOnly: true type: string name: description: Name of the data parameter. type: string scope: description: Visibility scope of the data parameter. enum: - CLIENT - PRIVATE - PUBLIC type: string updated_date: $ref: '#/components/schemas/ZonedDateTime' value: description: Value stored for the data parameter. type: object required: - created_date - id - name - scope - updated_date - value type: object ComponentReferenceRequest: properties: component_id: type: string socket_names: items: type: string type: array type: object PersonLocaleResponse: properties: last_browser: description: BCP 47 locale tag last detected from the person's browser. Absent if not yet observed. type: string user_specified: description: BCP 47 locale tag explicitly set by the person. Absent if not specified. type: string type: object EnabledInAudienceUpdateRequest: description: New enabled flag. Disabling an audience leaves the definition in place but prevents the runtime from evaluating it. oneOf: - description: Static enabled title: Static Value type: boolean - description: Handlebars expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: handlebars@buildtime:{{enabled}} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^handlebars@buildtime:.* title: Buildtime - Handlebars type: string - description: Javascript expression with [AudienceBuildtimeContext](https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts). example: javascript@buildtime:function() { return context.getVariableContext().get('enabled');} externalDocs: description: AudienceBuildtimeContext url: https://github.com/extole/extole-specification/blob/main/openapi/expression-context/com/extole/api/audience/AudienceBuildtimeContext.d.ts pattern: ^javascript@buildtime:.* title: Buildtime - Javascript type: string PersonListAudienceOperationDataSourceRequest: allOf: - $ref: '#/components/schemas/AudienceOperationDataSourceRequestBase' - properties: audience_members: items: $ref: '#/components/schemas/MemberRequest' type: array type: enum: - PERSON_LIST type: string type: object required: - audience_members - type type: object AudienceCreateRequest: description: Body of a `POST /v1/audiences` request. properties: component_ids: items: type: string type: array component_references: items: $ref: '#/components/schemas/ComponentReferenceRequest' type: array enabled: $ref: '#/components/schemas/EnabledInAudienceCreateRequest' name: $ref: '#/components/schemas/NameInAudienceCreateRequest' tags: description: Free-form tags applied to the audience. Used to organise audiences in the dashboard and to filter them in API queries. Each tag must be 255 characters or fewer. items: type: string type: array required: - name type: object ModificationAudienceOperationStateDebugResponseAsRemove: allOf: - $ref: '#/components/schemas/AudienceOperationStateDebugResponseBase' - properties: result: $ref: '#/components/schemas/AudienceOperationResultResponse' retry_count: format: int32 type: integer type: enum: - REMOVE type: string type: object required: - created_date - debug_message - error_code - error_message - input_rows_count - result - retry_count - state - state_reached_date - type - updated_date type: object AudienceResponse: description: Stored audience definition. Fields `name` and `enabled` are unevaluated and appear in buildtime-evaluatable form. properties: component_ids: items: type: string type: array component_references: items: $ref: '#/components/schemas/ComponentReferenceResponse' type: array enabled: $ref: '#/components/schemas/EnabledInAudienceResponse' id: description: Stable Extole identifier for the audience. readOnly: true type: string name: $ref: '#/components/schemas/NameInAudienceResponse' tags: description: Free-form tags applied to the audience. items: type: string type: array required: - component_ids - component_references - enabled - id - name - tags type: object securitySchemes: COOKIE: in: cookie name: extole_token type: apiKey HEADER: in: header name: Authorization type: apiKey x-bearer-format: bearer QUERY: in: query name: access_token type: apiKey x-tagGroups: - name: Integration API - Consumer to Extole tags: - Authentication - Content - Email - Events - Persons - Profile Assets - Profiles