Convert Locations API

Locations let you target your experiences in the ways that are important to your business.

Operations 9

POST /accounts/{account_id}/projects/{project_id}/locations List locations within a project #
GET /accounts/{account_id}/projects/{project_id}/locations/{location_id} Get details for a specific location #
POST /accounts/{account_id}/projects/{project_id}/locations/add Create a new location #
POST /accounts/{account_id}/projects/{project_id}/locations/{location_id}/update Update an existing location #
DELETE /accounts/{account_id}/projects/{project_id}/locations/{location_id}/delete Delete a location #
POST /accounts/{account_id}/projects/{project_id}/locations/bulk-update Update multiple locations at once #
POST /accounts/{account_id}/projects/{project_id}/locations/bulk-delete Delete multiple locations at once #
GET /accounts/{account_id}/projects/{project_id}/locations-presets List predefined location templates (presets) #
POST /accounts/{account_id}/projects/{project_id}/locations/{location_id}/clone Clone an existing location #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/convert-locations-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

convert-locations-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Convert Accounts Locations 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: Locations
  description: Locations let you target your experiences in the ways that are important to your business.
paths:
  /accounts/{account_id}/projects/{project_id}/locations:
    post:
      operationId: getLocationsList
      summary: List locations within a project
      description: 'Retrieves a list of all locations defined for a specific project.

        Locations define *where* on a website an experience will run, based on URL patterns, page tags, or JavaScript conditions.

        Supports filtering by status, name, and pagination.

        The Knowledge Base article "Locations" explains: "Locations conditions include the pages on which the experiment will run."

        '
      tags:
      - Locations
      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/GetLocationsListRequest'
      responses:
        '200':
          $ref: '#/components/responses/LocationsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations/{location_id}:
    get:
      operationId: getLocation
      summary: Get details for a specific location
      description: 'Retrieves detailed information about a single location, identified by its `location_id`.

        This includes its name, status, triggering rules (e.g., URL matches, JS conditions), and the type of trigger (e.g., upon_run, manual, dom_element).

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

        '
      tags:
      - Locations
      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 Location is stored
        schema:
          type: integer
      - name: location_id
        in: path
        required: true
        description: ID of the Location to be retrieved
        schema:
          type: integer
      - name: include
        in: query
        required: false
        description: 'Specifies the list of fields to be included in the response, which otherwise would not be sent.


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

          '
        schema:
          type: array
          items:
            $ref: '#/components/schemas/LocationIncludeFields'
      responses:
        '200':
          $ref: '#/components/responses/LocationResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations/add:
    post:
      operationId: createLocation
      summary: Create a new location
      description: 'Defines a new location within a project.

        Requires a name and a set of rules (e.g., URL contains ''product/'', JS condition `window.userType === ''premium''`).

        Also requires specifying the trigger type (e.g., ''upon_run'' to activate when rules match on page load, or ''manual'' to activate via JavaScript call).

        The Knowledge Base article "Creating Effective Experiences: A Guide to Location Setup" describes different trigger options.

        '
      tags:
      - Locations
      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 location is to be stored
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/CreateLocationRequest'
      responses:
        '201':
          $ref: '#/components/responses/LocationResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations/{location_id}/update:
    post:
      operationId: updateLocation
      summary: Update an existing location
      description: 'Modifies the configuration of an existing location.

        This can include changing its name, status (active/archived), triggering rules, or trigger type.

        '
      tags:
      - Locations
      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 location is stored
        schema:
          type: integer
      - name: location_id
        in: path
        required: true
        description: ID of the location to be updated
        schema:
          type: integer
      requestBody:
        $ref: '#/components/requestBodies/UpdateLocationRequest'
      responses:
        '200':
          $ref: '#/components/responses/LocationResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations/{location_id}/delete:
    delete:
      operationId: deleteLocation
      summary: Delete a location
      description: 'Permanently removes a location from a project. This action is irreversible.

        If the location is in use by active experiences, consider archiving it instead or unlinking it from experiences first.

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

        Requires a list of location IDs and the target status.

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

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

        '
      tags:
      - Locations
      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/BulkDeleteLocationsRequest'
      responses:
        '200':
          $ref: '#/components/responses/BulkSuccessResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations-presets:
    get:
      operationId: getLocationsPresets
      summary: List predefined location templates (presets)
      description: 'Retrieves a list of predefined location templates (presets) available for use.

        These presets offer common targeting configurations (e.g., "All Pages", "Homepage") to speed up location setup.

        The Knowledge Base article "Creating Effective Experiences: A Guide to Location Setup" mentions "Saved Locations" which are user-created, these are system presets.

        '
      tags:
      - Locations
      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
      responses:
        '200':
          $ref: '#/components/responses/LocationsPresetsListResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
  /accounts/{account_id}/projects/{project_id}/locations/{location_id}/clone:
    post:
      operationId: cloneLocation
      summary: Clone an existing location
      description: 'Creates a new location as an identical copy of an existing one (specified by `location_id`).

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

        '
      tags:
      - Locations
      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: location_id
        in: path
        required: true
        description: ID of the location to be deleted
        schema:
          type: integer
      - name: include
        in: query
        required: false
        description: 'Specifies the list of fields to be included in the response, which otherwise would not be sent.


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

          '
        schema:
          type: array
          items:
            $ref: '#/components/schemas/LocationIncludeFields'
      responses:
        '201':
          $ref: '#/components/responses/LocationResponse'
        default:
          $ref: '#/components/responses/ErrorResponse'
