openapi: 3.1.0 info: title: Convert Accounts Experiences API description: 'Move your app forward with the Convert API. The Convert API allows you to manage your Convert Experiences projects using code. The REST API is an interface for managing and extending functionality of Convert. For example, instead of creating and maintaining projects using the Convert Experiences web dashboard you can create an experiment programmatically. Additionally, if you prefer to run custom analysis on experiment results you can leverage the API to pull data from Convert Experiences into your own workflow. If you do not have a Convert account already, sign up for a free developer account at https://www.convert.com/api/. *[Convert API V1](/doc/v1) is still available and documentation can be found [here](/doc/v1) but using it is highly discouraged as it will be phased out in the future* ' version: 2.0.0 servers: - url: https://api.convert.com/api/v2 description: Live API server - url: https://apidev.convert.com/api/v2 description: DEV API server - url: http://apidev.convert.com:5000/api/v2 description: DEV mocked API server tags: - name: Experiences description: Convert Experiences provides a couple different experiences types. A/B, Split URL, Multivariate (MVT), Deploys, A/A and Multi-page (funnel) testing. To learn more, see Six experience types in Convert Experiences. paths: /accounts/{account_id}/projects/{project_id}/experiences: post: operationId: getExperiencesList summary: List experiences within a project description: 'Retrieves a list of all experiences (A/B tests, MVT, Split URL, Deployments, etc.) within a specific project. Supports filtering by status, type, tags, and other criteria. Pagination is also supported. The `include` parameter can fetch related data like `variations` or `goals`. The `expand` parameter can provide full objects for linked entities. The Knowledge Base article "The Experience Overview Screen" describes the UI equivalent. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer requestBody: $ref: '#/components/requestBodies/GetExperiencesListRequest' responses: '200': $ref: '#/components/responses/ExperiencesListResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}: get: operationId: getExperience summary: Get details for a specific experience description: 'Retrieves comprehensive details for a single experience, identified by its `experience_id`. This includes its configuration (name, type, URL, status), associated audiences, locations, goals, variations, and integration settings. The `include` and `expand` parameters allow fetching more detailed related data. The Knowledge Base article "Experience Summary" describes the UI equivalent of this data. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_id description: The ID of the experience to be retrieved in: path required: true schema: type: integer - name: report_token in: header required: false description: Token to access the experience report in read-only mode. schema: type: string - name: include description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default Read more in the section related to [Optional Fields](#tag/Optional-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' - name: expand description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceExpandFields' responses: '200': $ref: '#/components/responses/ExperienceResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_key}: get: operationId: getExperienceByKey summary: Get experience details by its unique key description: 'Retrieves comprehensive details for a single experience, identified by its user-defined `experience_key` instead of its numerical ID. This is useful when you have a human-readable key for an experience. Functionality and parameters are otherwise similar to getting an experience by ID. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_key description: The key of the experience to be retrieved in: path required: true schema: type: string - name: include description: 'Array parameter that would mention extra fields to be included into the response; otherwise those fields would be excluded by default Read more in the section related to [Optional Fields](#tag/Optional-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' - name: expand description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceExpandFields' responses: '200': $ref: '#/components/responses/ExperienceResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/add: post: operationId: createExperience summary: Create a new experience description: 'Creates a new experience (e.g., A/B test, Split URL test, MVT, Deploy, A/A test, Multi-page Funnel) within a project. Requires defining the experience name, type, status (usually ''draft''), and the URL for the Visual Editor or original page. Variations, audiences, locations, goals, and other settings can be specified during creation. The Knowledge Base article "Create a New Experience" outlines the UI process. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: include description: 'Specifies the list of optional objects which would be included in the response. Read more in the section related to [Expanding Fields](#tag/Optional-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' - name: expand description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceExpandFields' requestBody: $ref: '#/components/requestBodies/CreateExperienceRequest' responses: '201': $ref: '#/components/responses/ExperienceResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/clone: post: operationId: cloneExperience summary: Clone an existing experience description: 'Creates a new experience as an identical copy of an existing one (specified by `experience_id`). This is useful for iterating on a previous test or using an existing experience as a template. The cloned experience starts in ''draft'' status and does not copy historical report data. The Knowledge Base article "How to Clone an Experiment?" describes this. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_id description: The ID of the experience to be cloned in: path required: true schema: type: integer - name: include description: 'Specifies the list of optional objects which would be included in the response. Read more in the section related to [Expanding Fields](#tag/Optional-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' - name: expand description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceExpandFields' requestBody: $ref: '#/components/requestBodies/CloneExperienceRequest' responses: '201': $ref: '#/components/responses/ExperienceResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/update: post: operationId: updateExperience summary: Update an existing experience description: 'Modifies the configuration of an existing experience. This can include changing its name, description, status (e.g., from ''draft'' to ''active'', or ''active'' to ''paused''), URL, traffic distribution, audiences, locations, goals, variations, and integration settings. The Knowledge Base article "How Can I Change Variations After Experiment Started?" notes that variations cannot be added/removed after start, but other settings can be updated. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_id description: The ID of the updated experience in: path required: true schema: type: integer - name: include description: 'Specifies the list of optional objects which would be included in the response. Read more in the section related to [Expanding Fields](#tag/Optional-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' - name: expand description: 'Specifies the list of objects which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields) ' in: query required: false schema: type: array items: $ref: '#/components/schemas/ExperienceExpandFields' requestBody: $ref: '#/components/requestBodies/UpdateExperienceRequest' responses: '200': $ref: '#/components/responses/ExperienceResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/delete: delete: operationId: deleteExperience summary: Delete an experience description: 'Permanently removes an existing experience and all its associated data from the project. This action is irreversible. It''s generally recommended to archive experiences instead of deleting them to preserve historical data. The Knowledge Base article "How Do I Archive / Delete an Experience?" highlights this. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_id in: path required: true description: ID of the experience to be delete schema: type: integer responses: '200': $ref: '#/components/responses/SuccessResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/report_token: post: operationId: getReportToken summary: Manage report access token for an experience description: 'Generates, regenerates, or deletes a unique token that allows read-only access to an experience''s report. This is useful for sharing report data with stakeholders who do not have a Convert account or full project access. The token has an expiration time. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer - name: experience_id description: ID of the Experience in: path required: true schema: type: integer requestBody: $ref: '#/components/requestBodies/ExperienceReportTokenRequest' responses: '200': $ref: '#/components/responses/ExperienceReportTokenResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/livedata: post: operationId: getExperienceLiveData summary: Get live tracking events for a specific experience description: 'Retrieves the last 100 tracking events (views, conversions, revenue) specifically for the given experience. Useful for real-time monitoring and QA of a single active experience. Supports filtering by event type and goals. The Knowledge Base article "Live Logs for Projects and Experiments in Convert" describes this feature. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id in: path required: true description: ID of the project into which the experience is stored schema: type: integer - name: experience_id in: path required: true description: ID of the Experience schema: type: integer requestBody: $ref: '#/components/requestBodies/GetExperienceLiveDataRequest' responses: '200': $ref: '#/components/responses/LiveDataEventsListResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/change-history: post: operationId: getExperienceHistory summary: Get change history for a specific experience description: 'Retrieves a historical log of all changes made to a specific experience. This includes modifications to its settings, variations, audiences, goals, status, etc. Provides an audit trail for the lifecycle of an experience, filterable by date and user. The Knowledge Base article "Track User Changes with Change History" details this. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id in: path required: true description: ID of the project to which save/retrieved data is connected schema: type: integer - name: experience_id in: path required: true description: ID of the Experience schema: type: integer requestBody: $ref: '#/components/requestBodies/GetExperienceHistoryRequest' responses: '200': $ref: '#/components/responses/ChangeHistoryListResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/{experience_id}/trigger-screenshots: post: operationId: triggerExperienceScreenshots summary: Trigger screenshot generation for experience variations description: 'Initiates the process of generating or regenerating screenshots for the variations of a specified experience. These screenshots are displayed in the Convert UI to help visualize the changes made in each variation. The Knowledge Base article "Whitelist IPs for Screenshot Previews" is related as it lists IPs our service uses. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id in: path required: true description: ID of the project to which save/retrieved data is connected schema: type: integer - name: experience_id in: path required: true description: ID of the Experience schema: type: integer requestBody: $ref: '#/components/requestBodies/TriggerExperienceScreenshotsRequest' responses: '200': $ref: '#/components/responses/SuccessResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/bulk-update: post: operationId: bulkExperiencesUpdate summary: Update multiple experiences at once description: 'Allows for changing the status (e.g., activate, pause, archive) of multiple experiences within a project simultaneously. Requires a list of experience IDs and the target status. The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer requestBody: $ref: '#/components/requestBodies/BulkUpdateExperiencesRequest' responses: '200': $ref: '#/components/responses/BulkSuccessResponse' default: $ref: '#/components/responses/ErrorResponse' /accounts/{account_id}/projects/{project_id}/experiences/bulk-delete: post: operationId: bulkExperiencesDelete summary: Delete multiple experiences at once description: 'Permanently removes multiple experiences from a project in a single operation. Requires a list of experience IDs. This action is irreversible. The Knowledge Base article "Bulk Actions on Experiences" describes this UI feature. ' tags: - Experiences parameters: - name: account_id in: path required: true description: ID of the account that owns the retrieved/saved data schema: type: integer - name: project_id description: ID of the project to which save/retrieved data is connected in: path required: true schema: type: integer requestBody: $ref: '#/components/requestBodies/BulkDeleteExperiencesRequest' responses: '200': $ref: '#/components/responses/BulkSuccessResponse' default: $ref: '#/components/responses/ErrorResponse' components: schemas: ReportingSegmentsCountry: type: string description: 'The two-letter ISO 3166-1 alpha-2 country code of the visitor, determined by IP geolocation. Used for segmenting reports by country to analyze geographical performance. Knowledge Base: "How Do I Target by Geographic Location Like City, Region or Country?". ' maxLength: 2 minLength: 2 ExperienceCreateUpdateLocations: type: array description: A list of Location IDs to associate with the experience. The experience will run on pages/conditions defined by these locations (according to `settings.matching_options.locations`). items: type: integer SimpleLocationExpandable: anyOf: - type: integer description: Location ID - $ref: '#/components/schemas/SimpleLocation' ReportingSegmentsSource: type: string description: 'The traffic source that brought the visitor to the site (e.g., ''google'', ''facebook.com'', ''direct'', ''newsletter''). Derived from `utm_source` URL parameters or the HTTP referrer. Enables report segmentation by traffic source. Knowledge Base: "How Do You Fill Medium, Keyword and Source Name?". ' enum: - campaign - search - referral - direct - ai_tool RuleElement: oneOf: - $ref: '#/components/schemas/GenericTextMatchRule' - $ref: '#/components/schemas/GenericNumericMatchRule' - $ref: '#/components/schemas/GenericBoolMatchRule' - $ref: '#/components/schemas/GenericTextKeyValueMatchRule' - $ref: '#/components/schemas/GenericNumericKeyValueMatchRule' - $ref: '#/components/schemas/GenericBoolKeyValueMatchRule' - $ref: '#/components/schemas/CookieMatchRule' - $ref: '#/components/schemas/CountryMatchRule' - $ref: '#/components/schemas/LanguageMatchRule' - $ref: '#/components/schemas/GoalTriggeredMatchRule' - $ref: '#/components/schemas/SegmentBucketedMatchRule' - $ref: '#/components/schemas/DayOfWeekMatchRule' - $ref: '#/components/schemas/HourOfDayMatchRule' - $ref: '#/components/schemas/MinuteOfHourMatchRule' - $ref: '#/components/schemas/BrowserNameMatchRule' - $ref: '#/components/schemas/OsMatchRule' - $ref: '#/components/schemas/WeatherConditionMatchRule' - $ref: '#/components/schemas/VisitorTypeMatchRule' - $ref: '#/components/schemas/JsConditionMatchRule' discriminator: propertyName: rule_type mapping: url: '#/components/schemas/GenericTextMatchRule' url_with_query: '#/components/schemas/GenericTextMatchRule' query_string: '#/components/schemas/GenericTextMatchRule' campaign: '#/components/schemas/GenericTextMatchRule' keyword: '#/components/schemas/GenericTextMatchRule' medium: '#/components/schemas/GenericTextMatchRule' source_name: '#/components/schemas/GenericTextMatchRule' avg_time_page: '#/components/schemas/GenericNumericMatchRule' city: '#/components/schemas/GenericTextMatchRule' country: '#/components/schemas/CountryMatchRule' region: '#/components/schemas/GenericTextMatchRule' days_since_last_visit: '#/components/schemas/GenericNumericMatchRule' language: '#/components/schemas/LanguageMatchRule' pages_visited_count: '#/components/schemas/GenericNumericMatchRule' goal_triggered: '#/components/schemas/GoalTriggeredMatchRule' visit_duration: '#/components/schemas/GenericNumericMatchRule' cookie: '#/components/schemas/CookieMatchRule' visitor_type: '#/components/schemas/VisitorTypeMatchRule' visits_count: '#/components/schemas/GenericNumericMatchRule' bucketed_into_experience: '#/components/schemas/GenericBoolMatchRule' bucketed_into_segment: '#/components/schemas/SegmentBucketedMatchRule' local_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' local_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' local_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' project_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' project_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' project_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' browser_name: '#/components/schemas/BrowserNameMatchRule' browser_version: '#/components/schemas/GenericTextMatchRule' os: '#/components/schemas/OsMatchRule' user_agent: '#/components/schemas/GenericTextMatchRule' is_desktop: '#/components/schemas/GenericBoolMatchRule' is_mobile: '#/components/schemas/GenericBoolMatchRule' is_tablet: '#/components/schemas/GenericBoolMatchRule' js_condition: '#/components/schemas/JsConditionMatchRule' page_tag_page_type: '#/components/schemas/GenericTextMatchRule' page_tag_category_id: '#/components/schemas/GenericTextMatchRule' page_tag_category_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_sku: '#/components/schemas/GenericTextMatchRule' page_tag_product_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_price: '#/components/schemas/GenericNumericMatchRule' page_tag_customer_id: '#/components/schemas/GenericTextMatchRule' page_tag_custom_1: '#/components/schemas/GenericTextMatchRule' page_tag_custom_2: '#/components/schemas/GenericTextMatchRule' page_tag_custom_3: '#/components/schemas/GenericTextMatchRule' page_tag_custom_4: '#/components/schemas/GenericTextMatchRule' weather_condition: '#/components/schemas/WeatherConditionMatchRule' generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule' generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule' generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule' ReportingSegmentsFilters: type: object description: 'A collection of filters used to segment experience report data based on various visitor attributes and traffic sources. Applying these filters allows for deeper analysis of how different user groups interact with experience variations. Knowledge Base: "Using Basic and Advanced Post segmentation". ' properties: devices: type: array items: $ref: '#/components/schemas/ReportingSegmentsDeviceCategories' nullable: true browsers: description: Filter report data for visitors using one or more specified web browsers. type: array items: $ref: '#/components/schemas/ReportingSegmentsBrowser' nullable: true countries: description: Filter report data for visitors from one or more specified countries (using 2-letter ISO codes). type: array items: $ref: '#/components/schemas/ReportingSegmentsCountry' nullable: true visitor_types: description: Filter report data for 'new' or 'returning' visitors. type: array items: $ref: '#/components/schemas/ReportingSegmentsVisitorType' nullable: true campaigns: description: Filter report data for visitors attributed to one or more specified marketing campaign names (from `utm_campaign`). type: array items: $ref: '#/components/schemas/ReportingSegmentsCampaign' nullable: true custom_segments: description: Filter report data for visitors belonging to one or more specified custom Convert Audience segments (by segment ID). type: array items: $ref: '#/components/schemas/ReportingSegmentsCustomSegment' nullable: true sources: description: Filter report data for visitors from one or more specified traffic sources (e.g., 'direct', 'search', 'referral'). type: array items: $ref: '#/components/schemas/ReportingSegmentsSource' nullable: true VisitorTypeMatchRulesTypes: type: string enum: - visitor_type LocationTriggerTypes: type: string default: upon_run description: 'Specifies the mechanism that activates an experience when its location rules are met: - `upon_run`: (Default) The experience activates as soon as the Convert tracking script loads and evaluates that the visitor matches the location''s rules (e.g., URL match). This is the standard behavior for most A/B tests. - `manual`: The experience only activates when explicitly triggered by a JavaScript call (`window._conv_q.push({ what: ''triggerLocation'', params: { locationId: ''...'' } })`). Gives precise programmatic control over activation. - `dom_element`: The experience activates upon a specific user interaction (e.g., ''click'', ''hover'', ''in_view'', ''change'') with a defined DOM element (identified by a CSS `selector`). Useful for testing changes related to interactive elements. - `callback`: The experience activates when a custom JavaScript `callback` function (provided in `js`) calls the `activate()` function passed to it. Allows for complex asynchronous activation logic, e.g., after an API response or a specific SPA state change. Note: For Full Stack projects, `upon_run` is effectively the only mode, as activation is handled by the SDK. ' enum: - upon_run - manual - dom_element - callback ExperienceChangeId: description: Represents the unique identifier of an existing change within an experience variation. Used when updating or referencing a specific change. type: object additionalProperties: false properties: id: description: The unique numerical identifier for this specific change. type: integer required: - id LocationExpandable: anyOf: - type: integer description: Location ID - $ref: '#/components/schemas/Location' AudienceExpandable: anyOf: - type: integer description: Audience ID - $ref: '#/components/schemas/Audience' ProjectStatuses: description: 'The overall status of a project: - `active`: The project is active, and experiences within it can run and track data. - `inactive`: The project is inactive (archived or paused). No experiences within it will run, and no new data will be tracked. - `suspended`: The project (or account) has been suspended, typically due to billing issues or terms of service violations. Services are disabled. ' type: string enum: - active - inactive - suspended ExperienceChangeIdReadOnly: description: Represents the unique identifier of a change, typically when returned by the API after creation or in a list. type: object properties: id: description: The unique numerical identifier for this specific change. type: integer readOnly: true ExperienceChangeBase: description: The fundamental structure representing a single modification applied within an experience's variation. The specific content and behavior of the change are determined by its `type` and detailed in the `data` object. type: object properties: type: type: string enum: - richStructure - customCode - defaultCode - defaultCodeMultipage - defaultRedirect - fullStackFeature data: description: 'A flexible object containing the specific details and content for this change, structured according to the change `type`. For example, for `customCode`, it would contain `js` and `css` strings. For `defaultRedirect`, it would contain `original_pattern` and `variation_pattern`. This field is included by default when fetching a single `ExperienceChange` but might be omitted in list views unless specified in an `include` parameter. ' type: object UserCustomization: description: A generic key-value pair for storing miscellaneous user-specific UI customizations or settings not covered by structured preferences. type: object properties: key: type: string maxLength: 20 value: nullable: true oneOf: - type: string maxLength: 20 - type: number - type: boolean required: - key - value BaseProject: type: object properties: global_javascript: type: string nullable: true description: 'Custom JavaScript code that will be included on all pages where this project''s tracking script is installed. This script runs before any experience-specific code, making it suitable for global helper functions, third-party integrations setup (like analytics), or defining global variables. KB: "Project, Experience, Variation Javascript" - "Global Project JavaScript". ' name: type: string maxLength: 200 description: A user-defined, friendly name for the project (e.g., "Main Website Optimization", "Q3 Marketing Campaigns", "Mobile App Features"). project_type: type: string description: 'The type of project, determining its capabilities and how it''s used: - `web`: For traditional website A/B testing, MVT, Split URL, personalization, and deploys using the client-side JavaScript tracking snippet. - `fullstack`: For server-side experiments, feature flagging, and mobile app testing using Convert''s Full Stack SDKs. KB: "Full Stack Experiments on Convert". ' enum: - web - fullstack default: web reporting_settings: allOf: - type: object description: Project settings used for reporting properties: tested_visitors_quota: type: integer minimum: 0 description: Maximum number of tested visitors that is allowed to go through this project in a billing cycle. After that number has been reached, no experiences that have influence over tested visitors will run in this project. currency_symbol: type: string description: Currency symbol used in the reporting. maxLength: 10 blocked_ips: type: object nullable: true properties: single: type: array description: List of single ip addresses blocked. items: type: object minProperties: 1 properties: value: type: string format: ip-address name: type: string nullable: true maxLength: 64 required: - value range: type: array description: List of ip addresses range. items: type: object minProperties: 1 properties: start: type: string format: ip-address description: Starts from ip. end: type: string format: ip-address description: Ends with ip. name: type: string nullable: true maxLength: 64 required: - start - end description: A list of blocked IPs that are not allowed to be counted in the reports stop_tracking_goals_after_days: type: string description: 'Defines goals tracking life time: goals won''t be tracking after specified days unless used in active experiments.' enum: - 'OFF' - 1 day - 15 days - 30 days - 60 days smart_recommendations: type: boolean default: true description: 'Whether to run or not Smart Recommendations. ' keep_running_until_confidence: type: boolean description: 'If true, experiments do not auto-complete when planned sample size (100% progress) is reached alone. They only auto-complete when both planned sample size is reached and the confidence threshold is met. If false, experiments complete automatically when planned sample size is reached, regardless of confidence level. Default depends on automation toggle: when keep_winner or stop_loser is enabled, default is true; otherwise false. ' - $ref: '#/components/schemas/ExperienceReportingSettings' settings: type: object description: General operational settings for the project. properties: allow_crossdomain_tracking: type: boolean description: 'If true, enables automatic passing of Convert tracking cookies (`_conv_v`, `_conv_s`) as URL parameters when visitors navigate between different domains listed in this project''s `Active Websites`. Essential for maintaining consistent visitor identity and experiment bucketing across multiple domains (e.g., main site to a separate checkout domain). KB: "Cookies and Cross-Domain Testing". ' allow_gdpr: type: boolean description: 'If true, displays GDPR-related warnings in the Convert UI for settings or features that might have privacy implications (e.g., using certain audience conditions, enabling cross-domain tracking). KB: "GDPR warnings". ' data_anonymization: type: boolean description: 'If true, masks the names of experiences, variations, segments, and goals in the public JavaScript tracking snippet and in data sent to some third-party integrations. Instead of names, their numerical IDs are used. Enhances privacy by preventing public disclosure of experiment details. KB: "Prevent Experiment Details Data Leak with Data Anonymization". ' do_not_track: type: string enum: - 'OFF' - EU ONLY - EEA ONLY - Worldwide description: 'Configures if and how the project respects the "Do Not Track" (DNT) browser setting sent by visitors. - `OFF`: DNT signals are ignored. - `EU ONLY`: Respects DNT for visitors from EU countries. - `EEA ONLY`: Respects DNT for visitors from European Economic Area countries. - `Worldwide`: Respects DNT for all visitors globally. If respected, the Convert script may not load or track for visitors with DNT enabled. KB: "Respect Browser Do Not Track Setting". ' global_privacy_control: type: string enum: - 'OFF' - EU ONLY - EEA ONLY - Worldwide description: 'Configures if and how the project respects Global Privacy Control (GPC) signals sent by visitors'' browsers. Options are similar to `do_not_track`. If respected, data collection and tracking may be limited. KB: "Respect Browser Do Not Track Setting" - "Global Privacy Control (GPC)". ' include_jquery: type: boolean description: '(For legacy tracking script) If true, Convert''s tracking script will include its own version of the jQuery library. If your website already loads jQuery, set this to false to avoid loading it twice and improve page performance. Ensure your site''s jQuery loads before the Convert script. KB: "Do not include jQuery into the tracking scripts". ' include_jquery_v1: type: boolean default: false description: '(For new v1 tracking script) If true, includes a jQuery-compatible API within the Convert script, even though the core script is jQuery-independent. Set to true if your variation code or global JS relies on `convert.$()` syntax and your site doesn''t globally provide jQuery. The new script itself does not require jQuery to function. ' disable_spa_functionality: type: boolean default: false description: 'If true, disables Convert''s built-in optimizations and automatic handling for Single Page Applications (SPAs). Most SPAs work well with default SPA functionality enabled. Only disable if encountering specific conflicts or issues. KB: "SPA Optimizations", "Running Experiments on Single Page Apps". ' do_not_track_referral: type: boolean default: false description: 'If true, Convert will not store referral data (like HTTP referrer or UTM parameters) in visitor cookies for use across subsequent pages or sessions. Referral data will still be used for targeting on the initial page view where it''s present. ' time_zone: type: string description: 'The primary timezone for this project (e.g., "America/New_York", "Europe/London", "UTC"). This timezone is used for scheduling experiences, interpreting time-based audience conditions (like ''hour of day - project_tz''), and displaying timestamps in reports. ' utc_offset: $ref: '#/components/schemas/UTC_Offset' time_format: type: string description: Preferred time format for display within the Convert application UI for this project (12-hour or 24-hour). enum: - 12h - 24h debug_token: $ref: '#/components/schemas/GenerateDebugTokenData' disable_default_config: type: boolean default: false description: '(For Full Stack projects) If true, disables the default public configuration endpoint for this project. Access to project configuration via SDKs would then strictly require an authenticated SDK key. Enhances security for Full Stack projects. ' include_experience_collaborators: type: boolean default: false description: 'If true, experience details retrieved via API will include information about the experience owner and collaborators. KB: "Assign Visible Owners and Collaborators to Experiences". ' version: type: string maxLength: 50 nullable: true readOnly: true description: 'An internal version identifier for the project''s configuration. This version string changes whenever a modification is made that affects the tracking script''s content (e.g., updating an experience, goal, or project setting). Format: [ISO_datetime]-[incremental_number]. ' legacy_script: type: boolean default: false description: 'If true, this project is configured to use Convert''s legacy tracking script. If false, it uses the newer, more performant v1 tracking script. New projects default to `false`. Existing projects retain their current script setting. KB: "How to Install the Main Tag / Convert Tracking Code / JavaScript" - "The Tracking Script vs Legacy Tracking Script". ' ignore_unused_locations: type: boolean default: false description: 'If true, locations that are not currently associated with any active experiences will be excluded from the tracking script data downloaded by visitors. This can help reduce snippet size and improve performance. KB: "Benefits of Archiving Unused Goals, Locations, and Audiences." (Related concept for goals). ' personalization: type: object nullable: true description: Personalization settings. properties: enabled: type: boolean default: false description: Indicates whether personalization is enabled for this project. tracking_script: type: object description: 'Settings related to the management and versioning of the Convert tracking script for this project. Allows choosing a release strategy (manual, latest, scheduled) and viewing available/applied script versions. KB: "Tracking Script Version Management". ' additionalProperties: false nullable: true properties: current_version: description: The version string of the tracking script currently active for this project (e.g., "v2.11.3"). type: string previous_version: type: string description: The version string of the tracking script that was active before the `current_version`. Only available if a rollback is possible (manual mode). nullable: true readOnly: true available_versions: $ref: '#/components/schemas/TrackingScriptAvailableVersions' release: $ref: '#/components/schemas/TrackingScriptRelease' visitor_insights: allOf: - $ref: '#/components/schemas/VisitorInsightsBase' - type: object properties: id: type: string readOnly: true description: Id of the visitor insights nullable: true description: 'Settings for Convert Signals™ (Visitor Insights), which captures sessions with user frustration signals. KB: "Understanding Convert Signals™ and signals.observer.min.js script in Convert". ' integrations_settings: type: object description: Project-wide settings for various third-party integrations (e.g., Google Analytics, Crazy Egg, Hotjar). Experience-level settings can sometimes override these. properties: crazyegg: description: 'Settings for Crazy Egg integration. Requires API key and secret for certain functionalities like automatically creating snapshots for variations. KB: "Integrate Convert Experiences with Crazy Egg". ' properties: api_key: type: string maxLength: 100 nullable: true description: Crazy Egg API key for this project. api_secret: type: string maxLength: 100 nullable: true description: Crazy Egg API secret. Not returned in GET requests for security. google_analytics: $ref: '#/components/schemas/GA_Settings' kissmetrics: type: object properties: enabled: type: boolean description: If true, enables sending of Convert experiment data to Kissmetrics for this project. hotjar: type: object properties: enabled: type: boolean description: If true, enables sending of Convert experiment data (as tags) to Hotjar for this project. status: $ref: '#/components/schemas/ProjectStatuses' custom_domain: type: object nullable: true description: 'Configuration for using a custom domain (CNAME) to serve the Convert tracking script and receive tracking data. This can improve branding and potentially reduce issues with ad blockers or third-party cookie restrictions. Requires DNS setup. ' required: - domain properties: domain: type: string description: The custom domain name (e.g., "analytics.yourcompany.com") to be used for Convert tracking. maxLength: 150 pattern: ^.+\..+ status: type: string description: 'The activation status of the custom domain: - `pending`: DNS changes are made, awaiting verification and activation by Convert. - `active`: Custom domain is verified and actively being used for tracking. ' readOnly: true enum: - pending - active ownership_verification: type: array nullable: true readOnly: true description: DNS records and values required to verify ownership of the custom domain. Provided by Convert during setup. items: $ref: '#/components/schemas/CustomDomainOwnershipVerificationItem' version: type: string description: The version of the custom domain. readOnly: true environments: type: object description: 'A user-defined map of environments for this project (e.g., "production", "staging", "development"). Each environment has its own variant of the tracking script. Experiences are typically configured to run in a specific environment. The number of allowed environments depends on the account''s subscription plan. KB: "The Environments Feature". ' additionalProperties: type: object description: Defines a single environment. The key of this object in the parent `environments` map is the environment's machine-readable name (e.g., "production"). properties: label: type: string description: A user-friendly display name for the environment (e.g., "Production Live Site", "QA Staging Server"). is_default: type: boolean description: If true, this environment is considered the default for the project. New experiences might default to this environment if not specified. Only one environment can be the default. js: type: string nullable: true description: 'The environment-specific javascript code that will be loaded after the project''s global javascript. When an environment is specified in the request, this code will be appended to the project''s global_javascript with a newline character. ' required: - label - is_default default: production: label: Production is_default: true default_goals: type: array description: A list of Goal IDs that will be automatically added to any new experience created within this project. items: $ref: '#/components/schemas/SimpleGoalExpandable' default_audiences: type: array description: A list of Audience IDs that will be automatically added to any new experience created within this project. items: $ref: '#/components/schemas/SimpleAudienceExpandable' default_locations: type: array description: A list of Location IDs that will be automatically added to any new experience created within this project. items: $ref: '#/components/schemas/SimpleLocationExpandable' ExperienceIncludeFields: type: string enum: - alerts - goals - stats - variations - variations.changes - min_running_timestamp - max_running_timestamp - audiences - locations - collaborators ExperienceBase: type: object properties: description: description: An optional, detailed explanation of the experience's purpose, hypothesis, or specific changes being tested. type: string maxLength: 500 start_time: description: 'Unix timestamp (UTC) indicating when the experience was first activated (status changed to ''active''). Null or 0 if the experience has never been started. ' type: integer nullable: true end_time: description: 'Unix timestamp (UTC) indicating when the experience was last stopped (e.g., paused or completed). Null or 0 if the experience is currently active or has never been stopped. ' type: integer nullable: true global_js: description: 'Custom JavaScript code that will be executed for all visitors bucketed into this experience, before any variation-specific code is applied. Useful for setting up common functionalities or variables needed by multiple variations. KB: "Project, Experience, Variation Javascript" - "Global Experience JavaScript". ' type: string global_css: description: 'Custom CSS rules that will be applied for all visitors bucketed into this experience, before any variation-specific CSS. Useful for common styling adjustments needed across all variations. ' type: string name: type: string description: A user-defined, friendly name for the experience (e.g., "Homepage Headline Test", "Checkout Funnel Optimization Q3"). This name is prominent in the Convert UI and reports. maxLength: 100 key: description: 'A unique, machine-readable key or identifier for this experience within the project. Often auto-generated from the name if not specified, but can be user-defined for easier programmatic reference (e.g., in Full Stack SDKs or API calls). Example: "homepage_headline_test_q3". ' type: string maxLength: 32 primary_goal: type: integer description: 'The ID of the main conversion goal this experience is intended to optimize. Performance against this primary goal often determines the "winner" of an A/B test and is highlighted in reports. KB: "Experiment Report" - "Primary Goal". ' objective: type: string nullable: true description: 'A detailed statement outlining the objective of this experience. This often includes the hypothesis being tested, the problem it aims to solve, the proposed solution (the variations), and the expected impact on key metrics. Connects to the "Hypotheses (Compass)" feature. ' maxLength: 5000 settings: $ref: '#/components/schemas/ExperienceSettings' site_area: nullable: true description: '(Deprecated) The legacy way to define on which pages the experience should run, using a set of include/exclude rules based on URL components or page tags. Modern experiences should use the `locations` array instead for more flexible targeting. ' type: object properties: include: type: array items: $ref: '#/components/schemas/RuleElement' exclude: type: array items: $ref: '#/components/schemas/RuleElement' traffic_distribution: description: 'The percentage of total eligible website traffic (matching audience and location criteria) that will be directed into this entire experience. For example, a value of 50 means 50% of eligible visitors will participate, while the other 50% will see the default website content and not be tracked for this experience. The traffic within the experience is then further split among its variations based on `variations[].traffic_distribution`. KB: "What is an Traffic Distribution?". ' type: number minimum: 0 maximum: 100 multipleOf: 0.0001 type: $ref: '#/components/schemas/ExperienceTypes' url: description: 'The primary URL used to load the page in Convert''s Visual Editor when creating or editing this experience''s variations. For Split URL tests, this is typically the URL of the original (control) page. ' type: string format: uri maxLength: 2048 version: description: An internal version number for the experience, incremented upon certain modifications. type: number integrations: type: array description: 'A list of configurations for third-party integrations enabled for this experience (e.g., Google Analytics, Hotjar, Mixpanel). Each object specifies the `provider` and any provider-specific settings (like a GA Custom Dimension index). ' items: anyOf: - $ref: '#/components/schemas/ExperienceIntegrationBaidu' - $ref: '#/components/schemas/ExperienceIntegrationClicktale' - $ref: '#/components/schemas/ExperienceIntegrationClicky' - $ref: '#/components/schemas/ExperienceIntegrationCnzz' - $ref: '#/components/schemas/ExperienceIntegrationCrazyegg' - $ref: '#/components/schemas/ExperienceIntegrationEconda' - $ref: '#/components/schemas/ExperienceIntegrationEulerian' - $ref: '#/components/schemas/ExperienceIntegrationGoogleAnalytics' - $ref: '#/components/schemas/ExperienceIntegrationGosquared' - $ref: '#/components/schemas/ExperienceIntegrationHeapanalytics' - $ref: '#/components/schemas/ExperienceIntegrationHotjar' - $ref: '#/components/schemas/ExperienceIntegrationMicrosoftClarity' - $ref: '#/components/schemas/ExperienceIntegrationMixpanel' - $ref: '#/components/schemas/ExperienceIntegrationMouseflow' - $ref: '#/components/schemas/ExperienceIntegrationPiwik' - $ref: '#/components/schemas/ExperienceIntegrationSegmentio' - $ref: '#/components/schemas/ExperienceIntegrationSitecatalyst' - $ref: '#/components/schemas/ExperienceIntegrationWoopra' - $ref: '#/components/schemas/ExperienceIntegrationYsance' screenshots_info: type: array readOnly: true description: Information about the generation status and timestamps of screenshots for each variation in this experience. Used by the UI. items: type: object description: Screenshot metadata for a single variation. properties: variation_id: type: number description: The ID of the variation. in_progress_since: type: number nullable: true description: Unix timestamp (UTC) if screenshot generation is currently in progress for this variation, null otherwise. last_taken_screenshot_time: type: number nullable: true description: 'Unix timestamp (UTC) of when the latest screenshot for this variation was successfully captured. Null if no screenshot exists or if generation failed. ' environments: type: array deprecated: true description: (Deprecated) List of environment names where this experience will run. Use the singular `environment` field instead. items: type: string environment: type: string description: 'The specific environment (e.g., "production", "staging", "development") within the project where this experience is intended to run. This must match one of the environments defined at the project level. If not set, it typically defaults to the project''s default environment (often "production"). KB: "The Environments Feature". ' concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' ExperienceIntegrationGA3: allOf: - $ref: '#/components/schemas/GA_SettingsBase' - $ref: '#/components/schemas/ExperienceIntegrationBase' - $ref: '#/components/schemas/IntegrationGA3' - type: object properties: custom_dimension: type: string description: Custom dimension where experience data should be sent to. ClicksLinkGoalSettings: type: object additionalProperties: false properties: href: type: string description: 'The exact URL (or a pattern if regex is supported by the `triggering_rule`''s match type for this setting) found in the `href` attribute of the hyperlink(s) to be tracked. When a link with this `href` is clicked, the goal triggers. The page(s) where the link resides are defined in the goal''s `triggering_rule`. ' required: - href BulkSuccessData: allOf: - $ref: '#/components/schemas/SuccessData' - type: object properties: code: type: integer format: int32 errors: type: array description: List of unprocessed entities. Would be empty, if all passed entities processed items: $ref: '#/components/schemas/BulkEntityError' CountryMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithCountryCodeValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/CountryMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' BrowserNameMatchRulesTypes: type: string enum: - browser_name LocationRuleElement: oneOf: - $ref: '#/components/schemas/GenericTextMatchRule' - $ref: '#/components/schemas/GenericNumericMatchRule' - $ref: '#/components/schemas/GenericTextKeyValueMatchRule' - $ref: '#/components/schemas/GenericNumericKeyValueMatchRule' - $ref: '#/components/schemas/GenericBoolKeyValueMatchRule' - $ref: '#/components/schemas/JsConditionMatchRule' discriminator: propertyName: rule_type mapping: url: '#/components/schemas/GenericTextMatchRule' url_with_query: '#/components/schemas/GenericTextMatchRule' query_string: '#/components/schemas/GenericTextMatchRule' page_tag_page_type: '#/components/schemas/GenericTextMatchRule' page_tag_category_id: '#/components/schemas/GenericTextMatchRule' page_tag_category_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_sku: '#/components/schemas/GenericTextMatchRule' page_tag_product_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_price: '#/components/schemas/GenericNumericMatchRule' page_tag_customer_id: '#/components/schemas/GenericTextMatchRule' page_tag_custom_1: '#/components/schemas/GenericTextMatchRule' page_tag_custom_2: '#/components/schemas/GenericTextMatchRule' page_tag_custom_3: '#/components/schemas/GenericTextMatchRule' page_tag_custom_4: '#/components/schemas/GenericTextMatchRule' generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule' generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule' generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule' js_condition: '#/components/schemas/JsConditionMatchRule' ExperienceIntegrationGA4Base: allOf: - $ref: '#/components/schemas/GA_SettingsBase' - $ref: '#/components/schemas/ExperienceIntegrationBase' - $ref: '#/components/schemas/IntegrationGA4Base' BaseRuleWithBrowserNameValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Browser name used for matching type: string enum: - chrome - microsoft_ie - firefox - microsoft_edge - mozilla - opera - safari UTC_Offset: type: integer description: 'The time offset from Coordinated Universal Time (UTC) in seconds. For example, UTC-5 (EST) would be -18000. UTC+2 would be 7200. Used for interpreting or displaying date/time information according to a specific timezone. ' default: 0 minimum: -43200 maximum: 50400 ExperiencesList: type: array description: A list of experience objects. items: $ref: '#/components/schemas/Experience' ExperienceVariationBase: type: object properties: name: description: A user-defined, friendly name for the variation (e.g., "Original Homepage", "Variation B - Green Button", "Personalized Offer for New Users"). This name appears in reports and the Convert UI. type: string maxLength: 200 description: description: An optional, more detailed explanation of what this variation entails or what changes it implements compared to the original or other variations. type: string maxLength: 2000 nullable: true is_baseline: type: boolean description: 'If `true`, this variation is considered the baseline (control) against which other variations in the experience are compared for performance. Typically, the "Original" variation is the baseline. Only one variation per experience can be the baseline. Knowledge Base: "What is a Baseline?" ' traffic_distribution: description: 'The percentage of eligible traffic allocated to this specific variation. The sum of `traffic_distribution` for all active variations within an experience should ideally be 100% of the traffic allocated to the experience itself. For Multi-Armed Bandit (MAB) experiences, this value may be dynamically adjusted by the system. Knowledge Base: "What is an Traffic Distribution?" ' type: number minimum: 0 maximum: 100 multipleOf: 0.0001 key: description: 'A unique, machine-readable key or identifier for this variation within the project. Often auto-generated from the name if not specified, but can be user-defined for easier programmatic reference (e.g., in Full Stack SDKs). Example: "control", "treatment_A". ' type: string maxLength: 32 concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' ExperienceIntegrationYsance: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' - type: object properties: custom_dimension: type: string description: Custom dimension where experience data should be sent to. required: - custom_dimension VisitorDataExistsMatchRulesTypes: type: string enum: - visitor_data_exists ExperienceIntegrationHeapanalytics: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ExperienceIntegrationGA4: allOf: - $ref: '#/components/schemas/ExperienceIntegrationGA4Base' - $ref: '#/components/schemas/IntegrationGA4' - type: object properties: audiences: type: object description: List of GA audiences created for each of this experience's variations additionalProperties: type: string description: Variation ID is the key, value is the ID of the audience created inside GoogleAnalytics OnlyCount: type: object properties: onlyCount: type: boolean description: 'If set to `true` in a list request, the response will only contain the total count of matching items (`extra.pagination.items_count`) and will not include the actual item data. Useful for quickly getting totals without fetching full datasets. ' ExperienceAlert: type: object properties: code: type: string description: A machine-readable code for the alert type. enum: - not_in_project - max_visitors_reached - no_goals_set_up - no_visitors_tracked - no_conversions_tracked - experiments_completed title: type: string description: A short, human-readable title for the alert. description: type: string description: A more detailed explanation of the alert and potential actions to take. SuccessData: type: object properties: code: type: integer format: int32 message: type: string ProjectIntegrationGA4: allOf: - $ref: '#/components/schemas/ProjectGASettingsBase' - $ref: '#/components/schemas/IntegrationGA4' - type: object properties: no_wait_pageview: type: boolean description: Boolean indicating whether to wait for the page view event to complete before sending other events. BaseRuleWithNumericValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: The value used to match against 'rule_type' using 'matching' type: number DayOfWeekMatchRulesTypes: type: string enum: - local_time_day_of_week - project_time_day_of_week ExperienceUserCustomizations: type: array description: A list of user-defined key-value pairs for customizing UI elements or behavior related to this experience within the Convert application itself. These do not affect the live experiment seen by visitors. items: $ref: '#/components/schemas/UserCustomization' maxItems: 100 TrackingScriptReleaseLatest: allOf: - $ref: '#/components/schemas/TrackingScriptReleaseBase' - type: object additionalProperties: false properties: type: enum: - latest ChangeHistoryMethods: type: string enum: - api - app ExperienceChangeDefaultCodeMultipageDataBase: type: object description: Defines a standard code-based change that applies to a specific page within a Multi-page Funnel experiment. This allows different code (CSS, JS) to be applied to different steps of the funnel for the same variation. allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - defaultCodeMultipage data: type: object description: Describes structure for "defaultCodeMultipage" type of experience change additionalProperties: false properties: css: type: string nullable: true description: CSS code to be applied by this change js: type: string nullable: true description: Javascript code generated by the visual editor or written in the same structure, to be applied by this experience change custom_js: type: string description: Custom javascript code to be applied by this change nullable: true page_id: description: The **id** of the page connected to this change. type: string MinuteOfHourMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithMinuteOfHourValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/MinuteOfHourMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/NumericMatchingOptions' Pagination: type: object properties: current_page: description: The current page number being displayed from the paginated set. type: integer minimum: 1 items_count: description: The total number of items available across all pages for the current filter criteria. type: integer minimum: 0 items_per_page: description: The number of items included in the current page of results (matches `results_per_page` from the request). type: integer minimum: 0 pages_count: description: The total number of pages available for the current filter criteria and `results_per_page` setting. type: integer minimum: 0 CookieMatchRulesTypes: type: string enum: - cookie Domain: type: object description: A website domain data. properties: id: type: integer description: Domain ID. readOnly: true url: type: string maxLength: 150 pattern: ^(http|https):// description: Domain's homepage url code_installed: type: boolean description: Indicating whether code installed check passed sometimes in the past. default: false SimpleProjectExpandable: oneOf: - type: integer description: Project ID - $ref: '#/components/schemas/SimpleProject' ExperienceIntegrationHotjar: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' MultipageExperiencePage: description: Defines a single page within a 'multipage' (funnel) experience. allOf: - type: object properties: id: description: The ID of the page. type: string minLength: 1 maxLength: 2 pattern: ^[0-9a-z]{1,2}$ name: description: Name of the page type: string maxLength: 200 url: description: The url of page to load type: string maxLength: 2048 additionalProperties: false ExperienceChangeDefaultCodeDataUpdate: type: object description: Data for updating an existing 'defaultCode' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data LanguageMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithLanguageCodeValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/LanguageMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ExperienceIntegrationEconda: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' AudienceTypesNoUrl: description: 'Defines the behavior and persistence of an audience that does *not* use URL-based conditions in its rules. - `permanent`: Once a visitor matches the audience criteria, they are permanently considered part of this audience for future sessions and evaluations, even if their characteristics change later. The matching is checked only at the initial bucketing time. - `transient`: A visitor must match the audience criteria upon each evaluation (e.g., on every page load or when an experiment is rechecked) to be included. If conditions are no longer met, the visitor is no longer part of the audience for that specific evaluation. For Full Stack projects, only `transient` and `segmentation` (if applicable without URL rules) are valid. ' type: string enum: - permanent - transient ExperienceChangeDefaultCodeMultipageDataUpdate: type: object description: Data for updating an existing 'defaultCodeMultipage' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data VisitorTypeMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithVisitorTypeValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/VisitorTypeMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ExperienceChangeDefaultRedirectData: type: object description: Represents a 'defaultRedirect' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' BaseRuleWithHourOfDayValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Hour of day used for matching type: number minimum: 0 maximum: 24 SE_MabSettings: type: object description: 'Configuration for Multi-Armed Bandit (MAB) traffic allocation. If `null`, MAB is disabled and manual traffic allocation is used. MAB dynamically allocates more traffic to better-performing variations based on the `primary_metric` of the `primary_goal`. KB: "Multi-Armed Bandit (MAB) & Auto-Allocation in Convert". ' properties: strategy: description: 'The MAB algorithm used for dynamic traffic allocation: - `epsilon_greedy`: Mostly exploits the best-known variation, but explores others with a small probability (epsilon). - `ucb`: Upper Confidence Bound, balances exploration and exploitation based on uncertainty and potential. - `thompson_sampling`: (Default) A Bayesian approach that samples from posterior distributions to choose variations. ' type: string enum: - epsilon_greedy - ucb - thompson_sampling default: thompson_sampling exploration_rate: description: 'For `epsilon_greedy` strategy, this is the ''epsilon'' value (0 to 1) representing the probability of choosing a random variation for exploration instead of the current best-performing one. A higher value means more exploration. Default is often 0.1 or 0.3. ' type: number minimum: 0 maximum: 1 enum: - 0 - 0.1 - 0.2 - 0.3 - 0.4 - 0.5 - 0.6 - 0.7 - 0.8 - 0.9 - 1 default: 0.3 ExpandedExperienceVariationData: allOf: - $ref: '#/components/schemas/ExperienceVariationBaseExtended' - type: object properties: changes: description: An array of changes that this variation would apply. type: array items: oneOf: - type: integer description: Change ID - $ref: '#/components/schemas/ExperienceChange' PageNumber: type: object properties: page: type: integer minimum: 1 description: 'The page number for paginated results. For example, if `results_per_page` is 30, `page: 2` will retrieve items 31-60. Defaults to 1 if not specified. ' ExperienceCollaborator: type: object properties: first_name: type: string description: Collaborator's first name. last_name: type: string nullable: true description: Collaborator's last name. role: type: string description: The collaborator's access role within the project or account (e.g., 'Admin', 'Editor'). user_id: type: string description: The unique identifier for the collaborator user. is_author: type: boolean description: True if this collaborator is the original creator (author) of the experience. LiveDataExpandFields: type: string enum: - custom_segments - experiences - experiences.variation - conversion.goals - project CreateExperienceRequestData: description: Request body for creating a new experience. Requires at least `name`, `status`, `type`, and `url`. Other fields like variations, audiences, goals, and settings are highly recommended for a functional setup. required: - name - status - type - url allOf: - $ref: '#/components/schemas/ExperienceBase' - $ref: '#/components/schemas/ExperienceCreateUpdatePages' - type: object properties: status: $ref: '#/components/schemas/ExperienceCreateUpdateStatuses' audiences: $ref: '#/components/schemas/ExperienceCreateUpdateAudiences' locations: $ref: '#/components/schemas/ExperienceCreateUpdateLocations' goals: $ref: '#/components/schemas/ExperienceCreateUpdateGoals' tags: type: array description: The list of tags connected to this experience items: $ref: '#/components/schemas/TagExpandableRequest' customizations: $ref: '#/components/schemas/ExperienceUserCustomizations' variations: type: array description: 'The list of variations of this experience **Note:** This list is final, any variations not passed in the list which were previously connected to the experience will get deleted ' items: $ref: '#/components/schemas/ExperienceVariationCreate' ExperienceIntegrationMouseflow: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ExperienceChangeFullStackFeatureUpdate: type: object description: Data for updating an existing 'fullStackFeature' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeFullStackFeatureBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data ExperienceExpandFields: type: string enum: - project - audiences - goals - locations - variations - variations.changes - tags NoSettingsGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - visits_page - code_trigger ExperienceChangeCustomCodeDataUpdate: type: object description: Data for updating an existing 'customCode' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeCustomCodeDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data BulkDeleteExperiencesRequestData: type: object description: Request body for bulk deleting multiple experiences. Contains a list of experience IDs to be permanently removed. additionalProperties: false properties: id: $ref: '#/components/schemas/BulkExperienceIds' required: - id IntegrationGA4: allOf: - $ref: '#/components/schemas/IntegrationGA4Base' - type: object properties: propertyId: type: string description: ID of the ga4 property where data will be sent. Used internally for API calls to GoogleAnalytics ExperienceLiveDataFilteringOptions: type: object description: Filters for the live data feed of a single experience. properties: event_types: type: array nullable: true items: $ref: '#/components/schemas/LiveDataEventTypes' goals: type: array nullable: true description: A list of Goal IDs to filter conversion/transaction events for. maxItems: 20 items: type: integer segments: nullable: true allOf: - $ref: '#/components/schemas/ReportingSegmentsFilters' ReportingSegmentsVisitorType: type: string description: 'Classifies the visitor as either ''new'' or ''returning'' based on their site visit history (tracked by Convert cookies). - `new`: First-time visitor to the site (or no existing Convert cookie). - `returning`: Visitor has been to the site before. Allows report segmentation to compare behavior of new vs. returning users. Knowledge Base: "What is a New/Returning Visitor as Defined in an Experiment''s Audience?". ' enum: - new - returning BulkExperienceStatuses: type: string enum: - active - paused - archived GaGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - ga_import settings: $ref: '#/components/schemas/GaGoalSettings' ReportingSegmentsCampaign: type: string description: 'The campaign name associated with the visitor''s session, typically derived from `utm_campaign` URL parameters. Allows report segmentation by marketing campaign. Knowledge Base: "How Do You Fill Medium, Keyword and Source Name?". ' RuleObjectNoUrl: type: object nullable: true description: 'Similar to `RuleObject`, but the individual `RuleElementNoUrl` conditions within `OR_WHEN` arrays cannot include URL-based matching types. Used for ''permanent'' or ''transient'' audiences where URL context is not persistently evaluated or relevant for the audience type. ' properties: OR: description: An array of AND-blocks. type: array items: type: object properties: AND: description: An array of OR_WHEN-blocks. type: array items: type: object properties: OR_WHEN: description: An array of individual rule elements that do not involve URL matching. type: array items: $ref: '#/components/schemas/RuleElementNoUrl' TrackingScriptReleaseScheduled: allOf: - $ref: '#/components/schemas/TrackingScriptReleaseBase' - type: object additionalProperties: false properties: type: enum: - scheduled automatic_apply_on: $ref: '#/components/schemas/TrackingScriptReleaseAutomaticApplyOn' MinuteOfHourMatchRulesTypes: type: string enum: - local_time_minute_of_hour - project_time_minute_of_hour SE_ProcTypes: type: string description: 'The statistical methodology used for analyzing experiment results and determining winners. - `frequentist`: Traditional hypothesis testing approach using p-values and confidence intervals (e.g., T-tests). KB: "Statistical Methods Used". - `bayesian`: Bayesian statistical approach providing probabilities of one variation being better than another (e.g., Chance to Win). KB: "Statistical Models in Convert.com''s A/B Testing Platform". ' enum: - frequentist - bayesian SimpleGoal: type: object properties: id: description: The unique numerical identifier of the goal. type: integer name: description: The user-defined, friendly name of the goal. type: string ExperienceIntegrationGoogleAnalytics: oneOf: - $ref: '#/components/schemas/ExperienceIntegrationGA3' - $ref: '#/components/schemas/ExperienceIntegrationGA4' discriminator: propertyName: type mapping: ga3: '#/components/schemas/ExperienceIntegrationGA3' ga4: '#/components/schemas/ExperienceIntegrationGA4' LocationTrigger: description: 'Defines how and when an experience associated with this location should be activated for a visitor who matches the location''s rules. The `type` determines the activation mechanism. Knowledge Base: "Locations" - "Dynamic Website Triggers". ' oneOf: - $ref: '#/components/schemas/LocationTriggerDomElement' - $ref: '#/components/schemas/LocationTriggerCallback' - $ref: '#/components/schemas/LocationTriggerManual' - $ref: '#/components/schemas/LocationTriggerUponRun' discriminator: propertyName: type mapping: dom_element: '#/components/schemas/LocationTriggerDomElement' callback: '#/components/schemas/LocationTriggerCallback' manual: '#/components/schemas/LocationTriggerManual' upon_run: '#/components/schemas/LocationTriggerUponRun' LanguageMatchRulesTypes: type: string enum: - language LiveDataEventTypes: type: string enum: - view_experience - conversion - transaction Experience: allOf: - type: object properties: id: type: integer description: Experience's ID which identify an experience in the system project: $ref: '#/components/schemas/ProjectExpandable' alerts: type: array items: $ref: '#/components/schemas/ExperienceAlert' collaborators: type: array items: $ref: '#/components/schemas/ExperienceCollaborator' audiences: type: array description: The list of audiences for which this experience is supposed to run items: $ref: '#/components/schemas/AudienceExpandable' locations: type: array description: The list of locations on which this experience is supposed to run items: $ref: '#/components/schemas/LocationExpandable' goals: type: array description: The list of goals connected to this experience; experience of type deploy does not have goals attached; items: $ref: '#/components/schemas/GoalExpandable' tags: type: array description: The list of tags connected to this experience items: $ref: '#/components/schemas/TagExpandable' multipage_pages: type: array description: Only for multipage experience type items: $ref: '#/components/schemas/MultipageExperiencePage' customizations: $ref: '#/components/schemas/ExperienceUserCustomizations' stats: description: Experience's condensed statistics(only for experiences that get access to a report) type: object properties: goal_id: description: 'ID of the goal used to calculate the stats. It can be provided in the request or otherwise it defaults to experience''s Primary Goal ' type: integer conversions: description: Number of conversions recorded for after this experience was presented, for the primary goal or the goal given inside the request(if any) type: integer variations_observed_results: description: Results observed for each experience's variation type: array items: type: object properties: variation_id: description: Variation id type: integer improvement: description: Improvement observed over Baseline, as percentage type: number probability_beat_control: description: Calculated probability to beat control. Will be 0 if cannot be calculated yet type: number test_result: description: Result of the statistical test for this variation, compared to the baseline type: string enum: - winner - losing - notConcluded - noChange revenue_per_visitor: description: Calculated revenue per visitor. Applicable for revenue goals, otherwise null. type: number default: null mab_allocation: description: Calculated mab allocation. Applicable for experiences with enabled mab_allocation. type: number default: null visitors: description: Number of unique visitors tracked for this experience type: integer variations: type: array description: 'The list of variations of this experience. **Note:** This is the final list of variations so any variation not provided, which was previously connected, would get deleted. ' items: $ref: '#/components/schemas/ExperienceVariation' status: $ref: '#/components/schemas/ExperienceStatuses' - $ref: '#/components/schemas/ExperienceBase' GoalTriggeredMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithGoalTriggeredValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/GoalTriggeredMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' CookieMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithStringValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/CookieMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/CookieMatchingOptions' key: description: The name of the cookie which value is compared to the given rule value type: string ExperienceIntegrationMixpanel: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ExperienceIntegrationCrazyegg: description: 'Configuration for integrating with Crazy Egg. Convert sends experiment and variation data to allow segmentation of Crazy Egg heatmaps and recordings by variation. Project-level API key and secret for Crazy Egg might be required for some functionalities (not specified here, but in KB for other tools). KB: "Integrate Convert Experiences with Crazy Egg". ' allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ExperienceChangeDefaultRedirectDataBase: type: object description: Defines a URL redirect, typically used in Split URL experiments. It specifies how to match an original URL and construct the URL for the variation page. allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - defaultRedirect data: type: object description: Describes structure for "defaultRedirect" type of experience change additionalProperties: false properties: case_sensitive: type: boolean description: Defines whether the URL matching is case sensitive or not original_pattern: type: string description: Pattern for matching the Original URL in order to construct the redirect URL variation_pattern: type: string description: String used to construct the variation redirect URL. This string can contain matches from original_url or it can be a standard URL BaseRule: type: object required: - rule_type properties: rule_type: description: 'The specific attribute or condition to evaluate. Examples: ''url'', ''cookie'', ''browser_name'', ''js_condition'', ''page_tag_product_price''. The allowed `rule_type` values depend on whether the rule is for an Audience (which can use visitor and page content attributes if it''s a ''segmentation'' type) or a Location (typically URL or page tag based). ' type: string SegmentBucketedMatchRulesTypes: type: string enum: - bucketed_into_segment LocationDomTriggerEvents: type: string description: 'The type of user interaction with a DOM element that will trigger the experience: - `click`: Activates when the element is clicked. - `hover`: Activates when the mouse pointer hovers over the element (mouseenter). - `in_view`: Activates when the element becomes visible in the browser''s viewport (e.g., user scrolls to it). KB: "Launch Experiments Using Custom JavaScript When Elements Appear in DOM". - `change`: Activates when the value of a form element (like input, select, textarea) changes. ' enum: - click - hover - in_view - change AccessRoleNames: type: string description: 'The predefined names for user access roles within the Convert system. Each role grants a specific set of permissions. - `owner`: Highest level, full control over account, billing, users, and all projects. Typically the account creator. - `account_manager`: Broad administrative rights over the account, often including billing and user management, but might not be able to delete the account itself. - `admin`: Full control over projects they are assigned to, including creating/editing/deleting experiences, goals, audiences, and managing project settings. May also manage project-level collaborators. - `browse`: Read-only access. Can view experiences, reports, and settings but cannot make changes. - `edit`: Can create and modify entities like experiences, goals, audiences within assigned projects, but typically cannot activate/publish experiences or manage project settings. - `publish`: Can do everything an ''editor'' can, plus activate/pause/complete experiences. - `review`: Can view and comment, but not make direct changes. Suited for stakeholders who need to approve or provide feedback. Knowledge Base: "Collaborators - Share With Multiple Users / Accounts" (describes access levels). ' enum: - owner - account_manager - admin - browse - edit - publish - review Tag: type: object description: 'Represents a tag (keyword or label) that can be associated with various Convert entities like experiences, goals, audiences, hypotheses, and observations. Tags help organize and categorize these entities for easier filtering, searching, and management. Knowledge Base: "Adding tags to your Experiences". ' properties: id: type: integer readOnly: true description: The unique numerical identifier for the tag. name: type: string description: The user-defined name of the tag (e.g., "Q3 Campaigns", "Homepage Tests", "High Priority", "Mobile Specific"). This is the primary identifier shown in the UI. maxLength: 100 description: type: string description: (Optional) A brief explanation of the tag's purpose or the criteria for its application. maxLength: 200 nullable: true BaseRuleWithCountryCodeValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: The 2 letter ISO country code used for matching type: string minLength: 2 maxLength: 2 ExperienceVariation: anyOf: - type: integer description: Variation ID - $ref: '#/components/schemas/CollapsedExperienceVariationData' - $ref: '#/components/schemas/ExpandedExperienceVariationData' BrowserNameMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithBrowserNameValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/BrowserNameMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' SimpleAudienceSegment: type: object properties: id: description: The unique numerical identifier of the segment (audience). type: integer name: description: The user-defined, friendly name of the segment. type: string GoalStats: type: object readOnly: true properties: conversions_last_48h: type: integer description: The total number of times this goal has been triggered (converted) across all experiences in the last 48 hours. Useful for verifying if a goal is actively tracking. times_used: type: integer description: The number of active (non-archived) experiences that currently have this goal attached for tracking. GaGoalSettings: type: object additionalProperties: false properties: ga_event: description: The name of the event in Google Analytics (GA4) or the Goal configuration in Universal Analytics that this Convert goal corresponds to. When this GA event/goal occurs, the Convert goal is triggered. type: string ExperienceIntegrationClicky: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' GenericTextKeyValueMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithStringValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/GenericTextKeyValueMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/TextMatchingOptions' - $ref: '#/components/schemas/GenericKey' ExperienceChange: description: Represents a single, specific modification applied as part of an experience's variation. The exact structure and content depend on the `type` of change. oneOf: - $ref: '#/components/schemas/ExperienceChangeDefaultCodeData' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageData' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectData' - $ref: '#/components/schemas/ExperienceChangeCustomCodeData' - $ref: '#/components/schemas/ExperienceChangeRichStructureData' - $ref: '#/components/schemas/ExperienceChangeFullStackFeature' discriminator: propertyName: type mapping: richStructure: '#/components/schemas/ExperienceChangeRichStructureData' customCode: '#/components/schemas/ExperienceChangeCustomCodeData' defaultCode: '#/components/schemas/ExperienceChangeDefaultCodeData' defaultCodeMultipage: '#/components/schemas/ExperienceChangeDefaultCodeMultipageData' defaultRedirect: '#/components/schemas/ExperienceChangeDefaultRedirectData' fullStackFeature: '#/components/schemas/ExperienceChangeFullStackFeature' OsMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithOsValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/OsMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ExperienceChangeDefaultCodeData: type: object description: Represents a 'defaultCode' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' IntegrationProvider: type: string description: 'Identifies the third-party analytics, heatmap, or data platform with which Convert Experiences is integrated for this specific experience. This allows experiment data (like experience ID and variation ID/name) to be sent to the selected provider. Knowledge Base has many articles on integrations, e.g., "Integrate Convert Experiences with Google Analytics", "Hotjar Integration". ' enum: - baidu - clicktale - clicky - cnzz - crazyegg - econda - eulerian - google_analytics - gosquared - heapanalytics - hotjar - microsoft_clarity - mixpanel - mouseflow - piwik - segmentio - sitecatalyst - woopra - ysance JsConditionMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithJsCodeValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/JsConditionMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' GenericBoolMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithBooleanValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/BoolMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ExperienceReportToken: type: object properties: id: type: integer description: The ID of the experience this token pertains to. token: type: string description: The generated access token string. expiration: type: integer description: Unix timestamp (UTC) indicating when this token will expire and no longer be valid. GenericBoolKeyValueMatchRulesTypes: type: string enum: - generic_bool_key_value ExperienceVariationCreate: allOf: - $ref: '#/components/schemas/ExperienceVariationBase' - type: object required: - name properties: changes: description: 'An array of changes that this variation would apply. ' type: array items: $ref: '#/components/schemas/ExperienceChangeAdd' BoolMatchRulesTypes: type: string enum: - bucketed_into_experience - is_desktop - is_mobile - is_tablet CountryMatchRulesTypes: type: string enum: - country ProjectExpandable: readOnly: true anyOf: - type: integer description: Project ID to which the data belongs to - $ref: '#/components/schemas/Project' ExperienceIntegrationPiwik: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' - type: object properties: custom_dimension: type: string description: Custom dimension where experience data should be sent to. required: - custom_dimension GenericTextMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithStringValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/TextMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/TextMatchingOptions' ExperienceChangeDefaultCodeMultipageDataAdd: type: object description: Data for creating a new 'defaultCodeMultipage' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataBase' - properties: data: required: - page_id required: - type - data ExperienceVariationUpdate: allOf: - type: object properties: id: description: 'Variation unique ID. If not provided, a new variation would be created and connected to the experience **Note:** This is the final list of variations so any item not provided, which was previously connected, would get deleted. ' type: integer - $ref: '#/components/schemas/ExperienceVariationBase' - type: object properties: status: $ref: '#/components/schemas/ExperienceVariationStatuses' - type: object properties: changes: description: 'An array of changes that this variation would apply. If an ID is not provided for a change, a new one would be created and connected to the variation **Note:** This is the final list of changes so any item not provided, which was previously connected, would get deleted. ' type: array items: anyOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeAdd' - $ref: '#/components/schemas/ExperienceChangeUpdate' RuleObjectAudience: type: object nullable: true description: This one describes a logical rule that is being used inside the app for triggering goals, matching audiences etc properties: OR: description: This describes an outer set of blocks which are evaluated using OR's between them type: array items: type: object properties: AND: description: This describes a colections of logical blocks which are evaluated using AND's between them type: array items: type: object properties: OR_WHEN: description: This describes a colections of logical blocks which are evaluated using OR's between them type: array items: $ref: '#/components/schemas/RuleElementAudience' GenericNumericKeyValueMatchRulesTypes: type: string enum: - generic_numeric_key_value ExperienceSettings: allOf: - type: object description: Experience's settings list properties: split_url_settings: type: object description: A couple of settings only applicable to Split URL experiments properties: split_regex_support: type: boolean description: 'Whether regular expressions are supported in original/variation URLs of a split URL experiment or not. It only applies to **experience_type** - **split_url** ' split_add_query_params: type: boolean description: 'Whether original/variation urls have incorporated or not the needed regular expression to copy query string parameters from one to the other in the redirect process. It only applies to **experience_type** - **split_url** and it''s only used internally in Convert''s app ' split_query_params_hide_regex: type: boolean description: 'Whether the user selected to hide or not the part of the regular expression automatically added by enabling **split_add_query_params**. It only applies to **experience_type** - **split_url** and it''s only used internally in Convert''s app ' matching_options: type: object description: Various settings used for matching the list of Audiences and Locations properties: audiences: $ref: '#/components/schemas/GenericListMatchingOptions' locations: $ref: '#/components/schemas/GenericListMatchingOptions' visitor_insights: type: object readOnly: true description: 'Visitor Insights (Signals) settings for this experience. Heatmap IDs are stored here when heatmaps are created for the experience''s variations. ' nullable: true properties: heatmaps: type: object readOnly: true description: Map of variation ID to heatmap ID. Populated when heatmaps are created for this experience (one heatmap per variation). additionalProperties: type: string description: Heatmap ID for the variation. nullable: true example: '1003100122': 507f1f77bcf86cd799439012 - $ref: '#/components/schemas/ExperienceReportingSettings' UpdateExperienceRequestData: description: Request body for updating an existing experience. Provide only the fields that need to be changed. The `variations`, `audiences`, `locations`, `goals`, `tags`, and `multipage_pages` arrays, if provided, will replace the existing corresponding lists for the experience. allOf: - $ref: '#/components/schemas/ExperienceBase' - $ref: '#/components/schemas/ExperienceCreateUpdatePages' - type: object properties: status: $ref: '#/components/schemas/ExperienceCreateUpdateStatuses' audiences: $ref: '#/components/schemas/ExperienceCreateUpdateAudiences' locations: $ref: '#/components/schemas/ExperienceCreateUpdateLocations' goals: $ref: '#/components/schemas/ExperienceCreateUpdateGoals' tags: type: array description: The list of tags connected to this experience items: $ref: '#/components/schemas/TagExpandableRequest' customizations: $ref: '#/components/schemas/ExperienceUserCustomizations' variations: type: array description: The list of variations of this experience items: $ref: '#/components/schemas/ExperienceVariationUpdate' LiveDataEvent: type: object description: Represents a single real-time tracking event, such as a visitor being exposed to an experience or triggering a conversion goal. properties: devices: description: 'A list of device categories the visitor''s device belongs to (e.g., "DESK" for desktop, "IPH" for iPhone, "ALLTAB" for any tablet). Based on User-Agent parsing. KB: "Targeting Mobile, Tablet, and Desktop". ' type: array items: $ref: '#/components/schemas/ReportingSegmentsDeviceCategories' browser: $ref: '#/components/schemas/ReportingSegmentsBrowser' country: $ref: '#/components/schemas/ReportingSegmentsCountry' visitor_type: $ref: '#/components/schemas/ReportingSegmentsVisitorType' campaign: allOf: - $ref: '#/components/schemas/ReportingSegmentsCampaign' nullable: true custom_segments: description: A list of custom Convert Audiences (of type 'segmentation') that this visitor is currently a member of. type: array items: $ref: '#/components/schemas/SimpleAudienceSegmentExpandable' nullable: true sources: description: The traffic source(s) attributed to the visitor's session (e.g., 'direct', 'referral', 'Search', 'Campaign'). Derived from UTM parameters or referrer. type: array items: $ref: '#/components/schemas/ReportingSegmentsSource' nullable: true event_type: $ref: '#/components/schemas/LiveDataEventTypes' experiences: type: array description: 'A list of experiences relevant to this event. - If `event_type` is ''view_experience'', this list contains the experience(s) the visitor was just bucketed into. - If `event_type` is ''conversion'' or ''transaction'', this list contains the experience(s) the visitor was part of when they triggered the goal/transaction. Each item can be an experience ID or an expanded simple experience object (ID, name, variation ID/name). ' items: $ref: '#/components/schemas/SimpleExperienceExpandable' nullable: true conversion: description: Details about the conversion event, present if `event_type` is 'conversion' or 'transaction'. type: object nullable: true properties: goals: type: array items: $ref: '#/components/schemas/SimpleGoalExpandable' products_ordered_count: type: integer description: For 'transaction' events, the number of distinct products included in the order. nullable: true revenue: type: number description: For 'transaction' events, the monetary value of the order. nullable: true project: allOf: - $ref: '#/components/schemas/SimpleProjectExpandable' timestamp: type: integer description: Unix timestamp (UTC) indicating precisely when this event occurred. BaseRuleWithStringValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: The value used to match against 'rule_type' using 'matching' type: string ExperienceChangeRichStructureData: type: object description: Represents a 'richStructure' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeRichStructureDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' VisualEditorUserAgents: description: Predefined User-Agent strings that the Visual Editor can emulate for responsive design and device-specific testing. type: string nullable: true enum: - chrome_desktop - chrome_ipad - chrome_iphone - chrome_android - safari_mac - safari_ipad - safari_iphone - firefox_desktop - firefox_ipad - firefox_iphone - firefox_android - edge_desktop - edge_tablet - brave_desktop - brave_ipad - brave_iphone - brave_android - opera_desktop - opera_ipad - opera_iphone - opera_android ChangeHistoryListResponseData: type: object properties: data: $ref: '#/components/schemas/ChangeHistoryList' extra: $ref: '#/components/schemas/Extra' GenerateDebugTokenData: type: object readOnly: true properties: value: type: string ttl: type: integer description: Unix timestamp (UTC) indicating when this debug token will expire and become invalid. SortDirection: type: object properties: sort_direction: type: string nullable: true default: desc description: 'The direction for sorting the list results, based on the `sort_by` field. - `asc`: Ascending order (e.g., A-Z, 1-10, oldest to newest). - `desc`: Descending order (e.g., Z-A, 10-1, newest to oldest). Defaults to `desc` (newest/highest first) if not specified. ' enum: - asc - desc LocationRuleObject: type: object nullable: true description: 'Defines the logical structure for combining multiple rule conditions for a Location. It uses a nested OR -> AND -> OR_WHEN structure, similar to Audience rules, but `LocationRuleElement` types are restricted to page content/URL attributes. ' properties: OR: description: An array of AND-blocks. The location matches if any of these AND-blocks match. type: array items: type: object properties: AND: description: An array of OR_WHEN-blocks. This AND-block matches if all its OR_WHEN-blocks match. type: array items: type: object properties: OR_WHEN: description: An array of individual `LocationRuleElement` conditions. This OR_WHEN-block matches if any of its rule elements match. type: array items: $ref: '#/components/schemas/LocationRuleElement' GenericListMatchingOptions: type: string enum: - any - all description: 'Defines how multiple conditions within a list (e.g., multiple audiences or locations linked to an experience) are logically combined: - `any`: The overall condition is met if *at least one* item in the list matches (logical OR). - `all`: The overall condition is met only if *all* items in the list match (logical AND). Default is typically ''any'' (OR). ' default: any BaseRuleWithOsValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Operating System name used for matching type: string enum: - android - iphone - ipod - ipad - windows - macos - linux SubmitsFormGoalSettings: type: object additionalProperties: false properties: action: type: string description: 'The URL specified in the `action` attribute of the HTML form(s) to be tracked. When a form submitting to this URL is successfully submitted, the goal triggers. The page(s) where the form resides are defined in the goal''s `triggering_rule`. ' required: - action ExperienceTypes: type: string description: 'The type of optimization activity: - `a/b`: Standard A/B test comparing an original page/element against one or more variations. Changes made via Visual Editor or code. KB: "What is an Experiment?". - `a/a`: Tests the original page against an identical copy of itself to validate tracking setup and ensure no inherent bias. KB: "A/A Experiments". - `mvt`: Multivariate test, testing combinations of changes across multiple sections of a page. KB: "Creating a Multivariate Experiment". - `split_url`: Redirects traffic between different URLs to test entirely different page versions. KB: "How do Split URL Experiments work?". - `multipage`: Tests a consistent set of changes across a sequence of pages (funnel). KB: "Create Multipage Experiences". - `deploy`: Rolls out a specific set of changes to a targeted audience without A/B comparison reporting. KB: "What about Deployments?". - `a/b_fullstack`: An A/B test conducted using a Full Stack SDK, potentially involving server-side changes. KB: "Full Stack Experiments on Convert". - `feature_rollout`: A Full Stack experience for gradually rolling out a new feature, often using feature flags. ' enum: - a/b - a/a - mvt - split_url - multipage - deploy - a/b_fullstack - feature_rollout ReportingSegmentsCustomSegment: description: 'The numerical ID of a custom Convert Audience (of type ''segmentation'') that the visitor is a member of. Allows report segmentation based on predefined custom segments (e.g., "High-Value Customers", "Engaged Users"). Knowledge Base: "Create Custom Segments". ' type: integer GenericNumericMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithNumericValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/NumericMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/NumericMatchingOptions' TrackingScriptRelease: oneOf: - $ref: '#/components/schemas/TrackingScriptReleaseManual' - $ref: '#/components/schemas/TrackingScriptReleaseLatest' - $ref: '#/components/schemas/TrackingScriptReleaseScheduled' discriminator: propertyName: type mapping: manual: '#/components/schemas/TrackingScriptReleaseManual' latest: '#/components/schemas/TrackingScriptReleaseLatest' scheduled: '#/components/schemas/TrackingScriptReleaseScheduled' ExperienceChangeUpdate: description: Data structure for updating an existing change within an experience variation. Requires the `id` of the change to be modified. oneOf: - $ref: '#/components/schemas/ExperienceChangeDefaultCodeDataUpdate' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataUpdate' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataUpdate' - $ref: '#/components/schemas/ExperienceChangeRichStructureDataUpdate' - $ref: '#/components/schemas/ExperienceChangeCustomCodeDataUpdate' - $ref: '#/components/schemas/ExperienceChangeFullStackFeatureUpdate' discriminator: propertyName: type mapping: richStructure: '#/components/schemas/ExperienceChangeRichStructureDataUpdate' customCode: '#/components/schemas/ExperienceChangeCustomCodeDataUpdate' defaultCode: '#/components/schemas/ExperienceChangeDefaultCodeDataUpdate' defaultCodeMultipage: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataUpdate' defaultRedirect: '#/components/schemas/ExperienceChangeDefaultRedirectDataUpdate' fullStackFeature: '#/components/schemas/ExperienceChangeFullStackFeatureUpdate' OsMatchRulesTypes: type: string enum: - os SimpleExperienceVariation: type: object properties: id: description: The unique numerical identifier of the variation. type: integer name: description: The user-defined, friendly name of the variation. type: string RevenueGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - revenue settings: $ref: '#/components/schemas/RevenueGoalSettings' ExperienceHistoryFilteringOptions: allOf: - type: object description: Filter Single Experience history list. properties: methods: type: array nullable: true items: $ref: '#/components/schemas/ChangeHistoryMethods' objects: type: array nullable: true items: $ref: '#/components/schemas/ExperienceHistoryObjects' sort_by: type: string nullable: true default: timestamp description: "A value to sort history list by specific field(s)\n\n Defaults to **timestamp** if not provided\n" enum: - timestamp - event - object variations: description: List of variations ids type: array nullable: true items: type: number maxItems: 100 changes: description: List of changes ids type: array nullable: true items: type: number maxItems: 100 author_id: type: string nullable: true description: The id of the author who made changes - $ref: '#/components/schemas/ChangeHistoryExpandParameter' - $ref: '#/components/schemas/ResultsPerPage' - $ref: '#/components/schemas/SortDirection' GetExperienceLiveDataRequestData: allOf: - $ref: '#/components/schemas/ExperienceLiveDataFilteringOptions' - $ref: '#/components/schemas/LiveDataExpandParameter' ExperienceChangeFullStackFeature: type: object description: Represents a 'fullStackFeature' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeFullStackFeatureBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' ExperiencesListResponseData: type: object description: Response containing a list of experiences within a project, along with pagination details if applicable. properties: data: $ref: '#/components/schemas/ExperiencesList' extra: $ref: '#/components/schemas/Extra' ExperienceChangeCustomCodeDataBase: type: object description: Defines a change applied purely through custom-written CSS and/or JavaScript code, bypassing the Visual Editor's generated code. This offers maximum flexibility for developers. allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - customCode data: type: object description: Describes structure for "defaultCode" type of experience change additionalProperties: false properties: css: type: string nullable: true description: CSS code to be applied by this change js: type: string description: Custom javascript code to be applied by this change nullable: true page_id: description: The **id** of the page connected to this change, in case this is a **multi-page** experiment type: string Project: description: 'Represents a Convert project, which is a container for organizing a set of related optimization activities (experiences), their goals, target audiences, associated website domains, and collaborators. Each project has its own unique tracking script. Knowledge Base: "What is a Project?". ' allOf: - $ref: '#/components/schemas/BaseProject' - type: object properties: id: type: integer description: Unique identifier representing a specific project in an user account. The project Id is part of the tracking snippet accessRole: $ref: '#/components/schemas/AccessRoleNames' owner_email: type: string description: Used only internally - An email of project owner. This field will exist only if project type is shared. account_id: type: integer description: The unique ID of the account under which this project is created. Account ID is also part of the tracking snippet created_at: type: integer description: Unix timestamp when project was created, in UTC time. modified_at: type: integer description: Unix timestamp when project was last modified, in UTC time. tracking_snippet: type: string description: The tracking code that needs to be placed on site in order to serve experiences from this project. updateMetadata: type: object description: 'Live update status for CDN invalidation of this project''s data and JS bundle. These fields allow the UI to inform the user when changes are pending and when they took effect. All timestamps are in seconds (UTC). ' properties: pendingChanges: type: object description: Flags indicating if changes are pending CDN invalidation. properties: data: type: boolean description: True if data changes are pending CDN invalidation. js: type: boolean description: True if JS bundle changes are pending CDN invalidation. lastInvalidation: type: object description: Timestamps for the last completed CDN invalidations. properties: js: type: integer nullable: true description: Timestamp (seconds) when the last JS CDN invalidation completed. data: type: integer nullable: true description: Timestamp (seconds) when the last Data CDN invalidation completed. nextInvalidation: type: object description: Timestamps for the nearest scheduled CDN invalidations. properties: js: type: integer nullable: true description: The nearest scheduled CDN invalidation time (seconds) for the JS bundle if pending. data: type: integer nullable: true description: The nearest scheduled CDN invalidation time (seconds) for Data if pending. type: type: string description: Used only internally - A value which describes project ownership. Can be own or shared. enum: - own - shared stats: type: object description: Various stats for this project. Optional field, controlled using [include fields](#tag/Optional-Fields) properties: visitor_data: type: object description: Visitor Data usage statistics for current project properties: visitor_profiles_count: type: integer description: The total count of Visitor Data records inside current project. visitor_profiles_fields_count: type: integer description: The total count of Visitor Data Placeholders inside current project. active_personalised_experiences_count: type: integer description: The total count of active experiences that use Visitor Data Placeholders inside current project. google_analytics: description: Various stats related to google analytics integration type: object properties: used_slots: description: List of Google Analytics Classic implementation slots used by experiences integrations type: array items: type: integer deprecated: true used_dimensions: description: List of Google Analytics Universal implementation custom dimensions used by experiences integrations type: array items: type: integer usage: type: object description: Usage metrics for the current billing period properties: used_tested_users: type: integer description: The number of tested users counted into the current project in the current billing interval. This counter is used towards account's usage quota for certain billing plans. used_tested_visitors: type: integer description: The number of tested visitors counted into the current project in the current billing interval. This counter is used towards account's usage quota for certain billing plans. active_segments_count: type: integer description: Total number of Audiences with type segment inside this project. segments_count: type: integer deprecated: true description: Total number of Audiences with type segment inside this project. experiences_count: type: integer description: The total number of experiences existing inside current project. active_experiences_count: type: integer description: The number of active experiences existing inside current project. active_experiments_count: type: integer description: The number of active experiments inside the project besides deploys. active_goals_count: type: integer description: The number of active goals existing inside current project. visitor_insights: type: object description: Visitor Insights usage statistics for Convert Signals session recordings and Heatmaps for the current project. properties: usage: type: number format: float nullable: true description: 'The proportion of the allocated capacity used for session recordings and heatmaps for this project in the current billing period, expressed as a decimal between 0 and 1 (for example 0.75 means 75% of the allocation is used). ' reset_at: type: string format: date-time nullable: true description: 'The date and time when the capacity allocation for session recordings and heatmaps resets for the current billing period. ' domains: type: array items: $ref: '#/components/schemas/Domain' description: The list of websites included in this project. sdk_key: type: string readOnly: true nullable: true description: An autogenerated hash key used to retrieve data of fullstack project. Available only for fullstack projects type. LocationTriggerUponRun: allOf: - $ref: '#/components/schemas/LocationTriggerBase' - type: object properties: type: type: string enum: - upon_run additionalProperties: false ExperienceIntegrationEulerian: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ClicksElementGoalSettings: type: object additionalProperties: false properties: selector: type: string description: 'A CSS selector that identifies the HTML element(s) to be tracked. When any element matching this selector is clicked, the goal triggers. The page(s) where the element(s) reside are defined in the goal''s `triggering_rule`. ' only_where_experience_runs: type: boolean description: 'If true, triggers only on pages where the associated experience runs (Experience Location). Does not apply sitewide or to unrelated pages. ' required: - selector ExperienceReportingSettings: type: object description: Comprehensive settings governing how an experience's results are reported and analyzed. properties: primary_metric: description: 'The key performance indicator (KPI) that the statistical engine will primarily use to evaluate variations and determine winners, especially for MAB allocation or automated decisions. - `conversion_rate`: Based on the conversion rate of the primary goal. (Default) - `avg_revenue_visitor`: Based on Revenue Per Visitor (RPV) from a revenue goal. - `avg_products_ordered_visitor`: Based on Average Products Per Visitor (APPV) from a revenue goal. ' default: conversion_rate allOf: - $ref: '#/components/schemas/MetricTypes' stats_engine_processing: $ref: '#/components/schemas/SE_ProcSettings' confidence: description: (Deprecated) Legacy setting for confidence level. Use `stats_engine_processing.confidence` for Frequentist settings instead. deprecated: true type: number minimum: 0 keep_winner: description: 'If true, after an experience is marked as ''Completed'' because a winning variation was found, that winning variation will continue to receive 100% of the experience traffic. If false (default), traffic might revert to the original or be evenly split, or the experience might simply stop serving. KB: "My Experiments Stopped, What Happened?" - "An experiment can keep winning variation running". ' type: boolean min_order_value: description: (Deprecated) Minimum order value for transaction outliers. Use `outliers.order_value.min` instead. type: number minimum: 0 deprecated: true max_order_value: description: (Deprecated) Maximum order value for transaction outliers. Use `outliers.order_value.max` instead. type: number deprecated: true minimum: 0 outliers: description: 'Configuration for handling statistical outliers in order-related data (revenue and product counts) to prevent skewed results. KB: "Setting limits for Order Outliers" and "How Outlier Detection Works in Convert Reports and Exports". ' type: object additionalProperties: false properties: order_value: description: Outlier detection settings for the monetary value of orders. allOf: - $ref: '#/components/schemas/NumericOutlier' products_ordered_count: description: Outlier detection settings for the number of products in an order. allOf: - $ref: '#/components/schemas/NumericOutlier' max_running_time: description: 'The maximum number of days the experience should run. If no clear winner is found by this time, the experience may be automatically completed or paused. Set to 0 for no maximum limit. KB: "Setting an end date for running an experiment." (Mentions max days in Stats section). ' type: integer minimum: 0 maximum: 999 max_variation_visitors: description: (Deprecated) Maximum number of visitors per variation. Use `max_experience_visitors` or rely on statistical significance. deprecated: true type: integer minimum: 0 max_experience_visitors: description: The maximum total number of unique visitors to be included in the entire experience. Once reached, the experience may be automatically paused or completed. Set to 0 for no limit. type: integer minimum: 0 min_variation_conversions: type: integer minimum: 0 description: 'The minimum number of conversions a variation must achieve before its statistical significance (confidence/chance to win) is calculated and displayed in reports. Default is often 5. Helps avoid premature conclusions based on very small conversion numbers. KB: "Experiment Report" - "Confidence Level (statistical significance)". ' min_conversion_value: description: (Deprecated or unclear) Minimum conversion value per variation. Might relate to revenue goals or be a legacy setting. type: integer minimum: 0 deprecated: true min_running_time: description: 'The minimum number of days the experience must run before it can be automatically completed, even if a winner is found earlier. Helps ensure stability and account for weekly variations. Set to 0 for no minimum. KB: "My Experiments Stopped, What Happened?". ' type: integer minimum: 0 maximum: 999 min_variation_visitors: description: 'The minimum number of unique visitors each variation (including the original) must receive before statistical significance is calculated. Helps ensure a sufficient sample size for reliable results. ' type: integer minimum: 0 stop_loser: description: 'If true, variations that are statistically determined to be performing significantly worse than the baseline (losing variations) will be automatically stopped. Their traffic is then redistributed among the remaining active variations. KB: "My Experiments Stopped, What Happened?" - "An experiment can stop losing variations". ' type: boolean keep_running_until_confidence: type: boolean description: 'If true, the experiment does not auto-complete when planned sample size (100% progress) is reached alone. It only auto-completes when both planned sample size is reached and the confidence threshold is met. If false, the experiment completes automatically when planned sample size is reached, regardless of confidence level. Default depends on automation toggle: when keep_winner or stop_loser is enabled, default is true; otherwise false. ' srm_check: type: boolean nullable: true description: 'If true, enables Sample Ratio Mismatch (SRM) checks for the experience. SRM occurs when the distribution of visitors to variations significantly deviates from the intended traffic allocation, potentially indicating a problem with the experiment setup. If not provided at experience level, project-level setting is used. KB: "What is SRM?". ' visual_editor: description: Settings related to the behavior and configuration of Convert's Visual Editor when used for this experience. type: object properties: selector_blacklist: description: 'A list of keywords (newline-separated string). If an element''s attribute (class, ID) contains any of these keywords, that attribute part will be ignored when Convert generates CSS selectors for changes. Useful for avoiding dynamic or unstable selectors (e.g., from Squarespace, Bootstrap). KB: "My changes created on the Visual Editor don''t get saved when using Squarespace", "Issues while editing websites on Bootstrap". ' type: string nullable: true screen_width: description: The emulated screen width (in pixels) used when loading the page in the Visual Editor. Allows previewing and editing for different responsive views. type: number minimum: 240 maximum: 7680 nullable: true user_agent: $ref: '#/components/schemas/VisualEditorUserAgents' NumericOutlierTypes: description: 'The method used for detecting and handling order outliers in revenue or product count tracking: - `none`: No outlier detection is applied. - `min_max`: Orders with values below a specified minimum or above a specified maximum are capped at those boundaries. - `percentile`: Orders falling below a lower percentile or above an upper percentile are capped at the values corresponding to those percentiles. ' type: string enum: - none - min_max - percentile BaseRuleWithBooleanValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: The value used to match against 'rule_type' using 'matching' type: boolean CustomDomainOwnershipVerificationItem: type: object properties: name: type: string description: The name of the DNS record. type: $ref: '#/components/schemas/DNSRecordTypes' value: type: string description: The value of the DNS record. ExperienceIntegrationSitecatalyst: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' - type: object properties: evar: type: string description: Custom dimension where experience data should be sent to. required: - evar ExperienceHistoryObjects: type: string enum: - report - variation - change RuleObject: type: object nullable: true description: 'Defines the logical structure for combining multiple rule conditions. It uses a nested OR -> AND -> OR_WHEN structure. - The top-level `OR` array means if *any* of its contained AND blocks evaluate to true, the entire rule set is true. - Each object within the `OR` array has an `AND` array. For this AND block to be true, *all* of its contained OR_WHEN blocks must evaluate to true. - Each object within the `AND` array has an `OR_WHEN` array. For this OR_WHEN block to be true, *any* of its individual `RuleElement` conditions must evaluate to true. This structure allows for complex logical expressions like `(CondA AND CondB) OR (CondC AND CondD)`. ' properties: OR: description: An array of AND-blocks. The overall rule matches if any of these AND-blocks match. type: array items: type: object properties: AND: description: An array of OR_WHEN-blocks. This AND-block matches if all its OR_WHEN-blocks match. type: array items: type: object properties: OR_WHEN: description: An array of individual rule elements. This OR_WHEN-block matches if any of its rule elements match. type: array items: $ref: '#/components/schemas/RuleElement' ScrollPercentageGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - scroll_percentage settings: $ref: '#/components/schemas/ScrollPercentageGoalSettings' WeatherConditionMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithWeatherConditionValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/WeatherConditionMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/TextMatchingOptions' ExperienceChangeFullStackFeatureBase: type: object description: Defines a change for a Full Stack experiment that involves enabling or configuring a specific 'Feature' and its variables for this variation. allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - fullStackFeature data: type: object description: Describes structure for "fullStackFeature" type of experience change properties: feature_id: description: The **id** of the feature connected to this change type: integer variables_data: type: object description: A key-value object defined by user which describes the variables values. Where the key is variable name defined in connected feature and value is a variable's value with corresponding type SubmitsFormGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - submits_form settings: $ref: '#/components/schemas/SubmitsFormGoalSettings' NumericOutlierMinMax: allOf: - $ref: '#/components/schemas/NumericOutlierBase' - type: object additionalProperties: false properties: detection_type: enum: - min_max min: type: number description: Minimum value for the outlier detection, under which, the value is considered an outlier max: type: number description: Maximum value for the outlier detection, over which, the value is considered an outlier TagExpandableRequest: description: 'Represents a tag when associating it with another entity (like an experience or goal) during a create or update operation. Can be either the existing `integer` ID of the tag, or a `TagToCreate` object if a new tag should be created and associated on the fly. ' anyOf: - type: integer description: Tag ID - $ref: '#/components/schemas/TagToCreate' SimpleGoalExpandable: oneOf: - type: integer description: Goal ID - $ref: '#/components/schemas/SimpleGoal' ExperienceIntegrationBaidu: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' - type: object properties: custom_dimension: type: string description: Custom dimension where experience data should be sent to. required: - custom_dimension ClicksLinkGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - clicks_link settings: $ref: '#/components/schemas/ClicksLinkGoalSettings' AudienceWithUrlMatching: allOf: - $ref: '#/components/schemas/AudienceBase' - type: object properties: type: $ref: '#/components/schemas/AudienceTypesWithUrl' rules: nullable: true allOf: - $ref: '#/components/schemas/RuleObjectAudience' ErrorData: type: object properties: code: type: integer format: int32 message: oneOf: - type: string - type: array items: type: string fields: oneOf: - type: string - type: array items: type: string CollapsedExperienceVariationData: allOf: - type: object properties: id: description: Variation unique ID type: integer - type: object properties: changes: description: An array of changes that this variation would apply. type: array items: oneOf: - type: integer description: Change ID - $ref: '#/components/schemas/ExperienceChange' GenericTextKeyValueMatchRulesTypes: type: string enum: - generic_text_key_value GA_Settings: oneOf: - $ref: '#/components/schemas/ProjectIntegrationGA3' - $ref: '#/components/schemas/ProjectIntegrationGA4' discriminator: propertyName: type mapping: ga3: '#/components/schemas/ProjectIntegrationGA3' ga4: '#/components/schemas/ProjectIntegrationGA4' ClicksElementGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - clicks_element settings: $ref: '#/components/schemas/ClicksElementGoalSettings' SimpleLocation: type: object properties: id: type: integer description: The unique numerical identifier of the location. readOnly: true name: type: string description: The user-defined, friendly name of the location. maxLength: 100 SimpleExperienceExpandable: description: Represents an experience in a simplified form, either as its ID and a variation context, or including its name. oneOf: - $ref: '#/components/schemas/SimpleExperienceFlat' - $ref: '#/components/schemas/SimpleExperience' BaseMatch: type: object properties: negated: description: 'If `true`, the logical result of the match is inverted. For example, if `match_type` is ''contains'' and `value` is ''apple'', `negated: true` means the rule matches if the attribute *does not* contain ''apple''. ' type: boolean BulkEntityError: type: object additionalProperties: false properties: id: type: integer description: The unique identifier of the entity that could not be processed. message: type: string description: A message explaining the reason for the failure for this specific entity. LocationBase: type: object properties: id: type: integer description: The unique numerical identifier for the location. readOnly: true description: type: string description: An optional, more detailed explanation of this location's purpose or the pages/conditions it targets. maxLength: 500 status: $ref: '#/components/schemas/LocationStatuses' name: type: string description: A user-defined, friendly name for the location (e.g., "All Product Pages", "Homepage Only", "Checkout Funnel"). This name appears in the Convert UI when selecting locations for experiences. maxLength: 100 preset: type: boolean description: Indicates if this location is a system-defined preset (e.g., "All Pages"). Preset locations cannot be modified directly but can be used as templates. readOnly: true selected_default: type: boolean description: If true, this location will be automatically pre-selected when creating new experiences within the project. Useful for commonly targeted site areas. stats: type: object readOnly: true description: Statistics related to the usage of this location. properties: experiences_usage: description: 'The number of currently active experiences that are using this location for targeting. This is an optional field, included if ''stats.experiences_usage'' is specified in the `include` parameter. ' type: number default: 0 ChangeHistory: type: object description: Represents a single logged change event, providing an audit trail for actions performed on Convert entities. properties: event: type: string description: The type of action performed (e.g., 'create', 'update', 'delete', 'activate', 'pause'). info: type: object description: (Deprecated) Additional context about the change. Modern implementations use the `changes` object. deprecated: true properties: isAdminChange: type: boolean description: Whether the change was made by a Convert super-admin. text: type: string description: Legacy textual description of the change. changes: type: object description: 'Detailed record of what was modified. Contains `old` and `new` value snapshots for the changed fields. For a ''create'' event, `old` will be null. For a ''delete'' event, `new` will be null. This allows tracking specific attribute modifications. ' properties: old: type: object description: A snapshot of the relevant fields and their values *before* the change was applied. Null for creation events. nullable: true new: type: object description: A snapshot of the relevant fields and their values *after* the change was applied. Null for deletion events. nullable: true method: type: string description: 'How the change was initiated: ''api'' (programmatic) or ''app'' (via Convert UI). ' items: $ref: '#/components/schemas/ChangeHistoryMethods' object: type: string description: 'The type of Convert entity that was changed (e.g., ''experience'', ''goal'', ''audience''). ' object_id: type: string description: The unique identifier of the specific entity that was changed. parent_object_id: type: string nullable: true description: The unique identifier of the parent entity related to this change. For example, for a 'variation' or 'change', this will be the corresponding 'experience' id. user: type: string description: The name or email of the user (or API key name) that performed the action. timestamp: type: integer description: Unix timestamp (UTC) indicating when the change occurred. request_id: type: string nullable: true description: A unique identifier for the specific API request or UI action that resulted in this change, useful for tracing and debugging. project: nullable: true allOf: - $ref: '#/components/schemas/SimpleProjectExpandable' BaseRuleWithWeatherConditionValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: 'Weather Condition name used for matching. Full or partial condition. The weather provider used by Convert detects the following conditions: - Blizzard - Blowing snow - Cloudy - Fog - Freezing drizzle - Freezing fog - Heavy freezing drizzle - Heavy rain - Heavy rain at times - Light drizzle - Light freezing rain - Light rain - Mist - Moderate rain - Moderate rain at times - Overcast - Partly cloudy ' type: string LocationTriggerCallback: allOf: - $ref: '#/components/schemas/LocationTriggerBase' - type: object properties: type: type: string enum: - callback js: type: string description: "Describes the js callback that will be executed in order to fire the experience.\n\nIt is called with two arguments:\n- `activate` - a function that should be called when the experience should be activated\n- `options` - an object with the following properties:\n - `locationId` - id of the location that is being activated\n - `isActive` - boolean flag that indicates if the location is active\nExample:\n```\nfunction(activate, options) {\n if (options.isActive) {\n setTimeout(function() {\n /* it activates the experiences 1 second after the\n location trigger is initialized - at the load of the tracking script */\n activate();\n }, 1000);\n }\n}\n```\n" additionalProperties: false required: - js ExperienceIntegrationSegmentio: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' TextMatchRulesTypes: type: string enum: - url - url_with_query - query_string - campaign - keyword - medium - source_name - city - region - browser_version - user_agent - page_tag_page_type - page_tag_category_id - page_tag_category_name - page_tag_product_sku - page_tag_product_name - page_tag_customer_id - page_tag_custom_1 - page_tag_custom_2 - page_tag_custom_3 - page_tag_custom_4 - visitor_id Percentiles: type: number description: 'Standard percentile values used for outlier detection thresholds. For example, a `min` of 5 and `max` of 95 means orders in the bottom 5% and top 5% of values are considered outliers and capped. ' enum: - 1 - 5 - 10 - 25 - 50 - 75 - 90 - 95 - 99 BulkUpdateExperiencesRequestData: type: object description: Request body for bulk updating the status of multiple experiences. additionalProperties: false properties: id: $ref: '#/components/schemas/BulkExperienceIds' status: $ref: '#/components/schemas/BulkExperienceStatuses' required: - id - status BaseRuleWithSegmentBucketedValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: ID of the segment used for matching type: number NumericMatchingOptions: type: string enum: - equalsNumber - less - lessEqual NumericOutlier: oneOf: - $ref: '#/components/schemas/NumericOutlierNone' - $ref: '#/components/schemas/NumericOutlierMinMax' - $ref: '#/components/schemas/NumericOutlierPercentile' discriminator: propertyName: detection_type mapping: none: '#/components/schemas/NumericOutlierNone' min_max: '#/components/schemas/NumericOutlierMinMax' percentile: '#/components/schemas/NumericOutlierPercentile' ExperienceChangeDefaultRedirectDataUpdate: type: object description: Data for updating an existing 'defaultRedirect' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data GenericKey: type: object properties: key: description: The name of the key whose value will be retrieved and compared against the rule's `value`. type: string LocationTriggerBase: type: object properties: type: $ref: '#/components/schemas/LocationTriggerTypes' required: - type ExperienceIntegrationClicktale: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' SimpleAudienceSegmentExpandable: oneOf: - type: integer description: Segment ID - $ref: '#/components/schemas/SimpleAudienceSegment' AdvancedGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - advanced DayOfWeekMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithDayOfWeekValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/DayOfWeekMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/NumericMatchingOptions' SegmentBucketedMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithSegmentBucketedValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/SegmentBucketedMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ChangeHistoryExpandParameter: type: object properties: expand: type: array nullable: true description: 'Specifies linked objects to expand in the response, e.g., ''project''. Refer to the [Expanding Fields](#tag/Expandable-Fields) section. ' items: $ref: '#/components/schemas/ChangeHistoryExpandFields' Goal: oneOf: - $ref: '#/components/schemas/DomInteractionGoal' - $ref: '#/components/schemas/ScrollPercentageGoal' - $ref: '#/components/schemas/RevenueGoal' - $ref: '#/components/schemas/SubmitsFormGoal' - $ref: '#/components/schemas/ClicksLinkGoal' - $ref: '#/components/schemas/ClicksElementGoal' - $ref: '#/components/schemas/AdvancedGoal' - $ref: '#/components/schemas/NoSettingsGoal' - $ref: '#/components/schemas/GaGoal' discriminator: propertyName: type mapping: advanced: '#/components/schemas/AdvancedGoal' visits_page: '#/components/schemas/NoSettingsGoal' revenue: '#/components/schemas/RevenueGoal' clicks_link: '#/components/schemas/ClicksLinkGoal' submits_form: '#/components/schemas/SubmitsFormGoal' clicks_element: '#/components/schemas/ClicksElementGoal' dom_interaction: '#/components/schemas/DomInteractionGoal' scroll_percentage: '#/components/schemas/ScrollPercentageGoal' ga_import: '#/components/schemas/GaGoal' code_trigger: '#/components/schemas/NoSettingsGoal' ExperienceChangeRichStructureDataAdd: type: object description: Data for creating a new 'richStructure' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeRichStructureDataBase' - properties: data: required: - js required: - type - data ExperienceChangeRichStructureDataUpdate: type: object description: Data for updating an existing 'richStructure' type change, identified by its `id`. allOf: - $ref: '#/components/schemas/ExperienceChangeId' - $ref: '#/components/schemas/ExperienceChangeRichStructureDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' - required: - type - data TextMatchingOptions: type: string enum: - matches - regexMatches - contains - endsWith - startsWith ExperienceChangeAdd: description: Data structure for adding a new change to an experience variation. The `id` field is omitted as it will be assigned upon creation. oneOf: - $ref: '#/components/schemas/ExperienceChangeDefaultCodeDataAdd' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataAdd' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataAdd' - $ref: '#/components/schemas/ExperienceChangeCustomCodeDataAdd' - $ref: '#/components/schemas/ExperienceChangeRichStructureDataAdd' - $ref: '#/components/schemas/ExperienceChangeFullStackFeatureAdd' discriminator: propertyName: type mapping: richStructure: '#/components/schemas/ExperienceChangeRichStructureDataAdd' customCode: '#/components/schemas/ExperienceChangeCustomCodeDataAdd' defaultCode: '#/components/schemas/ExperienceChangeDefaultCodeDataAdd' defaultCodeMultipage: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataAdd' defaultRedirect: '#/components/schemas/ExperienceChangeDefaultRedirectDataAdd' fullStackFeature: '#/components/schemas/ExperienceChangeFullStackFeatureAdd' AudienceBase: type: object properties: id: type: integer description: The unique numerical identifier for the audience. readOnly: true description: type: string description: An optional, more detailed explanation of the audience's purpose or criteria, aiding in identification and management. maxLength: 500 status: $ref: '#/components/schemas/AudienceStatuses' name: type: string description: A user-defined, friendly name for the audience (e.g., "New Visitors from USA", "Repeat Purchasers - Mobile"). This name appears in the Convert UI when selecting audiences for experiences. maxLength: 100 preset: type: boolean description: Indicates if this audience is a system-defined preset (e.g., "All Visitors", "Mobile Users"). Preset audiences cannot be modified directly but can be used as templates. readOnly: true selected_default: type: boolean description: If true, this audience will be automatically pre-selected when creating new experiences within the project. Useful for commonly targeted segments. stats: type: object readOnly: true description: Statistics related to the usage of this audience. properties: experiences_usage: description: 'The number of currently active experiences that are using this audience for targeting. This is an optional field, included if ''stats.experiences_usage'' is specified in the `include` parameter. ' type: number default: 0 ExperienceIntegrationGosquared: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' GetExperiencesListRequestData: allOf: - $ref: '#/components/schemas/OnlyCount' - $ref: '#/components/schemas/ExperiencesListFilteringOptions' - $ref: '#/components/schemas/PageNumber' - type: object properties: include: description: 'Specifies the list of fields to be included in the response, which otherwise would be not sent. Read more in the section related to [Optional Fields](#tag/Optional-Fields) ' type: array items: $ref: '#/components/schemas/ExperienceIncludeFields' expand: description: 'Specifies the list of fields which would be expanded in the response. Otherwise, only their id would be returned. Read more in the section related to [Expanding Fields](#tag/Expandable-Fields)' type: array items: $ref: '#/components/schemas/ExperienceExpandFields' only: description: 'Only retrieve experiences with the given ids. ' type: array nullable: true items: type: integer maxItems: 100 except: description: 'Except experiences with the given ids. ' type: array items: type: integer maxItems: 100 ExperienceIntegrationCnzz: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' - type: object properties: custom_dimension: type: string description: Custom dimension where experience data should be sent to. required: - custom_dimension VisitorInsightsBase: type: object properties: enabled: type: boolean description: 'If true, Convert Signals™ is enabled for the project, allowing the system to capture sessions exhibiting user frustration or usability issues. ' obfuscate_text: type: boolean default: true description: 'True when all text elements (apart from placeholders) should be obfuscated inside a recording. ' sampling_rate: type: integer default: 5 enum: - 5 - 10 - 20 - 30 - 40 - 50 description: 'The percentage of visitors included in sampling for Convert Signals session recordings and Heatmaps for this project. Higher values collect data from a larger share of traffic and consume allocation faster. ' ExperienceChangeCustomCodeDataAdd: type: object description: Data for creating a new 'customCode' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeCustomCodeDataBase' - properties: data: required: - css - js required: - type - data LocationTriggerDomElement: allOf: - $ref: '#/components/schemas/LocationTriggerBase' - type: object properties: type: type: string enum: - dom_element selector: description: Describes html selector type: string events: type: array description: Events for LocationTriggerDomElement items: $ref: '#/components/schemas/LocationDomTriggerEvents' additionalProperties: false required: - selector - events DomInteractionGoal: allOf: - $ref: '#/components/schemas/GoalBase' - type: object properties: type: enum: - dom_interaction settings: $ref: '#/components/schemas/DomInteractionGoalSettings' ExperienceIntegrationMicrosoftClarity: description: 'Configuration for Microsoft Clarity. When enabled, experiment context can be sent for segmentation in Clarity recordings and heatmaps. No provider-specific settings beyond `enabled` are required; the Clarity project ID is configured in your site’s global JavaScript. ' allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' ChoiceMatchingOptions: type: string enum: - equals RevenueGoalSettings: type: object additionalProperties: false properties: triggering_type: type: string description: 'How this revenue goal is triggered: - `manual`: The goal is triggered by a specific JavaScript call (`_conv_q.push(["pushRevenue", ...])`) on the purchase confirmation page, which includes revenue amount and product count. The `triggering_rule` should be empty or not set. - `ga`: Convert attempts to automatically capture revenue data from a standard Google Analytics E-commerce tracking implementation when the `triggering_rule` (e.g., matching the confirmation page URL) is met. ' enum: - manual - ga required: - triggering_type NumericMatchRulesTypes: type: string enum: - avg_time_page - days_since_last_visit - pages_visited_count - visit_duration - visits_count - page_tag_product_price ProjectGASettingsBase: allOf: - $ref: '#/components/schemas/GA_SettingsBase' - type: object properties: auto_revenue_tracking: type: boolean description: Attempt to pull revenue data from Google Analytics Revenue Tracking code. VisitorDataExistsMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithBooleanValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/VisitorDataExistsMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' ResultsPerPage: type: object properties: results_per_page: type: integer nullable: true minimum: 0 maximum: 50 default: 30 description: 'Specifies the maximum number of items to return in a single page of results. Used for pagination. Default is 30, maximum is 50. ' ReportingSegmentsBrowser: type: string description: 'The web browser used by the visitor. Used for segmenting reports to understand how experiences perform across different browsers. Knowledge Base: "Using Basic and Advanced Post segmentation". ' enum: - internet_explorer - chrome - firefox - safari - edge - other ExperienceIntegrationBase: type: object properties: provider: $ref: '#/components/schemas/IntegrationProvider' enabled: description: 'If `true`, this integration is active for the experience, and Convert will attempt to send experiment data to the specified provider. If `false` or omitted when updating, the integration is disabled. ' type: boolean nullable: true required: - provider ExperienceChangeDefaultCodeDataAdd: type: object description: Data for creating a new 'defaultCode' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeDataBase' - properties: data: required: - js - css - custom_js required: - type - data GA_SettingsBase: type: object properties: enabled: type: boolean description: If true, integration with Google Analytics is enabled for this project or experience, allowing experiment data to be sent to GA. LocationTriggerManual: allOf: - $ref: '#/components/schemas/LocationTriggerBase' - type: object properties: type: type: string enum: - manual additionalProperties: false LocationStatuses: type: string description: 'The current status of a location: - `active`: The location is active and can be used for targeting experiences. - `archived`: The location is archived and no longer available for new experiences, but its definition is preserved. Archived locations can often be cloned. Knowledge Base: "Benefits of Archiving Unused Goals, Locations, and Audiences." ' enum: - active - archived default: active SE_ProcSettings: description: Overall settings for the statistical engine processing results for this experience. oneOf: - $ref: '#/components/schemas/SE_ProcSettingsFrequentist' - $ref: '#/components/schemas/SE_ProcSettingsBayesian' discriminator: propertyName: stats_type mapping: frequentist: '#/components/schemas/SE_ProcSettingsFrequentist' bayesian: '#/components/schemas/SE_ProcSettingsBayesian' LiveDataEventsListResponseData: type: object description: Response containing a list of recent live tracking events for a project or account. properties: data: $ref: '#/components/schemas/LiveDataEventsList' NumericOutlierNone: allOf: - $ref: '#/components/schemas/NumericOutlierBase' - type: object additionalProperties: false properties: detection_type: enum: - none JsConditionMatchRulesTypes: type: string enum: - js_condition IntegrationGA3: type: object properties: type: enum: - ga3 property_UA: type: string maxLength: 150 nullable: true description: The Universal Analytics Property ID (e.g., "UA-XXXXXXXX-Y") to which Convert experiment data will be sent. CloneExperienceRequestData: description: Parameters for cloning an experience. type: object properties: name: type: string description: (Optional) A new name for the cloned experience. If not provided, the name will be based on the original (e.g., "Copy of [Original Name]"). maxLength: 100 BaseRuleWithVisitorTypeValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Type of the visitors type: string enum: - new - returning ExperienceCreateUpdatePages: type: object properties: multipage_pages: type: array description: 'An array of page objects, each with an `id` (unique within this experience, e.g., ''p1''), `name`, and `url`. Changes for each of these pages are then defined within the `changes` array of each variation, referencing the `page_id`. When updating, this list replaces all existing pages; pages not in the list will be removed. ' items: $ref: '#/components/schemas/MultipageExperiencePage' ScrollPercentageGoalSettings: type: object additionalProperties: false properties: percentage: type: number description: The scroll depth percentage (e.g., 25, 50, 75, 100) that a visitor must reach on a page for this goal to trigger. The page(s) are defined in the goal's `triggering_rule`. required: - percentage TagExpandable: description: Represents a tag, either as its unique ID or as the full tag object (ID, name, description) if expanded. oneOf: - type: integer description: Tag ID - $ref: '#/components/schemas/Tag' ExperienceVariationStatuses: type: string enum: - stopped - running Audience: oneOf: - $ref: '#/components/schemas/AudienceWithoutUrlMatching' - $ref: '#/components/schemas/AudienceWithUrlMatching' discriminator: propertyName: type mapping: permanent: '#/components/schemas/AudienceWithoutUrlMatching' segmentation: '#/components/schemas/AudienceWithUrlMatching' transient: '#/components/schemas/AudienceWithoutUrlMatching' TriggerExperienceScreenshotsRequestData: type: object description: Parameters for triggering screenshot generation for an experience's variations. properties: variations: description: 'An optional list of specific variation IDs for which to generate/regenerate screenshots. If omitted, screenshots are triggered for all variations within the experience. ' type: array items: type: number force_regenerate: description: 'If set to true, screenshots are triggered for all variations within the experience, regardless of whether they have a manual screenshot uploaded. If omitted, screenshots are triggered only for variations that do not have a manual screenshot uploaded. ' type: boolean Extra: type: object properties: pagination: $ref: '#/components/schemas/Pagination' Location: allOf: - $ref: '#/components/schemas/LocationBase' - type: object properties: rules: nullable: true allOf: - $ref: '#/components/schemas/LocationRuleObject' trigger: $ref: '#/components/schemas/LocationTrigger' WeatherConditionMatchRulesTypes: type: string enum: - weather_condition BaseRuleWithDayOfWeekValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Day of week used for matching type: number minimum: 1 maximum: 7 SE_ProcSettingsFrequentist: allOf: - $ref: '#/components/schemas/SE_ProcSettingsBase' - type: object description: Stats Engine Settings needed for the Frequentist processing properties: stats_type: enum: - frequentist confidence: description: Confidence value to be used (in percent) type: number minimum: 50 maximum: 99 multipleOf: 1 power: description: Statistical power value to be used (in percent) type: number minimum: 10 maximum: 99 multipleOf: 1 test_type: description: The type of test applied to the data type: string default: two_tails enum: - one_tail - one_tail_left - one_tail_right - two_tails - sequential multiple_comparison_correction: description: Multiple comparison correction type: string enum: - none - bonferroni - sidak power_calculation_type: description: Power calculation type type: string default: dynamic_mde enum: - dynamic_mde - fixed_mde fixed_mde: description: Fixed minimum detectable effect (corresponding to the relative improvement in percent) type: number minimum: 0 maximum: 10000 mab_settings: allOf: - $ref: '#/components/schemas/SE_MabSettings' nullable: true RuleElementNoUrl: oneOf: - $ref: '#/components/schemas/GenericTextMatchRule' - $ref: '#/components/schemas/GenericNumericMatchRule' - $ref: '#/components/schemas/GenericBoolMatchRule' - $ref: '#/components/schemas/CookieMatchRule' - $ref: '#/components/schemas/GenericTextKeyValueMatchRule' - $ref: '#/components/schemas/GenericNumericKeyValueMatchRule' - $ref: '#/components/schemas/GenericBoolKeyValueMatchRule' - $ref: '#/components/schemas/CountryMatchRule' - $ref: '#/components/schemas/LanguageMatchRule' - $ref: '#/components/schemas/GoalTriggeredMatchRule' - $ref: '#/components/schemas/SegmentBucketedMatchRule' - $ref: '#/components/schemas/DayOfWeekMatchRule' - $ref: '#/components/schemas/HourOfDayMatchRule' - $ref: '#/components/schemas/MinuteOfHourMatchRule' - $ref: '#/components/schemas/BrowserNameMatchRule' - $ref: '#/components/schemas/OsMatchRule' - $ref: '#/components/schemas/WeatherConditionMatchRule' - $ref: '#/components/schemas/VisitorTypeMatchRule' - $ref: '#/components/schemas/JsConditionMatchRule' - $ref: '#/components/schemas/VisitorDataExistsMatchRule' discriminator: propertyName: rule_type mapping: campaign: '#/components/schemas/GenericTextMatchRule' keyword: '#/components/schemas/GenericTextMatchRule' medium: '#/components/schemas/GenericTextMatchRule' source_name: '#/components/schemas/GenericTextMatchRule' avg_time_page: '#/components/schemas/GenericNumericMatchRule' city: '#/components/schemas/GenericTextMatchRule' country: '#/components/schemas/CountryMatchRule' region: '#/components/schemas/GenericTextMatchRule' days_since_last_visit: '#/components/schemas/GenericNumericMatchRule' language: '#/components/schemas/LanguageMatchRule' pages_visited_count: '#/components/schemas/GenericNumericMatchRule' goal_triggered: '#/components/schemas/GoalTriggeredMatchRule' visit_duration: '#/components/schemas/GenericNumericMatchRule' cookie: '#/components/schemas/CookieMatchRule' visitor_type: '#/components/schemas/VisitorTypeMatchRule' visits_count: '#/components/schemas/GenericNumericMatchRule' bucketed_into_experience: '#/components/schemas/GenericBoolMatchRule' bucketed_into_segment: '#/components/schemas/SegmentBucketedMatchRule' local_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' local_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' local_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' project_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' project_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' project_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' browser_name: '#/components/schemas/BrowserNameMatchRule' browser_version: '#/components/schemas/GenericTextMatchRule' os: '#/components/schemas/OsMatchRule' user_agent: '#/components/schemas/GenericTextMatchRule' is_desktop: '#/components/schemas/GenericBoolMatchRule' is_mobile: '#/components/schemas/GenericBoolMatchRule' is_tablet: '#/components/schemas/GenericBoolMatchRule' js_condition: '#/components/schemas/JsConditionMatchRule' page_tag_page_type: '#/components/schemas/GenericTextMatchRule' page_tag_category_id: '#/components/schemas/GenericTextMatchRule' page_tag_category_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_sku: '#/components/schemas/GenericTextMatchRule' page_tag_product_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_price: '#/components/schemas/GenericNumericMatchRule' page_tag_customer_id: '#/components/schemas/GenericTextMatchRule' page_tag_custom_1: '#/components/schemas/GenericTextMatchRule' page_tag_custom_2: '#/components/schemas/GenericTextMatchRule' page_tag_custom_3: '#/components/schemas/GenericTextMatchRule' page_tag_custom_4: '#/components/schemas/GenericTextMatchRule' weather_condition: '#/components/schemas/WeatherConditionMatchRule' generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule' generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule' generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule' visitor_id: '#/components/schemas/GenericTextMatchRule' visitor_data_exists: '#/components/schemas/VisitorDataExistsMatchRule' MetricTypes: type: string description: 'The primary types of performance metrics calculated by the reporting engine for each goal. - `conversion_rate`: The percentage of visitors who completed the goal (Conversions / Visitors). - `avg_revenue_visitor`: Average Revenue Per Visitor (RPV = Total Revenue / Total Visitors). Applicable for revenue goals. - `avg_products_ordered_visitor`: Average Products Per Visitor (APPV = Total Products Ordered / Total Visitors). Applicable for revenue goals tracking product counts. - `average_order_value`: Average Order Value (AOV = Total Revenue / Total Conversions). Applicable for revenue goals tracking order value. - `average_products_per_order`: Average Products Per Order (APPO = Total Products Ordered Per Visitor / Total Conversions). Applicable for revenue goals tracking product counts. Knowledge Base: "Understanding Report Metrics in Convert". ' enum: - conversion_rate - avg_revenue_visitor - avg_products_ordered_visitor - average_order_value - average_products_per_order ChangeHistoryExpandFields: type: string enum: - project ProjectIntegrationGA3: allOf: - $ref: '#/components/schemas/ProjectGASettingsBase' - $ref: '#/components/schemas/IntegrationGA3' ExperienceChangeDefaultCodeDataBase: type: object description: Defines a standard code-based change, typically generated by the Visual Editor for modifications like text replacement, style changes, or element removal. It can include CSS, Convert's internal JS representation, and custom JS. allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - defaultCode data: type: object description: Describes structure for "defaultCode" type of experience change additionalProperties: false properties: css: type: string nullable: true description: CSS code to be applied by this change js: type: string nullable: true description: Javascript code generated by the visual editor or written in the same structure, to be applied by this experience change custom_js: type: string description: Custom javascript code to be applied by this change nullable: true NumericOutlierPercentile: allOf: - $ref: '#/components/schemas/NumericOutlierBase' - type: object additionalProperties: false properties: detection_type: enum: - percentile min: allOf: - description: Minimum percentile value for the outlier detection; values outside this percentile are considered outliers - $ref: '#/components/schemas/Percentiles' max: allOf: - description: Maximum percentile value for the outlier detection; values outside this percentile are considered outliers - $ref: '#/components/schemas/Percentiles' GenericNumericKeyValueMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithNumericValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/GenericNumericKeyValueMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/NumericMatchingOptions' - $ref: '#/components/schemas/GenericKey' HourOfDayMatchRulesTypes: type: string enum: - local_time_hour_of_day - project_time_hour_of_day ExperienceChangeRichStructureDataBase: type: object description: Defines a complex change, often involving multiple DOM manipulations or structured data, typically generated by advanced Visual Editor interactions or specific integrations. (Primarily for internal or advanced programmatic use). allOf: - $ref: '#/components/schemas/ExperienceChangeBase' - type: object properties: type: enum: - richStructure data: type: object description: Describes structure for "defaultCode" type of experience change additionalProperties: type: string description: Various key - value data properties: js: type: string nullable: true description: Javascript code generated by the visual editor or written in the same structure, to be applied by this experience change selector: type: string description: CSS selector of the element to which the change refers to, if this is a change concerning one DOM element page_id: description: The **id** of the page connected to this change, in case this is a **multi-page** experiment type: string ExperienceCreateUpdateStatuses: type: string description: 'The set of statuses a caller may set when creating or updating an experience. ' enum: - draft - active - paused - completed - scheduled - archived SimpleExperienceFlat: type: object properties: id: description: The unique numerical identifier of the experience. type: integer variation: $ref: '#/components/schemas/SimpleExperienceVariationExpandable' ExperienceChangeFullStackFeatureAdd: type: object description: Data for creating a new 'fullStackFeature' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeFullStackFeatureBase' - properties: data: required: - feature_id - variables_data required: - type - data GoalBase: type: object description: Base properties common to all types of conversion goals. properties: id: description: The unique numerical identifier for the goal. readOnly: true type: integer name: description: A user-defined, friendly name for the goal (e.g., "Completed Purchase", "Newsletter Signup", "Viewed Pricing Page"). This name appears in reports and when selecting goals for experiences. type: string maxLength: 100 key: description: 'A unique, machine-readable string key for this goal within the project. Often auto-generated from the name if not specified, but can be user-defined for easier programmatic reference. Example: "completed_purchase_main_flow". ' type: string maxLength: 32 description: description: An optional, more detailed explanation of what this goal measures or its significance to business objectives. type: string maxLength: 500 is_system: type: boolean readOnly: true description: Indicates if this is a system-defined default goal (e.g., "Decrease Bounce Rate", "Increase Engagement"). System goals cannot be deleted but their usage can be controlled. stats: $ref: '#/components/schemas/GoalStats' triggering_rule: nullable: true allOf: - $ref: '#/components/schemas/RuleObject' selected_default: type: boolean description: If true, this goal will be automatically pre-selected when creating new experiences within the project. Useful for commonly tracked primary conversions. status: $ref: '#/components/schemas/GoalStatuses' GoalExpandable: oneOf: - type: integer description: Goal ID - $ref: '#/components/schemas/Goal' ExperienceStatuses: type: string enum: - draft - active - paused - completed - scheduled - archived - deleted ConcurrencyKey: type: string nullable: true description: A server-generated hash that represents the object's state at the time of retrieval. When included in an update request, the operation will only succeed if the object hasn't been modified since this key was obtained. If another update has occurred in the meantime, the request will fail with a conflict error, requiring you to fetch the latest version and retry your update with the new concurrency_key. This implements optimistic concurrency control to prevent lost updates in concurrent scenarios. GoalStatuses: type: string description: 'The current status of a goal: - `active`: The goal is active and will track conversions for experiences it''s attached to. - `archived`: The goal is archived and will not track new conversions. Its historical data remains accessible in reports for experiences that previously used it. Archived goals can often be cloned or unarchived. Knowledge Base: "Benefits of Archiving Unused Goals, Locations, and Audiences." ' enum: - active - archived ExperienceIntegrationWoopra: allOf: - $ref: '#/components/schemas/ExperienceIntegrationBase' DNSRecordTypes: description: The type of the DNS record. type: string enum: - TXT - CNAME TrackingScriptReleaseBase: type: object description: Base settings for managing how new versions of the Convert tracking script are applied to the project. properties: type: type: string description: 'The chosen strategy for updating the tracking script: ''manual'', ''latest'' (auto-update), or ''scheduled''. ' TrackingScriptReleaseManual: allOf: - $ref: '#/components/schemas/TrackingScriptReleaseBase' - type: object additionalProperties: false properties: type: enum: - manual SimpleAudienceExpandable: anyOf: - type: integer description: Audience ID - $ref: '#/components/schemas/SimpleAudience' ExperienceChangeCustomCodeData: type: object description: Represents a 'customCode' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeCustomCodeDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' ExperienceCreateUpdateAudiences: type: array description: A list of Audience IDs to associate with the experience. Visitors must match criteria from these audiences (according to `settings.matching_options.audiences`) to be eligible. items: type: integer CookieMatchingOptions: type: string enum: - matches - regexMatches - contains - endsWith - startsWith - exists - doesNotExist BaseRuleWithLanguageCodeValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: The 2 letter ISO language code used for matching type: string minLength: 2 maxLength: 2 TagToCreate: allOf: - $ref: '#/components/schemas/Tag' required: - name SE_ProcSettingsBase: type: object properties: stats_type: $ref: '#/components/schemas/SE_ProcTypes' RuleElementAudience: oneOf: - $ref: '#/components/schemas/GenericTextMatchRule' - $ref: '#/components/schemas/GenericNumericMatchRule' - $ref: '#/components/schemas/GenericBoolMatchRule' - $ref: '#/components/schemas/GenericTextKeyValueMatchRule' - $ref: '#/components/schemas/GenericNumericKeyValueMatchRule' - $ref: '#/components/schemas/GenericBoolKeyValueMatchRule' - $ref: '#/components/schemas/CookieMatchRule' - $ref: '#/components/schemas/CountryMatchRule' - $ref: '#/components/schemas/LanguageMatchRule' - $ref: '#/components/schemas/GoalTriggeredMatchRule' - $ref: '#/components/schemas/SegmentBucketedMatchRule' - $ref: '#/components/schemas/DayOfWeekMatchRule' - $ref: '#/components/schemas/HourOfDayMatchRule' - $ref: '#/components/schemas/MinuteOfHourMatchRule' - $ref: '#/components/schemas/BrowserNameMatchRule' - $ref: '#/components/schemas/OsMatchRule' - $ref: '#/components/schemas/WeatherConditionMatchRule' - $ref: '#/components/schemas/VisitorTypeMatchRule' - $ref: '#/components/schemas/JsConditionMatchRule' - $ref: '#/components/schemas/VisitorDataExistsMatchRule' discriminator: propertyName: rule_type mapping: url: '#/components/schemas/GenericTextMatchRule' url_with_query: '#/components/schemas/GenericTextMatchRule' query_string: '#/components/schemas/GenericTextMatchRule' campaign: '#/components/schemas/GenericTextMatchRule' keyword: '#/components/schemas/GenericTextMatchRule' medium: '#/components/schemas/GenericTextMatchRule' source_name: '#/components/schemas/GenericTextMatchRule' avg_time_page: '#/components/schemas/GenericNumericMatchRule' city: '#/components/schemas/GenericTextMatchRule' country: '#/components/schemas/CountryMatchRule' region: '#/components/schemas/GenericTextMatchRule' days_since_last_visit: '#/components/schemas/GenericNumericMatchRule' language: '#/components/schemas/LanguageMatchRule' pages_visited_count: '#/components/schemas/GenericNumericMatchRule' goal_triggered: '#/components/schemas/GoalTriggeredMatchRule' visit_duration: '#/components/schemas/GenericNumericMatchRule' cookie: '#/components/schemas/CookieMatchRule' visitor_type: '#/components/schemas/VisitorTypeMatchRule' visits_count: '#/components/schemas/GenericNumericMatchRule' bucketed_into_experience: '#/components/schemas/GenericBoolMatchRule' bucketed_into_segment: '#/components/schemas/SegmentBucketedMatchRule' local_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' local_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' local_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' project_time_day_of_week: '#/components/schemas/DayOfWeekMatchRule' project_time_hour_of_day: '#/components/schemas/HourOfDayMatchRule' project_time_minute_of_hour: '#/components/schemas/MinuteOfHourMatchRule' browser_name: '#/components/schemas/BrowserNameMatchRule' browser_version: '#/components/schemas/GenericTextMatchRule' os: '#/components/schemas/OsMatchRule' user_agent: '#/components/schemas/GenericTextMatchRule' is_desktop: '#/components/schemas/GenericBoolMatchRule' is_mobile: '#/components/schemas/GenericBoolMatchRule' is_tablet: '#/components/schemas/GenericBoolMatchRule' js_condition: '#/components/schemas/JsConditionMatchRule' page_tag_page_type: '#/components/schemas/GenericTextMatchRule' page_tag_category_id: '#/components/schemas/GenericTextMatchRule' page_tag_category_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_sku: '#/components/schemas/GenericTextMatchRule' page_tag_product_name: '#/components/schemas/GenericTextMatchRule' page_tag_product_price: '#/components/schemas/GenericNumericMatchRule' page_tag_customer_id: '#/components/schemas/GenericTextMatchRule' page_tag_custom_1: '#/components/schemas/GenericTextMatchRule' page_tag_custom_2: '#/components/schemas/GenericTextMatchRule' page_tag_custom_3: '#/components/schemas/GenericTextMatchRule' page_tag_custom_4: '#/components/schemas/GenericTextMatchRule' weather_condition: '#/components/schemas/WeatherConditionMatchRule' generic_text_key_value: '#/components/schemas/GenericTextKeyValueMatchRule' generic_numeric_key_value: '#/components/schemas/GenericNumericKeyValueMatchRule' generic_bool_key_value: '#/components/schemas/GenericBoolKeyValueMatchRule' visitor_id: '#/components/schemas/GenericTextMatchRule' visitor_data_exists: '#/components/schemas/VisitorDataExistsMatchRule' TrackingScriptReleaseAutomaticApplyOn: type: object description: Configuration for scheduled tracking script updates, specifying the day of the week and time for automatic application of new versions. additionalProperties: false properties: day: type: integer description: Day of the week for scheduled updates (e.g., 1 for Monday, 7 for Sunday - convention needs to be clear). minimum: 1 maximum: 7 time: type: string pattern: ^([01]?[0-9]|2[0-4]):([0-5][0-9])$ description: Time of day (in project's timezone or UTC, needs clarification) in HH:MM format for scheduled updates (e.g., "03:00" for 3 AM). required: - day - time ExperienceVariationBaseExtended: allOf: - type: object properties: id: description: Variation unique ID type: integer readOnly: true - $ref: '#/components/schemas/ExperienceVariationBase' - type: object properties: status: $ref: '#/components/schemas/ExperienceVariationStatuses' SimpleExperience: allOf: - $ref: '#/components/schemas/SimpleExperienceFlat' - type: object properties: name: description: Experience name type: string required: - name AudienceStatuses: type: string description: 'The status of an audience: - `active`: The audience is currently active and can be used for targeting experiences. - `archived`: The audience is no longer active and cannot be used for new experiences, but its definition and past usage data are preserved. Archived audiences can often be cloned. Knowledge Base: "Benefits of Archiving Unused Goals, Locations, and Audiences." ' enum: - active - archived LiveDataExpandParameter: type: object properties: expand: type: array nullable: true description: 'Specifies linked objects to expand in the live data response. Refer to the [Expanding Fields](#tag/Expandable-Fields) section. ' items: $ref: '#/components/schemas/LiveDataExpandFields' SE_ProcSettingsBayesian: allOf: - $ref: '#/components/schemas/SE_ProcSettingsBase' - type: object description: Stats Engine Settings needed for the Bayesian processing properties: stats_type: enum: - bayesian decision_threshold: description: Threshold after which a decision can be made type: number minimum: 50 maximum: 99 multipleOf: 1 risk_threshold: description: The maximum acceptable level of potential loss if the chosen variant turns out to be worse than the control. It represents the threshold below which the relative risk of preferring a variant over the control must fall to consider the variant as a strong and relatively safe choice. type: number minimum: 1 maximum: 100 multipleOf: 1 mab_settings: allOf: - $ref: '#/components/schemas/SE_MabSettings' nullable: true AudienceTypesWithUrl: description: 'Defines the behavior for an audience that *includes* URL-based conditions in its rules. - `segmentation`: Once a visitor matches the audience criteria (which can include URL rules), they are tagged and permanently added to this segment. This segment membership persists across sessions and can be used for long-term targeting or analysis. URL rules are evaluated to determine initial entry into the segment. Knowledge Base: "A segment basically allows a visitor to qualify for an audience on subsequent visits even if they do not meet the audience conditions." ' type: string enum: - segmentation GoalTriggeredMatchRulesTypes: type: string enum: - goal_triggered ExperienceCreateUpdateGoals: type: array description: 'A list of Goal IDs to attach to the experience for conversion tracking. The first goal in this list is often implicitly considered the `primary_goal` unless explicitly set otherwise. Not applicable for ''deploy'' type experiences. ' items: type: integer ExperienceReportTokenRequestData: type: object properties: token_action: type: string enum: - regenerate - delete description: 'The action to perform on the report token. If omitted, the current token (if valid) is returned, or a new one is generated if none exists or the old one expired. ' token_expiration: type: integer minimum: 1 maximum: 48 description: 'The desired expiration time for a new or regenerated token, in hours from the current time. If not provided when generating a token, a default expiration (e.g., 24 hours) is used. ' NumericOutlierBase: type: object properties: detection_type: $ref: '#/components/schemas/NumericOutlierTypes' required: - detection_type ReportingSegmentsDeviceCategories: type: string description: 'The category of device used by the visitor. Enables report segmentation by device type. - `iPhone`, `other_phones`, `all_phones`: Mobile phone categories. - `desktop`: Desktop or laptop computer. - `iPad`, `other_tablets`, `all_tablets`: Tablet categories. Note: Some devices might fall into multiple categories (e.g., an iPhone is both ''iPhone'' and ''all_phones''). Knowledge Base: "Targeting Mobile, Tablet, and Desktop". ' enum: - iPhone - all_phones - other_phones - desktop - iPad - all_tablets - other_tablets ExperienceChangeDefaultRedirectDataAdd: type: object description: Data for creating a new 'defaultRedirect' type change. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultRedirectDataBase' - properties: data: required: - original_pattern - variation_pattern required: - type - data SimpleProject: type: object properties: id: description: The unique numerical identifier of the project. type: integer name: description: The user-defined, friendly name of the project. type: string reporting_settings: type: object description: Essential reporting settings for the project. properties: currency_symbol: type: string description: The default currency symbol used in reports for this project (e.g., "$", "€"). maxLength: 10 settings: type: object description: Essential general settings for the project. properties: time_zone: type: string description: The configured timezone for the project (e.g., "America/New_York"). utc_offset: $ref: '#/components/schemas/UTC_Offset' time_format: type: string description: Preferred time display format ('12h' or '24h') in the UI for this project. enum: - 12h - 24h ChangeHistoryList: type: array description: A list of change history records. items: $ref: '#/components/schemas/ChangeHistory' BaseRuleWithMinuteOfHourValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: Minute of hour used for matching type: number minimum: 1 maximum: 60 IntegrationGA4Base: type: object properties: type: enum: - ga4 measurementId: type: string description: The GA4 Measurement ID (e.g., "G-XXXXXXXXXX") for the data stream where Convert experiment data will be sent. BulkExperienceIds: type: array description: A list of unique numerical identifiers for experiences to be affected by a bulk operation. items: type: integer minItems: 1 maxItems: 100 SimpleAudience: type: object properties: id: description: The unique numerical identifier of the audience. type: integer name: description: The user-defined, friendly name of the audience. type: string HourOfDayMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithHourOfDayValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/HourOfDayMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/NumericMatchingOptions' TrackingScriptAvailableVersions: type: array description: A list of available versions for the Convert tracking script, each with a version tag, changelog, release date, and potentially the date it was or will be applied to the project. readOnly: true items: type: object properties: version: type: string description: The version tag string (e.g., "v2.11.3", "v3.0.0-beta1"). changelog: type: string nullable: true description: A summary of changes, improvements, and bug fixes included in this script version. released_date: type: integer format: int64 description: Unix timestamp (UTC) when this script version was officially released by Convert. apply_date: type: integer format: int64 nullable: true description: Unix timestamp (UTC) when this version was (or is scheduled to be) applied to the project, if using manual or scheduled updates. LiveDataEventsList: type: array description: A list of live data event objects, showing real-time interactions. items: $ref: '#/components/schemas/LiveDataEvent' ExperiencesListFilteringOptions: type: object allOf: - $ref: '#/components/schemas/ResultsPerPage' - $ref: '#/components/schemas/SortDirection' - type: object properties: goal_id: type: integer nullable: true description: 'Goal ID to be used for fetching experience''s stats. Only applicable for the experiences that have access to a report. Defaults to primary experience''s goal if none given. ' sort_by: type: string nullable: true default: id description: 'A value used to sort experiences by specific field Defaults to **id** if not provided ' enum: - id - conversions - improvement - name - start_time - end_time - status - primary_goal - key - environment search: type: string maxLength: 200 nullable: true description: A search string that would be used to search against Experience's name and description status: type: array nullable: true description: The status of the experiences to be returned; either of the below can be provided items: $ref: '#/components/schemas/ExperienceStatuses' type: type: array nullable: true description: The type of the experiences to be returned; either of the below can be provided items: $ref: '#/components/schemas/ExperienceTypes' tags: type: array nullable: true description: The list of tag ID's used to filter the list of returned experiences items: type: integer audiences: type: array nullable: true description: The list of audience ID's used to filter the list of returned experiences items: type: integer goals: type: array nullable: true description: The list of goal ID's used to filter the list of returned experiences items: type: integer features: type: array nullable: true description: The list of feature ID's used to filter the list of returned experiences items: type: integer hypotheses: type: array nullable: true description: The list of hypotheses ID's used to filter the list of returned experiences items: type: integer locations: type: array nullable: true description: The list of location ID's used to filter the list of returned experiences items: type: integer environments: type: array nullable: true description: The list of environments used to filter the list of returned experiences items: type: string BaseRuleWithGoalTriggeredValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: ID of the goal used for matching type: number DomInteractionGoalSettings: type: object additionalProperties: false properties: tracked_items: type: array description: An array defining one or more DOM elements and the interaction events on them that should trigger this goal. items: type: object description: Defines a single DOM element and event to track. properties: selector: type: string description: A CSS selector that identifies the HTML element(s) to monitor for interactions (e.g., "#submitButton", ".product-image"). event: type: string description: The specific DOM event to listen for on the selected element(s) (e.g., "click", "mouseover", "change", "focus"). required: - tracked_items BaseRuleWithJsCodeValue: allOf: - $ref: '#/components/schemas/BaseRule' - type: object properties: value: description: 'The JS code that would be executed when rule is checked. The return value of this JS code is what is gonna be matched against **true**(or **false** if **matching.negated = true** is provided) ' type: string SimpleExperienceVariationExpandable: oneOf: - type: integer description: Variation ID - $ref: '#/components/schemas/SimpleExperienceVariation' AudienceWithoutUrlMatching: allOf: - $ref: '#/components/schemas/AudienceBase' - type: object properties: type: $ref: '#/components/schemas/AudienceTypesNoUrl' rules: nullable: true allOf: - $ref: '#/components/schemas/RuleObjectNoUrl' GenericBoolKeyValueMatchRule: allOf: - $ref: '#/components/schemas/BaseRuleWithBooleanValue' - type: object required: - rule_type properties: rule_type: $ref: '#/components/schemas/GenericBoolKeyValueMatchRulesTypes' matching: allOf: - $ref: '#/components/schemas/BaseMatch' - type: object properties: match_type: $ref: '#/components/schemas/ChoiceMatchingOptions' - $ref: '#/components/schemas/GenericKey' ExperienceChangeDefaultCodeMultipageData: type: object description: Represents a 'defaultCodeMultipage' type change, including its system-assigned ID. allOf: - $ref: '#/components/schemas/ExperienceChangeIdReadOnly' - $ref: '#/components/schemas/ExperienceChangeDefaultCodeMultipageDataBase' - type: object properties: concurrency_key: $ref: '#/components/schemas/ConcurrencyKey' GetExperienceHistoryRequestData: allOf: - $ref: '#/components/schemas/OnlyCount' - $ref: '#/components/schemas/ExperienceHistoryFilteringOptions' - $ref: '#/components/schemas/PageNumber' requestBodies: BulkUpdateExperiencesRequest: content: application/json: schema: $ref: '#/components/schemas/BulkUpdateExperiencesRequestData' description: Contains a list of experience `id`s and the target `status` (e.g., 'active', 'paused', 'archived') to apply to all of them. Useful for managing multiple experiments efficiently. required: true CloneExperienceRequest: content: application/json: schema: $ref: '#/components/schemas/CloneExperienceRequestData' GetExperienceLiveDataRequest: content: application/json: schema: $ref: '#/components/schemas/GetExperienceLiveDataRequestData' description: Optional filters for experience live data, such as specific goal IDs or event types to include in the feed. UpdateExperienceRequest: content: application/json: schema: $ref: '#/components/schemas/UpdateExperienceRequestData' required: true GetExperiencesListRequest: content: application/json: schema: $ref: '#/components/schemas/GetExperiencesListRequestData' BulkDeleteExperiencesRequest: content: application/json: schema: $ref: '#/components/schemas/BulkDeleteExperiencesRequestData' required: true ExperienceReportTokenRequest: content: application/json: schema: $ref: '#/components/schemas/ExperienceReportTokenRequestData' GetExperienceHistoryRequest: content: application/json: schema: $ref: '#/components/schemas/GetExperienceHistoryRequestData' description: Filters for retrieving the change history of a specific experience. Allows specifying date ranges, users, types of experience components changed (e.g., 'variation', 'goal', 'audience_linkage'), and methods of change. CreateExperienceRequest: content: application/json: schema: $ref: '#/components/schemas/CreateExperienceRequestData' TriggerExperienceScreenshotsRequest: content: application/json: schema: $ref: '#/components/schemas/TriggerExperienceScreenshotsRequestData' responses: ChangeHistoryListResponse: description: A log of changes made within an account or project. Each entry details the `event` (e.g., 'create', 'update', 'delete'), the `object` changed (e.g., 'experience', 'goal'), `object_id`, `user` who made the change, `timestamp`, and `changes` (old and new values). content: application/json: schema: $ref: '#/components/schemas/ChangeHistoryListResponseData' BulkSuccessResponse: description: 'Indicates the outcome of a bulk operation (e.g., bulk update or delete). Provides a general success `message` and an `errors` array listing any entities that could not be processed, along with the reason for failure for each. ' content: application/json: schema: $ref: '#/components/schemas/BulkSuccessData' SuccessResponse: description: 'A generic success response, typically used for operations that don''t return specific data (like deletions or some updates). The `code` is usually 200, and `message` confirms the successful action. ' content: application/json: schema: $ref: '#/components/schemas/SuccessData' ExperienceResponse: description: Comprehensive details for a single experience, including its configuration, variations, associated audiences, locations, goals, integrations, and settings. content: application/json: schema: $ref: '#/components/schemas/Experience' ExperienceReportTokenResponse: description: Contains the generated `token` for read-only access to an experience's report and its `expiration` timestamp. content: application/json: schema: $ref: '#/components/schemas/ExperienceReportToken' ErrorResponse: description: 'Indicates an error occurred while processing the request. The `code` provides an HTTP status code, `message` offers a human-readable explanation or an array of validation errors, and `fields` (if present) specifies which input fields were problematic. ' content: application/json: schema: $ref: '#/components/schemas/ErrorData' LiveDataEventsListResponse: description: A list of recent live tracking events, each detailing the event type (view_experience, conversion, transaction), associated experience/variation, visitor segments (device, browser, country), and timestamp. content: application/json: schema: $ref: '#/components/schemas/LiveDataEventsListResponseData' ExperiencesListResponse: description: A list of experiences (A/B tests, personalizations, etc.) within a project. Each entry includes summary information like ID, name, type, status, and potentially high-level stats depending on `include` parameters. content: application/json: schema: $ref: '#/components/schemas/ExperiencesListResponseData' securitySchemes: requestSigning: type: apiKey x-name-applicationId: Convert-Application-ID x-name-expire: Expire name: Authorization in: header description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information. ' secretKey: type: http scheme: bearer description: 'See **[API Key Authentication](#tag/API-KEY-Authentication)** for more information. ' cookieAuthentication: type: apiKey in: cookie name: sid description: Cookie authentication is used against Convert's own IdentityProvider or third party identity providers and is described more in the "[Cookie Authentication](#tag/Cookie-Authentication)" section x-tagGroups: - name: Client Authentication tags: - API KEY Authentication - Cookie Authentication - OAuth Authorization - name: Common Parameters tags: - Optional Fields - Expandable Fields - name: Requests tags: - User - Accounts - AI content - Collaborators - API Keys - Projects - SDK Keys - Experiences - Experience Variations - Experience Sections - Section Versions - Version Changes - Experiences Reports - Experiences Heatmaps - Goals - Hypotheses - Knowledge Bases - Observations - Locations - Audiences - Domains - Cdn Images - Files - Tags - Features - Visitor Insights - Visitors Data - Visitor Data Placeholders - OAuth