Extole Campaign Flow Steps API
The Campaign Flow Steps API from Extole — 12 operation(s) for campaign flow steps.
The Campaign Flow Steps API from Extole — 12 operation(s) for campaign flow steps.
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 Campaign Flow Steps API
version: '1.0'
servers:
- description: Production
url: https://{brand}.extole.io
variables:
brand:
default: yourcompany
description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io)
security:
- HEADER: []
- QUERY: []
- COOKIE: []
tags:
- name: Campaign Flow Steps
paths:
/v2/campaigns/{campaignId}{version}/flow-steps:
get:
description: Returns all flow steps for the specified campaign.
operationId: listCampaignFlowSteps
parameters:
- in: path
name: campaignId
required: true
schema:
type: string
- in: path
name: version
required: true
schema:
pattern: (/version/.+)?
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CampaignFlowStepResponse'
type: array
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
campaign_concurrent_update:
$ref: '#/components/examples/campaign_concurrent_update'
campaign_has_pending_changes:
$ref: '#/components/examples/campaign_has_pending_changes'
campaign_locked:
$ref: '#/components/examples/campaign_locked'
campaign_version_malformed:
$ref: '#/components/examples/campaign_version_malformed'
date_invalid:
$ref: '#/components/examples/date_invalid'
invalid_campaign_id:
$ref: '#/components/examples/invalid_campaign_id'
invalid_campaign_state:
$ref: '#/components/examples/invalid_campaign_state'
invalid_campaign_version:
$ref: '#/components/examples/invalid_campaign_version'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
lock_missing_lock_types:
$ref: '#/components/examples/lock_missing_lock_types'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
unlock_missing_lock_types:
$ref: '#/components/examples/unlock_missing_lock_types'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
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 campaign flow steps
tags:
- Campaign Flow Steps
x-extole-bundle: management-expert
x-extole-visibility: expert
post:
description: Adds a new flow step to the specified campaign. Flow steps are the visual builder blocks of a participant's journey through a campaign. Returns the created flow step with its server-assigned id.
operationId: createCampaignFlowStep
parameters:
- in: path
name: campaignId
required: true
schema:
type: string
- in: path
name: version
required: true
schema:
pattern: (/version/.+)?
type: string
requestBody:
content:
application/json:
example:
apps:
- component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
name: name
type:
name: name
component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
flow_path: flow_path
icon_color: icon_color
icon_type: icon_type
metrics:
- component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
expression: expression
name: name
tags:
- tag
unit: unit
name: name
sequence: 1.0
step_name: step_name
tags:
- tag
words:
person_counting_name: person_counting_name
plural_noun_name: plural_noun_name
rate_name: rate_name
singular_noun_name: singular_noun_name
verb_name: verb_name
schema:
$ref: '#/components/schemas/CampaignFlowStepCreateRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignFlowStepResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
campaign_build_failed:
$ref: '#/components/examples/campaign_build_failed'
campaign_component_absolute_name_missing:
$ref: '#/components/examples/campaign_component_absolute_name_missing'
campaign_component_description_out_of_range:
$ref: '#/components/examples/campaign_component_description_out_of_range'
campaign_component_display_name_contains_illegal_character:
$ref: '#/components/examples/campaign_component_display_name_contains_illegal_character'
campaign_component_display_name_out_of_range:
$ref: '#/components/examples/campaign_component_display_name_out_of_range'
campaign_component_id_missing:
$ref: '#/components/examples/campaign_component_id_missing'
campaign_component_name_already_in_use:
$ref: '#/components/examples/campaign_component_name_already_in_use'
campaign_component_name_contains_illegal_character:
$ref: '#/components/examples/campaign_component_name_contains_illegal_character'
campaign_component_name_out_of_range:
$ref: '#/components/examples/campaign_component_name_out_of_range'
campaign_component_type_validation_failed:
$ref: '#/components/examples/campaign_component_type_validation_failed'
campaign_concurrent_update:
$ref: '#/components/examples/campaign_concurrent_update'
campaign_flow_step_app_description_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_app_description_length_out_of_range'
campaign_flow_step_app_name_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_app_name_length_out_of_range'
campaign_flow_step_app_name_missing:
$ref: '#/components/examples/campaign_flow_step_app_name_missing'
campaign_flow_step_app_type_missing:
$ref: '#/components/examples/campaign_flow_step_app_type_missing'
campaign_flow_step_app_type_name_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_app_type_name_length_out_of_range'
campaign_flow_step_app_type_name_missing:
$ref: '#/components/examples/campaign_flow_step_app_type_name_missing'
campaign_flow_step_description_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_description_length_out_of_range'
campaign_flow_step_flow_path_invalid:
$ref: '#/components/examples/campaign_flow_step_flow_path_invalid'
campaign_flow_step_flow_path_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_flow_path_length_out_of_range'
campaign_flow_step_flow_path_missing:
$ref: '#/components/examples/campaign_flow_step_flow_path_missing'
campaign_flow_step_icon_color_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_icon_color_length_out_of_range'
campaign_flow_step_icon_type_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_icon_type_length_out_of_range'
campaign_flow_step_icon_type_missing:
$ref: '#/components/examples/campaign_flow_step_icon_type_missing'
campaign_flow_step_metric_description_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_metric_description_length_out_of_range'
campaign_flow_step_metric_duplicate_exists:
$ref: '#/components/examples/campaign_flow_step_metric_duplicate_exists'
campaign_flow_step_metric_expression_invalid:
$ref: '#/components/examples/campaign_flow_step_metric_expression_invalid'
campaign_flow_step_metric_expression_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_metric_expression_length_out_of_range'
campaign_flow_step_metric_expression_missing:
$ref: '#/components/examples/campaign_flow_step_metric_expression_missing'
campaign_flow_step_metric_name_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_metric_name_length_out_of_range'
campaign_flow_step_metric_name_missing:
$ref: '#/components/examples/campaign_flow_step_metric_name_missing'
campaign_flow_step_metric_tags_missing:
$ref: '#/components/examples/campaign_flow_step_metric_tags_missing'
campaign_flow_step_metric_unit_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_metric_unit_length_out_of_range'
campaign_flow_step_metric_unit_missing:
$ref: '#/components/examples/campaign_flow_step_metric_unit_missing'
campaign_flow_step_name_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_name_length_out_of_range'
campaign_flow_step_sequence_invalid:
$ref: '#/components/examples/campaign_flow_step_sequence_invalid'
campaign_flow_step_sequence_missing:
$ref: '#/components/examples/campaign_flow_step_sequence_missing'
campaign_flow_step_step_name_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_step_name_length_out_of_range'
campaign_flow_step_step_name_missing:
$ref: '#/components/examples/campaign_flow_step_step_name_missing'
campaign_flow_step_word_length_out_of_range:
$ref: '#/components/examples/campaign_flow_step_word_length_out_of_range'
campaign_has_pending_changes:
$ref: '#/components/examples/campaign_has_pending_changes'
campaign_locked:
$ref: '#/components/examples/campaign_locked'
campaign_stale_version:
$ref: '#/components/examples/campaign_stale_version'
campaign_version_malformed:
$ref: '#/components/examples/campaign_version_malformed'
circular_component_reference:
$ref: '#/components/examples/circular_component_reference'
component_facets_not_found:
$ref: '#/components/examples/component_facets_not_found'
controller_state_misconfiguration:
$ref: '#/components/examples/controller_state_misconfiguration'
date_invalid:
$ref: '#/components/examples/date_invalid'
excessive_component_reference:
$ref: '#/components/examples/excessive_component_reference'
expression_invalid_syntax:
$ref: '#/components/examples/expression_invalid_syntax'
external_element_is_referenced_by_active_configuration:
$ref: '#/components/examples/external_element_is_referenced_by_active_configuration'
external_elements_cannot_have_multiple_references:
$ref: '#/components/examples/external_elements_cannot_have_multiple_references'
invalid_campaign_id:
$ref: '#/components/examples/invalid_campaign_id'
invalid_campaign_state:
$ref: '#/components/examples/invalid_campaign_state'
invalid_campaign_version:
$ref: '#/components/examples/invalid_campaign_version'
invalid_component_installed_into_socket:
$ref: '#/components/examples/invalid_component_installed_into_socket'
invalid_component_reference:
$ref: '#/components/examples/invalid_component_reference'
invalid_component_reference_socket_name:
$ref: '#/components/examples/invalid_component_reference_socket_name'
invalid_external_component_reference:
$ref: '#/components/examples/invalid_external_component_reference'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
lock_missing_lock_types:
$ref: '#/components/examples/lock_missing_lock_types'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
orphan_external_component_reference:
$ref: '#/components/examples/orphan_external_component_reference'
rebuild_campaigns_build_failed:
$ref: '#/components/examples/rebuild_campaigns_build_failed'
redundant_component_reference:
$ref: '#/components/examples/redundant_component_reference'
self_component_reference:
$ref: '#/components/examples/self_component_reference'
unlock_missing_lock_types:
$ref: '#/components/examples/unlock_missing_lock_types'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Create a campaign flow step
tags:
- Campaign Flow Steps
x-extole-bundle: management-expert
x-extole-visibility: expert
/v2/campaigns/{campaignId}{version}/flow-steps/built:
get:
description: Returns all campaign flow steps in their fully evaluated runtime form.
operationId: listBuiltCampaignFlowSteps
parameters:
- in: path
name: campaignId
required: true
schema:
type: string
- in: path
name: version
required: true
schema:
pattern: (/version/.+)?
type: string
- in: query
name: flow_path
schema:
nullable: true
type: string
responses:
'200':
content:
application/json:
schema:
items:
$ref: '#/components/schemas/BuiltCampaignFlowStepResponse'
type: array
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
campaign_build_failed:
$ref: '#/components/examples/campaign_build_failed'
campaign_concurrent_update:
$ref: '#/components/examples/campaign_concurrent_update'
campaign_has_pending_changes:
$ref: '#/components/examples/campaign_has_pending_changes'
campaign_locked:
$ref: '#/components/examples/campaign_locked'
campaign_version_malformed:
$ref: '#/components/examples/campaign_version_malformed'
controller_state_misconfiguration:
$ref: '#/components/examples/controller_state_misconfiguration'
date_invalid:
$ref: '#/components/examples/date_invalid'
expression_invalid_syntax:
$ref: '#/components/examples/expression_invalid_syntax'
invalid_campaign_id:
$ref: '#/components/examples/invalid_campaign_id'
invalid_campaign_state:
$ref: '#/components/examples/invalid_campaign_state'
invalid_campaign_version:
$ref: '#/components/examples/invalid_campaign_version'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
lock_missing_lock_types:
$ref: '#/components/examples/lock_missing_lock_types'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
rebuild_campaigns_build_failed:
$ref: '#/components/examples/rebuild_campaigns_build_failed'
unlock_missing_lock_types:
$ref: '#/components/examples/unlock_missing_lock_types'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
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 campaign flow steps
tags:
- Campaign Flow Steps
x-extole-bundle: management-expert
x-extole-visibility: expert
/v2/campaigns/{campaignId}{version}/flow-steps/{flowStepId}:
get:
description: Returns the campaign flow step for the specified id.
operationId: getCampaignFlowStep
parameters:
- in: path
name: campaignId
required: true
schema:
type: string
- in: path
name: version
required: true
schema:
pattern: (/version/.+)?
type: string
- in: path
name: flowStepId
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignFlowStepResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
campaign_concurrent_update:
$ref: '#/components/examples/campaign_concurrent_update'
campaign_has_pending_changes:
$ref: '#/components/examples/campaign_has_pending_changes'
campaign_locked:
$ref: '#/components/examples/campaign_locked'
campaign_version_malformed:
$ref: '#/components/examples/campaign_version_malformed'
date_invalid:
$ref: '#/components/examples/date_invalid'
invalid_campaign_flow_step_id:
$ref: '#/components/examples/invalid_campaign_flow_step_id'
invalid_campaign_id:
$ref: '#/components/examples/invalid_campaign_id'
invalid_campaign_state:
$ref: '#/components/examples/invalid_campaign_state'
invalid_campaign_version:
$ref: '#/components/examples/invalid_campaign_version'
invalid_json:
$ref: '#/components/examples/invalid_json'
invalid_parameter:
$ref: '#/components/examples/invalid_parameter'
lock_missing_lock_types:
$ref: '#/components/examples/lock_missing_lock_types'
missing_request_body:
$ref: '#/components/examples/missing_request_body'
unlock_missing_lock_types:
$ref: '#/components/examples/unlock_missing_lock_types'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Bad Request
'401':
content:
application/json:
examples:
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unauthorized
'402':
content:
application/json:
examples:
payment_required:
$ref: '#/components/examples/payment_required'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Payment Required
'403':
content:
application/json:
examples:
access_denied:
$ref: '#/components/examples/access_denied'
method_unauthorized:
$ref: '#/components/examples/method_unauthorized'
missing_access_token:
$ref: '#/components/examples/missing_access_token'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Forbidden
'415':
content:
application/json:
examples:
unsupported_media_type:
$ref: '#/components/examples/unsupported_media_type'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Unsupported Media Type
'429':
content:
application/json:
examples:
too_many_requests:
$ref: '#/components/examples/too_many_requests'
schema:
$ref: '#/components/schemas/RestExceptionResponse'
description: Too Many Requests
summary: Get a campaign flow step
tags:
- Campaign Flow Steps
x-extole-bundle: management-expert
x-extole-visibility: expert
put:
description: Updates the specified campaign flow step. Only fields present in the request body are changed. Returns the updated flow step.
operationId: updateCampaignFlowStep
parameters:
- in: path
name: campaignId
required: true
schema:
type: string
- in: path
name: version
required: true
schema:
pattern: (/version/.+)?
type: string
- in: path
name: flowStepId
required: true
schema:
type: string
requestBody:
content:
application/json:
example:
apps:
- component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
name: name
type:
name: name
component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
flow_path: flow_path
icon_color: icon_color
icon_type: icon_type
metrics:
- component_ids:
- component_id
component_references:
- component_id: component_id
socket_names:
- socket_name
description: description
expression: expression
name: name
tags:
- tag
unit: unit
name: name
sequence: 1.0
step_name: step_name
tags:
- tag
words:
person_counting_name: person_counting_name
plural_noun_name: plural_noun_name
rate_name: rate_name
singular_noun_name: singular_noun_name
verb_name: verb_name
schema:
$ref: '#/components/schemas/CampaignFlowStepUpdateRequest'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignFlowStepResponse'
description: Successful response
'400':
content:
application/json:
examples:
binding_error:
$ref: '#/components/examples/binding_error'
campaign_build_failed:
$ref: '#/components/examples/campaign_build_failed'
campaign_component_absolute_name_missing:
$ref: '#/components/examples/campaign_component_absolute_name_missing'
campaign_component_description_out_of_range:
$ref: '#/components/examples/campaign_component_description_out_of_range'
campaign_component_display_name_contains_illegal_character:
$ref: '#/components/examples/campaign_component_display_name_contains_illegal_character'
campaign_component_display_name_out_of_range:
$ref: '#/components/examples/campaign_component_display_name_out_of_range'
campaign_component_id_missing:
$ref: '#/components/examples/campaign_component_id_missing'
campaign_component_name_already_in_use:
$ref: '#/components/examples/campaign_component_name_already_in_use'
campaign_component_name_contains_illegal_character:
$ref: '#/components/examples/campaign_component_name_contains_illegal_character'
campaign_component_name_out_of_range:
$ref: '#/components/examples/campaign_component_name_out_of_range'
campaign_component_type_validation_failed:
$ref: '#/components/examples/campaign_component_type_validation_failed'
# --- truncated at 32 KB (279 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/extole/refs/heads/main/openapi/extole-campaign-flow-steps-api-openapi.yml