Convert Goals API

Goals measure how well your site fulfills your target objectives. A goal represents a completed activity, called a conversion, that contributes to the success of your business. Examples of goals include making a purchase (for an ecommerce site), completing a game level (for a mobile gaming site), or submitting a contact information form (for a marketing or lead generation site). Read more information about Goals.

OpenAPI Specification

convert-goals-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Convert Accounts Goals 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: Goals
  description: Goals measure how well your site fulfills your target objectives. A goal represents a completed activity, called a conversion, that contributes to the success of your business. Examples of goals include making a purchase (for an ecommerce site), completing a game level (for a mobile gaming site), or submitting a contact information form (for a marketing or lead generation site). Read more information about <a href="https://support.convert.com/hc/en-us/articles/204494109-Goals">Goals</a>.
paths:
  /accounts/{account_id}/projects/{project_id}/goals:
    post:
      operationId: getGoalsList
      summary: List goals within a project
      description: 'Retrieves a list of all conversion goals defined for a specific project.

        Goals are used to measure the success of experiences (e.g., purchases, sign-ups, page views).

        Supports filtering by status, type, name, and pagination.

        The Knowledge Base article "Goals" describes various goal types like ''Visit a specific page'', ''Revenue goal'', ''Click on a link'', etc.

        '
      tags:
      - Goals
      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/GetGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/GoalsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}:
    get:
      operationId: getGoal
      summary: Get details for a specific goal
      description: 'Retrieves detailed information about a single conversion goal, identified by its `goal_id`.

        This includes its name, type (e.g., ''visits_page'', ''revenue'', ''clicks_link''), configuration settings (like URL for page visit goals, or CSS selector for click goals), and triggering rules.

        The `include` parameter can fetch additional data like usage statistics.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be retrieved
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_key}:
    get:
      operationId: getGoalByKey
      summary: Get goal details by its unique key
      description: 'Retrieves detailed information about a single conversion goal, identified by its user-defined `goal_key`.

        Useful if you have a human-readable key for a goal. Otherwise, similar to getting a goal by ID.

        '
      tags:
      - Goals
      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: goal_key
        in: path
        required: true
        description: Key of the goal to be retrieved
        schema:
          type: string
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/add:
    post:
      operationId: createGoal
      summary: Create a new conversion goal
      description: 'Defines a new conversion goal within a project.

        Requires specifying the goal name and type (e.g., ''visits_page'', ''revenue'', ''clicks_link'', ''submits_form'', ''code_trigger'').

        Depending on the type, additional settings are needed, such as the target URL for a page visit goal, or the CSS selector for a click goal.

        The Knowledge Base article "Goals" (Use a goal template section) lists various types.

        '
      tags:
      - Goals
      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 goal is to be stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CreateGoalRequest'
      responses:
        '201':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/update:
    post:
      operationId: updateGoal
      summary: Update an existing conversion goal
      description: 'Modifies the configuration of an existing conversion goal.

        This can include changing its name, type, status (active/archived), or specific settings like the target URL or triggering rules.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be updated
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/UpdateGoalRequest'
      responses:
        '200':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/delete:
    delete:
      operationId: deleteGoal
      summary: Delete a conversion goal
      description: 'Permanently removes a conversion goal from a project.

        This action is irreversible. If the goal is in use by active experiences, consider archiving it instead.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be deleted
        schema:
          type: integer
      responses:
        '200':
          $ref: '#/components/responses/SuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/bulk-update:
    post:
      operationId: bulkGoalsUpdate
      summary: Update multiple goals at once
      description: 'Allows for changing the status (e.g., active, archived) of multiple goals within a project simultaneously.

        Requires a list of goal IDs and the target status.

        '
      tags:
      - Goals
      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/BulkUpdateGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/bulk-delete:
    post:
      operationId: bulkGoalsDelete
      summary: Delete multiple goals at once
      description: 'Permanently removes multiple goals from a project in a single operation.

        Requires a list of goal IDs. This action is irreversible.

        '
      tags:
      - Goals
      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/BulkDeleteGoalsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/goals/{goal_id}/clone:
    post:
      operationId: cloneGoal
      summary: Clone an existing conversion goal
      description: 'Creates a new goal as an identical copy of an existing one (specified by `goal_id`).

        Useful for creating a similar goal with minor modifications or for templating.

        '
      tags:
      - Goals
      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: goal_id
        in: path
        required: true
        description: ID of the goal to be deleted
        schema:
          type: integer
      - name: include
        description: 'Specifies the list of optional fields which would be included in the response.


          Otherwise, the fields that can be passed through this parameter would not be included in the response.


          Read more in the section related to [Optional Fields](#tag/Optional-Fields)

          '
        in: query
        required: false
        schema:
          type: array
          items:
            $ref: '#/components/schemas/GoalOptionalFields'
      responses:
        '201':
          $ref: '#/components/responses/GoalResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    GetGoalsRequestData:
      allOf:
      - $ref: '#/components/schemas/OnlyCount'
      - $ref: '#/components/schemas/GoalsListFilteringOptions'
      - $ref: '#/components/schemas/PageNumber'
      - type: object
        properties:
          include:
            description: Specifies the list of fields to be included in the response, which otherwise would not be sent.
            type: array
            items:
              $ref: '#/components/schemas/GoalOptionalFields'
          only:
            description: 'Only retrieve goals with the given ids. Including ''stats'' reduces the maximum number of ''only'' items to 50.

              '
            type: array
            nullable: true
            items:
              type: integer
            maxItems: 200
          except:
            description: 'Except goals with the given ids.  Including ''stats'' reduces the maximum number of ''except'' items to 50.

              '
            type: array
            items:
              type: integer
            maxItems: 200
    MinuteOfHourMatchRulesTypes:
      type: string
      enum:
      - local_time_minute_of_hour
      - project_time_minute_of_hour
    CreateGoalRequestData:
      anyOf:
      - $ref: '#/components/schemas/CreateGoal'
    LanguageMatchRulesTypes:
      type: string
      enum:
      - language
    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'
    BulkGoalsIds:
      type: array
      description: The list of goals id to delete
      items:
        type: integer
      minItems: 1
      maxItems: 100
    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'
    GoalsListResponseData:
      type: object
      description: Response containing a list of conversion goals defined within a project, along with pagination details if applicable.
      properties:
        data:
          $ref: '#/components/schemas/GoalsList'
        extra:
          $ref: '#/components/schemas/Extra'
    SubmitsFormGoal:
      allOf:
      - $ref: '#/components/schemas/GoalBase'
      - type: object
        properties:
          type:
            enum:
            - submits_form
          settings:
            $ref: '#/components/schemas/SubmitsFormGoalSettings'
    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'
    CreateClicksElementGoal:
      allOf:
      - $ref: '#/components/schemas/ClicksElementGoal'
      required:
      - name
      - type
      - settings
    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
    GoalsList:
      type: array
      description: A list of goal objects.
      items:
        $ref: '#/components/schemas/Goal'
    JsConditionMatchRulesTypes:
      type: string
      enum:
      - js_condition
    VisitorTypeMatchRulesTypes:
      type: string
      enum:
      - visitor_type
    BaseRuleWithVisitorTypeValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Type of the visitors
            type: string
            enum:
            - new
            - returning
    ClicksLinkGoal:
      allOf:
      - $ref: '#/components/schemas/GoalBase'
      - type: object
        properties:
          type:
            enum:
            - clicks_link
          settings:
            $ref: '#/components/schemas/ClicksLinkGoalSettings'
    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
    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
    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
    GenericTextKeyValueMatchRulesTypes:
      type: string
      enum:
      - generic_text_key_value
    SegmentBucketedMatchRulesTypes:
      type: string
      enum:
      - bucketed_into_segment
    CreateNoSettingsGoal:
      allOf:
      - $ref: '#/components/schemas/NoSettingsGoal'
      required:
      - name
      - type
    ClicksElementGoal:
      allOf:
      - $ref: '#/components/schemas/GoalBase'
      - type: object
        properties:
          type:
            enum:
            - clicks_element
          settings:
            $ref: '#/components/schemas/ClicksElementGoalSettings'
    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
    Extra:
      type: object
      properties:
        pagination:
          $ref: '#/components/schemas/Pagination'
    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
    WeatherConditionMatchRulesTypes:
      type: string
      enum:
      - weather_condition
    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'
    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'
    CreateAdvancedGoal:
      allOf:
      - $ref: '#/components/schemas/AdvancedGoal'
      required:
      - triggering_rule
      - name
      - type
    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'
    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.
    CreateRevenueGoal:
      allOf:
      - $ref: '#/components/schemas/RevenueGoal'
      required:
      - name
      - type
      - settings
    BaseRuleWithDayOfWeekValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Day of week used for matching
            type: number
            minimum: 1
            maximum: 7
    BrowserNameMatchRulesTypes:
      type: string
      enum:
      - browser_name
    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.
    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
    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
    GoalOptionalFields:
      type: string
      enum:
      - triggering_rule
      - stats
    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 

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