components:
  schemas:
    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
    LocationsPresetsListResponseData:
      type: object
      description: Response containing a list of predefined location templates (presets) available in the system.
      properties:
        data:
          $ref: '#/components/schemas/LocationsPresetsList'
    BaseRuleWithSegmentBucketedValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: ID of the segment used for matching
            type: number
    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
    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'
    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'
    WeatherConditionMatchRulesTypes:
      type: string
      enum:
      - weather_condition
    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'
    TextMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
    MinuteOfHourMatchRulesTypes:
      type: string
      enum:
      - local_time_minute_of_hour
      - project_time_minute_of_hour
    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
    GenericTextKeyValueMatchRulesTypes:
      type: string
      enum:
      - generic_text_key_value
    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
    BaseRuleWithMinuteOfHourValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: Minute of hour used for matching
            type: number
            minimum: 1
            maximum: 60
    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'
    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
    BaseRuleWithStringValue:
      allOf:
      - $ref: '#/components/schemas/BaseRule'
      - type: object
        properties:
          value:
            description: The value used to match against 'rule_type' using 'matching'
            type: string
    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'
    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.

            '
    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'
    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
    DayOfWeekMatchRulesTypes:
      type: string
      enum:
      - local_time_day_of_week
      - project_time_day_of_week
    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'
    JsConditionMatchRulesTypes:
      type: string
      enum:
      - js_condition
    BulkLocationsIds:
      type: array
      description: A list of location unique numerical identifiers to be affected by a bulk operation.
      items:
        type: integer
      minItems: 1
      maxItems: 100
    LanguageMatchRulesTypes:
      type: string
      enum:
      - language
    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
    LocationIncludeFields:
      type: string
      enum:
      - rules
      - trigger
      - stats.experiences_usage
    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
    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'
    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'
    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'
    CookieMatchingOptions:
      type: string
      enum:
      - matches
      - regexMatches
      - contains
      - endsWith
      - startsWith
      - exists
      - doesNotExist
    Location:
      allOf:
      - $ref: '#/components/schemas/LocationBase'
      - type: object
        properties:
          rules:
            nullable: true
            allOf:
            - $ref: '#/components/schemas/LocationRuleObject'
          trigger:
            $ref: '#/components/schemas/LocationTrigger'
    GetLocationsListRequestData:
      allOf:
      - $ref: '#/components/schemas/OnlyCount'
      - $ref: '#/components/schemas/LocationsListFilteringOptions'
      - $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/LocationIncludeFields'
          only:
            description: 'Only retrieve location with the given ids.

              '
            type: array
            nullable: true
            items:
              type: integer
            maxItems: 100
          except:
            description: 'Except locations with the given ids.

              '
            type: array
            items:
              type: integer
            maxItems: 100
    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
    LocationsPresetsList:
      type: array
      description: A list of location preset objects.
      items:
        $ref: '#/components/schemas/LocationPreset'
    CountryMatchRu

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