openapi: 3.0.3
info:
  title: Demand API
  description: |
    Cint's demand ordering API is REST oriented. It has predictable resource based URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs. Error responses are also JSON-encoded and follow a standard format, providing a unique error ID and detailed information about what went wrong.

    Authentication is handled via bearer tokens passed in the `Authorization` header. All requests must also include a `Cint-API-Version` header with a date in `YYYY-MM-DD` format to specify the desired API version. Depending on the version you use, endpoint behavior may differ as we improve our API with every version release.

    While many operations work on a single object per request, the demand ordering API also provides asynchronous batch endpoints for performing bulk updates efficiently on certain resources. For safety, `POST` requests support an `Idempotency-Key` header to allow for safe retries without accidentally performing the same operation twice.
  version: '2025-12-18'
servers:
- description: Production server
  url: https://api.cint.com/v1
security:
- BearerAuth: []
tags:
- name: Accounts
  description: Endpoints for managing Accounts-related resources, such as users.
- name: Allocation Templates Admin
  description: Create, update, delete and list global and account Allocation templates. Templates allow you to store and automate
    your policy towards suppliers on the Exchange.
- name: Definitions
  description: Platform-wide definitions endpoints.
- name: Exclusions
  description: Create and manage different sorts of Exclusions on your Target Group. Exclusions prevent certain respondents
    from entering or completing your survey.
- name: Exclusive Endpoints
  description: For more information, if you need functionality in this section, please contact your account manager
- name: Feasibility
  description: Understand the success of the Target Groups you want to run, have already saved or are in field by providing
    a Target Group ID or details.
- name: Fielding
  description: Create, update and obtain Target Group Fielding runs and Fielding Assistant assignments. This is critical for
    launching, scheduling and completing Target Groups.
- name: Fielding (Batch)
  description: Asynchronously update Target Group Fielding Runs in batches.
- name: Fielding Assistant
  description: Get, update Target Group Fielding Assistant assignments. Fielding Assistant provides optional modules to automate
    common workflows and optimise your Target Group.
- name: Fulfillment
  description: |-
    :::info
    Fulfillment endpoints are for S2S enabled clients only.
    :::
    Endpoints for managing respondent statuses while a target group is fielding.
- name: Intelligent Calendar
  description: Select the best times for launching your Target Groups. Use before feasibility to optimise fill and time in
    field.
- name: Manage Profiles for Launched Target Groups
  description: Management of Target Group profiles after launch—including creating, updating, retrieving, and deleting profile
    configurations, along with their conditions, quotas, and interlock settings.
- name: Notifications Webhooks
  description: Endpoints for managing your Notifications Webhooks.
- name: Profiling Helper
  description: Helps by generating different profile configurations, including interlocked profiles for draft.
- name: Profiling Library
  description: List all profiling questions including account specific questions with translations and categories. Profiling
    questions allow you to target and filter respondents based on their characteristics.
- name: Profiling Quotas By Supplier
  description: Get the distribution of available respondents for Target Group profiles, including retrieving supplier distribution
    per quota.
- name: Profiling Templates
  description: Create, manage and reuse audience descriptions and templates to allow for efficient and automated targeting
    workflows on the Cint Exchange.
- name: Projects
  description: Create, list and update projects. Projects are a flexible container for Target Groups and enable basic aggregation
    and automation.
- name: Reconciliations
  description: Validate, Submit and check reconciliations for one or more target groups.
- name: Recontacts
  description: Create, update, list and delete recontacts for a target group. Recontacts allow only specific respondents to
    enter your survey and are part of a larger workflow that needs specific configurations across other endpoints.
- name: Reports
  description: Aggregate reports that roll statistics up on an _Account_, _Business Unit_, _Project_ and _Target Group_ level.
- name: Respondent Unique Codes
  description: Allows you to insert respondent unique code(s) into the survey URL for each respondent entering the session.
- name: Target Group Allocations
  description: Create, update, list supplier allocations for a target group. Allocations allow filtering and limiting of the
    available suppliers on the Exchange.
- name: Target Groups
  description: Create, update, list and other operations on Target Groups. A Target Group is the main unit of work in the
    Exchange.
- name: Target Groups (Batch)
  description: Asynchronously create, update and delete Target Groups in batches.
paths:
  /accounts:
    get:
      tags:
      - Accounts
      summary: List all accounts
      operationId: get_user_accounts
      description: Retrieves a list of all accounts that the authenticated user is authorized to access. This list will be
        empty if you don't have access to any accounts.
      responses:
        '200':
          description: Successfully returned list of accounts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountsList'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/users:
    get:
      tags:
      - Accounts
      summary: List all users for an account
      operationId: get_account_users
      description: Retrieves a list of all users who have access to a specific account. You can use the `user_type` query
        parameter to filter this list.
      responses:
        '200':
          description: A list of users for the specified account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UsersList'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/UserType'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/service-clients:
    get:
      tags:
      - Accounts
      summary: List all service clients for an account
      operationId: get_account_service_clients
      description: Lists all available service clients for an account.
      responses:
        '200':
          description: Retrieves a list of all service clients for an account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceClientsList'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/UserType'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/users/{user_id}/business-units:
    get:
      tags:
      - Accounts
      summary: Get default business unit assigned to user
      operationId: get_user_account_business_unit_id
      description: "Returns the business unit ID associated with the specified user's account. \n\n:::info\nThis API doesn't\
        \ return all the business units within an account. To get all the business units for an account use `/accounts/{account_id}/business-units`.\n\
        :::\n"
      responses:
        '200':
          description: The business unit associated with the specified user and account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserAccountBusinessUnit'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/UserID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/allocation-template-association:
    get:
      operationId: get_account_allocation_template_association
      summary: Retrieves the default allocation template for an account
      tags:
      - Allocation Templates Admin
      responses:
        '200':
          description: The default allocation template associated with the account was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountAllocationTemplateAssociation'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: set_account_allocation_template_association
      summary: Assigns a default allocation template to an account
      description: Assigns a default allocation template to an account. This endpoint uses the If-Match header for optimistic
        locking. To get the required ETag value, first make a request to the [GET endpoint](./get-account-allocation-template-association)
        for this resource.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountAllocationTemplateAssociation'
            example:
              templateId: fe666fcd-490c-4cb4-b4e0-2f86e15c27e6
      responses:
        '204':
          description: The allocation template was associated successfully.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/allocation-templates:
    get:
      operationId: list_account_allocation_templates
      summary: Lists allocation templates for an account
      description: Lists a paginated set of allocation templates for an account. The response includes each template's ID,
        name, and last update details. Use the `page_size` parameter to control the number of results per page, and use the
        `start_after` and `end_before` parameters to navigate between pages.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: The list of allocation templates was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccountAllocationTemplatesResponse'
              example:
                templates:
                - template_id: 01JT5Z59MAKQ82J5K9Y3YGFNHN
                  name: US General Population
                  last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
                  last_modified_at: '2024-06-18T14:23:45Z'
                - template_id: 01JT5Z59MAKQ82J5K9Y3YGFNJM
                  name: UK Gamers
                  last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
                  last_modified_at: '2024-06-17T11:00:00Z'
                has_more: true
                next_cursor: WzAsIjAxSlA3RTgyM0czSFRGOTdZRThBNjc0RU5EIl0=
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      operationId: create_account_allocation_template
      summary: Create an allocation template
      description: Creates a new allocation template for an account. You'll need to provide a template name and the allocation
        specifications, which define supplier blocks, distribution groups, and their respective percentages.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyULIDRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocationTemplateCreateRequest'
            example:
              name: Q1 Marketing Campaign Template
              supply_allocations:
              - type: blocked
                suppliers:
                - supplier_id: 101
                - supplier_id: 202
              - type: group
                name: Group A (Premium)
                percentage_min: 50
                percentage_max: 70
                suppliers:
                - supplier_id: 301
                - supplier_id: 405
              - type: group
                name: Group B (Standard)
                percentage_min: 30
                percentage_max: 50
                suppliers:
                - supplier_id: 510
                - supplier_id: 620
      responses:
        '201':
          description: The allocation template was created successfully. The Location header contains the URL for the new
            resource.
          headers:
            location:
              $ref: '#/components/headers/Location'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/allocation-templates/{template_id}:
    get:
      operationId: get_account_allocation_template_by_template_id
      summary: Retrieve an allocation template by ID
      description: |-
        Retrieves the details of a specific allocation template by its ID.
        NOTE: The response currently includes only Cint Exchange suppliers. Support for private exchange suppliers is not yet available.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/OptionalLocaleCodeFilter'
      responses:
        '200':
          description: The allocation template was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountAllocationTemplateByTemplateIdResponse'
              example:
                template_id: 01JT5Z59MAKQ82J5K9Y3YGFNHN
                name: Q1 Marketing Campaign Template
                last_modified_at: '2024-06-18T14:23:45Z'
                last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
                supply_allocations:
                - type: blocked
                  suppliers:
                  - supplier_id: 101
                    name: Blocked Supplier A
                    type: survey_panels
                - type: group
                  name: Group A (Premium)
                  percentage_min: 50
                  percentage_max: 70
                  suppliers:
                  - supplier_id: 301
                    name: Premium Supplier B
                    type: loyalty_panels
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_account_allocation_template
      summary: Update an allocation template
      description: Updates the name and allocation specifications for a template. This endpoint uses the If-Match header for
        optimistic locking. To get the required ETag value, first make a GET request for this resource.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocationTemplateUpdateRequest'
            example:
              name: Updated Q1 Marketing Campaign Template
              supply_allocations:
              - type: blocked
                suppliers:
                - supplier_id: 101
              - type: group
                name: Updated Group A
                percentage_min: 60
                percentage_max: 80
                suppliers:
                - supplier_id: 301
                - supplier_id: 405
      responses:
        '204':
          description: The allocation template was updated successfully.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '500':
          $ref: '#/components/responses/Error_Internal'
    delete:
      operationId: delete_account_allocation_template
      summary: Delete an allocation template
      tags:
      - Allocation Templates Admin
      responses:
        '204':
          description: The allocation template was deleted successfully.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/TemplateID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/allocation-templates:
    get:
      operationId: list_global_allocation_templates
      summary: Lists global allocation templates
      description: Lists a paginated set of global allocation templates. The response includes each template's ID, name, and
        last update details. Use the `page_size` parameter to control the number of results per page, and use the `start_after`
        and `end_before` parameters to navigate between pages.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: The list of global allocation templates was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGlobalAllocationTemplatesResponse'
              example:
                templates:
                - template_id: 01JT5Z59MAKQ82J5K9Y3YGFNHN
                  name: Global Template A
                  last_modified_at: '2024-06-18T14:23:45Z'
                  last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
                - template_id: 01JT5Z59MAKQ82J5K9Y3YGFNJM
                  name: Global Template B
                  last_modified_at: '2024-06-17T11:00:00Z'
                  last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
                has_more: true
                next_cursor: WzAsIjAxSlA3RTgyM0czSFRGOTdZRThBNjc0RU5EIl0=
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/allocation-templates/{template_id}:
    get:
      operationId: get_global_allocation_template_by_template_id
      summary: Retrieves a global allocation template by ID
      description: |-
        Retrieves the details of a specific global allocation template by its ID.
        NOTE: The response currently includes only Cint Exchange suppliers. Support for private exchange suppliers is not yet available.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/OptionalLocaleCodeFilter'
      responses:
        '200':
          description: The global allocation template was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGlobalAllocationTemplateByTemplateIdResponse'
              example:
                template_id: 01JT5Z59MAKQ82J5K9Y3YGFNHN
                name: Global Technology Sector Template
                supply_allocations:
                - type: exchange
                  percentage_min: 80
                  percentage_max: 100
                  suppliers:
                  - supplier_id: 420
                    name: Tech Insights Panel
                    type: survey_panels
                - type: blocked
                  suppliers:
                  - supplier_id: 101
                    name: General Consumer Panel
                    type: loyalty_panels
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/TemplateID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/system-allocation-template:
    get:
      operationId: get_system_allocation_template
      summary: Retrieves the system allocation template
      description: Retrieves the system's default allocation template for a specific locale. This template contains a dynamic
        list of all suppliers currently available in that market. You can use this data as a baseline to ensure your custom
        allocation templates only include suppliers that are valid for a specific country or region.
      tags:
      - Allocation Templates Admin
      responses:
        '200':
          description: The system allocation template was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSystemAllocationTemplateResponse'
              example:
                name: System Default for eng_us
                supply_allocations:
                - type: exchange
                  percentage_min: 100
                  percentage_max: 100
                  suppliers:
                  - supplier_id: 420
                    name: Clix Sense
                    type: loyalty_panels
                  - supplier_id: 515
                    name: US Research Panel
                    type: survey_panels
                  - supplier_id: 630
                    name: Affiliate Network One
                    type: non_panel_or_affiliate
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/LocaleCodeFilter'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/business-units:
    get:
      tags:
      - Definitions
      summary: Lists business units for an account
      operationId: get_business_units
      description: "Lists available account business units. Business unit definitions are supposed to help you organize surveys\
        \ between different parts of your organization. They also determine the currency used by their assigned surveys. \n\
        \n:::info\nTo get default business unit assigned to the user within the account then use /accounts/{account_id}/users/{user_id}/business-units\
        \ API mentioned under Accounts section.\n:::\n"
      responses:
        '200':
          description: A list of business units was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  business_units:
                    type: array
                    description: A list of business units.
                    items:
                      $ref: '#/components/schemas/BusinessUnit'
              example:
                business_units:
                - id: 1234
                  name: Example EMEA
                  currency_code: EUR
                  pricing_models:
                  - rate_card
                  - dynamic
                - id: 5678
                  name: Example APAC
                  currency_code: JPY
                  pricing_models:
                  - rate_card
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/clients:
    get:
      tags:
      - Definitions
      summary: Lists clients for an account
      operationId: get_clients
      description: Lists the clients that have been configured for the specified account.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageNumber'
      responses:
        '200':
          description: A list of clients was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  clients:
                    type: array
                    description: A list of clients.
                    items:
                      $ref: '#/components/schemas/ClientListItem'
              example:
                clients:
                - id: 1234
                  name: Acme Inc
                - id: 5678
                  name: Global Research Partners
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /countries:
    get:
      tags:
      - Definitions
      summary: Lists all countries
      operationId: get_countries
      description: Lists all available countries. Countries are used for target group filtering purposes. `0/NA` is a special
        country code that can be used for scenarios where a country is not applicable.
      responses:
        '200':
          description: A list of countries was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  countries:
                    type: array
                    description: A list of countries.
                    items:
                      $ref: '#/components/schemas/CountryListItem'
              example:
                countries:
                - id: 243
                  code: GB
                  name: United Kingdom
                - id: 244
                  code: US
                  name: United States
                - id: 116
                  code: JP
                  name: Japan
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /industries:
    get:
      tags:
      - Definitions
      summary: Lists all industries
      operationId: get_industries
      description: Lists the available industries that you can associate with your target groups.
      responses:
        '200':
          description: A list of industries was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  industries:
                    type: array
                    description: A list of industries.
                    items:
                      $ref: '#/components/schemas/IndustryListItem'
              example:
                industries:
                - id: 19
                  code: politics
                  name: Politics
                - id: 20
                  code: economy
                  name: Economy
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /industry-lockouts:
    get:
      tags:
      - Definitions
      summary: Lists all industry lockouts
      operationId: get_industry_lockouts
      description: Lists the available industry lockout options. You can apply an industry lockout to a target group to prevent
        respondents from participating if they have recently completed another target group in the same industry.
      responses:
        '200':
          description: A list of industry lockouts was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  industry_lockouts:
                    type: array
                    description: A list of industry lockouts.
                    items:
                      $ref: '#/components/schemas/IndustryLockoutItem'
              example:
                industry_lockouts:
                - id: 90
                  code: past_90_days
                  name: Past 90 Days / 3 Months
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /integration-use-cases:
    get:
      tags:
      - Definitions
      summary: List all supported integration cases
      operationId: get_integration_use_cases
      description: Lists all supported integration use cases, which indicate the purpose for which an integration will be
        used.
      responses:
        '200':
          description: A list of integration use cases was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  integration_use_cases:
                    type: array
                    description: A list of integration use cases.
                    items:
                      $ref: '#/components/schemas/IntegrationUseCaseListItem'
                example:
                  integration_use_cases:
                  - id: manage_surveys
                    name: Manage target groups
                    description: Create, update, and retrieve target groups, allocations, groups, qualifications, and quotas.
                  - id: performance_reporting
                    name: Performance reporting
                    description: Monitor target group performance and do reconciliation.
                  - id: financial_reporting
                    name: Financial reporting
                    description: Generate cost summary reports for sets of target groups.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /locales:
    get:
      tags:
      - Definitions
      summary: Lists all locales
      operationId: get_locales
      description: Lists all available locales (a combination of country and language) that are well-supported on the platform.
        You can use this endpoint to discover which locales are recommended for the best performance and panelist availability.
        The output will include ISO 3166-1 alpha-2 country codes and associated ISO 639-2/T three-letter language codes. You
        will use this to form a valid locale string where you specify the three-letter language code, an underscore, and the
        two-letter country code e.g., eng_us. Use this locale when browsing profile library or creating a target group.
      responses:
        '200':
          description: A list of locales was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Locales'
              example:
                locales:
                - country:
                    code: in
                    name: India
                  languages:
                  - is_preferred: true
                    name: English
                    code: eng
                  - is_preferred: true
                    name: Hindi
                    code: hin
                - country:
                    code: us
                    name: United States
                  languages:
                  - is_preferred: true
                    name: English
                    code: eng
                  - is_preferred: false
                    name: Spanish
                    code: spa
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /study-types:
    get:
      tags:
      - Definitions
      summary: Lists study types
      operationId: get_study_types
      description: Lists the available study types. You can assign a study type to a target group to indicate its purpose
        and associated limits.
      responses:
        '200':
          description: A list of study types was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  study_types:
                    type: array
                    description: A list of study types.
                    items:
                      $ref: '#/components/schemas/StudyTypeListItem'
              example:
                study_types:
                - id: 1
                  code: adhoc
                  name: Adhoc
                - id: 2
                  code: diary
                  name: Diary
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /suppliers:
    get:
      tags:
      - Definitions
      summary: Lists suppliers
      operationId: get_suppliers
      description: Lists the suppliers available on the Cint Exchange. You can use the IDs retrieved from this endpoint to
        configure allocation templates.
      responses:
        '200':
          description: A list of suppliers was retrieved successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  suppliers:
                    type: array
                    description: A list of suppliers.
                    items:
                      $ref: '#/components/schemas/SupplierDetailsItem'
              example:
                suppliers:
                - id: 4351
                  code: ACE
                  name: Acme Inc
                - id: 3334
                  code: BCD
                  name: BCD Inc
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/exclusion-groups:
    get:
      operationId: get_exclusion_groups_by_account_id
      summary: Lists exclusion groups for an account
      description: Lists the exclusion groups for your account, ordered by creation date. Use exclusion groups to prevent
        respondents from participating in multiple target groups, even across different projects.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/PageSize1000'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A list of exclusion groups was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExclusionGroupsByAccountIdResponse'
              example:
                data:
                - exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Y
                  tag: 2025 Tracker
                  description: 2025 Ongoing Tracker Study
                  create_date: '2025-05-27T09:28:21.229Z'
                  update_date: '2025-05-27T10:30:00.516Z'
                - exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Z
                  tag: Q3 Product Launch
                  description: Excludes respondents from all Q3 product launch studies.
                  create_date: '2025-04-15T11:00:00.000Z'
                  update_date: null
                next_cursor: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/101/exclusion-groups
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      operationId: create_exclusion_group
      summary: Creates an exclusion group
      description: |-
        Creates a new exclusion group for your account and returns its unique ID.
        Key behaviors:
        * You can create multiple exclusion groups with the same tag. * A target group can belong to multiple exclusion groups. * An exclusion group can contain a maximum of 100 target groups.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      requestBody:
        description: Create Exclusion Group with the required data
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateExclusionGroupRequest'
            example:
              tag: 2025 Tracker
              description: Excludes all respondents who participate in the 2025 ongoing tracker study.
      responses:
        '201':
          description: The exclusion group was created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateExclusionGroupResponse'
              example:
                exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Y
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}:
    get:
      operationId: get_exclusion_group_by_id
      summary: Retrieves exclusion group by ID
      description: Retrieves the details of a specific exclusion group, including its tag, description, and creation date.
      tags:
      - Exclusions
      responses:
        '200':
          description: The exclusion group details were retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionGroupInfo'
              example:
                exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Y
                tag: 2025 Tracker
                description: 2025 Ongoing Tracker Study
                create_date: '2025-05-27T09:28:21.229Z'
                update_date: '2025-05-27T10:30:00.516Z'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_exclusion_group_by_id
      summary: Updates exclusion group by ID
      description: Updates the tag or description for a specific exclusion group.
      tags:
      - Exclusions
      requestBody:
        description: Update Exclusion Group request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExclusionGroupRequest'
            example:
              tag: 2025 Annual Tracker
              description: Updated description for the 2025 ongoing tracker study.
      responses:
        '204':
          description: Successfully updated the exclusion group.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    delete:
      operationId: delete_exclusion_group_by_id
      summary: Delete an Exclusion Group by its ID if it has no associated Target Groups
      description: Deletes a specific exclusion group. **Prerequisite:** You must remove all target groups from an exclusion
        group before you can delete it. Attempting to delete a group that still contains target groups will result in a failed
        request with a conflict error.
      tags:
      - Exclusions
      responses:
        '204':
          description: Successfully deleted the Exclusion Group.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '409':
          $ref: '#/components/responses/Error_Conflict'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ExclusionGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}/target-groups:
    get:
      operationId: get_exclusion_group_target_group_exclusions
      summary: Lists target groups in an exclusion group
      description: Lists the target groups that belong to a specific exclusion group. Respondents who complete one target
        group in this list will be excluded from participating in any of the others. **An exclusion group can contain a maximum
        of 100 target groups.**
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ExclusionGroupID'
      - $ref: '#/components/parameters/PageSize1000'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A list of target groups within the exclusion group was retrieved successfully.ns
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionGroupTargetGroupsResponse'
              example:
                data:
                - 01BTGNYV6HRNK8K8VKZASZCFP1
                - 01BTGNYV6HRNK8K8VKZASZCFP2
                - 01BTGNYV6HRNK8K8VKZASZCFP3
                next_cursor: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/101/exclusion-groups/01JW97M2Y5Q5KB0N543B4G4T5Y/exclusions/target-groups
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}/target-groups/add:
    post:
      operationId: add_target_groups_to_exclusion_group
      summary: Add Target Groups to an Exclusion Group
      description: 'Adds one or more target groups to an exclusion group. Target groups can be from any project within your
        account. **Key behaviors** * An exclusion group can contain a maximum of 100 target groups. * Adding a target group
        to this list only affects the exclusion status for **future** respondents; it does not apply retroactively. '
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ExclusionGroupID'
      requestBody:
        description: A list of target group IDs to add to the exclusion group.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTargetGroupExclusionGroupRequest'
            example:
              data:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      responses:
        '204':
          description: The target groups were added to the exclusion group successfully.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}/target-groups/remove:
    post:
      operationId: remove_target_groups_from_exclusion_group
      summary: Remove Target Groups from an Exclusion Group
      description: Removes one or more target groups from an exclusion group. **Important behavior:** Removing a target group
        from this list only affects the exclusion status for **future** respondents; it does not apply retroactively.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ExclusionGroupID'
      requestBody:
        description: A list of target group IDs to remove from the exclusion group.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveTargetGroupExclusionGroupRequest'
            example:
              data:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      responses:
        '204':
          description: The target groups were removed from the exclusion group successfully.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/exclusion-policies:
    put:
      operationId: update_bulk_target_group_exclusions_api
      summary: Update Target Group Project Exclusion Status
      description: Updates the project-level exclusion status for multiple target groups in a single request. When you enable
        project exclusion for a target group, respondents who complete it will be prevented from entering any other target
        group within the same project that also has this setting enabled.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: The target groups and their desired exclusion statuses.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTargetGroupProjectExclusionStatus'
            example:
            - target_group_id: 01HC2Z6TM8C4F3Y5CA6S2JR475
              project_exclusion_enabled: true
            - target_group_id: 01HC2Z6TM8C4F3Y5CA6S2JR476
              project_exclusion_enabled: false
      responses:
        '204':
          description: The exclusion policies for the target groups were updated successfully.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/exclusions:
    get:
      operationId: get_exclusion_by_project_api
      summary: Lists project exclusion statuses for target groups
      description: Lists the project-level exclusion status for all target groups within a project. This allows you to see
        which target groups will exclude respondents from one another at the project level.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      responses:
        '200':
          description: A list of exclusion statuses for the project's target groups was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTargetGroupProjectExclusionStatus'
              example:
              - target_group_id: 01HC2Z6TM8C4F3Y5CA6S2JR475
                project_exclusion_enabled: true
              - target_group_id: 01HC2Z6TM8C4F3Y5CA6S2JR476
                project_exclusion_enabled: false
              - target_group_id: 01HC2Z6TM8C4F3Y5CA6S2JR477
                project_exclusion_enabled: true
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusion-policy:
    get:
      operationId: get_target_group_exclusion_policy_api
      summary: Retrieves the project exclusion status for a target group
      description: Retrieves the project-level exclusion status for a single target group. If the `project_exclusion_enabled`
        field is `true`, respondents who complete any other target group in the same project (that also has this setting enabled)
        will be excluded from this one.
      tags:
      - Exclusions
      responses:
        '200':
          description: The project exclusion status was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectExclusionStatusResponse'
              example:
                project_exclusion_enabled: true
                create_date: '2024-06-18T14:23:45Z'
                updated_by: User1234
                update_date: '2024-06-19T10:00:00.000Z'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/access-respondent-guid/paginated
  : get:
      operationId: get_target_group_access_respondent_guid_exclusion_list_api_paginated
      summary: Lists excluded Access Respondent GUIDs for a target group
      description: Lists the Access Respondent GUIDs of all respondents who are excluded from this target group. This exclusion
        can be due to their participation in another target group within the same project or within a shared exclusion group.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/PageSize1000'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A paginated list of excluded Access Respondent GUIDs was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CobraIDListPaginatedResponse'
              example:
                data:
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9f
                next_cursor: MDlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/1/projects/01JBHD5A2NEW7JTV8KZGGTC2V2/target-groups/01JNNEJ3GC0Y713BBKGKC147DP/exclusions/access-respondent-guid/paginated
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/jobs/remove-all-respondents:
    post:
      operationId: exclusion_create_remove_all_respondents_job
      summary: Creates a job to remove all respondent exclusions by type
      description: |-
        Creates a job to remove all the specified exclusion respondents for the specified Target Group ID. This returns an identifier that can retrieve the job execution information, including the status.
        Only one job can run at a time for a Target Group. If another job is already running before the endpoint is called for the same Target Group, a conflict response will be returned.
        While execution time may vary, removing 10,000 respondents typically takes between 3 and 5 minutes.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/ExclusionRespondentEntityType'
      responses:
        '201':
          description: The job was created successfully. Use the returned `job_id` to track its status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRemoveAllRespondentExclusionsJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '409':
          $ref: '#/components/responses/Error_Conflict'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/jobs/remove-all-respondents/{job_id}
  : get:
      operationId: get_all_respondent_exclusions_removal_job
      summary: Retrieve remove all respondent exclusions job status
      description: Gets the status of a job within the target group to remove all the respondent ID based exclusions on a
        target group. Each job will only remove one type of ID. You should be checking this endpoint regularly to see the
        status of your work. While execution time may vary, removing 10,000 respondents typically takes between 3 and 5 minutes.
        You should be wary while performing this action whilst the target group is live as the order of operations will mean
        that there will be a time with no active Respondent ID based exclusions on the Target Group.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/JobID'
      responses:
        '200':
          description: The information of a requested remove all Respondent ID exclusions job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRemoveAllRespondentExclusionsJobResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/jobs/upload-respondents-by-file
  : post:
      operationId: exclusion_create_upload_rids_by_file_job
      summary: Creates a job to upload a file of respondent exclusions
      description: Creates a job to upload new respondent exclusions by file for the specified Target Group ID. The new IDs
        will be added to the existing ones. The total number of IDs, both existing and new, must not exceed 100,000 IDs. This
        will return an identifier that can be used to retrieve the job execution information, including the status. Only one
        job can run at a time for a Target Group. If another job is already running before the endpoint is called for the
        same Target Group, a conflict response will be returned. The file must be in CSV or TXT format, without a header row.
        Each line should contain a single identifier. Only one single file can be uploaded and the file size must be less
        than 5MB. While execution time may vary, storing 10,000 new respondents typically takes between 3 and 5 minutes.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/ExclusionRespondentEntityType'
      - $ref: '#/components/parameters/RecontactPostContentType'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: The file to upload. Must be a plain text or CSV file.
            example:
              file: '0F1CE179-A917-49FF-9D50-B05FC91F7BD4 75F1404C-65F6-4937-AD2A-588E4F66E07F 9C23131D-388B-4E03-97B3-CF783E491445 '
      responses:
        '201':
          description: The job was created successfully. Use the returned `job_id` to track its status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRespondentExclusionsUploadByFileJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '409':
          $ref: '#/components/responses/Error_Conflict'
        '413':
          $ref: '#/components/responses/Error_ContentTooLarge'
        '415':
          $ref: '#/components/responses/Error_UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/jobs/upload-respondents-by-file/{job_id}
  : get:
      operationId: get_respondent_exclusions_upload_by_file_job
      summary: Retrieve RID upload job status
      description: Gets the status of a job within the target group to update respondent ID based exclusions, of any type
        of ID. You should be checking this endpoint regularly to see the status of your work. While execution time may vary,
        adding 10,000 respondents typically takes between 3 and 5 minutes.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/JobID'
      responses:
        '200':
          description: The information of a requested upload Respondent ID exclusions by file job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUploadRespondentExclusionsJobResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/overview:
    get:
      operationId: get_exclusions_overview
      summary: Retrieves the number of currently excluded response IDs (RSID) on a target group.
      description: Retrieves the number of currently excluded response IDs (RSID) on a target group - both response ID and
        GUID. This is useful to understand how close you are to any limits or the effect of deduplication or other asynchronous
        operations.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '200':
          description: The number of respondent ID and GUID exclusions for the target group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTargetGroupExclusionsOverviewResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/rsid/paginated:
    get:
      operationId: get_target_group_rsid_exclusion_list_api_paginated
      summary: Lists excluded Respondent IDs (RSIDs) for a target group
      description: Lists the Respondent IDs (RSIDs) of all respondents who are excluded from this target group. This exclusion
        can be due to their participation in another target group within the same project, a shared exclusion group, or a
        direct file upload.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/PageSize1000'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A paginated list of excluded Respondent IDs (RSIDs) was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionsRespondentIDListResponse'
              example:
                data:
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9f
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9a
                next_cursor: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/exclusions/rsid/paginated
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/exclusion-groups:
    get:
      operationId: get_exclusion_groups_for_target_group
      summary: Lists the exclusion groups of a specific target group
      description: Lists all exclusion groups that a specific target group is a member of, ordered by creation date. When
        a respondent attempts to enter this target group, they will be checked against all other target groups in all of the
        exclusion groups listed here.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A list of exclusion groups for the requested target group was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExclusionGroupsByTargetGroupResponse'
              example:
                data:
                - exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Y
                  tag: 2025 Tracker
                  description: 2025 Ongoing Tracker Study
                  create_date: '2025-05-27T09:28:21.229Z'
                  update_date: '2025-05-27T10:30:00.516Z'
                - exclusion_group_id: 01JW97M2Y5Q5KB0N543B4G4T5Z
                  tag: Automotive Studies
                  description: All automotive studies for Q3/Q4 2025
                  create_date: '2025-06-01T12:00:00.000Z'
                  update_date: null
                next_cursor: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/101/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/exclusion-groups
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/generate-price-prediction:
    post:
      operationId: generate_price_prediction
      summary: Generates a price prediction
      description: |-
        Predicts the cost per interview (CPI) for a potential target group using either a `rate_card` or `dynamic` pricing model. The model you choose must match the business unit's pricing configuration.
        Private Exchange required.
        This endpoint is only available for accounts with a Private Exchange. If your account does not have this feature enabled, requests will fail with a 403 Forbiddenerror. Please contact your account manager if you need access to this functionality.
      tags:
      - Exclusive Endpoints
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/BusinessUnitID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRedactedPricePredictionRequest'
            examples:
              rate_card:
                summary: Rate Card Prediction
                description: Request a price prediction using the rate card pricing model
                value:
                  config:
                    type: rate_card
                    country_code: US
                    expected_incidence_rate: 0.25
                    expected_length_of_interview_minutes: 15
                    maximum_cpi:
                      value: '10.00'
                      currency_code: USD
              dynamic:
                summary: Dynamic Pricing Prediction
                description: Request a price prediction using the dynamic pricing model
                value:
                  config:
                    type: dynamic
                    user_requested_cpi:
                      value: '5.50'
                      currency_code: USD
      responses:
        '200':
          description: The price prediction was generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRedactedPricePredictionResponse'
              example:
                buyer_account_id: 101
                buyer_business_unit_id: '1234'
                buyer_business_unit_exchange_rate_from_usd: 1.0
                open_exchange_price:
                  pricing_context:
                    type: rate_card
                    rate_card_token: some_rate_card_token
                  cost_per_interview:
                    value: '4.75'
                    currency_code: USD
                    currency_scale: 2
                private_exchange_prices:
                - supplier_id: '43'
                  pricing_context:
                    type: dynamic
                  cost_per_interview:
                    value: '5.50'
                    currency_code": USD
                    currency_scale: 2
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/target-groups/{target_group_id}/price:
    get:
      operationId: get_target_group_price
      summary: Retrieves the pricing details for a target group
      description: |-
        Retrieves the current pricing details for a specific target group. The response includes the cost per interview (CPI) and the pricing context (`rate_card` or `dynamic`) for both the Open Exchange and any applicable Private Exchange suppliers.
        Private Exchange required.
        This endpoint is only available for accounts with a Private Exchange. If your account does not have this feature enabled, requests will fail with a `403 Forbidden` error. Please contact your account manager if you need access to this functionality.
      tags:
      - Exclusive Endpoints
      responses:
        '200':
          description: The pricing details for the target group were retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTargetGroupPriceResponse'
              example:
                price_type: specification
                buyer_account_id: 101
                buyer_business_unit_id: '1234'
                target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                buyer_business_unit_exchange_rate_from_usd: 1.0
                pricing_config_token: MDFKSE42MDQ1RFg2Tk0wQjlBQ0Q5QVhQQzk7Nw==
                open_exchange_price:
                  pricing_context:
                    type: rate_card
                    rate_card_token: some_rate_card_token
                  cost_per_interview:
                    value: '4.75'
                    currency_code: USD
                    currency_scale: 2
                private_exchange_prices:
                - supplier_id: '43'
                  pricing_context:
                    type: dynamic
                  cost_per_interview:
                    value: '5.50'
                    currency_code: USD
                    currency_scale: 2
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/BusinessUnitID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/calculate-feasibility:
    post:
      operationId: calculate_target_group_feasibility
      summary: Calculates feasibility for a draft target group
      description: "Calculates the feasibility for a new, unsaved (draft) target group based on the specifications you provide\
        \ in the request body. \nYou can use this endpoint to estimate the achievable number of completes and get a suggested\
        \ price \nbefore you create the actual target group. If you include profiling details, \nthe response will also provide\
        \ a feasibility breakdown for each quota.\n\n**Note:** Profiles with a large number of open-ended values or complex\
        \ condition groups may result in reduced feasibility accuracy or a zero feasibility value. We recommend reviewing\
        \ the suggested price carefully and running your own sample to validate the results.\n"
      tags:
      - Feasibility
      parameters:
      - $ref: '#/components/parameters/AccountID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateTargetGroupFeasibilityRequest'
      responses:
        '200':
          description: The feasibility report was generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateTargetGroupFeasibilityResponse'
              example:
                suggested_price:
                  value: '4.25'
                  currency_code: USD
                  currency_scale: 2
                suggested_completes_goal_range:
                  min: 450
                  max: 525
                profiles:
                - object: regular
                  targets:
                  - conditions:
                    - object: range
                      question_id: 12413
                      min: 18
                      max: 34
                    quota:
                      min_completes:
                        projected_completes_goal: 225
                      max_completes:
                        projected_completes_goal: 262
                allocations:
                  open_exchange_allocations:
                    min_completes: 450
                    max_completes: 525
                    groups: []
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: &id001
                $ref: '#/components/schemas/Traceparent'
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: &id002
                $ref: '#/components/schemas/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/calculate-feasibility:
    post:
      operationId: calculate_target_group_feasibility_by_id
      summary: Calculates feasibility for a non-draft target group
      description: |-
        Calculates feasibility information based on the current state of the target group.
        The request properties are all optional. They serve as a way of performing what-if analysis on the Target Group. When a property is provided in the request, the feasibility analysis will behave as if the relevant property on the target group had the value which was sent in the request body. Any number of properties can be provided for what-if analysis this way. However, it should be kept in mind that the analysis is still performed on _the current target group_, therefore it will be influenced by factors such as the number of completes collected so far, the exchange rate of the target group's currency versus USD when it went live, etc.
        **Note:** Profiles with a large number of open-ended values or complex condition groups may result in reduced feasibility accuracy or a zero feasibility value. We recommend reviewing the suggested price carefully and running your own sample to validate the results.
      tags:
      - Feasibility
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
      requestBody:
        required: false
        description: Optionally provides a means of overriding Target Group details.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateTargetGroupFeasibilityByIdRequest'
      responses:
        '200':
          description: Successfully obtained target group feasibility.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateTargetGroupFeasibilityResponse'
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-assistant-assignment:
    get:
      operationId: get_fielding_assistant_assignment
      summary: Retrieves the Fielding Assistant assignment for a target group
      description: |-
        Retrieves the current Fielding Assistant configuration for a target group. The response will show which modules, if any, are currently enabled. Examples:

          * Pricing
          * Quota overlay
          * Pacing
          * Soft launch
      tags:
      - Fielding Assistant
      responses:
        '200':
          description: The Fielding Assistant assignment details were retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldingAssistantModulesAssignment'
              example:
                pricing:
                  type: dynamic
                  maximum_cpi":
                    value: '5.00'
                    currency_code: USD
                    currency_scale: 2
                pacing:
                  type: linear
                  increment_interval: P1D
                quota_overlay:
                  prevent_overfill": true
                  balance_fill: true
                soft_launch: null
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: create_or_update_fielding_assistant_assignment
      summary: Create or update the Fielding Assistant assignment
      description: |
        Creates or fully replaces the Fielding Assistant assignment for a target group. This is an "all or nothing" operation.
        To modify an existing assignment, you must first GET the current configuration, make your changes,
        and then PUT the entire modified object back. Sending a request with only one module will disable all others.
        To disable all modules, send an empty object `{}`. This endpoint uses the `If-Match` header for optimistic locking.
      tags:
      - Fielding Assistant
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      - $ref: '#/components/parameters/IfNoneMatch'
      requestBody:
        description: Fielding assistant assignment request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FieldingAssistantModulesAssignmentRequestModel'
            examples:
              full_configuration:
                summary: Enable Dynamic Pricing and Linear Pacing
                description: Example configuration with dynamic pricing, linear pacing, and quota overlay modules enabled
                value:
                  pricing:
                    type: dynamic
                    maximum_cpi:
                      value: '5.00'
                      currency_code: USD
                  pacing:
                    type: linear
                    increment_interval: P1D
                  quota_overlay:
                    prevent_overfill: true
                    balance_fill: true
              disable_all:
                summary: Disable All Modules
                description: Send an empty object to disable all Fielding Assistant modules
                value: {}
      responses:
        '204':
          description: Fielding assistant assignment on target group successfully created or updated.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/complete-fielding-runs-by-target-group-id:
    post:
      summary: Creates a job to complete multiple target groups
      description: "This endpoint creates a bulk job to complete fielding runs for a list of specified target group IDs. This\
        \ action will immediately complete the \nspecified target groups, regardless of whether their completes goals or end\
        \ dates have been reached.\nIf a target group is already completed, the system considers the action successful.\n\n\
        To ensure that the same job is not created multiple times, this endpoint uses an `Idempotency-Key` from the request\
        \ header. If a job with \nthe same key has already been submitted, the system will not create a new one but will treat\
        \ the operation as successful and \nreturn the same successful response as for a newly created job.\n\nUpon successful\
        \ submission, the system creates a new bulk job to start the actual processing asynchronously. This means \nthe endpoint\
        \ returns a response quickly without waiting for the entire bulk operation to complete. If the job is created successfully\
        \ or if \nit already existed due to the idempotency key, the endpoint returns a `201 Created` status code with the\
        \ job ID in the `Location` header.\n\nTo check the status of the job, you can use the job ID returned in the `Location`\
        \ header with the `Retrieve a bulk job status` endpoint.\nThe processing of the job will continue even if an operation\
        \ on an individual target group fails. The final job status will list which target groups \nwere updated successfully\
        \ and which ones failed.\n"
      operationId: create_bulk_complete_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        description: A list of target group IDs to be completed.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkCompleteTargetGroupJobRequest'
            example:
              target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/batch-jobs/complete/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/complete-fielding-runs-by-target-group-id/{job_id}:
    get:
      summary: Retrieves a bulk "complete" job status
      description: |
        This endpoint retrieves the status and details of a previously created bulk-complete job using its job ID.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`. If the status is `Processing`, the job is still running.
        Once the job is finished, the `updated_target_groups` and `failed_target_groups` lists will show the outcome for each target group included in the original request.
        If a target group was already in the desired status, it will be included in the `updated_target_groups` list, even though no change was made.
      operationId: get_bulk_complete_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding (Batch)
      responses:
        '200':
          description: The bulk "complete" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkCompleteTargetGroupJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                created_at: '2023-01-01T23:00:00.000Z'
                created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                status: Completed
                updated_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                  has_more: false
                failed_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP3
                    failure_reason:
                      code: StatusTransitionNotAllowed
                      description: Status transition is not allowed.
                  has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/launch-fielding-runs-by-target-group-id:
    post:
      summary: Creates a job to launch multiple target groups
      description: "This endpoint creates a bulk job to launch fielding runs for a list of specified target group IDs. This\
        \ action will start the fielding runs \nfor the specified target groups, updating their fielding start date to the\
        \ current time. A fielding run can only be launched if it is in a \n'scheduled' state.\nIf a target group is already\
        \ live, the system considers the action successful.\n\nTo ensure that the same job is not created multiple times,\
        \ this endpoint uses an `Idempotency-Key` from the request header.\nIf a job with the same key has already been submitted,\
        \ the system will not create a new one but will treat the operation as successful and \nreturn the same successful\
        \ response as for a newly created job.\n\nUpon successful submission, the system creates a new bulk job to start the\
        \ actual processing asynchronously. This means the endpoint returns a \nresponse quickly without waiting for the entire\
        \ bulk operation to complete. If the job is created successfully or if it already existed \ndue to the idempotency\
        \ key, the endpoint returns a `201 Created` status code with the job ID in the `Location` header.\n\nTo check the\
        \ status of the job, you can use the job ID returned in the `Location` header with the `Retrieve a bulk job status`\
        \ endpoint.\nThe processing of the job will continue even if an operation on an individual target group fails. The\
        \ final job status will list which target groups \nwere updated successfully and which ones failed.\n"
      operationId: create_bulk_launch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        description: A list of target group IDs to be launched.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkLaunchTargetGroupJobRequest'
            example:
              target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/batch-jobs/launch/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/launch-fielding-runs-by-target-group-id/{job_id}:
    get:
      summary: Retrieves a bulk "launch" job status
      description: |
        This endpoint retrieves the status and details of a previously created bulk-launch job using its job ID.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`. If the status is `Processing`, the job is still running.
        Once the job is finished, the `updated_target_groups` and `failed_target_groups` lists will show the outcome for each target group included in the original request.
        If a target group was already in the desired status, it will be included in the `updated_target_groups` list, even though no change was made.
      operationId: get_bulk_launch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding (Batch)
      responses:
        '200':
          description: The bulk "launch" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkLaunchTargetGroupJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                created_at: '2023-01-01T23:00:00.000Z'
                created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                status: Completed
                updated_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                  has_more: false
                failed_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP3
                    failure_reason:
                      code: StatusTransitionNotAllowed
                      description: Status transition is not allowed.
                  has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/pause-fielding-runs-by-target-group-id:
    post:
      summary: Creates a job to pause multiple target groups
      description: "This endpoint creates a bulk job to pause fielding runs for a list of specified target group IDs. This\
        \ action will pause the fielding runs for the specified target groups.\nA target group can only be paused if it is\
        \ currently in a 'live' state.\nIf a target group is already paused, the system considers the action successful.\n\
        \nTo ensure that the same job is not created multiple times, this endpoint uses an `Idempotency-Key` from the request\
        \ header. If a job with the same key has already been \nsubmitted, the system will not create a new one but will treat\
        \ the operation as successful and return the same successful response as for a newly created job.\n\nUpon successful\
        \ submission, the system creates a new bulk job to start the actual processing asynchronously. This means the endpoint\
        \ returns a response quickly without waiting \nfor the entire bulk operation to complete. If the job is created successfully\
        \ or if it already existed due to the idempotency key, the endpoint returns a `201 Created` \nstatus code with the\
        \ job ID in the `Location` header.\n\nTo check the status of the job, you can use the job ID returned in the `Location`\
        \ header with the `Retrieve a bulk job status` endpoint.\nThe processing of the job will continue even if an operation\
        \ on an individual target group fails. The final job status will list which target groups \nwere updated successfully\
        \ and which ones failed.\n"
      operationId: create_bulk_pause_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        description: A list of target group IDs to be paused.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkPauseTargetGroupJobRequest'
            example:
              target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/batch-jobs/pause/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/pause-fielding-runs-by-target-group-id/{job_id}:
    get:
      summary: Retrieves a bulk "pause" job status
      description: |
        This endpoint retrieves the status and details of a previously created bulk-pause job using its job ID.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`. If the status is `Processing`, the job is still running.
        Once the job is finished, the `updated_target_groups` and `failed_target_groups` lists will show the outcome for each target group included in the original request.
        If a target group was already in the desired status, it will be included in the `updated_target_groups` list, even though no change was made.
      operationId: get_bulk_pause_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding (Batch)
      responses:
        '200':
          description: The bulk "pause" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkPauseTargetGroupJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                created_at: '2023-01-01T23:00:00.000Z'
                created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                status: Completed
                updated_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                  has_more: false
                failed_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP3
                    failure_reason:
                      code: StatusTransitionNotAllowed
                      description: Status transition is not allowed.
                  has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/relaunch-fielding-runs-by-target-group-id:
    post:
      summary: Creates a job to relaunch multiple target groups
      description: "This endpoint creates a bulk job to relaunch fielding runs for a list of specified target group IDs. This\
        \ action will restart the fielding runs for previously completed \ntarget groups. A target group can only be relaunched\
        \ if it is in a 'completed' state and its completes goal and end date have not yet been reached.\n\nTo ensure that\
        \ the same job is not created multiple times, this endpoint uses an `Idempotency-Key` from the request header. If\
        \ a job with the same key has already been \nsubmitted, the system will not create a new one but will treat the operation\
        \ as successful and return the same successful response as for a newly created job.\nIf a target group is already\
        \ live, the system considers the action successful.\n\nUpon successful submission, the system creates a new bulk job\
        \ to start the actual processing asynchronously. This means the endpoint returns a response quickly without waiting\
        \ \nfor the entire bulk operation to complete. If the job is created successfully or if it already existed due to\
        \ the idempotency key, the endpoint returns a `201 Created` \nstatus code with the job ID in the `Location` header.\n\
        \nTo check the status of the job, you can use the job ID returned in the `Location` header with the `Retrieve a bulk\
        \ job status` endpoint.\nThe processing of the job will continue even if an operation on an individual target group\
        \ fails. The final job status will list which target groups \nwere updated successfully and which ones failed.\n"
      operationId: create_bulk_relaunch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        description: A list of target group IDs to be relaunched.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkRelaunchTargetGroupJobRequest'
            example:
              target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/batch-jobs/relaunch/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/relaunch-fielding-runs-by-target-group-id/{job_id}:
    get:
      summary: Retrieves a bulk "relaunch" job status
      description: |
        This endpoint retrieves the status and details of a previously created bulk-relaunch job using its job ID.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`. If the status is `Processing`, the job is still running.
        Once the job is finished, the `updated_target_groups` and `failed_target_groups` lists will show the outcome for each target group included in the original request.
        If a target group was already in the desired status, it will be included in the `updated_target_groups` list, even though no change was made.
      operationId: get_bulk_relaunch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding (Batch)
      responses:
        '200':
          description: The bulk "relaunch" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkRelaunchTargetGroupJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                created_at: '2023-01-01T23:00:00.000Z'
                created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                status: Completed
                updated_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                  has_more: false
                failed_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP3
                    failure_reason:
                      code: StatusTransitionNotAllowed
                      description: Status transition is not allowed.
                  has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/resume-fielding-runs-by-target-group-id:
    post:
      summary: Creates a job to resume multiple target groups
      description: "This endpoint creates a bulk job to resume fielding runs for a list of specified target group IDs. This\
        \ action will resume the fielding \nruns for previously paused target groups. A target group can only be resumed if\
        \ its completes goal and end date have not yet been reached.\nIf a target group is already live, the system considers\
        \ the action successful.\n\nTo ensure that the same job is not created multiple times, this endpoint uses an `Idempotency-Key`\
        \ from the request header. If a job \nwith the same key has already been submitted, the system will not create a new\
        \ one but will treat the operation as successful and \nreturn the same successful response as for a newly created\
        \ job.\n\nUpon successful submission, the system creates a new bulk job to start the actual processing asynchronously.\
        \ This means the endpoint returns a \nresponse quickly without waiting for the entire bulk operation to complete.\
        \ If the job is created successfully or if it already existed \ndue to the idempotency key, the endpoint returns a\
        \ `201 Created` status code with the job ID in the `Location` header.\n\nTo check the status of the job, you can use\
        \ the job ID returned in the `Location` header with the `Retrieve a bulk job status` endpoint.\nThe processing of\
        \ the job will continue even if an operation on an individual target group fails. The final job status will list which\
        \ target groups \nwere updated successfully and which ones failed.\n"
      operationId: create_bulk_resume_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        description: A list of target group IDs to be resumed.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkResumeTargetGroupJobRequest'
            example:
              target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/batch-jobs/resume/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/resume-fielding-runs-by-target-group-id/{job_id}:
    get:
      summary: Retrieves a bulk "resume" job status
      description: |
        This endpoint retrieves the status and details of a previously created bulk-resume job using its job ID.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`. If the status is `Processing`, the job is still running.
        Once the job is finished, the `updated_target_groups` and `failed_target_groups` lists will show the outcome for each target group included in the original request.
        If a target group was already in the desired status, it will be included in the `updated_target_groups` list, even though no change was made.
      operationId: get_bulk_resume_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding (Batch)
      responses:
        '200':
          description: The bulk "resume" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkResumeTargetGroupJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                created_at: '2023-01-01T23:00:00.000Z'
                created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                status: Completed
                updated_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                  has_more: false
                failed_target_groups:
                  data:
                  - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP3
                    failure_reason:
                      code: StatusTransitionNotAllowed
                      description: Status transition is not allowed.
                  has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/launch-from-draft:
    post:
      summary: Job to launch a draft target group
      description: |
        Creates an asynchronous job to launch a `draft` target group, setting its status to `live`.

        A `201 Created` response indicates that the job was successfully created, not that the target group is live.
        To check the outcome, you must poll the job status URL returned in the `Location` header.
        You can find the details for the status endpoint here: [Get launch job status](./get-launch-fielding-run-from-draft-job).
      operationId: create_launch_fielding_run_from_draft_job
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      requestBody:
        description: The desired end date for the fielding run.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLaunchFieldingRunFromDraftJobRequest'
            example:
              end_fielding_at: '2024-12-31T23:59:59.000Z'
      tags:
      - Fielding
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/fielding-run-jobs/launch-from-draft/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/launch-from-draft/{job_id}
  : get:
      summary: Retrieves a "launch from draft" job status
      description: |
        Retrieves the status and results of a "launch from draft" job.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`.

        * If the status is `Completed`, the `created_fielding_run_id` field will contain the ID of the new fielding run.
        * If the status is `Failed`, the `failure_reason` object will provide details about the error.
      operationId: get_launch_fielding_run_from_draft_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding
      responses:
        '200':
          description: The "launch from draft" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLaunchFieldingRunFromDraftJobResponse'
              examples:
                completed:
                  summary: Completed
                  description: A successfully completed launch job
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_fielding_run_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Completed
                    failure_reason: null
                    job_trace_id: null
                failed:
                  summary: Failed
                  description: A failed launch job with error details
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_fielding_run_id: null
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Failed
                    failure_reason:
                      code: TargetGroupInvalidState
                      description: The target group is not in a draft state and cannot be launched.
                    job_trace_id: 0af7651916cd43dd8448eb211c80319c
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/schedule-from-draft:
    post:
      summary: Schedules a draft target group to go live
      description: |
        Creates an asynchronous job to schedule a `draft` target group, setting its status to `scheduled`.

        A `201 Created` response indicates that the job was successfully created, not that the target group is scheduled.
        To check the outcome, you must poll the job status URL returned in the `Location` header.
        You can find the details for the status endpoint here: [Get schedule job status](./get-schedule-fielding-run-from-draft-job).
      operationId: create_schedule_fielding_run_from_draft_job
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      requestBody:
        description: The desired start and end dates for the fielding run.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScheduleFieldingRunFromDraftJobRequest'
            example:
              start_fielding_at: '2024-09-01T09:00:00.000Z'
              end_fielding_at": '2024-09-30T23:59:59.000Z'
      tags:
      - Fielding
      responses:
        '201':
          description: The job was created successfully. Poll the URL in the `Location` header to track its status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
              example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/fielding-run-jobs/schedule-from-draft/01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/schedule-from-draft/{job_id}
  : get:
      summary: Retrieves a "schedule from draft" job status
      description: |
        Retrieves the status and results of a "schedule from draft" job.

        You should poll this endpoint periodically until the `status` field is either `Completed` or `Failed`.
        Once the job is finished, the `created_fielding_run_id` field will contain the ID of the created fielding run.
      operationId: get_schedule_fielding_run_from_draft_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Fielding
      responses:
        '200':
          description: The "schedule from draft" job details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetScheduleFieldingRunFromDraftJobResponse'
              examples:
                completed:
                  summary: Completed
                  description: A successfully completed schedule job
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_fielding_run_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Completed
                    failure_reason: null
                    job_trace_id: null
                failed:
                  summary: Failed
                  description: A failed schedule job with error details
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_fielding_run_id: null
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Failed
                    failure_reason:
                      code: InvalidFieldingDates
                      description: The provided start time is in the past.
                    job_trace_id: 0af7651916cd43dd8448eb211c80319c
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs:
    get:
      summary: Lists the fielding runs for a target group
      description: |
        Lists the fielding runs associated with a target group.

        A fielding run defines the time period during which a target group is live and collecting data.

        **Note:** A target group can have at most one fielding run at any time.
        Therefore, the `data` array in the response will contain either zero or one item, and the `has_more` flag will always be `false`.
      operationId: get_fielding_runs_by_target_group_id
      tags:
      - Fielding
      responses:
        '200':
          description: The fielding run details were retrieved successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetListFieldingRunsResponse'
              example:
                data:
                - id: 01BTGNYV6HRNK8K8VKZASZCFP1
                  last_changed_at: '2023-01-01T23:00:00.000Z'
                  last_changed_by: b551326b-ac9d-4d32-8823-4f025787dab9
                  start_fielding_at: '2023-01-02T09:00:00.000Z'
                  end_fielding_at: '2023-01-31T23:59:59.000Z'
                  status: live
                  version: 5
                has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}:
    get:
      summary: Retrieves a fielding run
      description: Retrieves the details of a specific fielding run, including its start and end times, status, and version.
      operationId: get_fielding_run
      tags:
      - Fielding
      responses:
        '200':
          description: The fielding run details were retrieved successfully. Note the `ETag` header, which is required for
            making updates.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFieldingRunResponse'
              example:
                id: 01BTGNYV6HRNK8K8VKZASZCFP1
                last_changed_at: '2023-01-01T23:00:00.000Z'
                last_changed_by: b551326b-ac9d-4d32-8823-4f025787dab9
                start_fielding_at: '2023-01-02T09:00:00.000Z'
                end_fielding_at: '2023-01-31T23:59:59.000Z'
                status: scheduled
                version: 5
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      summary: Updates a fielding run
      description: |
        Updates the `start_fielding_at` and `end_fielding_at` dates for a specific fielding run.

        This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.

        Fielding runs can only be updated for target groups in either scheduled, live or paused status. The operation will fail if the target group status is `completed`.
      operationId: update_fielding_run
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: The fielding run update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFieldingRunRequest'
            example:
              start_fielding_at: '2024-10-01T09:00:00.000Z'
              end_fielding_at: '2024-10-31T23:59:59.000Z'
      responses:
        '202':
          description: The request to update the fielding run was accepted successfully. The `ETag` header in the response
            contains the new version of the resource.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateFieldingRunResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/FieldingRunID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/complete
  : post:
      operationId: complete_fielding_run
      summary: Completes a fielding run
      description: |
        Immediately completes a `live` or `scheduled` fielding run, setting its status to `completed`.

        This action will close the target group to new respondents, regardless of whether its completes goal or end date has been reached.

        This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '204':
          description: The request to complete the fielding run was accepted successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/launch-now
  : post:
      operationId: launch_now_fielding_run
      summary: Launches fielding run immediately
      description: |
        Immediately launches a `scheduled` fielding run, setting its status to `live`.

        This action updates the `start_fielding_at` timestamp to the current time.
        The `end_fielding_at` timestamp is also recalculated to preserve the original fielding duration.

        This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for the resource.
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '200':
          description: The fielding run was launched successfully. The response body contains the updated start and end times.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchNowFieldingRunResponse'
              example:
                start_fielding_at: '2024-08-01T10:00:00.000Z'
                end_fielding_at: '2024-08-15T10:00:00.000Z'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/FieldingRunID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/pause:
    post:
      operationId: pause_fielding_run
      summary: Pauses a fielding run
      description: |
        Pauses a `live` fielding run, setting its status to `paused`.

        While a fielding run is paused, it will not collect new completes. You can set it `live` again using the `resume` endpoint.

        This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '204':
          description: The fielding run was paused successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/relaunch
  : post:
      operationId: relaunch_fielding_run
      summary: Relaunches a fielding run
      description: |
        Relaunches a `completed` fielding run, setting its status back to `live`.

        Key behaviors:

        * A fielding run will only be relaunched if its completes goal and end date have not yet been reached.
        * This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '204':
          description: The fielding run was relaunched successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/resume:
    post:
      operationId: resume_fielding_run
      summary: Resumes a fielding run
      description: |
        Resumes a `paused` fielding run, setting its status back to `live`.

        Key behaviors:

        * A fielding run will only be resumed if its completes goal and end date have not yet been reached.
        * This endpoint uses optimistic locking. You must provide the fielding run's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '204':
          description: The fielding run was resumed successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/intelligent-calendar/suggest-days:
    post:
      summary: Suggest the required fielding time for a target group
      description: Suggests the optimal number of days required to field a target group based on its specifications. You can
        use this endpoint to estimate fielding time before creating a target group. You'll need to provide details like the
        locale, price, length of interview (LOI), incidence rate (IR), and desired number of completes.
      operationId: suggest_days
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuggestDaysRequest'
            example:
              locale: eng_us
              price:
                value: '2.50'
                currency_code: USD
              length_of_interview: 15
              incidence_rate": 0.25
              completes: 500
              collects_pii: false
      responses:
        '200':
          description: The suggested number of days was calculated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestDaysResponse'
              example:
                days: 14
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Intelligent Calendar
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/intelligent-calendar/suggest-time-range:
    get:
      summary: Suggests an optimal fielding time range for a locale
      description: |
        Suggests an optimal time range to field a target group in a specific locale, taking into account local holidays and respondent activity patterns.

        How to specify a time range:

        * To get a suggestion for a specific duration starting from now, provide the `days` parameter.
        * To get a suggestion within a specific date window, provide both the `start` and `end` parameters.
      operationId: suggest_time_range
      parameters:
      - name: days
        in: query
        description: The number of days to field the target group. Use this parameter OR both `start` and `end`.
        required: false
        schema:
          type: integer
          minimum: 1
        example: 10
      - name: start
        in: query
        description: The start date for the fielding window (RFC3339 format). Use this parameter in conjunction with `end`,
          OR only use `days`.
        required: false
        schema:
          type: string
          format: date-time
        example: '2023-01-01T23:00:00.000Z'
      - name: end
        in: query
        description: The end date for the fielding window (RFC3339 format). Use this parameter in conjunction with `start`,
          OR only use `days`.
        required: false
        schema:
          type: string
          format: date-time
        example: '2023-01-31T23:00:00.000Z'
      - name: locale
        in: query
        description: Locale code.
        schema:
          $ref: '#/components/schemas/LocaleCode'
      responses:
        '200':
          description: The suggested time range was calculated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestedTimeRangeResponse'
              example:
                start: '2024-09-03T08:00:00.000Z'
                end: '2024-09-17T22:00:00.000Z'
                holidays:
                - date: '2024-09-02'
                  name: Labor Day
                  respondent_rate: 0.7
                  completes_rate: 0.65
                timezone: America/New_York
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Intelligent Calendar
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles:
    get:
      operationId: list_profiles
      summary: List profiles for a target group
      tags:
      - Manage Profiles for Launched Target Groups
      description: Returns a list of all non-control, blended and regular profiles for the target group after launch.
      responses:
        '200':
          description: Successfully return list of profiles.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfilesResponseV3'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}:
    get:
      operationId: get_profile
      summary: Retrieve a profile
      tags:
      - Manage Profiles for Launched Target Groups
      description: Returns a regular profile detail or blended profile detail by profile ID.
      responses:
        '200':
          description: Successfully return the profile.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegularProfileV3'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/completes-goal:
    put:
      operationId: update_profile_filling_goal
      summary: Update completes goal on a target group and its profiles
      tags:
      - Manage Profiles for Launched Target Groups
      description: |
        Updates the completes goal for a target group, both at the root target group level level and for individual quotas.

        Key behaviors:

        * You can update the target group `completes_goal`, individual quota goals within `profiles`, or both in a single request.
        * If you only update the total `completes_goal`, the goals for individual quotas will be recalculated based on supplier distribution data.
        * To get the necessary `profile_id` and `id` (for the quota), you must first call the `GET /.../profiles` endpoint.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FillingGoalUpdateRequestV3'
      responses:
        '200':
          description: Successfully updated the filling goal.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfilesResponseV3'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationStructureErrorResponseDemographics'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/delete-profiles:
    post:
      operationId: batch_delete_profiles
      summary: Delete profiles
      tags:
      - Manage Profiles for Launched Target Groups
      description: Allows the user to delete multiple profiles and quotas associated to the profile on a target group.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchProfileDeletionRequestV3'
      responses:
        '204':
          description: Successfully deleted profiles
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationStructureErrorResponseDemographics'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/manage-profiles:
    post:
      operationId: manage_target_group_profiles
      summary: Manage a target group's profiles
      tags:
      - Manage Profiles for Launched Target Groups
      description: "Replaces all profiles on a launched target group with the set of profiles provided in the request.\n\n\
        :::warning \nThis is a destructive \"all or nothing\" operation. Any existing profiles on the target group that are\
        \ not included in this request will be deleted.\n:::\n\nThe request is fully validated before any changes are applied.\
        \ If any profile in the request is invalid, the entire operation is halted, and no changes are made to the target\
        \ group.\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManageProfilesRequestV3'
      responses:
        '201':
          description: Successfully applied profiles to the target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfilesResponseV3'
        '400':
          $ref: '#/components/responses/Error_BadRequest_DemandAPI'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          $ref: '#/components/responses/Error_Internal_DemandAPI'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/webhooks:
    get:
      tags:
      - Notifications Webhooks
      summary: Lists all webhooks for an account
      operationId: get_webhooks
      description: Lists all of the webhook subscriptions that have been configured for your account.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A list of webhooks was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksList'
              example:
                webhooks:
                - id: e8e705b9-ef5a-437c-873a-4f49a679f802
                  url: https://example.com/target-group-updated-webhook
                  events:
                  - target-group-updated
                  created_at: '2023-01-01T23:00:00.000Z'
                  updated_at: '2023-01-01T23:00:00.000Z'
                - id: 3fda1b8d-bf76-4f38-bddb-8734cbec553f
                  url: https://example.com/quota-fill-registered-webhook
                  events:
                  - quota-fill-registered
                  created_at: '2023-01-01T23:00:00.000Z'
                  updated_at: '2023-01-01T23:00:00.000Z'
                has_more: true
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      tags:
      - Notifications Webhooks
      summary: Creates a new webhook for an account
      operationId: create_webhook
      description: Creates a new webhook subscription for an account. This allows your application to receive real-time notifications
        for specific events.
      requestBody:
        $ref: '#/components/requestBodies/WebhookCreate'
      responses:
        '201':
          description: |
            The webhook was created successfully.

            **Important:** The `secret` is only returned on creation. You must store it securely, as you will need it to verify the signature of incoming webhook requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCreated'
              example:
                id: 01JPVZD75DW4KRP7MPFMF6KGZX
                url: https://example.com/webhook
                events:
                - target-group-updated
                secret: FP7UPZpATKBcYJj4va95PYud+a3gCidRERiLO+9MoFE=
                created_at: '2023-01-01T23:00:00.000Z'
                updated_at: '2023-01-01T23:00:00.000Z'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/webhooks/{webhook_id}:
    get:
      tags:
      - Notifications Webhooks
      summary: Retrieves a webhook for an account
      operationId: get_webhook
      description: Retrieves the details of a specific webhook subscription. Note the `ETag` header in the response, which
        is required for making updates or deletions.
      responses:
        '200':
          description: The webhook was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
              example:
                id: 01JPVZD75DW4KRP7MPFMF6KGZX
                url: https://example.com/webhook
                events:
                - quota-fill-registered
                created_at: '2023-01-01T23:00:00.000Z'
                updated_at: '2023-01-01T23:00:00.000Z'
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      tags:
      - Notifications Webhooks
      summary: Updates a webhook for an account
      operationId: update_webhook
      description: |
        Updates the URL or the list of subscribed events for a webhook.

        This endpoint uses optimistic locking. You must provide the webhook's current version in the `If-Match` header.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        $ref: '#/components/requestBodies/WebhookUpdate'
      responses:
        '200':
          description: The webhook was updated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Webhook'
              example:
                id: 01JPVZD75DW4KRP7MPFMF6KGZX
                url: https://example.com/webhook
                events:
                - quota-fill-registered
                created_at: '2023-01-01T23:00:00.000Z'
                updated_at: '2023-01-01T23:00:00.000Z'
          headers:
            idempotency-key:
              $ref: '#/components/headers/IdempotencyKey'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    delete:
      tags:
      - Notifications Webhooks
      summary: Deletes a webhook for an account
      operationId: delete_webhook
      description: |
        Permanently deletes a webhook subscription.

        This endpoint uses optimistic locking. You must provide the webhook's current version in the `If-Match` header to confirm the deletion.
        You can get this value from the `ETag` header of a `GET` request for this resource.
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      responses:
        '204':
          description: The webhook was deleted successfully.
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/WebhookID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/webhooks/{webhook_id}/events-history:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/WebhookID'
    - $ref: '#/components/parameters/WebhookEventsDeliveryStatuses'
    - $ref: '#/components/parameters/WebhookEventsTypes'
    - $ref: '#/components/parameters/WebhookEventsEndTime'
    - $ref: '#/components/parameters/WebhookEventsStartTime'
    - $ref: '#/components/parameters/WebhookEventsOrder'
    - $ref: '#/components/parameters/PageSize'
    - $ref: '#/components/parameters/StartAfter'
    - $ref: '#/components/parameters/EndBefore'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      tags:
      - Notifications Webhooks
      summary: Returns webhook events history for replay and debugging purposes
      operationId: list_webhook_events_history
      description: |
        Returns webhook events history for replay and debugging purposes. Filter events by type, delivery status, and time range to analyze past webhook deliveries and replay failed events.
      responses:
        '200':
          $ref: '#/components/responses/WebhookEventsHistory'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /accounts/{account_id}/webhooks/{webhook_id}/regenerate-secret:
    post:
      tags:
      - Notifications Webhooks
      summary: Regenerates the secret for a webhook
      operationId: regenerate_webhook_secret
      description: |
        Immediately invalidates the old secret and generates a new one for a webhook.

        **Important:** After regenerating, you must update your webhook handler with the new secret to continue verifying payloads. The old secret will no longer work.
      requestBody:
        description: An empty request body is required for this operation.
        required: false
        content: {}
      responses:
        '200':
          description: |
            The new webhook secret was generated successfully.

            **Important:** The new `secret` is only returned at this time. You must store it securely, as you will need it to verify the signature of incoming webhook requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookSecretRegenerated'
              example:
                id: 01JPVZD75DW4KRP7MPFMF6KGZX
                url: https://example.com/session-updated-webhook
                events:
                - session-updated
                secret: FP7UPZpATKBcYJj4va95PYud+a3gCidRERiLO+9MoFE=
                created_at: '2023-01-01T23:00:00.000Z'
                updated_at: '2023-01-01T23:00:00.000Z'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/WebhookID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /accounts/{account_id}/webhooks-events:
    get:
      tags:
      - Notifications Webhooks
      summary: List all available webhook event types
      operationId: get_webhook_events
      description: Lists all of the event types you can subscribe to when creating or updating a webhook subscription.
      responses:
        '200':
          description: A list of available webhook events was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEventTypesList'
              example:
                events:
                - target-group-updated
                - quota-fill-registered
                - session-updated
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/drafts/generate-blended-profile:
    post:
      operationId: generate_blended_profile
      summary: Generates a blended profile from regular profiles
      tags:
      - Profiling Helper
      description: |
        Generates a single `blended` profile by combining two or three `regular` profiles.

        This allows you to experiment with complex, interlocked quota structures without creating a target group.
        The endpoint automatically calculates the supplier distribution for the resulting quotas.

        Key behaviors:

        * You must provide between two and three regular profiles to be blended.
        * When this profile is later used to create a target group, there is a limit of 350 total quotas.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateDraftInterlockedProfileRequestV3'
      responses:
        '201':
          description: The blended profile was generated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompositeDraftRegularProfileV3'
        '400':
          description: The request is malformed or contains syntactically invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '422':
          description: The request is well-formed, but the profile configuration is invalid (e.g., overlapping quotas, incorrect
            logic). The response body contains detailed validation errors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          description: An unexpected internal error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/profiles/validate:
    post:
      operationId: validate_profiles
      summary: Validates a profile
      description: |
        Validates a complete profile and target configuration without creating or modifying any resources.

        You can use this stateless endpoint to check your profile logic for business rule violations (e.g., overlapping quotas) before you use it to create or update a target group.
        It provides detailed warnings and errors to help you build a valid configuration.
      tags:
      - Profiling Helper
      requestBody:
        description: The complete profile configuration to be validated.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateProfilesRequestV3'
      responses:
        '204':
          description: The profile configuration is valid and has no errors or warnings.
        '400':
          description: The request is malformed or contains syntactically invalid parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '422':
          description: The request is well-formed, but the profile configuration is invalid (e.g., overlapping quotas, incorrect
            logic). The response body contains detailed validation errors.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          description: An unexpected internal error occurred.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/questions-translation:
    get:
      summary: Lists all available questions, answers, and conditions.
      description: |
        Lists the available standard and account-specific profiling questions you can use to define your target audience. This endpoint provides the `question_id` and `option` IDs required for building the `profiling` object in other API calls, such as when creating a target group or calculating feasibility.

        Key behaviors:

        * **Filtering:** You can filter the list by providing a comma-separated list of question `id`s, or perform a text search across questions and answers using the `query` parameter. **If no question IDs are provided, all questions and answers/conditions will be returned.**
        * **Custom Qualifications:** By default, only standard Cint questions are returned. Use the `allow_custom_quals` parameter to include your account-specific questions, or `only_custom_quals` to retrieve **only** those questions.
        * **Translation:** The `description` and `text` fields are translated based on the `locale` and `translation_language` parameters. The `..._translated` fields provide a consistent English-language fallback.
        * **Pagination:** The response is paginated. Use the `page_size` parameter to control the number of results per page and the `start_after` or `end_before` cursors to navigate between pages.
        * **Defaults:** If you don't provide a `locale`, the default is `eng_us`. If `translation_language` is omitted, the default is English.
      operationId: account_questions_translation
      responses:
        '200':
          description: A list of profiling questions and translations were retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionsTranslationResponse'
              example:
                total: 5
                profiles:
                - object: regular
                  name: AGE
                  description: Por favor, indique su edad.
                  description_translated: What is your age?
                  quotas_enabled: false
                  targets:
                  - text: ''
                    text_translated: ''
                    conditions:
                    - object: range
                      question_id: 42
                      option: null
                  option_mask: XX
                  standard: true
                  profile_condition_type: Numeric - Open-end
                  classification_id: 32
                  classification_code: DEM
                - object: regular
                  name: GENDER
                  description: ¿Es usted…?
                  description_translated: What is your gender?
                  quotas_enabled: false
                  targets:
                  - text: Hombre
                    text_translated: Male
                    conditions:
                    - object: selection
                      question_id: 43
                      option: '1'
                  - text: Mujer
                    text_translated: Female
                    conditions:
                    - object: selection
                      question_id: 43
                      option: '2'
                  - text: Ninguno de los anteriores
                    text_translated: None of the above
                    conditions:
                    - object: selection
                      question_id: 43
                      option: '-3105'
                  option_mask: TestingJohnnyZ
                  standard: true
                  profile_condition_type: Single Punch
                  classification_id: 32
                  classification_code: DEM
                - object: regular
                  name: ZIP
                  description: ¿Cuál es su código postal?
                  description_translated: What is your zip code?
                  quotas_enabled: false
                  targets:
                  - text: ''
                    text_translated: ''
                    conditions:
                    - object: open_ended
                      question_id: 45
                      option: null
                      allow_all_values: true
                  option_mask: XXXXX
                  standard: true
                  profile_condition_type: Numeric - Open-end
                  classification_id: 32
                  classification_code: DEM
                - object: regular
                  name: HISPANIC
                  description: ¿Es usted Hispano, Latino o del origen Español?
                  description_translated: Are you of Hispanic, Latino, or Spanish origin?
                  quotas_enabled: false
                  targets:
                  - text: Argentina
                    text_translated: Argentina
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '4'
                  - text: Colombia
                    text_translated: Colombia
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '5'
                  - text: Ecuador
                    text_translated: Ecuador
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '6'
                  - text: El Salvador
                    text_translated: El Salvador
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '7'
                  - text: España
                    text_translated: Spain
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '12'
                  - text: Guatemala
                    text_translated: Guatemala
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '8'
                  - text: Nicaragua
                    text_translated: Nicaragua
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '9'
                  - text: No, no soy ni Hispano ni Latino ni de Origen Español
                    text_translated: No , not of Hispanic, Latino, or Spanish origin
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '1'
                  - text: Otro
                    text_translated: Other
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '14'
                  - text: Panama
                    text_translated: Panama
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '10'
                  - text: Peru
                    text_translated: Peru
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '11'
                  - text: Prefiero no responder
                    text_translated: Prefer not to answer
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '15'
                  - text: Si, Puerto Rico
                    text_translated: Yes, Puerto Rican
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '16'
                  - text: Si, soy Mexicano, México-Americano o Chicano
                    text_translated: Yes, Mexican, Mexican American, Chicano
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '2'
                  - text: Sí, Cubano
                    text_translated: Yes, Cuban
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '3'
                  - text: Venezuela
                    text_translated: Venezuela
                    conditions:
                    - object: selection
                      question_id: 47
                      option: '13'
                  option_mask: ''
                  standard: true
                  profile_condition_type: Single Punch
                  classification_id: 32
                  classification_code: DEM
                - object: regular
                  name: STORES 1
                  description: Thinking about grocery shopping for your household, about how often do you shop at each of
                    the following stores for groceries?
                  description_translated: Thinking about grocery shopping for your household, about how often do you shop
                    at each of the following stores for groceries?
                  quotas_enabled: false
                  targets:
                  - text: Wal- Mart
                    text_translated: Wal- Mart
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '1'
                  - text: Target
                    text_translated: Target
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '2'
                  - text: Whole Foods
                    text_translated: Whole Foods
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '3'
                  - text: Trader Joe's
                    text_translated: Trader Joe's
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '4'
                  - text: 7-11
                    text_translated: 7-11
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '5'
                  - text: Walgreen's
                    text_translated: Walgreen's
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '6'
                  - text: CVS
                    text_translated: CVS
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '7'
                  - text: Kroger
                    text_translated: Kroger
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '8'
                  - text: Randalls
                    text_translated: Randalls
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '9'
                  - text: CostCo
                    text_translated: CostCo
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '10'
                  - text: Sam's Club
                    text_translated: Sam's Club
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '11'
                  - text: None of the above
                    text_translated: None of the above
                    conditions:
                    - object: selection
                      question_id: 63
                      option: '-3105'
                  option_mask: ''
                  standard: false
                  profile_condition_type: Multi Punch
                  classification_id: -1
                  classification_code: ''
                has_more: true
                next_cursor: 00000000-0000-0000-0000-00000000003f
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Profiling Library
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/QuestionsTranslationIDs'
    - $ref: '#/components/parameters/QuestionsTranslationLocale'
    - $ref: '#/components/parameters/QuestionsTranslationTranslationLanguage'
    - $ref: '#/components/parameters/QuestionsTranslationQuery'
    - $ref: '#/components/parameters/QuestionsTranslationAllowCustomQuals'
    - $ref: '#/components/parameters/QuestionsTranslationAllowOnlyCustomQuals'
    - $ref: '#/components/parameters/EndBefore'
    - $ref: '#/components/parameters/StartAfter'
    - $ref: '#/components/parameters/PageSize'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/questions/categories:
    get:
      operationId: list_all_question_categories
      summary: Lists all available question categories
      description: Lists all available categories for profiling questions. You can use these categories to help organize and
        discover relevant questions when building a target group.
      tags:
      - Profiling Library
      responses:
        '200':
          description: A list of question categories was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListQuestionCategories'
              example:
                categories:
                - id: 23
                  code: AIR
                  name: Airlines/Travel
                - id: 25
                  code: AUT
                  name: Automotive
                - id: 28
                  code: B2B
                  name: Business to Business
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/supplier-quota-distribution
  : get:
      summary: Retrieves the supplier distribution for a profile
      description: Retrieves a profile's quota structure, including the projected distribution of completes across different
        suppliers based on historical data. You can use this data to understand how your quotas are likely to be filled.
      operationId: get_panel_distribution_by_profile
      responses:
        '200':
          description: The supplier distribution prediction was retrieved successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegularProfileV3'
        '400':
          $ref: '#/components/responses/Error_BadRequest_DemandAPI'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal_DemandAPI'
      tags:
      - Profiling Quotas By Supplier
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/supplier-quota-distribution/draft:
    post:
      summary: Calculates the supplier distribution for a new target group
      description: |
        Calculates the projected distribution of completes across different suppliers for a new, unsaved target group configuration.

        You can use this endpoint to understand how your proposed quotas are likely to be filled by different panel sources.

        **Note:** Providing supplier allocation details in the request is not yet supported but is planned for a future release.
      operationId: get_panel_distribution_draft
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PanelDistributionRequestV3'
      responses:
        '200':
          description: The supplier distribution prediction was calculated successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestDraftRegularProfileV3'
        '400':
          $ref: '#/components/responses/Error_BadRequest_DemandAPI'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal_DemandAPI'
      tags:
      - Profiling Quotas By Supplier
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/profiling-templates:
    get:
      tags:
      - Profiling Templates
      operationId: list_profile_templates
      summary: List profile templates
      description: This endpoint returns a paginated list of your available profile templates. You can filter the list by
        scope and locale.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/Order'
      - $ref: '#/components/parameters/ProfilingTemplatesScope'
      - $ref: '#/components/parameters/ProfilingTemplatesLocales'
      responses:
        '200':
          description: Returns a paginated list of profile templates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileTemplatesList'
              example:
                next_cursor: cGFnZT0yJm9yZGVyPWNyZWF0ZWRfYXQlM0FkZXNj
                previous_cursor: null
                data:
                - id: 01HY7WJ4QZ5XN6ZJ8Y9X0A1B2C
                  name: Standard B2C Demographics
                  scope: global
                  locales:
                  - eng-us
                  - eng-gb
                  - deu-de
                  created_at: '2023-10-26T10:00:00Z'
                  updated_at: '2023-10-26T10:00:00Z'
                - id: 01HY7WJ4R0A2B3C4D5E6F7G8H9
                  name: Custom Tech Industry Survey
                  scope: account
                  locales:
                  - eng-us
                  created_at: '2023-11-15T14:30:00Z'
                  updated_at: '2023-11-15T14:35:00Z'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      tags:
      - Profiling Templates
      operationId: create_profile_template
      summary: Create a profile template
      description: This endpoint creates a new profile template with a specified name, scope, and set of questions.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileTemplateRequest'
            example:
              name: New IT Decision Makers Template
              scope: account
              locales:
              - eng-us
              questions:
              - question_id: job_title
                answer_options:
                - cio
                - cto
                - it_manager
              - question_id: company_size
                answer_options:
                - 1-50
                - 51-200
                - 201-1000
      responses:
        '201':
          description: Returns the newly created profile template, including its unique `id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileTemplateResponse'
              example:
                id: 01HY7XM...NEWLY_CREATED_ID
                name: New IT Decision Makers Template
                scope: account
                locales:
                - eng-us
                created_at: '2024-01-15T14:30:00Z'
                updated_at: '2024-01-15T14:30:00Z'
                questions:
                - question_id: job_title
                  answer_options:
                  - cio
                  - cto
                  - it_manager
                - question_id: company_size
                  answer_options:
                  - 1-50
                  - 51-200
                  - 201-1000
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/profiling-templates/{profile_template_id}:
    get:
      tags:
      - Profiling Templates
      operationId: get_profile_template
      summary: Get a profile template
      description: This endpoint returns a single profile template, specified by its unique `id`.
      parameters:
      - $ref: '#/components/parameters/ProfilingTemplatesLocales'
      responses:
        '200':
          description: Returns the specified profile template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileTemplateResponse'
              example:
                id: 01HY7WJ4QZ5XN6ZJ8Y9X0A1B2C
                name: Standard B2C Demographics
                scope: global
                locales:
                - eng-us
                - eng-gb
                - deu-de
                created_at: '2023-10-26T10:00:00Z'
                updated_at: '2023-10-26T10:15:00Z'
                questions:
                - question_id: gender
                  answer_options:
                  - male
                  - female
                  - other
                - question_id: age
                  answer_options:
                  - 18-24
                  - 25-34
                  - 35-44
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      tags:
      - Profiling Templates
      operationId: edit_profile_template
      summary: Edit a profile template
      description: This endpoint updates an existing profile template. You can modify its name, scope, locales, and questions.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileTemplateRequest'
            example:
              name: Updated Standard B2C Demographics
              scope: global
              locales:
              - eng-us
              - eng-gb
              - deu-de
              - fra-fr
              questions:
              - question_id: gender
                answer_options:
                - male
                - female
                - other
                - prefer_not_to_say
              - question_id: age
                answer_options:
                - 18-24
                - 25-34
                - 35-44
                - 45-54
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileTemplateResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    delete:
      tags:
      - Profiling Templates
      operationId: delete_profile_template
      summary: Delete a profile template
      description: |
        This endpoint permanently deletes a profile template.

        :::danger Destructive Action
        This operation cannot be undone.
        :::
      parameters:
      - $ref: '#/components/parameters/ProfilingTemplatesLocales'
      responses:
        '204':
          description: Confirms that the profile template was deleted successfully.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProfileTemplateID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects:
    get:
      summary: List projects for an account
      operationId: list_account_projects
      description: |
        This endpoint returns a paginated list of projects for a specific account.
        The response includes summary details for each project, such as its name, last activity, and key statistics.
      parameters:
      - $ref: '#/components/parameters/ProjectManagerIDFilter'
      - $ref: '#/components/parameters/ProjectStatusFilter'
      - $ref: '#/components/parameters/ProjectNameFilter'
      - $ref: '#/components/parameters/ProjectSearchString'
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/PageSize'
      tags:
      - Projects
      responses:
        '200':
          description: Returns a paginated list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsList'
              example:
                next_cursor: bff6a669-a469-409d-8c94-dcf92258043a
                url: /accounts/101/projects
                has_more: true
                projects:
                - id: 01HD6WD8W4G8FMTFCX0JPR8TXN
                  human_readable_id: FT354J
                  account_id: 101
                  name: Test Project
                  target_group_count: 1
                  status: active
                  last_activity_at: '2023-01-01T23:00:00.000Z'
                  statistics:
                    filling_goal: 1000
                    current_completes: 412
                    current_prescreens: 546
                    incidence_rate_median: 0.05
                    length_of_interview_median_seconds: 600
                    conversion_rate_average: 0.05
                    drop_off_rate_average: 0.05
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      summary: Create a new project
      description: |
        This endpoint creates a new project. Project creation is an asynchronous process.

        A successful request is accepted for processing and immediately returns a `202 Accepted` response with the new project's unique `id`.

        To prevent duplicate projects from being created due to network issues, this endpoint requires an `Idempotency-Key` header.
      operationId: create_project
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInfo'
            example:
              name: New Q1 Marketing Study
              project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
              project_customer_reference_number: Q1-MKTG-STUDY-001
      responses:
        '202':
          description: Confirms that the project creation request has been accepted for processing.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            ETag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectIDResponse'
              example:
                id: 01GV070G3SJECZAGE3Q3J6FV56
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Projects
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}:
    get:
      summary: Retrieve a project
      description: This endpoint retrieves the full details for a single project, specified by its unique `id`.
      operationId: get_project_by_id
      responses:
        '200':
          description: Returns the full details for the specified project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDetails'
              example:
                id: 01BTGNYV6HRNK8K8VKZASZCFP0
                human_readable_id: FT354J
                name: Test Project
                project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
                account_id: 101
                project_customer_reference_number: RF-4567
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Projects
    put:
      summary: Update a project
      description: |
        This endpoint updates the details of an existing project.

        To prevent race conditions, this endpoint uses optimistic locking. You must provide the `If-Match` header with the `ETag` value of the resource you intend to update.

        You can get the latest `ETag` by performing a `GET` request on the project first.
      operationId: update_project
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInfoUpdate'
            example:
              name: Updated Q1 Marketing Study
              project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
              project_customer_reference_number: Q1-MKTG-STUDY-002
      responses:
        '200':
          description: Returns the updated project's `id` and `human_readable_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectIDWithHumanReadableIDResponse'
              example:
                id: 01BTGNYV6HRNK8K8VKZASZCFP0
                human_readable_id: FT354J
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            idempotency-key:
              $ref: '#/components/headers/IdempotencyKey'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '412':
          $ref: '#/components/responses/Precondition_Failed'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Projects
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/overview:
    get:
      summary: Retrieve a project summary
      description: This endpoint retrieves a summary overview of a single project, including its status and key performance
        statistics.
      operationId: project_overview
      responses:
        '200':
          description: Returns a summary overview of the specified project.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectOverview'
              example:
                id: 01BTGNYV6HRNK8K8VKZASZCFP0
                human_readable_id: FT354J
                name: Test Project
                account_id: 101
                status: active
                statistics:
                  filling_goal: 1000
                  current_completes: 412
                  current_prescreens: 546
                  incidence_rate_median: 0.05
                  length_of_interview_median_seconds: 600
                  conversion_rate_average: 0.05
                  drop_off_rate_average: 0.05
                project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
                project_customer_reference_number: RF-4567
                created_at: '2023-01-01T23:00:00.000Z'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Projects
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations:
    get:
      summary: List submitted reconciliations
      operationId: get_reconciliations_by_account_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ReconciliationFileName'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/Status'
      - $ref: '#/components/parameters/SubmittedByUserID'
      - $ref: '#/components/parameters/NextCursor'
      responses:
        '200':
          description: Successfully returned reconciliations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationsFiles'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    post:
      summary: Submit a reconciliation file for processing
      description: |
        Submits a CSV file of respondent IDs and reason codes to be reconciled.  Reconciliation can be submitted when target group is in `Live` or `Paused` or `Complete` status.

        This action creates an asynchronous job to process the file. A `202 Accepted` response indicates that the file has been successfully queued for processing. You can use the `request_id` returned in the response body to track the status of the job.

        Key behaviors:

        * **File Format:** The file must be a CSV with no header row. Each line must contain a respondent ID and a reason code, separated by a comma.
        * **File Size:** The file can contain up to 100,000 rows.
      operationId: post_reconciliations
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ReconciliationFileName'
      - $ref: '#/components/parameters/IdempotencyKeyUUID'
      - $ref: '#/components/parameters/ReconPostContentType'
      requestBody:
        required: true
        content:
          text/csv:
            schema:
              type: string
              description: 'Format each line as: RID, reason code. Do not include a header row.'
              example: |-
                0F1CE179-A917-49FF-9D50-B05FC91F7BD4,11
                75F1404C-65F6-4937-AD2A-588E4F66E07F,11
                9C23131D-388B-4E03-97B3-CF783E491445,932
      responses:
        '202':
          description: Accepted reconciliation request for processing.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/responses-SubmitReconciliationsResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/{request_id}:
    get:
      summary: Retrieve a reconciliation request by ID
      operationId: get_reconciliation_by_request_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Successfully returned reconciliation submission data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestReconciliationByID'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/{request_id}/target-groups:
    get:
      summary: List target groups for a reconciliation submission
      operationId: get_target_groups_by_request_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      responses:
        '200':
          description: Successfully returned paginated list of target groups for a submission's request ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestReconciliationsTargetGroups'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/{request_id}/target-groups/{target_group_id}:
    get:
      summary: Retrieve a target group's reconciliation details from a submission
      operationId: get_target_group_by_request_id_and_target_group_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '200':
          description: Successfully returned target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestReconciliationsTargetGroup'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/{request_id}/downloads/{download_type}:
    get:
      summary: Download a reconciliation result file
      description: |
        Download CSV files related to reconciliation submissions. Files available for download are:
              - `submitted-rids`: The original file submitted by the client. This file is available once the submission is successfully submitted.
              - `expired-rids`: A file containing all expired RIDS for a given submission. This file is available once the submission has completed processing.
              - `invalid-rids`: A file containing all invalid RIDs for a given submission. This file is available once the submission has completed processing.'
      operationId: get_recon_downloads
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      - $ref: '#/components/parameters/ReconciliationDownloadType'
      responses:
        '200':
          description: Successfully returns a CSV file.
          content:
            text/csv:
              schema:
                type: string
                description: CSV file
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/eligible-target-groups:
    get:
      summary: List target groups eligible for reconciliation
      description: List all target groups within the account that have sessions eligible for reconciliation within the current
        month by default. The API can return a list of target groups with sessions expiring next month by including 'next_month'
        in the query parameter.
      operationId: get_eligible_target_groups
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/DueMonth'
      - $ref: '#/components/parameters/ReconTGName'
      - $ref: '#/components/parameters/ReconTGStatus'
      - $ref: '#/components/parameters/ReconProjectName'
      - $ref: '#/components/parameters/ReconProjectManagerID'
      responses:
        '200':
          description: Successfully returned list of target groups.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RequestReconciliationsEligibleTargetGroups'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reconciliations/reason-codes:
    get:
      summary: List reconciliation reason codes and details
      description: Lists all available reason codes and their descriptions. You can use the codes from this endpoint when
        preparing your reconciliation CSV file.
      operationId: request_reconciliation_reason_codes
      parameters:
      - $ref: '#/components/parameters/AccountID'
      responses:
        '200':
          description: Successfully returns a list of reconciliation reason codes and descriptions.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReconciliationReasonCodesResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
      tags:
      - Reconciliations
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/jobs/remove-all-rsids:
    post:
      operationId: create_all_recontact_rsids_removal_job
      summary: Create a job to remove all recontact respondent IDs
      description: |
        This endpoint creates an asynchronous job to remove all stored Respondent IDs (RSIDs) recontact opportunities for the specified Target Group.

        A successful request returns a `201 Created` response with a `job_id` that you can use to track the operation's status.

        :::caution Operational Constraint
        Only one recontact job can run at a time per Target Group. If a job is already in `Processing` status for this Target Group, the API will return a `409 Conflict` error.

        Estimated execution time: Removing 10,000 respondents typically takes between 3 and 5 minutes.
        :::
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '201':
          description: Returns the newly created job ID for tracking the removal process.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRecontactsJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '409':
          $ref: '#/components/responses/Error_Conflict'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/jobs/remove-all-rsids/{job_id}
  : get:
      operationId: recontacts_remove_all_rsids_job_status
      summary: Get information on a remove all Recontact opportunities job
      description: Gets information on a specific remove all Respondent ID (RSID) Recontact opportunities job. This will remove
        all IDs from the Target Group and will prevent any more respondents entering your survey, or the work being launched
        or relaunched until more IDs are added. This should be checked regularly for progress and status. Execution time can
        vary but removing 10,000 identifiers could take between 3 and 5 minutes.
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/UpdateRecontactsJobID'
      responses:
        '200':
          description: The requested "Remove All RSIDs" recontacts job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRecontactRemoveAllRsidsJobStatusResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/jobs/upload-rsids-by-file:
    post:
      operationId: recontact_create_upload_rsids_by_file_job
      summary: Create a job to upload respondent IDs by file
      description: |
        This endpoint creates an asynchronous job to upload a file containing Respondent IDs (RSIDs) for recontact opportunities. The new IDs will be added to any existing ones for the specified Target Group.

        A successful request returns a `201 Created` response with a `job_id` that you can use to track the file processing status.

        ### File Format Rules

        *   The file must be in `CSV` or `TXT` format.
        *   The file must **not** contain a header row.
        *   Each line in the file must contain a single, unique Respondent ID.

        ### Validation and Capacity Limits

        *   **Total Capacity**: The total number of respondent IDs for a target group (existing plus new) cannot exceed 100,000.
        *   **File Size**: The uploaded file size must be less than 5MB.
        *   **Files per Job**: Only one file can be uploaded per job.

        :::caution Operational Constraint
        Only one recontact job can run at a time per Target Group. If a job is already in `Processing` status for this Target Group, the API will return a `409 Conflict` error.

        Estimated execution time: Uploading 10,000 new respondents typically takes between 10 and 15 minutes.
        :::
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: binary
                  description: The file to upload. Must be a plain text or CSV file.
            example:
              file: |
                0F1CE179-A917-49FF-9D50-B05FC91F7BD4
                75F1404C-65F6-4937-AD2A-588E4F66E07F
                9C23131D-388B-4E03-97B3-CF783E491445
      responses:
        '201':
          description: Returns the newly created job ID for tracking the file upload.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRecontactUploadRsidsByFileJobResponse'
              example:
                job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '409':
          $ref: '#/components/responses/Error_Conflict'
        '413':
          $ref: '#/components/responses/Error_ContentTooLarge'
        '415':
          $ref: '#/components/responses/Error_UnsupportedMediaType'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/jobs/upload-rsids-by-file/{job_id}
  : get:
      operationId: get_recontacts_rsids_upload_file_job_status
      summary: Get an upload-by-file job status
      description: This endpoint retrieves the status and details of a specific "upload by file" job. After creating a job,
        you should poll this endpoint periodically until the `status` field changes from `Processing` to either `Completed`
        or `Failed` to get the final result.
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/UpdateRecontactsJobID'
      - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
      responses:
        '200':
          description: Returns the details and current status of the requested upload-by-file job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRecontactRsidsUpdateJobResponse'
              examples:
                JobProcessing:
                  summary: When the job is processing
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Processing
                    completed_at: null
                    failure_reason: null
                    partial_success_reason: null
                    job_trace_id: null
                JobCompletedWithPartialSuccess:
                  summary: When the job is complete (partial success)
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Completed
                    completed_at: '2023-01-01T23:05:10.000Z'
                    failure_reason: null
                    partial_success_reason:
                      description: Upload partially successful. 500 respondent IDs uploaded successfully, 10 failed (invalid
                        or empty).
                    job_trace_id: null
                JobFailed:
                  summary: When the job has failed
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_at: '2023-01-01T23:00:00.000Z'
                    created_by: b551326b-ac9d-4d32-8823-4f025787dab9
                    status: Failed
                    completed_at: '2023-01-01T23:02:00.000Z'
                    failure_reason:
                      code: JobExecutionStartMessageFailed
                      description: The job execution start message failed. Please contact Cint for further assistance.
                    partial_success_reason: null
                    job_trace_id": 0af7651916cd43dd8448eb211c80319c
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/overview:
    get:
      operationId: get_recontacts_overview
      summary: Get recontact overview for a target group
      description: |
        This endpoint retrieves the total number of saved Respondent IDs that have an opportunity to enter the Target Group.

        You can use this count to:
        *   Monitor how close you are to the recontact capacity limit.
        *   Check the result of an upload or removal job.
        *   Determine the maximum number of respondents you can request in your filling goal.
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '200':
          description: The Recontacts information for the requested Target Group
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTargetGroupRecontactsOverviewResponse'
              example:
                saved_respondent_ids_count: 12500
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/rsids:
    get:
      operationId: get_target_group_rsid_recontact_list
      summary: List recontact respondent IDs
      description: This endpoint returns a paginated list of all Respondent IDs (RSIDs) eligible for recontact on this Target
        Group. Use the `start_after` parameter with the `next_cursor` value from a previous response to navigate through pages.
      tags:
      - Recontacts
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
      responses:
        '200':
          description: Returns a paginated list of respondent IDs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecontactsRespondentIDListResponse'
              example:
                data:
                - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
                - 8f8e1cda-2c0a-4b9e-9e7f-7a4d5e2c1b3d
                - c3d4e5f6-a7b8-4c9d-8e1f-2a3b4c5d6e7f
                next_cursor: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
                url: accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/recontacts/rsids
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/reports:
    get:
      operationId: report_requests
      summary: List report requests
      description: |
        Retrieves a paginated list of report requests. This endpoint is the starting point for managing report workflows.

        :::note Data and Timeframe Limitations
        *   A single report request can cover a maximum duration of six months.
        *   Data is available for the last 12 months.
        *   Reporting data is near-real-time but should not be used for live management of target groups, as latency cannot be guaranteed.
        :::

        You will need one of the following roles to access this endpoint:
        *   Buyer Admin (`buy_admin`)
        *   Buyer Manager (`buy_mgr`)
        *   Buy Analyst (`buy_anlyst`)
      tags:
      - Reports
      responses:
        '200':
          description: Returns a paginated list of report requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportRequestList'
              example:
                next_cursor: bff6a669-a469-409d-8c94-dcf92258043a
                reports_requests:
                - report_id: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
                  report_type: sample-bought
                  status: completed
                  level: Account
                  account_name: Lucid Marketplace Services
                  create_date: '2023-01-01T23:00:00.000Z'
                  report_url: https://exchange.cint.com/download?file=1_sample-bought_2024_02_29_22_26_03.csv
                  create_params:
                    start_date: '2023-08-01'
                    end_date: '2023-08-30'
                    filter: account
                    filter_ids:
                    - '101'
                    report_options: null
                  requestor:
                    id: 96C65204-90C2-4DCB-9393-B8226DD50C76
                    name: John Doe
                    email: JohnDoe@cint.com
                - report_id: 9c71e48f-bf63-46f2-bde7-f93bdf49f12e
                  report_type: completes
                  status: pending
                  level: Project
                  account_name: Lucid Marketplace Services
                  create_date: '2023-01-02T11:00:00.000Z'
                  report_url: null
                  create_params:
                    start_date: '2023-09-01'
                    end_date: '2023-09-30'
                    filter: project
                    filter_ids:
                    - 01BTGNYV6HRNK8K8VKZASZCFP0
                    report_options: null
                  requestor:
                    id: 96C65204-90C2-4DCB-9393-B8226DD50C76
                    name: John Doe
                    email: JohnDoe@cint.com
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ReportTypeQuery'
    - $ref: '#/components/parameters/EndBefore'
    - $ref: '#/components/parameters/StartAfter'
    - $ref: '#/components/parameters/PageSize'
    - $ref: '#/components/parameters/Level'
    - $ref: '#/components/parameters/ParametersStatus'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reports/{report_id}/download:
    get:
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ReportId'
      operationId: download_report_v2
      summary: Download a report
      description: |
        This endpoint retrieves a generated report file. The format of the file, either CSV or XLSX, depends on the original report type.

        :::info Handling the Response
        The body of a successful response contains the raw data of the report file, not a JSON object. You'll need to configure your HTTP client to save the raw response body to a file with the appropriate extension (e.g., `.csv` or `.xlsx`).
        :::
      tags:
      - Reports
      responses:
        '200':
          description: Returns the report file in either CSV or XLSX format.
          content:
            text/csv:
              schema:
                type: string
            application/vnd.ms-excel:
              schema:
                type: string
                format: binary
            application/vnd.openxmlformats-officedocument.spreadsheetml.sheet:
              schema:
                type: string
                format: binary
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reports/{report_id}/share:
    get:
      operationId: share_report
      summary: Get a shareable report link
      description: |
        This endpoint generates a temporary, shareable link (a pre-signed URL) for a specific report.

        :::info URL Expiration
        The pre-signed URL is temporary and will expire after a set period of time. You should not store this URL for long-term use. Instead, call this endpoint to generate a new URL each time you need to provide access.
        :::
      tags:
      - Reports
      responses:
        '200':
          description: Returns a shareable, pre-signed URL for the report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportShareResponse'
              example:
                report_pre_signed_url: https://cint-reports.s3.amazonaws.com/some-report-file.csv?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1678886400&Signature=vjXoG...
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ReportId'
    - $ref: '#/components/parameters/ReportTypeQuery'
      required: true
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reports/{report_id}/status:
    get:
      operationId: report_status
      summary: Report Request Status
      description: Get status for a report job
      tags:
      - Reports
      responses:
        '200':
          description: Successfully returns status information for a report job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportStatusResponse'
              examples:
                InProgress:
                  summary: When the report is in progress
                  value:
                    report_id: 01HY3NF37B6J2ABPA3H49C92YZ
                    status: IN PROGRESS
                    message: Report generation is in progress.
                    start_date: '2023-01-01T23:00:00.000Z'
                    end_date: '2023-01-11T23:00:00.000Z'
                    report_url: null
                    data_analysis: false
                    survey_id: '1341234'
                    respondent_answer: false
                Completed:
                  summary: When the report is complete
                  value:
                    report_id: 01HY3NF37B6J2ABPA3H49C92YZ
                    status: COMPLETED
                    message: Job successful
                    start_date: '2023-01-01T23:00:00.000Z'
                    end_date: '2023-01-11T23:00:00.000Z'
                    report_url": https://exchange.cint.com/download?file=1_completes_2024_02_29_22_26_03.csv&...
                    data_analysis: false
                    survey_id: '1341234'
                    respondent_answer: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ReportId'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/reports/{report_type}:
    post:
      operationId: generate_report
      summary: Generate a report
      description: |
        This endpoint initiates an asynchronous job to generate a report. A successful request immediately returns a `202 Accepted` response containing a `report_id`, which you can use to track the job's progress with the `/status` endpoint.

        ### Report Types and Rules

        The following table outlines the rules for each `report_type`:

        | Report Type | Supported Levels (`filter`) | Multi-select Rules |
        | :--- | :--- | :--- |
        | `completes` | `account`, `business_unit`, `project`, `target_group` | Multiple IDs can be provided for all levels except `account`. |
        | `reconciliation-eligible-rids` | `project`, `target_group` | `target_group`: Yes. `project`: No (only one ID allowed). |
        | `reconciliations-status` | `account`, `project`, `target_group` | Multiple IDs can be provided for all levels except `account`. |
        | `respondent-analysis` | `project`, `target_group` | `target_group`: Yes. `project`: No (only one ID allowed). |
        | `sample-bought` | `account`, `business_unit`, `project`, `target_group` | Multiple IDs can be provided for all levels except `account`. |
        | `term-details` | `target_group` | No (only one ID allowed). |
      tags:
      - Reports
      requestBody:
        description: Report request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportGenerationRequest'
            example:
              filter: project
              start_date: '2023-08-01'
              end_date: '2023-08-30'
              filter_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP0
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              report_options:
                include_respondent_answers: true
              email_recipients:
              - y78d0r90-e174-4b05-5y67-8iof00018t17
      responses:
        '202':
          description: Accepted report generation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportGenerationResponse'
              example:
                message: Report Created
                report_id: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
                report_url: null
                create_date: '2025-07-11T14:02:14Z'
                status: pending
                report_type: completes
                level: project
                create_params:
                  start_date: '2023-08-01'
                  end_date: '2023-08-30'
                  filter: project
                  filter_ids:
                  - 01BTGNYV6HRNK8K8VKZASZCFP0
                  - 01BTGNYV6HRNK8K8VKZASZCFP1
                  report_options:
                    include_respondent_answers: true
                requestor:
                  id: 96C65204-90C2-4DCB-9393-B8226DD50C76
                  name: John Doe
                  email: John.Doe@cint.com
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ReportType'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live:
    post:
      operationId: upload_live_respondent_unique_codes
      summary: Upload live respondent unique codes
      description: |
        Uploads a batch of respondent unique codes for a target group. These codes are inserted into the **live URL** for each respondent who enters a survey session.

        :::note URL Setup Required
        Before using this endpoint, you must set up your target group's live URL to include the `[%RESPONDENT_UNIQUE_CODE%]` placeholder.

        *Example live URL setup:*
        `https://example_live_url.com?id=[%RESPONDENT_UNIQUE_CODE%]`
        :::

        ### Processing Rules

        *   **Batch Size**: You can submit a minimum of 1 and a maximum of 20,000 codes in a single request.
        *   **Code Format**: Codes must be between 1 and 128 characters and contain only alphanumeric characters, hyphens (`-`), and underscores (`_`). Leading and trailing whitespace will be removed.
        *   **Uniqueness**: Only unique codes are processed.
            *   If you include duplicates within a single batch, only the first occurrence is considered.
            *   If you upload codes that already exist for this target group's live URL, they will be ignored.

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
      tags:
      - Respondent Unique Codes
      requestBody:
        description: The list of live respondent unique codes to upload.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadLiveRespondentUniqueCodesRequest'
            example:
              respondent_unique_codes:
              - abc-123-xyz-789
              - def-456-uvw-123
              - ghi-789-rst-456
      responses:
        '200':
          description: Returns a summary of the upload operation, including the number of new codes that were successfully
            added. Codes that were duplicates or already existed are ignored and not counted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadLiveRespondentUniqueCodesResponse'
              example:
                uploaded_count: 3
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live/stats:
    get:
      operationId: get_live_respondent_unique_codes_stats
      summary: Get live respondent unique code stats
      description: |
        This endpoint returns a summary of the usage for live respondent unique codes for a specific target group. The response includes the total number of codes stored and the count of those that remain unconsumed.

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
      tags:
      - Respondent Unique Codes
      responses:
        '200':
          description: Returns the total and unconsumed counts of live respondent unique codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLiveRespondentUniqueCodesStatsResponse'
              example:
                total_count: 1500
                unconsumed_count: 850
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live/unconsumed:
    delete:
      operationId: delete_unconsumed_live_respondent_unique_codes
      summary: Delete all unconsumed live respondent unique codes
      description: |
        This endpoint permanently deletes all unconsumed **live** respondent unique codes for a specific target group.

        :::danger Destructive Action
        This action can potentially pause the target group if it's currently live and runs out of codes. This operation cannot be undone.
        :::

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '204':
          description: Confirms that all unconsumed live respondent unique codes were deleted successfully.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test:
    post:
      operationId: upload_test_respondent_unique_codes
      summary: Upload test respondent unique codes
      description: |
        Uploads a batch of respondent unique codes for a target group. These codes are inserted into the **test URL** for each respondent who enters a survey session for testing purposes.

        :::note URL Setup Required
        Before using this endpoint, you must set up your target group's test URL to include the `[%RESPONDENT_UNIQUE_CODE%]` placeholder.

        *Example test URL setup:*
        `https://example_test_url.com?id=[%RESPONDENT_UNIQUE_CODE%]`
        :::

        ### Processing Rules

        *   **Batch Size**: You can submit a minimum of 1 and a maximum of 20,000 codes in a single request.
        *   **Code Format**: Codes must be between 1 and 128 characters and contain only alphanumeric characters, hyphens (`-`), and underscores (`_`). Leading and trailing whitespace will be removed.
        *   **Uniqueness**: Only unique codes are processed.
            *   If you include duplicates within a single batch, only the first occurrence is considered.
            *   If you upload codes that already exist for this target group's test URL, they will be ignored.

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      requestBody:
        description: The request body for uploading test respondent unique codes.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadTestRespondentUniqueCodesRequest'
            example:
              respondent_unique_codes:
              - test-code-alpha-001
              - test-code-beta-002
              - test-code-gamma-003
      responses:
        '200':
          description: Returns a summary of the upload operation, including the number of new codes that were successfully
            added. Codes that were duplicates or already existed are ignored and not counted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadTestRespondentUniqueCodesResponse'
              example:
                uploaded_count: 3
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test/stats:
    get:
      operationId: get_test_respondent_unique_codes_stats
      summary: Get test respondent unique code stats
      description: |
        This endpoint returns a summary of the usage for **test** respondent unique codes for a specific target group. The response includes the total number of codes stored and the count of those that remain unconsumed.

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '200':
          description: Returns the total and unconsumed counts of test respondent unique codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTestRespondentUniqueCodesStatsResponse'
              example:
                total_count: 500
                unconsumed_count: 450
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test/unconsumed:
    delete:
      operationId: delete_unconsumed_test_respondent_unique_codes
      summary: Delete all unconsumed test respondent unique codes
      description: |
        This endpoint permanently deletes all unconsumed **test** respondent unique codes for a specific target group. These are the codes associated with the test URL that were previously added via the upload endpoint.

        :::caution Feature Access
        This feature must be enabled for your account. If it's not enabled, this endpoint will return a `403 Forbidden` error. Please contact your account manager for more information.
        :::
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '204':
          description: Confirms that all unconsumed test respondent unique codes were deleted successfully.
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '429':
          $ref: '#/components/responses/Error_RateLimit'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /fulfillment/respondents/{RID}:
    servers:
    - url: https://s2s.cint.com
    get:
      description: Retrieves the current status of a session that has taken a survey for your target group.
      summary: Retrieve a respondent's session status
      operationId: get_respondent_status
      tags:
      - Fulfillment
      security: []
      parameters:
      - $ref: '#/components/parameters/RID'
      - $ref: '#/components/parameters/AuthorizationHeader'
      responses:
        '200':
          description: Retrieving the respondent status was successful.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/respondent_fulfilment_result'
        '404':
          description: respondent status could not be found.
        '422':
          description: An error occurred while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/respondent_fillfilment_transition_result'
  /fulfillment/respondents/transition:
    servers:
    - url: https://s2s.cint.com
    post:
      description: "Updates the respondent's status defined by the status code in the body of the request.\n\nThe following\
        \ table contains the possible codes that can be supplied in the body's `status` field: \n\n| Cint Status Definition\
        \ | S2S Code |\n| :---- | :---- |\n| Complete | **5** |\n| Screenout | **2** |\n| Quality Terminate | **4** |\n| Quota\
        \ Full | **3** |\n"
      summary: Update a respondent's status
      operationId: update_respondent_status
      tags:
      - Fulfillment
      security: []
      parameters:
      - $ref: '#/components/parameters/AuthorizationHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/respondent_fillfilment_transition_request'
      responses:
        '200':
          description: The respondent's status was successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/respondent_fillfilment_transition_result'
        '404':
          description: The respondent status could not be found.
        '422':
          description: An error occurred while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/respondent_fillfilment_transition_result'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/account-allocation-templates/{template_id}:
    get:
      operationId: get_account_allocation_template_for_business_unit_id
      summary: Retrieves an account allocation template
      description: |
        This endpoint returns a specific account allocation template, which defines supplier rules for a given business unit and locale.
        The template includes rules for `open_exchange_allocations` and lists any `blocked_suppliers` from private exchanges if the business unit has private deals.
      tags:
      - Target Group Allocations
      parameters:
      - $ref: '#/components/parameters/LocaleCodeFilter'
      responses:
        '200':
          description: Successfully returns the requested account allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountAllocationTemplateBusinessUnitIdResponse'
              example:
                template_id: 01JT5Z59MAKQ82J5K9Y3YGFNHN
                template_name": Standard Account Template
                open_exchange_allocations:
                  exchange_suppliers:
                  - supplier_id": '13512'
                    supplier_name: Test Supplier A
                  blocked_suppliers:
                  - supplier_id": '13513'
                    supplier_name: Blocked Supplier B
                  exchange_min_percentage: 10
                  exchange_max_percentage: 90
                  groups:
                  - group_name: Premium Suppliers
                    min_percentage: 50
                    max_percentage: 70
                    suppliers:
                    - supplier_id: '13514'
                      supplier_name: Premium Supplier C
                private_exchange_allocations:
                  blocked_suppliers:
                  - supplier_id": '13515'
                    supplier_name: Private Blocked Supplier D
                last_modified_at": '2024-06-18T14:23:45Z'
                last_modified_by: b551326b-ac9d-4d32-8823-4f025787dab9
          headers:
            ETag:
              $ref: '#/components/headers/ETag'
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/BusinessUnitID'
    - $ref: '#/components/parameters/TemplateID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/global-allocation-templates/{template_id}:
    get:
      operationId: get_global_allocation_template_by_id_for_business_unit_id
      summary: Fetch a global allocation template for a business unit and locale
      description: This endpoint will return a global allocation specification template based on a template id, business unit
        id and locale.  This specification are set for the open exchange suppliers and will also return all the private exchange
        suppliers within the blocked suppliers group, if the business unit have any private deals.
      parameters:
      - $ref: '#/components/parameters/LocaleCodeFilter'
      tags:
      - Target Group Allocations
      responses:
        '200':
          description: A successful response returns the global allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGlobalAllocationTemplateBusinessUnitIdResponse'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/BusinessUnitID'
    - $ref: '#/components/parameters/TemplateID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/system-allocation-template:
    get:
      operationId: get_system_allocation_template_by_business_unit_id
      summary: Get the system allocation template
      description: This endpoint returns the system's default allocation template for a given business unit and locale. This
        template acts as the ultimate fallback if no specific account or global template is defined. The response includes
        rules for `open_exchange_allocations` and lists any` blocked_suppliers` from private exchanges.
      tags:
      - Target Group Allocations
      responses:
        '200':
          description: Successfully returns the system allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSystemAllocationTemplateBusinessUnitIdResponse'
              example:
                template_name: System Default Template
                open_exchange_allocations:
                  exchange_suppliers:
                  - supplier_id: '13512'
                    supplier_name: System Supplier A
                  exchange_min_percentage: 0
                  exchange_max_percentage: 100
                private_exchange_allocations:
                  blocked_suppliers: []
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/BusinessUnitID'
    - $ref: '#/components/parameters/LocaleCodeFilter'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/allocation-specification:
    get:
      operationId: get_target_group_allocation_specification
      summary: Get target group allocations
      description: This endpoint returns the supply allocation for a target group. You can use it to see which suppliers are
        blocked, how suppliers are grouped, and their minimum and maximum allocation percentages.
      tags:
      - Target Group Allocations
      responses:
        '200':
          description: A successful response returns allocations for a target group.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSupplyAllocationResponse'
              example:
                open_exchange_allocations:
                  blocked_suppliers:
                  - id: 421
                    name: Blocked Supplier A
                    completes: 0
                    pre_screens: 0
                  exchange_suppliers: []
                  exchange_min_percentage: 10
                  exchange_max_percentage: 90
                  groups:
                  - group_id: '1'
                    group_name: Premium Tier
                    min_percentage: 50
                    max_percentage: 80
                    suppliers:
                    - id: 420
                      name: Clix Sense
                      completes: 150
                      pre_screens: 1200
                    conversion_rate: 0.08
                    completes: 150
                    prescreens: 1200
                    total_remaining: 500
                private_exchange_allocations:
                  blocked_suppliers: []
                  groups: []
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_target_group_allocation_specification
      summary: Updates target group allocations
      description: This endpoint updates the supply allocation for a target group. You can set which suppliers are blocked,
        define supplier groups, and configure their minimum and maximum allocation percentages.
      tags:
      - Target Group Allocations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplyAllocationUpdateRequest'
            example:
              open_exchange_allocations:
                blocked_supplier_ids:
                - '421'
                exchange_min_percentage: 10
                exchange_max_percentage: 90
                groups:
                - group_id: '1'
                  group_name: Premium Tier
                  min_percentage: 50
                  max_percentage: 80
                  supplier_ids:
                  - '420'
                  - '422'
              private_exchange_allocations:
                blocked_supplier_ids: []
                groups: []
      responses:
        '204':
          description: Confirms that the allocation specification was updated successfully.
          headers:
            TraceParent:
              $ref: '#/components/headers/Traceparent'
            TraceState:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/update-target-group-project-managers:
    post:
      summary: Create a bulk update target group project managers job
      description: This endpoint creates an asynchronous job to update the project manager for one or more target groups within
        a specific project. Because the update is processed in the background, a successful request immediately returns a
        201 Created status with a Location header. The header contains the URL to the job, which you can use to track its
        progress.
      operationId: create_bulk_update_target_group_project_manager_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: The request body for creating a bulk update job.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkUpdateTargetGroupProjectManagerJobRequest'
            example:
            - project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
            - target_group_ids:
              - 01BTGNYV6HRNK8K8VKZASZCFP1
              - 01BTGNYV6HRNK8K8VKZASZCFP2
      tags:
      - Target Groups (Batch)
      responses:
        '201':
          description: Returns a 201 Created response with a Location header pointing to the newly created job.
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
            location:
              description: |
                Contains the URL where a new resource can be found, often returned with a `201 Created` response. It follows the format defined in RFC 7231.
              required: true
              schema: &id003
                type: string
                format: uri-reference
                description: A reference to the resource's location. This can be a full URL, a relative path, or just the
                  resource ID.
                example:
                  full-url:
                    summary: A full URL to the resource
                    value: https://api.cint.com/demand/business-units
                  relative-path:
                    summary: A relative path to the resource
                    value: /demand/business-units
                  resource-id:
                    summary: A resource ID
                    value: fe666fcd-490c-4cb4-b4e0-2f86e15c27e6
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/update-target-group-project-managers/{job_id}:
    get:
      summary: Retrieves a bulk update target group project managers job
      description: After creating a bulk update job, you can use this endpoint to check its status. You'll need to poll this
        endpoint until the job's status changes from `Processing` to either `Completed` or `Failed` to get the final results.
      operationId: get_bulk_update_target_group_project_manager_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/JobID'
      tags:
      - Target Groups (Batch)
      responses:
        '200':
          description: Returns the details of the bulk update job, including its current status (`Processing` ,`Completed`,
            or `Failed`) and the final results.
          headers:
            traceparent:
              description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
                specification. It's used to trace a single request as it moves through multiple services.
              required: false
              schema: *id001
            tracestate:
              description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace
                information. This allows different services to add their own data to a trace.
              required: false
              schema: *id002
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkUpdateTargetGroupProjectManagerJobResponse'
              examples:
                JobProcessing:
                  summary: When the job is processing
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_at: '2023-01-01T23:00:00.000Z'
                    status: Processing
                    project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
                    updated_target_groups: null
                    failed_target_groups: null
                JobCompleted:
                  summary: When the job is complete
                  description: An example of a completed job with both successfully updated and failed target groups.
                  value:
                    job_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                    created_at: '2023-01-01T23:00:00.000Z'
                    status: Completed
                    project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
                    updated_target_groups:
                      data:
                      - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP1
                        target_group_name: Test Target Group A
                      has_more: false
                    failed_target_groups:
                      data:
                      - target_group_id: 01BTGNYV6HRNK8K8VKZASZCFP2
                        target_group_name: Test Target Group B
                        failure_reason:
                          code: TargetGroupNotFound
                          description: Target group not found.
                      has_more: false
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups:
    get:
      operationId: get_list_target_groups
      summary: List target groups for a project
      description: Fetch a paginated list of essential data points and statistical metrics related to Target Groups of a single
        project, such as current status, progress, and other relevant details, based on filter criteria such as language,
        country, name, etc.
      tags:
      - Target Groups
      parameters:
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/TargetGroupExclusionStatus'
      - $ref: '#/components/parameters/TargetGroupName'
      - $ref: '#/components/parameters/TargetGroupSearchString'
      - $ref: '#/components/parameters/TargetGroupHumanReadableIds'
      - $ref: '#/components/parameters/TargetGroupCustomerReferenceNumbers'
      - $ref: '#/components/parameters/TargetGroupStatus'
      - $ref: '#/components/parameters/TargetGroupCountry'
      - $ref: '#/components/parameters/TargetGroupLanguage'
      - $ref: '#/components/parameters/ProjectManagerIDFilter'
      responses:
        '200':
          description: A successful response returns a paginated list of matching Target Groups along with details such as
            attributes and metrics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupsList'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      operationId: create_target_group
      summary: Create a target group in draft status
      description: |
        Creates a new target group in `draft` status.

        Key behaviors:

        * The `profiles` attribute is optional. However, if you provide it, you must also set the `profile_adjustment_type`.
        * **Constraint:** A given profile (or question) ID must appear in _only one_ of the arrays. Duplicate IDs will cause the request to fail.
      tags:
      - Target Groups
      requestBody:
        description: Create target group request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDraftTargetGroupRequest'
      responses:
        '201':
          description: Successfully created a Target Group in draft status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedDraftTargetGroupResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}:
    get:
      operationId: get_target_group
      summary: Retrieve a draft target group
      description: |
        Retrieves a target group by its ID.

        **Note:** This endpoint is intended for `draft` target groups. If the requested target group is not in draft status, this endpoint will return a `301 Moved Permanently` redirect to it's target group details endpoint.
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully returned a draft Target Group.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/FetchTargetGroupResponse'
                - $ref: '#/components/schemas/DraftTargetGroupLinks'
        '301':
          description: Redirecting, as the draft Target Group has been launched
          headers:
            location:
              $ref: '#/components/headers/Location'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_target_group
      summary: Update a target group in draft status
      description: "Update a target group in draft status.\n\nprofiles is optional field. If provided, `profile_adjustment_type`\
        \ must be set as `percentage` or `nominal`.\n\n**Constraint:** a given profile (or question) ID must appear in _only\
        \ one_ of these arrays.  \nIf the same ID is listed in more than one `profile`, the draft will fail to save.\n"
      tags:
      - Target Groups
      requestBody:
        description: Update target group request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDraftTargetGroupRequest'
      responses:
        '204':
          description: Successfully updated a Target Group in draft status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/details:
    get:
      operationId: get_target_group_details
      summary: Retrieve target group details
      description: |-
        Fetch details of a launched Target Group, such as Business Unit ID, Study Type ID, Industry ID, Locale, Completes Goal, and other  metadata related to the Target Group.
        Attempting to retrieve a draft Target Group details will result in a Not Found error.
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns a paginated list of matching Target Groups along with details such as
            attributes and metrics.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/TargetGroupDetails'
                - $ref: '#/components/schemas/TargetGroupLinks'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_launched_target_group_details
      summary: Update launched target group details
      description: |-
        Update a launched Target Group details, such as the Project Manager ID, Live URL, and other metadata related to the Target Group.
        Attempting to update a draft Target Group details will result in a Not Found error.
      tags:
      - Target Groups
      requestBody:
        description: The Target Group update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetGroupDetailsUpdateRequest'
      responses:
        '200':
          description: A successful response returns updated Target Group details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupDetails'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/rate-card:
    get:
      summary: Retrieve a rate card
      description: Rate Cards predefine the prices that a buyer will be charged for sessions on a Target Group that fits the
        equivalent IR and LOI metrics. Buyers can understand the interaction of the active Rate Card on a Target Group with
        the statistics, price changes and available configurations such as maximum prices and price boost via help documents
        and guides. This API allows buyers to look up a Rate Card based on the provided search parameters. The Rate Card is
        returned as a 2D array where each row array is LOI (with the number and value of the rows defined by the length_of_interview_minutes)
        and each column (index within a row array) is IR in percentage with the values defined by the incidence_rate_percents
        field.
      operationId: get_rate_card
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/BusinessUnitID'
      - $ref: '#/components/parameters/CountryCode'
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully return matching Rate Card.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateCard'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/rate-card:
    get:
      summary: Retrieve a target group's rate card
      description: Depending on the state of the Target Group, this may be a predicted Rate Card, which may be replaced by
        a new version before the Target Group collects completes or the actual Rate Card which is permanently associated with
        the Target Group. This association is made when the Target Group first goes live. Rate Cards predefine the prices
        that a buyer will be charged for sessions on a Target Group that fits the equivalent IR and LOI metrics. Buyers can
        understand the interaction of the active Rate Card on a Target Group with the statistics, price changes and available
        configurations such as maximum prices and price boost via help documents and guides. The Rate Card is returned as
        a 2D array where each row array is LOI (with the number and value of the rows defined by the length_of_interview_minutes)
        and each column (index within a row array) is IR in percentage with the values defined by the incidence_rate_percents
        field.
      operationId: get_target_group_rate_card
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully return matching Rate Card.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/PredictedRateCard'
                - $ref: '#/components/schemas/BoundRateCard'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/cost-per-interview:
    put:
      operationId: update_cost_per_interview
      summary: Update target group cost per interview
      description: Updates the cost per interview to the value specified in the request body. The target group cannot be in
        draft state. The Target Group CPI must not exceed the platform limit of $105.00. For non-USD amounts, the CPI is compared
        against the equivalent limit in the provided currency. Note - This limit is subject to platform configuration and
        may change.
      tags:
      - Target Groups
      requestBody:
        description: Cost per interview update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostPerInterviewUpdateRequest'
      responses:
        '200':
          description: Cost per interview on target group successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostPerInterviewUpdateResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/filling-strategy:
    put:
      operationId: update_filling_strategy
      summary: Update target group filling strategy
      description: Updates the filling strategy to the value specified in the request body.
      tags:
      - Target Groups
      requestBody:
        description: Filling strategy update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FillingStrategyUpdateRequest'
      responses:
        '200':
          description: Filling strategy on target group successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FillingStrategyUpdateResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '405':
          $ref: '#/components/responses/Error_MethodNotAllowed'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/compute-target-group-transitions:
    post:
      summary: Compute available target group transitions
      description: Returns all target group Ids for the given query parameters and the available possible actions on the returned
        set of target groups.
      operationId: compute_target_group_transitions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Compute target group transitions request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeTargetGroupTransitionsRequest'
      tags:
      - Target Groups
      responses:
        '200':
          description: Target group Ids with their possible actions.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeTargetGroupTransitionsResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/overview:
    get:
      operationId: get_target_group_overview
      summary: Retrieve basic attributes and stats for a target group
      description: |-
        Fetch a set of essential data points and statistical metrics related to a specific launched Target Group, such as its current status, progress, and other relevant details.
        Attempting to retrieve a draft Target Group overview will result in a Not Found error.
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns requested Target Group attributes and statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupOverview'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/target-groups/{target_group_id}/overview:
    get:
      operationId: get_target_group_overview_by_target_group_id
      summary: Retrieve basic attributes and stats for a target group by ID
      description: Fetch a set of essential data points and statistical metrics related to a specific launched Target Group,
        such as its current status, progress, and other relevant details.
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns requested Target Group attributes and statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupOverviewByTargetGroupId'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/performance:
    get:
      operationId: get_target_group_performance
      summary: Retrieve a target group's performance metrics
      description: Fetch a set of essential data points and statistical metrics related to a specific launched Target Group.
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns requested Target Group statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupPerformance'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/completes-aggregated-by-interval:
    get:
      operationId: get_target_group_completes_aggregated_by_interval
      summary: Retrieve a target group's collected completes
      tags:
      - Target Groups
      description: Returns a list of timestamps according to the aggregation interval and the Target Group's fielding period,
        with a count of completes collected thus far for each interval. When no interval is provided as a parameter, the endpoint
        defaults to an interval of 24 hours.
      responses:
        '200':
          description: Successfully return list of intervals with counts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupCollectedCompletesAggregatedIntervalsResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/AggregationInterval'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/changelog:
    get:
      operationId: get_target_group_changelog
      summary: Retrieve a target group's Changelog
      tags:
      - Target Groups
      description: |
        Returns a paginated list of historical changes for the target group.

        **Note:** The list of change types is extensible. Consumers should expect that new change types may be introduced in the future.
      responses:
        '200':
          description: Successfully return list of profiles.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupChangelogList'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ChangelogPageSize'
    - $ref: '#/components/parameters/StartAfter'
    - $ref: '#/components/parameters/EndBefore'
    - $ref: '#/components/parameters/TargetGroupChangeTypes'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
components:
  schemas:
    UsersList:
      type: object
      description: A list of all users for a specific account.
      readOnly: true
      properties:
        users:
          type: array
          description: A list of users.
          items:
            type: object
            properties:
              id:
                $ref: '#/components/schemas/UserID'
              email:
                type: string
                description: The email address of the user.
              name:
                type: string
                description: The name of the user.
          example:
          - id: 43292405-363e-4fa3-85a6-6e74a49fab2e
            email: jane.doe@cint.com
            name: Jane Doe
          - id: 54736158-e90e-404c-bc32-4d938f8a9cfa
            email: john.doe@cint.com
            name: John Doe
    AccountID:
      description: The account's unique identifier.
      type: integer
      format: int32
      example: 101
    UserID:
      type: string
      format: uuid
      description: A unique identifier for the user.
      example: b551326b-ac9d-4d32-8823-4f025787dab9
    InvalidParam:
      type: object
      description: Describes a single invalid parameter in a request.
      properties:
        name:
          type: string
          description: The name of the parameter that failed validation.
        reason:
          type: string
          description: A short explanation of why the parameter was invalid.
      required:
      - name
      - reason
    AccountsList:
      type: object
      description: A list of accounts the authenticated user can access.
      readOnly: true
      properties:
        accounts:
          type: array
          description: A list of user accounts.
          items:
            type: object
            properties:
              id:
                type: integer
                description: A unique identifier for an account.
              name:
                type: string
                description: The name of the account.
          example:
          - id: 1
            name: Acme Inc.
          - id: 2
            name: Globex Corp.
    ServiceClientsList:
      type: object
      description: A list of all service clients for a specific account.
      readOnly: true
      properties:
        users:
          type: array
          description: A list of service clients.
          items:
            type: object
            properties:
              id:
                $ref: '#/components/schemas/UserID'
              email:
                type: string
                description: The email address of the service client.
              name:
                type: string
                description: The name of the service client.
          example:
          - id: 43292405-363e-4fa3-85a6-6e74a49fab2e
            email: jane.doe@cint.com
            name: Jane Doe
          - id: 54736158-e90e-404c-bc32-4d938f8a9cfa
            email: john.doe@cint.com
            name: John Doe
    Error:
      type: object
      description: The standard error object returned for all failed API requests.
      required:
      - object
      - detail
      properties:
        id:
          type: string
          format: uuid
          description: A unique identifier for this specific error instance.
        object:
          type: string
          description: A short informative string identifying the type of the error
          pattern: ^([a-z]*_)*([a-z]*)$
        detail:
          type: string
          description: An error message provides a concise overview of the cause of the error.
        invalid_params:
          type: array
          nullable: true
          description: An optional field containing a list of invalid parameters may be presented in validation errors for
            additional information.
          items:
            $ref: '#/components/schemas/InvalidParam'
    UserAccountBusinessUnit:
      type: object
      description: A response containing the business unit of the user's account.
      properties:
        business_unit_id:
          type: integer
          description: Unique identifier of the business unit.
          example: 1234
    AllocationTemplateSupplier:
      type: object
      required:
      - supplier_id
      properties:
        supplier_id:
          type: integer
          description: The ID of the supplier
          minimum: 0
          example: 420
    GetAccountAllocationTemplateAssociation:
      type: object
      title: Account allocation template association
      required:
      - template_id
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
    ListGlobalAllocationTemplatesResponse:
      type: object
      required:
      - has_more
      - templates
      - next_cursor
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/GlobalAllocationTemplateListItem'
        has_more:
          type: boolean
          description: If there are further results to be shown using the returned next cursor or previous cursor, this will
            be true, otherwise false.
        next_cursor:
          type: string
          description: Provides the string to use as the "start_after" value of the next request. Empty value if no further
            results.
          example: WzAsIjAxSlA3RTgyM0czSFRGOTdZRThBNjc0RU5EIl0=
    GetGlobalAllocationTemplateByTemplateIdResponse:
      type: object
      required:
      - template_id
      - name
      - supply_allocations
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        name:
          type: string
          description: The name of the global allocation template.
        supply_allocations:
          type: array
          description: A list of allocation objects. The `type` field in each object determines its structure and purpose.
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplierResponse'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplierResponse'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplierResponse'
    AccountAllocationTemplateListItem:
      type: object
      title: Account allocation template list item
      required:
      - template_id
      - name
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        name:
          type: string
          description: The name of the account allocation template.
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    AllocationTemplateExchangeSupplierResponse:
      type: object
      title: Exchange supplier allocation
      required:
      - type
      - percentage_max
      - percentage_min
      - suppliers
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `exchange`.
          enum:
          - exchange
        percentage_max:
          type: integer
          nullable: false
          minimum: 0
          maximum: 100
          description: Controls the maximum amount of fills from this supply allocation group. The value is `inclusive`.
          example: 100
        percentage_min:
          type: integer
          nullable: true
          description: Controls the minimum amount of fills from this supply allocation group. The value is `inclusive`
          minimum: 0
          maximum: 100
          example: 0
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSupplierResponse'
    AllocationTemplateCreateRequest:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          description: A descriptive name for the allocation template.
          minLength: 3
          maxLength: 128
        supply_allocations:
          type: array
          description: A list of allocation objects. You must include a `type` field in each object (`blocked`, `group`, or
            `exchange`) to define its structure and purpose.
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplier'
    AllocationTemplateBlockedSupplier:
      type: object
      title: Blocked
      required:
      - type
      - suppliers
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `blocked`.
          enum:
          - blocked
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/AllocationTemplateSupplier'
    TemplateSupplierResponse:
      type: object
      properties:
        supplier_id:
          type: integer
          description: The ID of the supplier
          minimum: 0
          example: 420
        name:
          type: string
          description: The name of the supplier.
          minLength: 1
          example: Clix Sense
        type:
          type: string
          description: The type of the supplier.
          example: loyalty_panels
          enum:
          - loyalty_panels
          - non_panel_or_affiliate
          - survey_panels
    LastModifiedAt:
      type: string
      format: datetime
      description: The last time the template was modified
      example: '2024-06-18T14:23:45Z'
    UpdateAccountAllocationTemplateAssociation:
      type: object
      title: Set account allocation template association request
      required:
      - template_id
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
    AllocationTemplateExchangeSupplier:
      type: object
      title: Exchange supplier allocation
      required:
      - type
      - percentage_max
      - percentage_min
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `exchange`.
          enum:
          - exchange
        percentage_max:
          type: integer
          nullable: false
          minimum: 0
          maximum: 100
          description: The inclusive maximum percentage of survey completes that can come from this allocation.
          example: 100
        percentage_min:
          type: integer
          nullable: true
          description: The inclusive minimum percentage of survey completes that can come from this allocation.
          minimum: 0
          maximum: 100
          example: 0
    GetSystemAllocationTemplateResponse:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          example: My happy system template
        supply_allocations:
          type: array
          items:
            $ref: '#/components/schemas/AllocationTemplateExchangeSupplierResponse'
    AllocationTemplateUpdateRequest:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          description: A descriptive name for the allocation template.
          minLength: 3
          maxLength: 128
        supply_allocations:
          type: array
          description: A list of allocation objects. You must include a `type` field in each object (`blocked`, `group`, or
            `exchange`) to define its structure and purpose.
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplier'
    GlobalAllocationTemplateListItem:
      type: object
      title: Global allocation template list item
      required:
      - template_id
      - name
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        name:
          type: string
          description: The name of the global allocation template.
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    GetAccountAllocationTemplateByTemplateIdResponse:
      type: object
      required:
      - template_id
      - name
      - supply_allocations
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        name:
          type: string
          description: The name of the account allocation template.
        supply_allocations:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplierResponse'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplierResponse'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplierResponse'
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    ListAccountAllocationTemplatesResponse:
      type: object
      required:
      - has_more
      - templates
      - next_cursor
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/AccountAllocationTemplateListItem'
        has_more:
          type: boolean
          description: A boolean that's true if there are more results available.
        next_cursor:
          type: string
          description: The cursor to use in the start_after parameter to fetch the next page of results.
          example: WzAsIjAxSlA3RTgyM0czSFRGOTdZRThBNjc0RU5EIl0=
    IdempotencyKeyULID:
      description: A unique ID that you can provide to safely retry requests without accidentally performing the same operation
        twice.
      type: string
      format: ulid
      example: 01JCDRR74NW2SSGN567A766VAN
    AllocationTemplateBlockedSupplierResponse:
      type: object
      title: Blocked supplier allocation
      required:
      - type
      - suppliers
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `blocked`.
          enum:
          - blocked
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSupplierResponse'
    LocaleCode:
      type: string
      description: Unique text code of the locale.
      example: eng_us
    TemplateID:
      type: string
      description: A unique identifier for the template.
      format: ulid
      example: 01JT5Z59MAKQ82J5K9Y3YGFNHN
    AllocationTemplateGroupSupplierResponse:
      type: object
      title: Group supplier allocation
      required:
      - type
      - name
      - percentage_min
      - percentage_max
      - suppliers
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `group`.
          enum:
          - group
        name:
          type: string
          example: My happy allocation group
        percentage_max:
          type: integer
          nullable: false
          minimum: 0
          maximum: 100
          description: The inclusive maximum percentage of survey completes that can come from this allocation.
          example: 44
        percentage_min:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: The inclusive minimum percentage of survey completes that can come from this allocation.
          example: 78
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSupplierResponse'
    AllocationTemplateGroupSupplier:
      type: object
      title: Group supplier allocation
      required:
      - type
      - name
      - percentage_min
      - percentage_max
      - suppliers
      properties:
        type:
          type: string
          description: The type of supply allocation. For this object, the value is always `group`.
          enum:
          - group
        name:
          type: string
          example: My happy allocation group
          description: The name of the allocation group.
        percentage_max:
          type: integer
          nullable: false
          minimum: 0
          maximum: 100
          description: The inclusive maximum percentage of completes that can come from this allocation.
          example: 90
        percentage_min:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: The inclusive minimum percentage of completes that can come from this allocation.
          example: 0
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/AllocationTemplateSupplier'
    ClientListItem:
      type: object
      description: Contains details for a single client.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the client.
          example: 1234
        name:
          type: string
          description: A human-readable name for the client.
          example: Acme Inc
    IndustryLockoutItem:
      type: object
      description: Contains details for a single industry lockout.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the industry lockout.
          example: 90
        code:
          type: string
          description: Unique text code of the industry lockout.
          example: past_90_days
        name:
          type: string
          description: A human-readable name for the industry lockout.
          example: Past 90 Days / 3 Months
    IntegrationUseCaseListItem:
      type: object
      description: Contains details for a single integration use case.
      readOnly: true
      properties:
        id:
          type: string
          description: A unique identifier for the use case.
          example: manage_surveys
        name:
          type: string
          description: A name for the use case.
          example: Manage target groups
        description:
          type: string
          description: A description for the use case.
          example: Create, update, and retrieve surveys, allocations, groups, qualifications, and quotas.
    CountryListItem:
      type: object
      description: Contains details for a single country.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the country.
          example: 243
        code:
          type: string
          description: Unique text code of the country.
          example: GB
        name:
          type: string
          description: A human-readable name for the country.
          example: United Kingdom
    Locales:
      type: object
      description: Contains a list of suggested countries and their supported languages.
      properties:
        locales:
          type: array
          description: A list of suggested locales.
          items:
            type: object
            properties:
              country:
                type: object
                description: Contains details for a single country based on the locale.
                properties:
                  code:
                    type: string
                    description: The ISO 3166-1 alpha-2 country code.
                  name:
                    type: string
                    description: The name of the country.
              languages:
                type: array
                description: A list of supported country languages.
                items:
                  type: object
                  properties:
                    is_preferred:
                      type: boolean
                      description: Indicates whether the country language is preferred for the country.
                    name:
                      type: string
                      description: A human-readable name for the country language.
                    code:
                      type: string
                      description: The ISO 639-2 (3-letter) language code.
      example:
        locales:
        - country:
            code: in
            name: India
          languages:
          - is_preferred: true
            name: English
            code: eng
          - is_preferred: true
            name: Hindi
            code: hin
          - is_preferred: false
            name: Bengali
            code: ben
        - country:
            code: us
            name: United States
          languages:
          - is_preferred: true
            name: English
            code: eng
          - is_preferred: true
            name: Spanish
            code: spa
          - is_preferred: false
            name: Chinese Simplified
            code: chi
    StudyTypeListItem:
      type: object
      description: Contains details for a single study type.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the study type.
          example: 1
        code:
          type: string
          description: Unique text code of the study type.
          example: adhoc
        name:
          type: string
          description: A human-readable name for the study type.
          example: Adhoc
    BusinessUnit:
      type: object
      description: Contains details for a single business unit.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the business unit.
          example: 1234
        name:
          type: string
          description: A human-readable name for the business unit.
          example: Example
        currency_code:
          type: string
          description: The ISO 4217 currency code for the business unit.
          example: GBP
        pricing_models:
          type: array
          description: Contains available pricing models for the business unit.
          items:
            type: string
            description: The pricing model assigned to the business unit.
            enum:
            - rate_card
            - dynamic
            example: rate_card
    IndustryListItem:
      type: object
      description: Contains details for a single industry.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the industry.
          example: 19
        code:
          type: string
          description: Unique text code of the industry.
          example: politics
        name:
          type: string
          description: A human-readable name for the industry.
          example: Politics
    SupplierDetailsItem:
      type: object
      description: Contains details for a single supplier.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the supplier.
          example: 4321
        code:
          type: string
          description: Unique text code of the supplier.
          example: ACE
        name:
          type: string
          description: A human-readable name for the supplier.
          example: Acme Inc
    CreateExclusionGroupRequest:
      type: object
      description: The details required to create a new exclusion group.
      required:
      - tag
      - description
      properties:
        tag:
          $ref: '#/components/schemas/ExclusionGroupTag'
        description:
          $ref: '#/components/schemas/ExclusionGroupDescription'
    ExclusionGroupDescription:
      description: A user-defined description that explains the purpose of the exclusion group
      type: string
      maxLength: 500
      example: 2025 Ongoing Tracker Study
    ExclusionsJobFailureReason:
      type: object
      description: The reason for the failure of a job.
      required:
      - code
      - description
      properties:
        code:
          type: string
          example: JobExecutionStartMessageFailed
        description:
          type: string
          example: The job execution start message failed. Please contact Cint for further assistance.
    ExclusionsJobPartialSuccessReason:
      type: object
      description: The reason for the partial success of a job.
      required:
      - description
      properties:
        description:
          type: string
          example: Upload partially successful. 500 respondent IDs uploaded successfully, 10 failed (invalid or empty).
    ExclusionsJobStatus:
      type: string
      description: The status of an async Exclusions update job.
      enum:
      - Success
      - Failed
      - Processing
      example: Success
    GetRemoveAllRespondentExclusionsJobResponse:
      type: object
      description: Status and details of a given remove all Respondent Exclusions job.
      required:
      - job_id
      - created_at
      - created_by
      - status
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        completed_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        status:
          $ref: '#/components/schemas/ExclusionsJobStatus'
        created_by:
          $ref: '#/components/schemas/UserID'
        failure_reason:
          $ref: '#/components/schemas/ExclusionsJobFailureReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
    GetUploadRespondentExclusionsJobResponse:
      type: object
      description: Status and details of a given upload Respondent Exclusions job.
      required:
      - job_id
      - created_at
      - created_by
      - status
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        completed_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        status:
          $ref: '#/components/schemas/ExclusionsJobStatus'
        created_by:
          $ref: '#/components/schemas/UserID'
        failure_reason:
          $ref: '#/components/schemas/ExclusionsJobFailureReason'
        partial_success_reason:
          $ref: '#/components/schemas/ExclusionsJobPartialSuccessReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
    JobTraceId:
      type: string
      description: The trace ID from the creation job request. Only present when the job status is 'Failed'. The trace ID
        as defined by the W3C trace context specification.
      example: 0af7651916cd43dd8448eb211c80319c
    AddTargetGroupExclusionGroupRequest:
      type: object
      description: A list of target group IDs to add to an exclusion group.
      properties:
        data:
          type: array
          maxItems: 100
          description: An array of unique target group IDs to add.
          items:
            $ref: '#/components/schemas/TargetGroupID'
    GetTargetGroupExclusionsOverviewResponse:
      type: object
      description: The number of exclusions (both respondent ID and GUID) for the requested target group
      required:
      - saved_respondent_ids_count
      properties:
        saved_respondent_ids_count:
          type: integer
          description: The number of saved respondent IDs
          minimum: 0
          maximum: 100000
          example: 1000
        saved_access_respondent_guids_count:
          type: integer
          description: The number of saved Access Respondent GUIDs
          minimum: 0
          maximum: 100000
          example: 1000
    BulkTargetGroupProjectExclusionStatus:
      type: array
      description: A list of target groups and their project exclusion statuses.
      items:
        $ref: '#/components/schemas/TargetGroupExclusionAPIStatusPair'
    ExclusionEntityTypeWithRsidAndAccessRespondentGuid:
      type: string
      description: The entity type of the excluded respondent identifier. Possible values are `RSID` (Respondent ID) or `ACCESS_RESPONDENT_GUID`
        (Access Respondent GUID).
      enum:
      - RSID
      - ACCESS_RESPONDENT_GUID
      example: RSID
    ExclusionEnabled:
      type: boolean
      description: Indicates if the target group should exclude respondents from other target groups within the same project.
    ExclusionGroupInfo:
      type: object
      description: Contains the details of a single exclusion group.
      required:
      - exclusion_group_id
      - tag
      - description
      - create_date
      properties:
        exclusion_group_id:
          $ref: '#/components/schemas/ExclusionGroupID'
        tag:
          $ref: '#/components/schemas/ExclusionGroupTag'
        description:
          $ref: '#/components/schemas/ExclusionGroupDescription'
        create_date:
          type: string
          format: date-time
          description: The date when the exclusion group was created
          example: '2024-05-27T09:28:21.229Z'
        update_date:
          type: string
          format: date-time
          description: The date when the exclusion group was last updated
          example: '2024-05-27T10:28:21.5166203383Z'
    ExclusionsRespondentIDListResponse:
      type: object
      description: List of Respondent IDs
      properties:
        data:
          type: array
          items:
            type: string
            format: uuid
          description: List of Respondent IDs
          example:
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9f
        next_cursor:
          type: string
          description: An ID of the next list of items and indicator that there are more items than currently viewable
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: URL to fetch the next page of Respondent IDs
          example: accounts/{{accountID}}/projects/{{projectID}}/target-groups/{{targetGroupID}}/exclusions/rsid/paginated
    ProjectExclusionStatusResponse:
      type: object
      description: The project-level exclusion status for a single target group.
      properties:
        project_exclusion_enabled:
          $ref: '#/components/schemas/ExclusionEnabled'
        create_date:
          $ref: '#/components/schemas/CreateDate'
        updated_by:
          $ref: '#/components/schemas/UpdatedBy'
        update_date:
          $ref: '#/components/schemas/UpdateDate'
    UpdateExclusionGroupRequest:
      type: object
      description: The details to update for an exclusion group. All fields are optional.
      properties:
        tag:
          $ref: '#/components/schemas/ExclusionGroupTag'
        description:
          $ref: '#/components/schemas/ExclusionGroupDescription'
    ExclusionGroupTargetGroupsResponse:
      type: object
      required:
      - data
      - url
      description: A paginated list of target groups that are members of the exclusion group.
      properties:
        data:
          type: array
          description: List of Target Group IDs
          items:
            $ref: '#/components/schemas/TargetGroupID'
        next_cursor:
          type: string
          nullable: true
          description: The cursor to use in the start_after parameter to fetch the next page of results.
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: URL to fetch the next page of Target Group IDs.
          example: accounts/13/exclusion-groups/01JW97M2Y5Q5KB0N543B4G4T5Y/exclusions/target-groups
    TargetGroupExclusionAPIStatusPair:
      type: object
      description: Pairs a target group ID with its project-level exclusion status.
      properties:
        target_group_id:
          type: string
          description: The ID of the target group to which the exclusion policy should be applied
          example: 01HC2Z6TM8C4F3Y5CA6S2JR475
        project_exclusion_enabled:
          type: boolean
          description: Indicates if project-level exclusion is enabled for this target group.
          example: true
    CobraIDListPaginatedResponse:
      type: object
      description: List of paginated Access Respondent GUIDs
      properties:
        data:
          type: array
          items:
            type: string
            format: uuid
          description: List of Access Respondent GUIDs
          example:
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9f
        next_cursor:
          type: string
          description: An ID of the next list of items and indicator that there are more items than currently viewable
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: The relative URL for the next page of results.
          example: accounts/1/projects/01JBHD5A2NEW7JTV8KZGGTC2V2/target-groups/01JNNEJ3GC0Y713BBKGKC147DP/exclusions/access-respondent-guid/paginated
    ExclusionGroupID:
      description: A unique identifier for the exclusion group, in ULID format.
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    CreateRemoveAllRespondentExclusionsJobResponse:
      type: object
      description: The response returned when a job to remove all respondent exclusions is successfully created.
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    ExclusionGroupTag:
      description: A user-defined tag that acts as a name for the exclusion group.
      type: string
      maxLength: 128
      example: 2025 Tracker
    RemoveTargetGroupExclusionGroupRequest:
      type: object
      description: A list of target group IDs to remove from an exclusion group.
      properties:
        data:
          type: array
          description: An array of unique target group IDs to remove from the exclusion group.
          items:
            $ref: '#/components/schemas/TargetGroupID'
    CreateRespondentExclusionsUploadByFileJobResponse:
      type: object
      description: The response returned when a job to upload respondent exclusions by file is successfully created.
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    TargetGroupID:
      description: A unique identifier for the target group, in ULID format.
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    UpdatedBy:
      type: string
      description: Who last updated this entity
      example: User1234
    GetExclusionGroupsByAccountIdResponse:
      type: object
      description: List of Exclusion Groups within a given Account
      required:
      - data
      - url
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ExclusionGroupInfo'
        next_cursor:
          type: string
          description: An ID of the next list of items and indicator that there are more items than currently viewable.
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: URL to fetch the next page of Exclusion Groups
          example: accounts/13/exclusion-groups
    ProjectID:
      description: The character string representing a unique project ID (ULID format).
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP0
    CreateExclusionGroupResponse:
      type: object
      required:
      - exclusion_group_id
      properties:
        exclusion_group_id:
          $ref: '#/components/schemas/ExclusionGroupID'
    UpdateDate:
      type: string
      format: date-time
      example: '2023-01-01T23:00:00.000Z'
      description: Time of last update
    GetExclusionGroupsByTargetGroupResponse:
      type: object
      description: List of Exclusion Groups including the given target group
      required:
      - data
      - url
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ExclusionGroupInfo'
        next_cursor:
          type: string
          description: An ID of the next list of items and indicator that there are more items than currently viewable.
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: URL to fetch the next page of Exclusion Groups.
          example: accounts/13/exclusion-groups/01JW97M2Y5Q5KB0N543B4G4T5Y/exclusions/target-groups
    JobID:
      description: The character string representing a unique job ID.
      type: string
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    CreateDate:
      type: string
      format: datetime
      description: The time that this exclusions container was created
      example: '2024-06-18T14:23:45Z'
    BusinessUnitID:
      type: string
      description: The unique ID of the business unit, which determines the currency used for the target group.
      example: '1234'
    CurrencyCode:
      type: string
      description: The three-letter ISO 4217 currency code, in uppercase. The code must correspond to a currency supported
        by Cint Exchange.
      example: USD
    GetRedactedPricePredictionResponse:
      type: object
      description: A price prediction containing the estimated cost per interview (CPI) for the Open Exchange and applicable
        Private Exchanges.
      required:
      - buyer_account_id
      - buyer_business_unit_id
      - buyer_business_unit_exchange_rate_from_usd
      - open_exchange_price
      - private_exchange_prices
      properties:
        buyer_account_id:
          $ref: '#/components/schemas/AccountID'
        buyer_business_unit_id:
          $ref: '#/components/schemas/BusinessUnitID'
        buyer_business_unit_exchange_rate_from_usd:
          type: number
          format: float
          description: The live exchange rate towards USD.
        open_exchange_price:
          allOf:
          - $ref: '#/components/schemas/OpenExchangePricePrediction'
        private_exchange_prices:
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/PrivateExchangePricePrediction'
    GetTargetGroupPriceResponse:
      type: object
      description: The pricing details for a target group, including the pricing context (e.g., dynamic or rate card) and
        cost per interview (CPI).
      required:
      - price_type
      - buyer_account_id
      - buyer_business_unit_id
      - target_group_id
      - buyer_business_unit_exchange_rate_from_usd
      - open_exchange_price
      - private_exchange_prices
      - pricing_config_token
      properties:
        price_type:
          type: string
          enum:
          - specification
          - prediction
          description: Indicates whether the price is a specification or a prediction.
        buyer_account_id:
          $ref: '#/components/schemas/AccountID'
        buyer_business_unit_id:
          $ref: '#/components/schemas/BusinessUnitID'
        target_group_id:
          $ref: '#/components/schemas/TargetGroupID'
        buyer_business_unit_exchange_rate_from_usd:
          type: number
          format: float
          description: The exchange rate from the buyer's business unit currency to USD at the time the target group was launched.
        pricing_config_token:
          $ref: '#/components/schemas/PricingConfigToken'
        open_exchange_price:
          type: object
          description: The pricing context and cost per interview for the Cint Open Exchange.
          required:
          - pricing_context
          - cost_per_interview
          properties:
            pricing_context:
              oneOf:
              - $ref: '#/components/schemas/DynamicPricingContext'
              - $ref: '#/components/schemas/RateCardPricingContext'
            cost_per_interview:
              $ref: '#/components/schemas/MonetaryAmount'
        private_exchange_prices:
          type: array
          description: Pricing details for each applicable Private Exchange supplier.
          items:
            type: object
            required:
            - supplier_id
            - pricing_context
            - cost_per_interview
            properties:
              pricing_context:
                oneOf:
                - $ref: '#/components/schemas/DynamicPricingContext'
                - $ref: '#/components/schemas/RateCardPricingContext'
              supplier_id:
                type: string
                example: '43'
              cost_per_interview:
                $ref: '#/components/schemas/MonetaryAmount'
    DynamicPricingPredictionConfig:
      title: Dynamic pricing configuration
      type: object
      description: Configuration used for dynamic pricing, specifying the user-requested cost per interview.
      required:
      - type
      - user_requested_cpi
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: The pricing model. For this configuration, the value is always 'dynamic'. (And 'rate_card' respectively).
        user_requested_cpi:
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
          description: The requested CPI chosen by the user.
    RateCardPredictionConfig:
      title: Rate card pricing configuration
      type: object
      description: Configuration used for rate card pricing.
      required:
      - type
      - country_code
      - expected_incidence_rate
      - expected_length_of_interview_minutes
      properties:
        type:
          type: string
          enum:
          - rate_card
          description: Descriptor of the pricing model type.
        maximum_cpi:
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
          description: The maximum cost per interview (CPI) that can be set for the target group.
        cpi_boost:
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
          description: An additional amount added on top of the CPI calculated from the rate card. The final CPI will not
            exceed the `maximum_cpi`.
        country_code:
          type: string
          description: The two-letter country code, adhering to ISO 3166-1 alpha-2.
          example: US
        expected_length_of_interview_minutes:
          type: integer
          format: int32
          description: The expected median length of interview, in minutes.
          minimum: 1
          maximum: 45
          example: 1
        expected_incidence_rate:
          type: number
          format: float
          description: The expected incidence rate (IR) of the target audience, expressed as a decimal (e.g., 0.25 for 25%).
          minimum: 0
          maximum: 1
          multipleOf: 0.01
          example: 0.05
    MonetaryAmount:
      type: object
      description: Represents a monetary value, including the amount and its currency.
      properties:
        value:
          type: string
          description: A decimal encapsulated in a string representing the value in the denomination indicated by the code.
          example: '2.7352'
        currency_code:
          $ref: '#/components/schemas/CurrencyCode'
        currency_scale:
          allOf:
          - nullable: true
          - type: integer
            description: The number of digits after the decimal separator, as defined by ISO 4217.
            example: 2
    RateCardToken:
      type: string
      description: An opaque token that uniquely identifies the rate card configuration used in a pricing calculation.
      example: MDFKSE42MDQ1RFg2Tk0wQjlBQ0Q5QVhQQzk7Nw==
    MonetaryAmountRequestModel:
      type: object
      description: Represents a monetary value, including the amount and its currency.
      properties:
        value:
          type: string
          description: The monetary value, represented as a string to maintain precision.
          example: '2.7352'
        currency_code:
          $ref: '#/components/schemas/CurrencyCode'
    PrivateExchangePricePrediction:
      type: object
      description: Contains the predicted pricing details for a single Private Exchange supplier.
      required:
      - pricing_context
      - supplier_id
      - cost_per_interview
      properties:
        pricing_context:
          description: The pricing context used in the calculation. The `type` field within the object indicates the model
            (`rate_card` or `dynamic`).
          oneOf:
          - $ref: '#/components/schemas/DynamicPricingContext'
          - $ref: '#/components/schemas/RateCardPricingContext'
        supplier_id:
          type: string
          description: The supplier ID of the private exchange supplier.
          example: '3214'
        cost_per_interview:
          $ref: '#/components/schemas/MonetaryAmount'
    GetRedactedPricePredictionRequest:
      type: object
      description: The request body for generating a price prediction.
      required:
      - config
      properties:
        config:
          description: The pricing configuration. The `type` field within the object determines which model to use (`rate_card`
            or `dynamic`).
          oneOf:
          - $ref: '#/components/schemas/RateCardPredictionConfig'
          - $ref: '#/components/schemas/DynamicPricingPredictionConfig'
    PricingConfigToken:
      type: string
      description: A unique token representing an immutable pricing configuration.
      example: MDFKSE42MDQ1RFg2Tk0wQjlBQ0Q5QVhQQzk7Nw==
    RateCardPricingContext:
      type: object
      description: The pricing context when a rate card model is used.
      required:
      - type
      - rate_card_token
      properties:
        type:
          type: string
          enum:
          - rate_card
          description: The pricing model. For this context, the value is always 'rate_card'.
        maximum_cpi:
          $ref: '#/components/schemas/MonetaryAmount'
          description: The maximum cost per interview (CPI) allowed for this pricing context.
        cpi_boost:
          $ref: '#/components/schemas/MonetaryAmount'
          description: An additional amount added to the calculated rate card CPI. The final CPI will not exceed the `maximum_cpi`.
        rate_card_token:
          $ref: '#/components/schemas/RateCardToken'
    OpenExchangePricePrediction:
      type: object
      description: Contains the predicted pricing details for the Cint Exchange.
      required:
      - pricing_context
      - cost_per_interview
      properties:
        pricing_context:
          description: The pricing context used in the calculation. The `type` field within the object indicates the model
            (`rate_card` or `dynamic`).
          oneOf:
          - $ref: '#/components/schemas/DynamicPricingContext'
          - $ref: '#/components/schemas/RateCardPricingContext'
        cost_per_interview:
          $ref: '#/components/schemas/MonetaryAmount'
    DynamicPricingContext:
      type: object
      description: The pricing context when a dynamic model is used.
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: The pricing model. For this context, the value is always 'dynamic'.
    TargetGroupFieldingSpecification:
      type: object
      description: Contains Target Group fielding details.
      required:
      - start_at
      - end_at
      properties:
        start_at:
          type: string
          format: date-time
          description: The timestamp the Target Group is scheduled to start at (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        end_at:
          type: string
          format: date-time
          description: The timestamp the Target Group is scheduled to end at (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
    TargetGroupFeasibilityResponseAllocationSpecification:
      type: object
      description: Contains the feasibility results for the open and private exchange allocations.
      required:
      - open_exchange_allocations
      properties:
        open_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponseOpenExchangeAllocations'
        private_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponsePrivateExchangeAllocations'
    CalculateTargetGroupFeasibilityByIdRequest:
      type: object
      description: Specifies the parameters to override when calculating feasibility for an existing target group.
      properties:
        locale:
          type: string
          description: Locale code with language and country.
          example: eng_us
        collects_pii:
          type: boolean
          description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
          example: true
        incidence_rate:
          type: number
          description: The expected incidence rate (IR) of the target audience, expressed as a decimal (e.g., 0.25 for 25%).
          minimum: 0
          exclusiveMinimum: true
          maximum: 1
          example: 0.5
        length_of_interview:
          type: integer
          description: The expected median length of the interview, in minutes.
          minimum: 1
          maximum: 45
          example: 20
        completes_goal:
          type: integer
          description: The desired number of completed interviews.
          minimum: 1
          maximum: 10000
          example: 40
        start_at:
          type: string
          format: date-time
          description: The start date and time of the target group. Must be earlier than the 'end_at'.
          example: '2023-01-01T23:00:00.000Z'
        end_at:
          type: string
          format: date-time
          description: The end date and time of the target group. Must be later than the 'start_at'.
          example: '2023-01-31T23:00:00.000Z'
        step_days:
          type: number
          minimum: 0
          description: The number of days for each step when using an `even_paced` fielding strategy. This field is optional.
        cost_per_interview:
          description: The desired Cost Per Interview (CPI) for the filling goal suggestion. For dynamic pricing, this serves
            as an initial suggestion. For rate card pricing, this field is ignored. If both `cost_per_interview` and `price`
            are provided, `cost_per_interview` takes precedence.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        price:
          description: Alias for `cost_per_interview`. If both `price` and `cost_per_interview` are provided, `cost_per_interview`
            takes precedence.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        rate_card_price_boost:
          description: The CPI boost value to apply over the rate card pricing. Ignored when the pricing is not rate card
            based.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        profiling:
          type: object
          description: Contains the targeting demographic criteria and adjustment type.
          properties:
            profile_adjustment_type:
              type: string
              description: Defines how quotas are specified in the `targets` array. Use `percentage` to define quotas as a
                percentage of the `completes_goal`, or `nominal` to define them as a specific number of completes.
              enum:
              - percentage
              - nominal
              example: percentage
            profiles:
              type: array
              description: List of profiles.
              items:
                $ref: '#/components/schemas/FeasibilityRequestDraftRegularProfileV3'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestAllocationSpecification'
    TargetGroupFeasibilityRequestOpenExchangeAllocations:
      type: object
      description: Defines the allocation settings for the Cint Open Exchange.
      required:
      - blocked_supplier_ids
      - exchange_min_percentage
      - exchange_max_percentage
      - groups
      properties:
        blocked_supplier_ids:
          type: array
          description: A list of supplier IDs to block from the Cint Open Exchange.
          items:
            type: string
            example: '234'
        exchange_min_percentage:
          type: integer
          description: The minimum percentage of completes that must come from the Cint Open Exchange.
          example: 0
        exchange_max_percentage:
          type: integer
          description: The maximum percentage of completes that can come from the Cint Open Exchange.
          example: 100
        groups:
          type: array
          description: A list of specific supplier groups within the Cint Open Exchange.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRequestOpenExchangeAllocationsGroup'
    FeasibilityQuotaDetailsV3:
      type: object
      description: Feasibility targets for provided conditions.
      required:
      - conditions
      - quota
      properties:
        conditions:
          type: array
          minItems: 1
          description: List of conditions.
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
        quota:
          type: object
          required:
          - min_completes
          - max_completes
          properties:
            min_completes:
              $ref: '#/components/schemas/FeasibilityCompletesProjection'
            max_completes:
              $ref: '#/components/schemas/FeasibilityCompletesProjection'
    CalculateTargetGroupFeasibilityRequest:
      type: object
      description: The complete set of specifications for a new (draft) target group to calculate its feasibility.
      required:
      - business_unit_id
      - locale
      - expected_incidence_rate
      - expected_length_of_interview_minutes
      - fielding_specification
      - completes_goal
      properties:
        business_unit_id:
          type: integer
          description: Unique identifier of the business unit.
          example: 1234
        locale:
          type: string
          description: Locale code with language and country.
          example: eng_us
        collects_pii:
          type: boolean
          description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
          example: true
        expected_incidence_rate:
          type: number
          description: Percentage of respondents that will qualify for the study after targeting using standard qualifications.
          minimum: 0
          exclusiveMinimum: true
          maximum: 1
          example: 0.5
        expected_length_of_interview_minutes:
          type: integer
          description: Expected time to finish the target group in minutes.
          minimum: 1
          maximum: 45
          example: 20
        completes_goal:
          type: integer
          description: Indicates the new value for completes goal.
          minimum: 1
          maximum: 10000
          example: 40
        fielding_specification:
          $ref: '#/components/schemas/TargetGroupFieldingSpecification'
        step_days:
          type: number
          minimum: 0
          description: optional value of step days for when FA strategy is even paced.
        cost_per_interview:
          description: The desired Cost Per Interview (CPI) for the feasibility calculation. For dynamic pricing, this serves
            as an initial suggestion. For rate card pricing, this field is ignored. If both `cost_per_interview` and `price`
            are provided, `cost_per_interview` takes precedence.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        price:
          description: Alias for `cost_per_interview`. If both `price` and `cost_per_interview` are provided, `cost_per_interview`
            takes precedence.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        rate_card_price_boost:
          description: The CPI boost value to apply over the rate card pricing. Ignored when the pricing is not rate card
            based.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        profiling:
          type: object
          description: Contains the targeting demographic criteria and adjustment type.
          required:
          - profile_adjustment_type
          - profiles
          properties:
            profile_adjustment_type:
              type: string
              example: percentage
            profiles:
              type: array
              description: List of profiles.
              items:
                $ref: '#/components/schemas/FeasibilityRequestDraftRegularProfileV3'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestAllocationSpecification'
      example:
        business_unit_id: 1234
        locale: eng_us
        expected_incidence_rate: 0.25
        expected_length_of_interview_minutes: 15
        completes_goal: 500
        fielding_specification:
          start_at: '2024-08-01T10:00:00.000Z'
          end_at: '2024-08-31T10:00:00.000Z'
        profiling:
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            quotas_enabled: true
            targets:
            - conditions:
              - object: range
                question_id: 12413
                min: 18
                max: 34
              quota:
                completes_goal_percentage: 50
    TargetGroupFeasibilityResponsePrivateExchangeAllocations:
      type: object
      description: Contains the feasibility results for Private Exchange allocation groups.
      required:
      - groups
      properties:
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityResponsePrivateExchangeAllocationsGroup'
    FeasibilityResponseDraftRegularProfileV3:
      description: Contains the feasibility breakdown for a profiling quota. The `object` field distinguishes between `regular`
        and `blended` profiles.
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          targets:
            $ref: '#/components/schemas/FeasibilityQuotaV3'
      - title: Blended Profile
        type: object
        required:
        - object
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          targets:
            $ref: '#/components/schemas/FeasibilityQuotaV3'
    TargetGroupFeasibilityRequestOpenExchangeAllocationsGroup:
      type: object
      description: Defines a single supplier group within the Cint Open Exchange allocation.
      required:
      - group_name
      - min_percentage
      - max_percentage
      - suppliers
      properties:
        group_name:
          type: string
          description: A unique name for the allocation group. This name must be unique across all groups in both the open
            and private exchange allocations.
          example: Unique Test group name
        min_percentage:
          type: integer
          description: The minimum percentage of the total completes that must come from this group.
          example: 0
        max_percentage:
          type: integer
          description: The maximum percentage of the total completes that can come from this group.
          example: 100
        suppliers:
          type: array
          description: A list of supplier IDs to include in this group.
          items:
            type: string
            example: '434'
        supplier_id:
          type: string
          description: The ID of the Private Exchange supplier for this group.
          example: '43'
    TargetGroupFeasibilityRequestPrivateExchangeAllocationsGroup:
      type: object
      description: Defines a single supplier group within a Private Exchange allocation.
      required:
      - group_name
      - min_percentage
      - max_percentage
      - supplier_id
      properties:
        group_name:
          type: string
          example: Test group
        min_percentage:
          type: integer
          example: 0
        max_percentage:
          type: integer
          example: 100
        supplier_id:
          type: string
          example: '43'
    ProfileTargetsRangeConditionsV3:
      title: Range condition
      type: object
      description: A profiling condition that targets a numeric range (e.g. age).
      required:
      - object
      - question_id
      - min
      - max
      properties:
        object:
          type: string
          description: The type of profiling condition. For this object, the value is always 'range'.
          enum:
          - range
          example: range
        question_id:
          $ref: '#/components/schemas/QuestionID'
        min:
          type: integer
          format: int32
          minimum: 1
          maximum: 99
          description: The minimum numeric value (inclusive).
          example: 18
        max:
          type: integer
          format: int32
          minimum: 1
          maximum: 99
          description: The maximum numeric value (inclusive).
          example: 24
    QuestionID:
      type: integer
      description: The unique identifier for a profiling question.
      example: 12413
    TargetGroupFeasibilityRequestAllocationSpecification:
      type: object
      description: Defines the complete set of allocation settings for a feasibility request.
      required:
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        open_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestOpenExchangeAllocations'
        private_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestPrivateExchangeAllocations'
    TargetGroupFeasibilityResponsePrivateExchangeAllocationsGroup:
      type: object
      required:
      - group_name
      - min_completes
      - max_completes
      properties:
        group_name:
          type: string
          example: Test group
        min_completes:
          type: integer
          example: 55
        max_completes:
          type: integer
          example: 85
    FeasibilityCompletesProjection:
      type: object
      description: Projection of completes for feasibility condition.
      properties:
        projected_completes_percentage:
          type: number
          multipleOf: 0.01
          minimum: 0
          maximum: 100
          description: Percentage of total projected completes applied to this condition(s).
          example: 40
        projected_completes_goal:
          type: number
          format: int32
          minimum: 0
          description: Nominal of total projected completes applied to this condition(s).
          example: 40
    ProfileTargetsSelectionConditionsV3:
      title: Selection condition
      type: object
      description: A profiling condition that targets a specific answer option (e.g. gender).
      required:
      - object
      - question_id
      - option
      properties:
        object:
          type: string
          description: The type of profiling condition. For this object, the value is always 'selection'.
          enum:
          - selection
          example: selection
        question_id:
          $ref: '#/components/schemas/QuestionID'
        option:
          type: string
          description: The unique identifier for the selected answer option.
          example: '1'
    CalculateTargetGroupFeasibilityResponse:
      type: object
      description: Target Group feasibility information.
      required:
      - suggested_price
      properties:
        suggested_price:
          description: The single-point cost for the suggested Cost Per Interview (CPI).
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        suggested_price_range:
          type: object
          description: A suggested CPI range, which may be provided if a single-point price is not available.
          required:
          - min
          - max
          properties:
            min:
              $ref: '#/components/schemas/MonetaryAmount'
            max:
              $ref: '#/components/schemas/MonetaryAmount'
        suggested_completes_goal_range:
          type: object
          description: The suggested completes goal range estimates the minimum and maximum number of completions achievable
            based on the target group details.
          required:
          - min
          - max
          properties:
            min:
              type: integer
              minimum: 0
              example: 25
            max:
              type: integer
              minimum: 0
              example: 30
        profiles:
          type: array
          description: Provides feasibility per quota based on the profiles submitted with the request.
          items:
            $ref: '#/components/schemas/FeasibilityResponseDraftRegularProfileV3'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponseAllocationSpecification'
    FeasibilityQuotaV3:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/FeasibilityQuotaDetailsV3'
    ProfileTargetsOpenEndedConditionsV3:
      title: Open-ended condition
      description: A profiling condition that targets open-ended text values.
      oneOf:
      - title: Allow All Values
        description: If `allow_all_values` is true, `open_ended_values` must be null.
        type: object
        properties:
          object:
            type: string
            description: The type of profiling condition. For this object, the value is always 'open_ended'.
            enum:
            - open_ended
            example: open_ended
          question_id:
            $ref: '#/components/schemas/QuestionID'
          allow_all_values:
            type: boolean
            enum:
            - true
            description: Flag to allow all values.
          open_ended_values:
            type: array
            minItems: 0
            maxItems: 0
            items:
              type: string
            nullable: true
            description: Must be null when `allow_all_values` is true.
        required:
        - object
        - question_id
        - allow_all_values
        - open_ended_values
      - title: Specific Open End Values
        description: If `allow_all_values` is false, `open_ended_values` must contain at least one open end value.
        type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of control selections.  Always is `open_ended`.
            enum:
            - open_ended
            example: open_ended
          question_id:
            $ref: '#/components/schemas/QuestionID'
          allow_all_values:
            type: boolean
            enum:
            - false
            description: Flag to allow only specific open end values.
          open_ended_values:
            type: array
            items:
              type: string
            minItems: 1
            maxItems: 10000
            description: List of applicable open end values. Required when `allow_all_values` is false. Note that only 10,000
              values may be provided. For more than 10,000, please contact your integration consultant.
        required:
        - object
        - question_id
        - allow_all_values
        - open_ended_values
      example:
        object: open_ended
        question_id: 45
        open_ended_values: []
        allow_all_values: true
    TargetGroupFeasibilityResponseOpenExchangeAllocations:
      type: object
      description: Contains the feasibility results for the Cint Open Exchange, including projected completes and group breakdowns.
      required:
      - min_completes
      - max_completes
      - groups
      properties:
        min_completes:
          type: integer
          description: The minimum number of completes projected to be achievable from the Cint Open Exchange.
          example: 55
        max_completes:
          type: integer
          description: The maximum number of completes projected to be achievable from the Cint Open Exchange.
          example: 85
        groups:
          type: array
          description: A breakdown of projected completes for each specific supplier group.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityResponseOpenExchangeAllocationsGroup'
    FeasibilityRequestQuotaV3:
      type: array
      description: A list of quota definitions for a profile.
      minItems: 1
      items:
        $ref: '#/components/schemas/FeasibilityRequestQuotaDetailsV3'
    FeasibilityRequestQuotaDetailsV3:
      type: object
      description: Feasibility targets for provided conditions.
      required:
      - conditions
      properties:
        name:
          type: string
          description: The name of the target.
          example: Target Name
        conditions:
          type: array
          minItems: 1
          description: List of conditions.
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
        quota:
          description: The desired quota. The structure of this object depends on the `profile_adjustment_type` set at the
            parent `profiling` level. Use `completes_goal_percentage` for `percentage` mode, and `completes_goal` for `nominal`
            mode.
          oneOf:
          - title: profile_adjustment_type is `percentage`
            type: object
            properties:
              completes_goal_percentage:
                type: number
                multipleOf: 0.01
                minimum: 0
                maximum: 100
                description: Percentage of total completes goal quota applied to this condition(s).
                example: 40
          - title: profile_adjustment_type is `nominal`
            type: object
            properties:
              completes_goal:
                type: integer
                minimum: 0
                description: Total desired completes goal applied to this condition(s).
                example: 40
    FeasibilityRequestDraftRegularProfileV3:
      description: Defines the profiling criteria for a feasibility request. The `object` field distinguishes between `regular`
        and `blended` profiles.
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - quotas_enabled
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          quotas_enabled:
            type: boolean
            description: A flag that indicates if quotas are enabled for this profile.
            example: true
          targets:
            $ref: '#/components/schemas/FeasibilityRequestQuotaV3'
      - title: Blended Profile
        type: object
        required:
        - object
        - quotas_enabled
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          quotas_enabled:
            type: boolean
            description: indicator boolean whether quotas are enabled on the given profile.
            example: true
          targets:
            $ref: '#/components/schemas/FeasibilityRequestQuotaV3'
    TargetGroupFeasibilityRequestPrivateExchangeAllocations:
      type: object
      description: Defines the allocation settings for Private Exchanges.
      required:
      - blocked_supplier_ids
      - groups
      properties:
        blocked_supplier_ids:
          type: array
          description: A list of supplier IDs to block from all Private Exchanges.
          items:
            type: string
            example: '435'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRequestPrivateExchangeAllocationsGroup'
    InterlockProfileConditionsV3:
      description: A polymorphic object representing a single profiling condition, which can be a `selection`, `range`, or
        `open_ended` type.
      oneOf:
      - $ref: '#/components/schemas/ProfileTargetsSelectionConditionsV3'
      - $ref: '#/components/schemas/ProfileTargetsRangeConditionsV3'
      - $ref: '#/components/schemas/ProfileTargetsOpenEndedConditionsV3'
    TargetGroupFeasibilityResponseOpenExchangeAllocationsGroup:
      type: object
      required:
      - group_name
      - min_completes
      - max_completes
      properties:
        group_name:
          type: string
          example: Test group
        min_completes:
          type: integer
          example: 55
        max_completes:
          type: integer
          example: 85
    ModuleDynamicPricing:
      title: Dynamic pricing
      type: object
      description: |
        Controls the Cost Per Interview (CPI) to achieve a 100% fill rate by the target group's end date as cost-effectively as possible.

        Key behaviors:

        * **Prerequisite:** This module can only be used for target groups configured with dynamic pricing.
        * You must specify either `total_budget` or `maximum_cpi`, but not both.
        * If you specify `minimum_cpi`, it must be lower than the `maximum_cpi`.
        * The `total_budget` setting can overrule the `minimum_cpi`.
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: The type of module. For this object, the value is always 'dynamic'.
        total_budget:
          description: The maximum total amount to spend for the target number of completes.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        maximum_cpi:
          description: The maximum cost per interview (CPI) that the module is allowed to set.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        minimum_cpi:
          description: The minimum cost per interview (CPI) that the module is allowed to set.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
      required:
      - type
    ModuleLinearPacing:
      title: Linear even pacing
      type: object
      description: Paces fielding by incrementing the completes goal in regular intervals until the target group's end date.
      properties:
        type:
          type: string
          enum:
          - linear
          description: The type of module. For this object, the value is always 'linear'.
        increment_interval:
          $ref: '#/components/schemas/IncrementInterval'
      required:
      - type
      - increment_interval
    IncrementInterval:
      type: string
      format: duration
      example: P1DT5H
      description: |
        The duration between each quota increment, in ISO-8601 format.

        Key details:

        * **Format:** Must follow the `PnDTnHnMnS` pattern (e.g., `P1D` for one day, `PT12H` for 12 hours).
        * **Limit:** The duration must be less than 398 days.
    ModuleQuotaOverlay:
      title: Quota overlay
      type: object
      description: Controls how the overall completes goal is distributed across the target group's quotas.
      properties:
        prevent_overfill:
          type: boolean
          description: When `true`, this setting helps prevent quotas from exceeding their target number of completes.
          example: true
        balance_fill:
          type: boolean
          description: Whentrue, this setting ensures that quotas within the same demographic category fill at a similar rate.
          example: true
      required:
      - prevent_overfill
      - balance_fill
    ModuleRateCardPricing:
      title: Rate Card pricing
      type: object
      description: Manages pricing for a target group that uses a rate card model. This module cannot be used with `dynamic`
        pricing.
      properties:
        type:
          type: string
          enum:
          - rate_card
          description: The type of module. For this object, the value is always 'rate_card'.
        maximum_cpi:
          description: The maximum cost per interview (CPI) that the module is allowed to set.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        boost_cpi:
          description: Additional amount to be added to the CPI inferred from the rate card. Respects the `maximum_cpi` setting
            limit.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
      required:
      - type
    FieldingAssistantModulesAssignment:
      title: Fielding Assistant modules assignment
      description: A container for all enabled Fielding Assistant modules for a target group. Each module is optional; if
        a module is omitted or set to `null`, it is considered disabled.
      type: object
      properties:
        pricing:
          oneOf:
          - $ref: '#/components/schemas/ModuleDynamicPricing'
          - $ref: '#/components/schemas/ModuleRateCardPricing'
          nullable: true
        quota_overlay:
          allOf:
          - $ref: '#/components/schemas/ModuleQuotaOverlay'
          nullable: true
        pacing:
          oneOf:
          - $ref: '#/components/schemas/ModuleLinearPacing'
          - $ref: '#/components/schemas/ModuleAdaptivePacing'
          - $ref: '#/components/schemas/ModuleGeminiPacing'
          nullable: true
        soft_launch:
          allOf:
          - $ref: '#/components/schemas/ModuleSoftLaunch'
          nullable: true
    ModuleGeminiPacing:
      title: Gemini pacing
      type: object
      description: Always collects at most as many completes on each quota, as were collected on an exposed target group.
        Intended for Measurement control target groups.
      properties:
        type:
          type: string
          enum:
          - gemini
          description: The type of module. For this object, the value is always 'gemini'.
        exposed_target_group_id:
          type: string
          format: ulid
          description: Uniquely identifies exposed target group by ID.
          example: 01HC2Z6TM8C4F3Y5CA6S2JR475
      required:
      - type
      - exposed_target_group_id
    ModuleAdaptivePacing:
      title: Adaptive even pacing
      type: object
      description: Increments quotas in regular intervals, recalculating steps after each interval to evenly pace  the rest
        of the Completes Goal until the end date.
      properties:
        type:
          type: string
          enum:
          - adaptive
          description: The type of module. For this object, the value is always 'adaptive'.
        increment_interval:
          $ref: '#/components/schemas/IncrementInterval'
      required:
      - type
      - increment_interval
    FieldingAssistantModulesAssignmentRequestModel:
      title: Fielding Assistant modules assignment
      description: Having an assignment enables Fielding Assistant modules on a specified target group.  All modules are optional,
        their omission means they are not enabled.
      type: object
      properties:
        pricing:
          description: The pricing module configuration. The `type` field within the object determines the model (`dynamic`
            or `rate_card`).
          oneOf:
          - $ref: '#/components/schemas/ModuleDynamicPricing'
          - $ref: '#/components/schemas/ModuleRateCardPricing'
          nullable: true
        quota_overlay:
          $ref: '#/components/schemas/ModuleQuotaOverlay'
        pacing:
          description: The pacing module configuration. The `type` field within the object determines the pacing strategy
            (`linear`, `adaptive`, or `gemini`).
          oneOf:
          - $ref: '#/components/schemas/ModuleLinearPacing'
          - $ref: '#/components/schemas/ModuleAdaptivePacing'
          - $ref: '#/components/schemas/ModuleGeminiPacing'
          nullable: true
        soft_launch:
          $ref: '#/components/schemas/ModuleSoftLaunch'
    ModuleSoftLaunch:
      title: Soft launch
      type: object
      description: Manages a soft launch of a target group. During a soft launch, pacing modules are ignored.
      properties:
        end_at:
          type: string
          description: The soft launch will be finished at this date, and the target group paused regardless of the fill.
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        filling_goal_percentage:
          description: The percentage of the full filling goal to collect during the soft launch phase.
          type: integer
          minimum: 1
          maximum: 100
          example: 1
        demographics_strictness_percentage:
          description: Controls how strictly the soft launch's demographic distribution should follow the full launch's distribution.
            A value of `100` aims to match the distribution perfectly, while `0` allows any distribution.
          type: integer
          minimum: 0
          maximum: 100
          example: 1
      required:
      - end_at
      - filling_goal_percentage
      - demographics_strictness_percentage
    ModuleDynamicPricingRequestModel:
      title: Dynamic pricing
      type: object
      description: |
        Controls the Cost Per Interview (CPI) to achieve a 100% fill rate by the target group's end date as cost-effectively as possible.

        Key behaviors:

        * **Prerequisite:** This module can only be used for target groups configured with dynamic pricing.
        * You must specify either `total_budget` or `maximum_cpi`, but not both.
        * If you specify `minimum_cpi`, it must be lower than the `maximum_cpi`.
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: The type of module. For this object, the value is always 'dynamic'.
        total_budget:
          description: The maximum total amount to spend for the target number of completes.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        maximum_cpi:
          description: The maximum cost per interview (CPI) that the module is allowed to set. Must be higher than the minimum,
            if specified. Only one of `maximum_cpi` or `total_budget` can be specified.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        minimum_cpi:
          description: The minimum cost per interview (CPI) that the module is allowed to set.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
      required:
      - type
    ModuleRateCardPricingRequestModel:
      title: Rate Card module
      type: object
      description: This module can only be used for target groups with rate card pricing. It does not support target groups
        with `dynamic` pricing.
      properties:
        type:
          type: string
          enum:
          - rate_card
          description: The type of module. For this object, the value is always 'rate_card'.
        maximum_cpi:
          description: The maximum cost per interview (CPI) that the module is allowed to set.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        boost_cpi:
          description: Additional amount to be added to the CPI inferred from the rate card. Respects the `maximum_cpi` setting
            limit.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
      required:
      - type
    CreateBulkCompleteTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk complete target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
      required:
      - target_group_ids
    CreateBulkLaunchTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk launch target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
      required:
      - target_group_ids
    BulkFailedTargetGroups:
      type: object
      description: A list of target groups that failed to be processed in the bulk job, along with the reason for failure.
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              target_group_id:
                $ref: '#/components/schemas/TargetGroupID'
              failure_reason:
                $ref: '#/components/schemas/BulkJobFailureReason'
            required:
            - target_group_id
            - failure_reason
        has_more:
          type: boolean
          description: This field is always `false` as the list of updated or failed target groups is not paginated and will
            always be returned in full.
          enum:
          - false
      required:
      - data
      - has_more
    TargetGroupIds:
      type: array
      description: An array of unique target group identifiers to be processed in a bulk job.
      minItems: 1
      items:
        $ref: '#/components/schemas/TargetGroupID'
    TargetGroupName:
      type: string
      description: A human-readable name for the target group.
      minLength: 5
      maxLength: 128
      example: Test Target Group
    GetBulkResumeTargetGroupJobResponse:
      type: object
      description: Bulk resume target groups job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          description: The date and time when the job was created.
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
          description: The current status of the bulk job.
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
      required:
      - job_id
      - created_at
      - created_by
      - status
      - updated_target_groups
      - failed_target_groups
    BulkJobFailureReason:
      type: object
      properties:
        code:
          type: string
          description: A machine-readable code for the failure reason.
          example: TargetGroupNotFound
        description:
          type: string
          description: A human-readable explanation of why the operation failed for this target group.
          example: Target group not found.
    CreateBulkPauseTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk pause target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
      required:
      - target_group_ids
    BulkUpdatedTargetGroups:
      type: object
      description: A list of target groups that were successfully processed in the bulk job.
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              target_group_id:
                $ref: '#/components/schemas/TargetGroupID'
            required:
            - target_group_id
        has_more:
          type: boolean
          description: This field is always `false` as the list of updated or failed target groups is not paginated and will
            always be returned in full.
          enum:
          - false
      required:
      - data
      - has_more
    GetBulkCompleteTargetGroupJobResponse:
      type: object
      description: Bulk complete target groups job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
      required:
      - job_id
      - created_at
      - created_by
      - status
      - updated_target_groups
      - failed_target_groups
    GetBulkLaunchTargetGroupJobResponse:
      type: object
      description: Bulk launch target groups job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
      required:
      - job_id
      - created_at
      - created_by
      - status
      - updated_target_groups
      - failed_target_groups
    GetBulkPauseTargetGroupJobResponse:
      type: object
      description: Bulk pause target groups job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
      required:
      - job_id
      - created_at
      - created_by
      - status
      - updated_target_groups
      - failed_target_groups
    CreateBulkResumeTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk resume target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
      required:
      - target_group_ids
    BulkJobStatus:
      type: string
      description: The status of an asynchronous bulk job. `Processing` indicates the job is still running. `Completed` or
        `Failed` are terminal states.
      enum:
      - Completed
      - Failed
      - Processing
    GetBulkRelaunchTargetGroupJobResponse:
      type: object
      description: Contains the status and results for a bulk "relaunch" job.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
          description: The unique ID of the job.
        created_at:
          type: string
          format: date-time
          description: The date and time when the job was created.
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
          description: The current status of the job. Poll this endpoint until the status is `Completed` or `Failed`.
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
          description: A list of target groups that were successfully relaunched.
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
          description: A list of target groups that could not be relaunched, along with the reason for failure.
      required:
      - job_id
      - created_at
      - created_by
      - status
      - updated_target_groups
      - failed_target_groups
    CreateBulkRelaunchTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk relaunch target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
      required:
      - target_group_ids
    IdempotencyKey:
      type: string
      description: |-
        A shallow unique ID used as part of the deduplication mechanism for mutable operations.
        We suggest using UUIDv4 or another random string with sufficient entropy to avoid collisions.
      maxLength: 255
      example: 01BTGNYV6HRNK8K8VKZASZCFP0
    FieldingRunJobFailureReason:
      type: object
      description: Provides details about why a fielding run job failed.
      required:
      - code
      - description
      properties:
        code:
          type: string
          example: TargetGroupNotFound
        description:
          type: string
          example: Target group not found.
        reasons:
          type: array
          description: Optional. Includes one or more detailed reason objects about the failure, when applicable.
          items:
            $ref: '#/components/schemas/FieldingRunJobFailureReasonDetail'
    FieldingRunJobFailureReasonDetail:
      type: object
      description: Provides granular, machine-readable details for a single validation error.
      properties:
        name:
          description: A machine-readable code for the specific validation error.
          type: string
          example: profile_validation_error_001
        reason:
          description: A machine-readable code providing more context about the validation error.
          type: string
          example: profile_condition_min_greater_than_max_001
        detail:
          description: A human-readable message with specific details about the validation error.
          type: string
          example: QuestionID - 1, Details - Min > Max - 50-40
    FieldingRunStatus:
      description: The current status of a fielding run. A `scheduled` run will become `live` at its start time. A `live`
        run is actively collecting completes.
      type: string
      enum:
      - scheduled
      - live
      - paused
      - completed
    UpdateFieldingRunRequest:
      type: object
      description: Request for updating a fielding run for a given target group id.
      properties:
        start_fielding_at:
          type: string
          format: date-time
          description: The new start time for the fielding run, in RFC3339 UTC format. The start time cannot be in the past.
          example: '2023-01-01T23:00:00.000Z'
        end_fielding_at:
          type: string
          format: date-time
          description: The new end time for the fielding run, in RFC3339 UTC format. The `end_fielding_at` time cannot be
            before the `start_fielding_at` time.
          example: '2023-01-31T23:59:59.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    FieldingRunItem:
      type: object
      description: The version of the fielding run. This value is used in the `If-Match` header for optimistic locking when
        making updates.
      properties:
        id:
          $ref: '#/components/schemas/FieldingRunID'
        last_changed_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        last_changed_by:
          $ref: '#/components/schemas/UserID'
        start_fielding_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        end_fielding_at:
          type: string
          format: date-time
          example: '2023-01-31T23:59:59.000Z'
        status:
          $ref: '#/components/schemas/FieldingRunStatus'
        version:
          type: integer
          description: Identifies a fielding run version
          example: 5
      required:
      - id
      - last_changed_at
      - last_changed_by
      - start_fielding_at
      - end_fielding_at
      - status
      - version
    CreateScheduleFieldingRunFromDraftJobRequest:
      type: object
      description: Request body for creating a `schedule fielding run from draft` job.
      properties:
        start_fielding_at:
          type: string
          format: date-time
          description: The timestamp the fielding run is scheduled to start at(RFC3339 UTC format, 3 fractional digits). The
            start time cannot be in the past.
          example: '2023-01-01T23:00:00.000Z'
        end_fielding_at:
          type: string
          format: date-time
          description: 'The timestamp the fielding run is scheduled to end at (RFC3339 UTC format, 3 fractional digits).  The
            end time has to be after the starting time. '
          example: '2023-01-31T23:59:59.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    GetListFieldingRunsResponse:
      type: object
      description: List of fielding runs for a given target group id.
      properties:
        data:
          type: array
          description: |
            An array containing the fielding run for the target group.
            **Note:** A target group can have at most one fielding run, so this array will contain zero or one item.
          items:
            $ref: '#/components/schemas/FieldingRunItem'
        has_more:
          type: boolean
          description: This field is always `false` as a target group can have at most one fielding run.
          enum:
          - false
      required:
      - data
      - has_more
    LaunchNowFieldingRunResponse:
      type: object
      description: Response for launching a fielding run now.
      properties:
        start_fielding_at:
          type: string
          format: date-time
          description: The timestamp the fielding run is scheduled to start at(RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        end_fielding_at:
          type: string
          format: date-time
          description: 'The timestamp the fielding run is scheduled to end at (RFC3339 UTC format, 3 fractional digits). '
          example: '2023-01-10T23:00:00.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    FieldingRunID:
      description: A unique identifier for the fielding run.
      type: string
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    CreateLaunchFieldingRunFromDraftJobRequest:
      type: object
      description: Request body for creating a `launch fielding run from draft` job.
      properties:
        end_fielding_at:
          type: string
          format: date-time
          description: 'The timestamp the fielding run is scheduled to end at (RFC3339 UTC format, 3 fractional digits). '
          example: '2023-01-01T23:00:00.000Z'
      required:
      - end_fielding_at
    UpdateFieldingRunResponse:
      type: object
      description: Response for updating a fielding run for a given target group id.
      properties:
        id:
          $ref: '#/components/schemas/FieldingRunID'
      required:
      - id
    GetFieldingRunResponse:
      allOf:
      - $ref: '#/components/schemas/FieldingRunItem'
      - description: Fielding run details.
    GetScheduleFieldingRunFromDraftJobResponse:
      type: object
      description: Schedule fielding run from draft job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_fielding_run_id:
          $ref: '#/components/schemas/FieldingRunID'
        created_at:
          type: string
          format: date-time
          description: The date and time when the job was created.
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
          description: The ID of the user who created the job.
        status:
          $ref: '#/components/schemas/FieldingRunJobStatus'
          description: The current status of the job. Poll this endpoint until the status is `Completed` or `Failed`.
        failure_reason:
          $ref: '#/components/schemas/FieldingRunJobFailureReason'
          description: Details about the failure. This field will be `null` if the job is successful or still processing.
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
      required:
      - job_id
      - created_at
      - created_by
      - status
    FieldingRunJobStatus:
      description: The status of an asynchronous job. `Processing` indicates the job is still running. `Completed` or `Failed`
        are terminal states.
      type: string
      enum:
      - Completed
      - Failed
      - Processing
    GetLaunchFieldingRunFromDraftJobResponse:
      type: object
      description: Launch fielding run from draft job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_fielding_run_id:
          $ref: '#/components/schemas/FieldingRunID'
        created_at:
          type: string
          format: date-time
          description: The date and time when the job was created.
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
          description: The ID of the user who created the job.
        status:
          $ref: '#/components/schemas/FieldingRunJobStatus'
          description: The current status of the job. Poll this endpoint until the status is `Completed` or `Failed`.
        failure_reason:
          $ref: '#/components/schemas/FieldingRunJobFailureReason'
          description: Details about the failure. This field will be `null` if the job is successful or still processing.
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
      required:
      - job_id
      - created_at
      - created_by
      - status
    SuggestDaysRequest:
      type: object
      description: The set of parameters required to generate a fielding time suggestion.
      required:
      - locale
      - price
      - length_of_interview
      - incidence_rate
      - completes
      properties:
        locale:
          $ref: '#/components/schemas/LocaleCode'
        collects_pii:
          type: boolean
          description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
          example: true
        price:
          description: The desired Cost Per Interview for the filling goal suggestion.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        length_of_interview:
          type: integer
          description: The expected median length of the interview, in minutes.
          minimum: 1
          maximum: 45
          example: 5
        incidence_rate:
          type: number
          description: The expected incidence rate (IR) of the target audience, expressed as a decimal (e.g., 0.5 for 50%).
          minimum: 0
          maximum: 1
          example: 0.5
        completes:
          type: integer
          description: The desired number of completed interviews.
          minimum: 1
          example: 1000
    SuggestDaysResponse:
      type: object
      description: The suggested number of days required for fielding.
      properties:
        days:
          type: integer
          description: The suggested number of days required to field the target group.
          example: 10
    SuggestedTimeRangeResponse:
      type: object
      description: A suggested time range for fielding, including holiday and timezone information.
      properties:
        start:
          type: string
          description: Starting timestamp of the suggested time range.
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        end:
          type: string
          description: Ending timestamp of the suggested time range.
          format: date-time
          example: '2023-01-10T23:00:00.000Z'
        holidays:
          type: array
          description: List of holidays in the suggested time range.
          items:
            type: object
            properties:
              date:
                type: string
                description: The date of the holiday in YYYY-MM-DD format.
                example: '2023-01-01'
              name:
                type: string
                description: The name of the holiday.
                example: New Year's Day
              respondent_rate:
                type: number
                format: double
                description: The projected respondent activity rate on this day, relative to a normal day (1.0).
                example: 0.65
              completes_rate:
                type: number
                format: double
                description: The projected survey completion rate on this day, relative to a normal day (1.0).
                example: 0.54
        timezone:
          type: string
          description: The IANA time zone identifier for the suggested range (e.g., "Europe/London").
          example: Europe/London
    NotFoundErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    ProfileID:
      type: string
      description: Profile identifier
      example: 01K4X9PNVF1ZFA7F1DSN1ZJWWK
    ClientErrorDemandAPI:
      type: object
      properties:
        object:
          type: string
        title:
          type: string
        detail:
          type: string
        invalid_params:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              reason:
                type: string
            required:
            - name
            - reason
        instance:
          type: string
        type:
          type: string
      required:
      - object
      - detail
    BatchProfileDeletionRequestV3:
      type: object
      required:
      - profile_ids
      properties:
        profile_ids:
          type: array
          description: IDs of the profiles you want to delete
          minItems: 1
          items:
            $ref: '#/components/schemas/ProfileIDV2'
    BadRequestErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
        invalid_params:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              reason:
                type: string
            required:
            - name
            - reason
      required:
      - object
      - detail
    ProfileIDV2:
      type: string
      format: ULID
      description: Profile identifier
      example: 01HY0PYB3TW23RQRVNFYRC2PP6
    RequestCreateManageTargetWithConditionsAndQuotasV3:
      type: object
      description: Profile Target with conditions and quotas
      required:
      - conditions
      properties:
        conditions:
          $ref: '#/components/schemas/RequestCreateManageTargetConditionV3'
        quota:
          $ref: '#/components/schemas/ManageCreateProfileQuotaDetailsV3'
    InternalErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              reason:
                type: string
            required:
            - name
            - reason
      required:
      - object
      - detail
    QuotaV3:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/QuotaDetailsV3'
    IsSyntheticTraffic:
      type: boolean
      default: false
      description: Boolean value representing whether request is the product of synthetic traffic. By default, set to false.
    CompletesGoal:
      type: number
      description: Specifies the target group's required number of survey completions or pre-screen responses.  Formerly referred
        to as the "filling goal," this value sets the benchmark for the number of valid responses  needed to achieve the desired
        level of data reliability.
      format: int
      minimum: 1
      example: 1500
    InvalidParamStructure:
      title: Invalid request structure
      type: object
      description: An error related to the structure of the request payload itself.
      required:
      - error_type
      - name
      - reason
      properties:
        error_type:
          type: string
          description: The type of validation error.
          enum:
          - structural_error
        name:
          type: string
          description: Error name.
        reason:
          type: string
          description: Error reason.
        detail:
          type: string
    InternalErrorDemandAPI:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
        errors:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              reason:
                type: string
            required:
            - name
            - reason
      required:
      - object
      - detail
    ForbiddenErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    RequestDraftNoQuotaV3:
      type: object
      description: No quotas specified. The request will proceed without applying any quotas.
      required:
      - object
      - conditions
      properties:
        object:
          type: string
          description: Object field to distinguish the operation.
          enum:
          - nominal
          example: nominal
        conditions:
          type: array
          description: List of conditions.
          minItems: 1
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
    RegularProfileV3:
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - id
        - quotas_enabled
        - name
        - description
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          id:
            type: string
            description: The unique identifier for the profile.
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          name:
            type: string
            description: The name of the profile.
            example: HISPANIC
          description:
            type: string
            description: A short summary of the profile. Summary language will be based on the target group's locale.
            example: Are you of Hispanic, Latino, or Spanish origin?
          description_translated:
            type: string
            description: A short summary of the profile by default english language.
            example: Are you of Hispanic, Latino, or Spanish origin?
          targets:
            $ref: '#/components/schemas/QuotaV3'
      - title: Blended Profile
        type: object
        required:
        - object
        - id
        - quotas_enabled
        - name
        - description
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          intent:
            type: string
            description: The intent field is used to further specify the purpose of the blended profile, which can be either
              'interlock' or 'control'. If not provided, it will default to 'interlock'. This field allows for differentiation
              between blended profiles that are intended for interlocking purposes and those that are intended for control
              purposes.
            enum:
            - interlock
            - control
            example: interlock
          id:
            type: string
            description: The unique identifier for the profile.
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          name:
            type: string
            description: The name of the profile.
            example: HISPANIC
          description:
            type: string
            description: A short summary of the profile. Summary language will be based on the target group's locale.
            example: Are you of Hispanic, Latino, or Spanish origin?
          description_translated:
            type: string
            description: A short summary of the profile by default english language.
            example: Are you of Hispanic, Latino, or Spanish origin?
          targets:
            $ref: '#/components/schemas/QuotaV3'
    UnauthorizedErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    RequestCreateManageTargetConditionV3:
      type: object
      description: Profile target with condition or conditions.
      required:
      - conditions
      properties:
        conditions:
          type: array
          description: List of conditions.
          minItems: 1
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
    Tracestate:
      type: string
      description: |-
        The tracestate header provides additional contextual information to the traceparent header.  This enriches the tracing context and offers more fine-grained control
        Note: This field is optional and will be automatically generated by the service if not provided in the request.  The generated value will be included in the response header.
      example: ot=foo:bar;k1:13
    BatchProfilesQuotasDisableRequestV3:
      type: object
      required:
      - profiles
      properties:
        profiles:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - profile_id
            - target_ids
            properties:
              profile_id:
                $ref: '#/components/schemas/ProfileIDV2'
              target_ids:
                type: array
                minItems: 1
                description: IDs of the target group profiles quotas you want to delete.
                items:
                  $ref: '#/components/schemas/TargetID'
    ProfilesResponseV3:
      oneOf:
      - title: Only profiles
        type: object
        required:
        - locale
        - completes_goal
        - profiles
        properties:
          locale:
            type: string
            example: eng-us
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiles:
            type: array
            minItems: 1
            items:
              $ref: '#/components/schemas/RegularProfileV3'
      - title: No profiles
        type: object
        required:
        - locale
        - completes_goal
        properties:
          locale:
            type: string
            example: eng-us
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiles:
            type: array
            minItems: 0
            maxItems: 0
            nullable: true
            items:
              $ref: '#/components/schemas/RegularProfileV3'
      example:
        locale: spa_us
        completes_goal: 1000
        profiles:
        - object: regular
          id: 01JY5Q1GY7JWX1JHQH8D1W2N9Z
          name: birth gender
          description: ¿Es usted…?
          description_translated: What is your gender?
          quotas_enabled: true
          targets:
          - id: 01JY5V5NDSVHG8S3FX63Y73K3F
            text: Hombre
            text_translated: Male
            conditions:
            - object: selection
              question_id: 43
              option: '1'
            quota:
              name: SF-BirthGender-Quota-1
              completes_goal_percentage: 49.21
              completes_goal: 492
              quota_nominal: 492
              completes: 0
              prescreens: 0
          - id: 01JY5V67FAY2N5TB8TSK6HWM2G
            text: Mujer
            text_translated: Female
            conditions:
            - object: selection
              question_id: 43
              option: '2'
            quota:
              name: SF-BirthGender-Quota-2
              completes_goal_percentage: 50.79
              completes_goal: 508
              quota_nominal: 508
              completes: 0
              prescreens: 0
        - object: regular
          id: 01JY5RJZ2BXP43NC1KHTJKH9SH
          description: Por favor, indique su edad.
          description_translated: What is your age?
          quotas_enabled: true
          targets:
          - id: 01JY5V6KT0FSXXXHS8CFST9NWW
            text: 15 to 19
            text_translated: 15 to 19
            conditions:
            - object: range
              question_id: 42
              min: 15
              max: 19
            quota:
              completes_goal_percentage: 28.21
              completes_goal: 282
              quota_nominal: 282
              completes: 10
              prescreens: 10
          - id: 01JY5V6ZPM95SM01DC61QA8PV4
            text: 20 to 29
            text_translated: 20 to 29
            conditions:
            - object: range
              question_id: 42
              min: 20
              max: 29
            quota:
              completes_goal_percentage: 30.79
              completes_goal: 308
              quota_nominal: 308
              completes: 102
              prescreens: 10
          - id: 01JY5V79FGETBEWBB3Q8BZGGQQ
            text: 30 to 39
            text_translated: 30 to 39
            conditions:
            - object: range
              question_id: 42
              min: 30
              max: 39
            quota:
              completes_goal_percentage: 21.4
              completes_goal: 214
              quota_nominal: 214
              completes: 70
              prescreens: 10
          - id: 01JY5V7M90KG77VGR0Y6C6ZYDD
            text: 40 to 99
            text_translated: 40 to 99
            conditions:
            - object: range
              question_id: 42
              min: 40
              max: 99
            quota:
              completes_goal_percentage: 19.6
              completes_goal: 196
              quota_nominal: 196
              completes: 64
              prescreens: 10
        - object: regular
          id: 01JY5S4CXZKEYQ2HHBY8AMABCY
          description: ¿Cuál es su código postal?
          description_translated: What is your zip code?
          quotas_enabled: true
          targets:
          - id: 01JY5V9AXTDM6SHJEAHR9ZB87J
            text: ZIP_1
            text_translated: ZIP_1
            conditions:
            - object: open_ended
              question_id: 45
              allow_all_values: false
              open_ended_values:
              - '98001'
              - '98007'
              - '98125'
              - '98258'
            quota:
              completes_goal_percentage: 50
              completes_goal: 500
              quota_nominal: 500
              completes: 0
              prescreens: 0
          - id: 01JY5VAENK83GWHSBP535E13KZ
            text: ZIP_2
            text_translated: ZIP_2
            conditions:
            - object: open_ended
              question_id: 45
              allow_all_values: false
              open_ended_values:
              - '78001'
              - '78007'
              - '78125'
              - '78258'
            quota:
              completes_goal_percentage: 50
              completes_goal: 500
              quota_nominal: 500
              completes: 0
              prescreens: 0
        - object: blended
          id: 01JY5SFFC6AX91XSRYPRV7TGD4
          name: Number of movies watched near grocery
          description: In the past 2 months, how many movies have you seen in a theater? English - Kosovo, Thinking about
            grocery shopping for your household, about how often do you shop at each of the following stores for groceries?
          description_translated: In the past 2 months, how many movies have you seen in a theater?, Thinking about grocery
            shopping for your household, about how often do you shop at each of the following stores for groceries?
          quotas_enabled: true
          targets:
          - id: 01JY5VVGQA2GYHQQ52NR90MQY7
            text: 0 movies, Wal- Mart
            text_translated: 0 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '1'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-1
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5VZ4NR4AK9C98G45DZMQAQ
            text: 1 movies, Wal- Mart
            text_translated: 1 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '2'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-2
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5W0M1BD55GAH6JZNMTB748
            text: 2 movies, Wal- Mart
            text_translated: 2 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '3'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-3
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5W27HMMM64G75NEAKXRMPR
            text: 3 movies, Wal- Mart
            text_translated: 3 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '4'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-4
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5W3XKS1PMC78M298YRY75Z
            text: 4 movies, Wal- Mart
            text_translated: 4 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '5'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-5
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
          - id: 01JY5W56Z2PVS17KAE223SYMWT
            text: 5 movies, Wal- Mart
            text_translated: 5 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '6'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-6
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5W6C7QERBXJK94TZAP350Z
            text: 6 movies, Wal- Mart
            text_translated: 6 movies, Wal- Mart
            conditions:
            - object: selection
              question_id: 157
              option: '7'
            - object: selection
              question_id: 63
              option: '1'
            quota:
              name: SF-Walmart-7
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5W93WT3K33YPMTSZCYPTYZ
            text: 0 movies, Target
            text_translated: 0 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '1'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-1
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WA51A4SE3AXVDDAKBXJ5P
            text: 1 movies, Target
            text_translated: 1 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '2'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-2
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WB080HA1CZC0532YXSPT6
            text: 2 movies, Target
            text_translated: 2 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '3'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-3
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WBRGCMEM7B4GD6THCGP91
            text: 3 movies, Target
            text_translated: 3 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '4'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-4
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WCCC9QJPA8G7E3FYY6W73
            text: 4 movies, Target
            text_translated: 4 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '5'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-5
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WD1S8N7SYYBK7JBX894Y9
            text: 5 movies, Target
            text_translated: 5 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '6'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-6
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WDPWFMX6A6Q4G1FPAM16R
            text: 6 movies, Target
            text_translated: 6 movies, Target
            conditions:
            - object: selection
              question_id: 157
              option: '7'
            - object: selection
              question_id: 63
              option: '2'
            quota:
              name: SF-Target-7
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WEA4MHF8DFXY3YV0DRAN2
            text: 0 movies, CVS
            text_translated: 0 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '1'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-1
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WFA8Z81MNNZ4PKJMXGE81
            text: 1 movies, CVS
            text_translated: 1 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '2'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-2
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WG16B26G90MY3TSBSJF0N
            text: 2 movies, CVS
            text_translated: 2 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '3'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-3
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WGNA26K4RKST2FWH2CNXM
            text: 3 movies, CVS
            text_translated: 3 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '4'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-4
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WH8AHVXWS76S6S7YNTSX3
            text: 4 movies, CVS
            text_translated: 4 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '5'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-5
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WHVES46Z3Z8D4S0N8X09R
            text: 5 movies, CVS
            text_translated: 5 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '6'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-6
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5WJJVE15JT1SW6ZD56H579
            text: 6 movies, CVS
            text_translated: 6 movies, CVS
            conditions:
            - object: selection
              question_id: 157
              option: '7'
            - object: selection
              question_id: 63
              option: '7'
            quota:
              name: SF-CVS-7
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
              completes: 0
              prescreens: 0
          - id: 01JY5XWWE35A9B577VCMQ0PT0V
            text: Group 1, Kroger
            text_translated: Group 1, Kroger
            conditions:
            - object: selection
              question_id: 157
              option: '1'
            - object: selection
              question_id: 157
              option: '2'
            - object: selection
              question_id: 157
              option: '3'
            - object: selection
              question_id: 157
              option: '4'
            - object: selection
              question_id: 63
              option: '8'
            quota:
              name: SF-KROGER
              completes_goal_percentage: 2
              completes_goal: 20
              quota_nominal: 20
        - object: regular
          id: 01JY5SZRBCNCYJ96A1CCSDH9D7
          description: ¿Es usted Hispano, Latino o del origen Español?
          description_translated: Are you of Hispanic, Latino, or Spanish origin?
          quotas_enabled: true
          targets:
          - id: 01JY5WKJHBTPFBGK21VGK3YSK0
            text: Group-1
            text_translated: Group-1
            conditions:
            - object: selection
              question_id: 47
              option: '4'
            - object: selection
              question_id: 47
              option: '5'
            - object: selection
              question_id: 47
              option: '6'
            - object: selection
              question_id: 47
              option: '7'
            quota:
              name: Group-1
              completes_goal_percentage: 49.21
              completes_goal: 492
              quota_nominal: 492
              completes: 0
              prescreens: 0
          - id: 01JY5WMBJQBMHHBBVXNR5BRKNS
            text: Guatemala
            text_translated: Guatemala
            conditions:
            - object: selection
              question_id: 47
              option: '8'
            quota:
              completes_goal_percentage: 50.79
              completes_goal: 508
              quota_nominal: 508
              completes: 0
              prescreens: 0
        - object: regular
          id: 01JY5T5QZRVCY69TK00BWHSXRZ
          description: ¿Cuál es su raza?
          description_translated: What is your race?
          quotas_enabled: false
          targets:
          - id: 01JY5WNZGMFCAMQTJV6J3QFQAB
            text: Asiático - Chino
            text_translated: Chinese
            conditions:
            - object: selection
              question_id: 113
              option: '5'
          - id: 01JY5WQD67B8273R1MR3CMKPBW
            text: Asiático - Coreano
            text_translated: Korean
            conditions:
            - object: selection
              question_id: 113
              option: '8'
          - id: 01JY5WRH7PYZA7P776CX8G6P73
            text: Asiático - Filipino
            text_translated: Filipino
            conditions:
            - object: selection
              question_id: 113
              option: '6'
          - id: 01JY5WSD5BYXZ85J3JJDK4JDSE
            text: Asiático - Indio
            text_translated: Indian
            conditions:
            - object: selection
              question_id: 113
              option: '4'
        - object: regular
          id: 01KNNMHHA3WX7ZJA5YBTBN8VNA
          name: STANDARD_RELATIONSHIP
          description: ¿Cuál es su estado?
          description_translated: What is your relationship status?
          quotas_enabled: false
          targets:
          - id: 01KNNMJ725HPFGAWN5PRGFX85Z
            text: Soltero/a, nunca he estado casado/a
            text_translated: Single, never married
            conditions:
            - object: selection
              question_id: 632
              option: '1'
          - id: 01KNNMJV51XJ88TF7ESTRPQBGK
            text: Casado/a
            text_translated: Married
            conditions:
            - object: selection
              question_id: 632
              option: '2'
          - id: 01KNNMKBS9EFZJZ3TS32C86VNB
            text: Separado/a, divorciado/a o viudo/a
            text_translated: Separated, divorced or widowed
            conditions:
            - object: selection
              question_id: 632
              option: '3'
          - id: 01KNNMKTSJS0TZ9A7684Y1KQHB
            text: Pareja de hecho / sala de estar con alguien
            text_translated: Domestic partnership/living with someone
            conditions:
            - object: selection
              question_id: 632
              option: '4'
          - id: 01KNNMMAEJ0P6JC0PRD3QX92QJ
            text: Prefiero no contestar
            text_translated: Prefer not to answer
            conditions:
            - object: selection
              question_id: 632
              option: '5'
          - id: 01KNNMMR8JV9WP5QFDMQX00VJ8
            text: Comprometido/ a
            text_translated: Engaged
            conditions:
            - object: selection
              question_id: 632
              option: '6'
        - object: regular
          id: 01KNNMPGCJCKD4AP031Y386AHX
          name: STANDARD_EDUCATION
          description: ¿Cuál es su nivel de educación?
          description_translated: What is the highest level of education you have completed?
          quotas_enabled: true
          targets:
          - id: 01KNNMQ06AWZWBV9TRDP8Q1B30
            name: Group 1
            text: Group 1
            text_translated: Group 1
            conditions:
            - object: selection
              question_id: 633
              option: '1'
            - object: selection
              question_id: 633
              option: '2'
            quota:
              name: Group-1
              completes_goal_percentage: 49.21
              completes_goal: 492
              quota_nominal: 492
          - id: 01KNNMQGRBJYCPDYHTR378M971
            text: Educacion primaria
            text_translated: Middle School - Grades 4 - 8
            conditions:
            - object: selection
              question_id: 633
              option: '2'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMQYK6AXFRKRNN756HG3SM
            text: Educacion Secundaria Obligatoria
            text_translated: Completed some high school
            conditions:
            - object: selection
              question_id: 633
              option: '3'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMRBJH9E42AEJ2FSCJWACF
            text: Bachillerato
            text_translated: High school graduate
            conditions:
            - object: selection
              question_id: 633
              option: '4'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMRT6KKPT9AGPQRVPF4RQQ
            text: Formación profesional
            text_translated: Other post high school vocational training
            conditions:
            - object: selection
              question_id: 633
              option: '5'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMS4NQCQ6K8MY6W5NNZVRC
            text: Enseñanzas de régimen especial (Idiomas, artísticas y/o deportivas)
            text_translated: Completed some college, but no degree
            conditions:
            - object: selection
              question_id: 633
              option: '6'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMTD8VPYXQ42TYMBW86EQH
            text: Grado
            text_translated: Associate Degree
            conditions:
            - object: selection
              question_id: 633
              option: '7'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMTXBRBM0XRKP4PK9YQ2HB
            text: Diplomatura, magisterio, Arquitecto Técnico o Ingeniero Técnico
            text_translated: College Degree (such as B.A., B.S.)
            conditions:
            - object: selection
              question_id: 633
              option: '8'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMVEPR1NAGGN8GCM4RDDST
            text: Licenciatura, Arquitectura o Ingeniero superior
            text_translated: Completed some graduate, but no degree
            conditions:
            - object: selection
              question_id: 633
              option: '9'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMVVY2E9Y79810TXQ45B4A
            text: Master
            text_translated: Masters degree
            conditions:
            - object: selection
              question_id: 633
              option: '10'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMWA2HFAEZPSWMSK9F9E7D
            text: Doctorado
            text_translated: Doctorate degree
            conditions:
            - object: selection
              question_id: 633
              option: '11'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
          - id: 01KNNMWNRTRR51F0Z4QAF21Z66
            text: Ninguna de las anteriores
            text_translated: None of the Above
            conditions:
            - object: selection
              question_id: 633
              option: '12'
            quota:
              completes_goal_percentage: 0.0
              completes_goal: 0
              quota_nominal: 0
        - object: blended
          intent: control
          id: 01KNNMXBPT5C6EMHMMCQD116YB
          name: Control Quota 1
          description: ¿Cuál es su estado?, ¿Cuál es su nivel de educación?
          description_translated: What is your relationship status?, What is the highest level of education you have completed?
          quotas_enabled: true
          targets:
          - id: 01KNNMXS1YBSZ1KDBM7WPXY4SB
            name: Quota 1
            text: Soltero/a, nunca he estado casado/a, Educación infantil, Educacion primaria
            text_translated: Single, never married, 3rd Grade or less, Middle School - Grades 4 - 8
            conditions:
            - object: selection
              question_id: 632
              option: '1'
              condition_name: Soltero/a, nunca he estado casado/a
              condition_name_translated: Single, never married
            - object: selection
              question_id: 633
              option: '1'
              condition_name: Educación infantil
              condition_name_translated: 3rd Grade or less
            - object: selection
              question_id: 633
              option: '2'
              condition_name: Educacion primaria
              condition_name_translated: Middle School - Grades 4 - 8
            quota:
              completes_goal_percentage: 49.21
              completes_goal: 492
              quota_nominal: 492
    ValidationStructureErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
          default: unprocessable_entity_error
        title:
          type: string
          default: profile request validation
        detail:
          type: string
          pattern: ^Validation error.*?$
        invalid_params:
          type: array
          description: An array of detailed validation errors for specific parts of the profile configuration.
          items:
            oneOf:
            - $ref: '#/components/schemas/InvalidParamData'
            - $ref: '#/components/schemas/InvalidParamStructure'
            discriminator:
              propertyName: error_type
              mapping:
                data_validation_error: '#/components/schemas/InvalidParamData'
                structural_error: '#/components/schemas/InvalidParamStructure'
      example:
        object: unprocessable_entity_error
        title: profile request validation
        detail: 'Validation error: The provided profile configuration is invalid.'
        invalid_params:
        - error_type: data_validation_error
          name: profile_validation_error_001
          reason: profile_condition_min_greater_than_max_001
          detail: The minimum value cannot be greater than the maximum value.
          metadata:
            profile_id: 01H8XGJWBWBAQ4J1Z5F4A9C3K8
            question_id:
            - 123
            error_level: error
      required:
      - object
      - detail
    ManageCreateProfileQuotaDetailsV3:
      type: object
      description: quota nominal-specific fields
      required:
      - completes_goal
      properties:
        completes_goal:
          type: integer
          minimum: 0
          description: Total desired completes goal applied to this condition(s).
          example: 40
    RequestDraftRegularProfileV3:
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - quotas_enabled
        - targets
        properties:
          object:
            type: string
            description: |
              Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          name:
            type: string
            description: "The name of the regular profile. \n"
            example: SF_YoungAge
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          targets:
            $ref: '#/components/schemas/RequestDraftQuotaV3'
      - title: Blended Profile. Previously known as Interlock Profile or Control Quotas
        type: object
        required:
        - object
        - name
        - quotas_enabled
        - targets
        properties:
          object:
            type: string
            description: |
              Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          intent:
            type: string
            description: The intent field is used to further specify the purpose of the blended profile, which can be either
              'interlock' or 'control'. If not provided, it will default to 'interlock'. This field allows for differentiation
              between blended profiles that are intended for interlocking purposes and those that are intended for control
              purposes.
            enum:
            - interlock
            - control
            example: interlock
          name:
            type: string
            description: The name of the profile.
            example: SF_YoungAge
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          targets:
            $ref: '#/components/schemas/RequestDraftQuotaV3'
    invalid_param:
      type: object
      properties:
        name:
          type: string
        reason:
          type: string
      required:
      - name
      - reason
    ValidationErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
          default: unprocessable_entity_error
        title:
          type: string
          default: profile request validation
        detail:
          type: string
          pattern: ^Validation error.*?$
        invalid_params:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/InvalidParamData'
            - $ref: '#/components/schemas/InvalidParamStructure'
            discriminator:
              propertyName: error_type
              mapping:
                data_validation_error: '#/components/schemas/InvalidParamData'
                structural_error: '#/components/schemas/InvalidParamStructure'
    InvalidParamData:
      title: Invalid request data
      type: object
      description: An error related to invalid business logic or data values.
      required:
      - error_type
      - name
      - reason
      properties:
        error_type:
          type: string
          description: The type of validation error.
          enum:
          - data_validation_error
        name:
          type: string
          description: Error name code.
          enum:
          - profile_validation_error_001
          - profile_validation_error_002
          - profile_validation_error_003
          - profile_validation_error_004
          - profile_validation_error_005
          - profile_validation_error_006
          - profile_validation_error_007
          - profile_validation_error_008
          - profile_validation_error_009
          - profile_validation_error_010
          - profile_validation_error_011
          - profile_validation_error_012
          - profile_validation_error_013
          - profile_validation_error_014
          - profile_validation_error_015
          - profile_validation_error_016
          - profile_validation_error_017
          - profile_validation_error_018
          - profile_validation_error_019
          - profile_validation_error_020
          - profile_validation_error_021
          - profile_validation_error_023
          - profile_validation_error_024
          - profile_validation_error_025
          - profile_validation_error_026
          - profile_validation_error_030
          - profile_validation_error_032
          - profile_validation_error_033
          - profile_validation_error_034
          - profile_validation_error_035
          - profile_validation_error_036
          - profile_validation_error_037
          - profile_validation_error_038
          - profile_validation_error_039
          - profile_validation_error_040
          - profile_validation_error_041
          - profile_validation_error_042
          - profile_validation_error_043
          - profile_validation_error_044
          - profile_validation_error_045
          - profile_validation_error_046
          - profile_validation_error_047
          - profile_validation_error_048
          - profile_validation_error_049
          - profile_validation_error_050
          - profile_validation_error_051
          - profile_validation_error_052
          - profile_validation_error_053
          - profile_validation_error_054
          - profile_validation_error_055
          - profile_validation_error_056
          - profile_validation_error_057
          - profile_validation_error_058
          - profile_validation_error_059
          - profile_validation_error_060
          - profile_validation_error_061
          - profile_validation_error_062
          - profile_validation_error_063
          - profile_validation_error_064
        reason:
          type: string
          description: Error reason code.
          enum:
          - profile_condition_min_greater_than_max_001
          - profile_condition_max_less_than_min_error_002
          - profile_condition_not_unique_003
          - quota_indexes_out_of_bounds_004
          - group_quota_not_unique_005
          - profile_not_unique_006
          - ungroup_quota_not_unique_007
          - quota_percentage_not_in_sync_with_nominal_008
          - incorrect_sum_of_percentage_009
          - incorrect_sum_of_nominal_010
          - unable_to_add_dependency_011
          - profile_with_invalid_condition_012
          - not_supported_profile_type_013
          - profile_condition_ranges_should_not_overlap_014
          - invalid_question_id_015
          - total_completes_goal_cannot_be_less_than_one_016
          - total_completes_goal_cannot_be_greater_than_max_017
          - invalid_zip_code_018
          - not_supported_question_option_020
          - zip_not_supported_in_blended_021
          - blended_profiles_cannot_have_more_than_3_questions_023
          - number_of_quotas_in_blended_cannot_be_greater_than_max_024
          - quota_will_be_always_enabled_for_blended_profile_025
          - at_least_one_quota_object_should_be_populated_with_completes_goal_or_completes_goal_percentage_value_026
          - total_number_of_quotas_cannot_be_greater_than_max_030
          - invalid_open_ended_option_032
          - quota_conditions_out_of_bounds_033
          - blended_profile_cannot_be_more_than_1_034
          - start_at_and_end_at_cannot_be_same_035
          - end_at_cannot_be_before_start_at_036
          - invalid_start_at_or_end_at_date_format_037
          - zip_values_cannot_be_greater_than_max_038
          - duplicate_condition_039
          - template_locale_does_not_match_target_group_locale_040
          - template_allows_only_percentage_adjustment_041
          - nominal_adjustment_cannot_have_percentage_042
          - percentage_adjustment_cannot_have_nominal_043
          - profile_id_not_found_044
          - target_id_not_found_for_profile_045
          - quota_value_less_than_completes_046
          - quota_value_greater_than_completes_goal_047
          - regular_profile_cannot_have_more_than_one_question_048
          - profiles_to_be_blended_cannot_have_only_one_question_049
          - profiles_and_profile_adjustment_type_must_be_provided_050
          - at_least_one_profile_must_be_in_profiles_object_051
          - completes_goal_percentage_must_be_populated_for_quota_enabled_profile_052
          - completes_goal_must_be_populated_for_quota_enabled_profile_053
          - allow_all_values_must_be_populated_for_open_ended_condition_054
          - open_ended_values_must_be_of_same_length_as_option_mask_055
          - duplicate_quota_name_056
          - target_name_or_quota_name_must_be_provided_for_multiple_conditions_057
          - blended_profile_cannot_have_only_one_condition_058
          - profile_adjustment_type_and_quota_fields_do_not_match_059
          - completes_goal_and_profiles_must_be_provided_060
          - disabled_profile_cannot_have_completes_goal_061
          - profiles_to_be_blended_cannot_be_null_062
          - at_least_one_quota_should_have_completes_goal_greater_than_zero_063
          - at_least_one_quota_should_have_completes_goal_percentage_greater_than_zero_064
        detail:
          type: string
        metadata:
          type: object
          properties:
            question_id:
              type: array
              items:
                type: integer
              description: The question id of the question that failed validation.
            profile_id:
              type: string
              format: ulid
              description: The profile id of the profile that failed validation.
            interlock_id:
              type: string
              format: ulid
              description: The interlock id of the interlock that failed validation.
            quota_id:
              type: string
              format: ulid
              description: The quota id of the quota that failed validation.
            error_level:
              type: string
              enum:
              - warning
              - error
              description: The level of the error.
      example:
        error_type: data_validation_error
        name: profile_validation_error_001
        reason: profile_condition_min_greater_than_max_001
        detail: The minimum value cannot be greater than the maximum value.
        metadata:
          profile_id: 01H8XGJWBWBAQ4J1Z5F4A9C3K8
          question_id:
          - 123
          error_level: error
    ConditionGroupingRequestV3:
      type: object
      required:
      - targets
      properties:
        targets:
          type: array
          description: The grouping state you want to have on the conditions
          minItems: 1
          items:
            type: object
            required:
            - quota
            - conditions
            properties:
              quota:
                type: object
                required:
                - name
                properties:
                  name:
                    type: string
                    description: The name of the group
                    maxLength: 64
              conditions:
                type: array
                description: List of conditions you want to be a member of the group
                minItems: 2
                items:
                  $ref: '#/components/schemas/InterlockProfileConditionsV3'
    FillingGoalUpdateRequestV3:
      oneOf:
      - title: Only total completes goal
        type: object
        description: Completes goal update request.
        required:
        - completes_goal
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiles:
            type: array
            description: A list of profiles and filling goals with the associated profile IDs
            nullable: true
            minItems: 0
            maxItems: 0
            items:
              type: object
              properties:
                profile_id:
                  $ref: '#/components/schemas/ProfileID'
                quotas:
                  type: array
                  description: A list of filling goals with the associated quota IDs
                  items:
                    type: object
                    properties:
                      quota_id:
                        type: string
                        description: The quota ID of the quota being updated
                        example: '1234'
                      completes_goal:
                        $ref: '#/components/schemas/CompletesGoal'
      - title: Only profile specific completes goal
        type: object
        description: Completes goal update request.
        required:
        - profiles
        properties:
          completes_goal:
            type: number
            nullable: true
          profiles:
            type: array
            description: A list of profiles and completes goals with the associated profile IDs
            minItems: 1
            maxItems: 1500
            uniqueItems: true
            items:
              type: object
              required:
              - profile_id
              - targets
              properties:
                profile_id:
                  $ref: '#/components/schemas/ProfileID'
                targets:
                  type: array
                  description: A list of filling goals with the associated quota IDs
                  minItems: 1
                  maxItems: 200
                  uniqueItems: true
                  items:
                    type: object
                    required:
                    - id
                    - quota
                    properties:
                      id:
                        type: string
                        format: ULID
                        description: The quota ID of the quota being updated
                        example: 01HW8NWD653V44M5FXWD5FJD9Q
                      quota:
                        type: object
                        required:
                        - completes_goal
                        properties:
                          completes_goal:
                            $ref: '#/components/schemas/CompletesGoal'
      - title: Both
        type: object
        description: Completes goal update request.
        required:
        - completes_goal
        - profiles
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiles:
            type: array
            description: A list of profiles and filling goals with the associated profile IDs
            minItems: 1
            maxItems: 1500
            uniqueItems: true
            items:
              type: object
              required:
              - profile_id
              - targets
              properties:
                profile_id:
                  $ref: '#/components/schemas/ProfileID'
                targets:
                  type: array
                  description: A list of completes goals with the associated quota IDs
                  minItems: 1
                  maxItems: 200
                  uniqueItems: true
                  items:
                    type: object
                    required:
                    - id
                    - quota
                    properties:
                      id:
                        type: string
                        format: ULID
                        description: The quota ID of the quota being updated
                        example: 01HW8NWD653V44M5FXWD5FJD9Q
                      quota:
                        type: object
                        required:
                        - completes_goal
                        properties:
                          completes_goal:
                            $ref: '#/components/schemas/CompletesGoal'
      example:
        completes_goal: 150
        profiles:
        - profile_id: 01K3VKDD5V7RASKQEHCA8RTGRD
          targets:
          - id: 01K3VKDD5V7RASKQEHCA8RTGRE
            quota:
              completes_goal: 45
    RequestDraftQuotaPercentageV3:
      type: object
      description: Profile target with condition or conditions and percentage value in quota.
      required:
      - conditions
      - quota
      properties:
        conditions:
          type: array
          description: List of conditions for the target.
          minItems: 1
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
        quota:
          type: object
          required:
          - completes_goal_percentage
          properties:
            name:
              type: string
              description: Name of the quota used for tracking. This will be deprecated, functionally replaced by the `target.name`
                field one layer up in the contract.
              deprecated: true
              example: SF_Quota_12
            completes_goal_percentage:
              type: number
              multipleOf: 0.01
              minimum: 0
              maximum: 100
              description: Percentage of total completes goal quota applied to this condition(s).
              example: 40
    RequestDraftQuotaV3:
      description: |
        A request targets block must be one of:
          • a nominal target based on profile adjustement type (see RequestDraftGroupedQuotaNominalV3)
          • a percentage target based on profile adjustment type (see RequestDraftGroupedQuotaV3)
          • no target (empty object) should be in alignment with quota_enabled field as false.
      oneOf:
      - title: Targets with nominal value in quota
        type: array
        minItems: 1
        items:
          $ref: '#/components/schemas/RequestDraftQuotaNominalV3'
      - title: Targets with percentage value in quota
        type: array
        minItems: 1
        items:
          $ref: '#/components/schemas/RequestDraftQuotaPercentageV3'
      - title: Targets with conditions and no quota
        type: array
        minItems: 1
        items:
          $ref: '#/components/schemas/RequestDraftNoQuotaV3'
    Traceparent:
      type: string
      description: |-
        The traceparent header carries essential trace context information. This includes the trace ID and parent span ID  as defined by the W3C trace context specification. It is used to pinpoint the position of an incoming request within  the trace graph, facilitating the tracking of distributed operations.
        Note: This field is optional and will be automatically generated by the service if not provided in the request.  The generated value will be included in the response header.
      example: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01
    RequestDraftQuotaNominalV3:
      type: object
      description: Profile target with condition or conditions and nominal value in quota.
      required:
      - conditions
      - quota
      properties:
        conditions:
          type: array
          description: List of conditions.
          minItems: 1
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
        quota:
          type: object
          required:
          - completes_goal
          properties:
            name:
              type: string
              description: Name of the quota used for tracking. This will be deprecated, functionally replaced by the `target.name`
                field one layer up in the contract.
              deprecated: true
              example: SF_Quota_12
            completes_goal:
              type: number
              format: int32
              minimum: 0
              description: Total completes goal quota applied to this condition(s).
              example: 40
    TargetID:
      type: string
      format: ULID
      description: Quota identifier
      example: 01HY0PYB3TW23RQRVNFYRC2PP6
    ProfileCreationV3Request:
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - id
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          id:
            type: string
            description: "The unique identifier for the profile. \nThis ID cannot be user defined. ID can be used from question\
              \ translation or get template. \n"
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          name:
            type: string
            description: "The name of the regular profile. \n"
            example: SF_YoungAge
          targets:
            $ref: '#/components/schemas/RequestCreateManageTargetWithConditionsAndQuotasV3'
      - title: Blended Profile
        type: object
        required:
        - object
        - id
        - name
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          id:
            type: string
            description: The unique identifier for the profile. This ID can be user defined. Generate interlock endpoint will
              create an ID.
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          name:
            type: string
            description: |
              The name of the blended profile.
            example: SF_YoungAge
          targets:
            $ref: '#/components/schemas/RequestCreateManageTargetWithConditionsAndQuotasV3'
    ManageProfilesRequestV3:
      oneOf:
      - title: Only template ID
        type: object
        required:
        - completes_goal
        - profiling
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiling:
            type: object
            required:
            - template_id
            - profile_adjustment_type
            properties:
              template_id:
                type: string
                format: UUID
                description: The ID of the profile template. If the template is available then all the profiles associated
                  to the template will be applied to targe group.
                example: e198c976-ce22-436d-acc1-95aa318cc54d
              profile_adjustment_type:
                type: string
                description: Type of profile adjustment. Only percentage is allowed when template ID is provided.
                enum:
                - percentage
      - title: Template ID along with profiles
        type: object
        required:
        - completes_goal
        - profiling
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiling:
            type: object
            required:
            - template_id
            - profile_adjustment_type
            - profiles
            properties:
              template_id:
                type: string
                format: UUID
                description: The ID of the profile template. If the template is available then all the profiles associated
                  to the template will be applied to targe group.
                example: e198c976-ce22-436d-acc1-95aa318cc54d
              profile_adjustment_type:
                type: string
                description: Type of profile adjustment. Only percentage is allowed when template ID is provided.
                enum:
                - percentage
              profiles:
                type: array
                minItems: 1
                items:
                  $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      - title: Only profiles populated with percentage as profile adjustment type
        type: object
        required:
        - completes_goal
        - profiling
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiling:
            type: object
            required:
            - profile_adjustment_type
            - profiles
            properties:
              profile_adjustment_type:
                type: string
                description: Type of profile adjustment.
                enum:
                - percentage
                example: percentage
              profiles:
                type: array
                minItems: 1
                items:
                  $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      - title: Only profiles populated with nominal as profile adjustment type
        type: object
        required:
        - completes_goal
        - profiling
        properties:
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profiling:
            type: object
            required:
            - profile_adjustment_type
            - profiles
            properties:
              profile_adjustment_type:
                type: string
                description: Type of profile adjustment.
                enum:
                - nominal
                example: nominal
              profiles:
                type: array
                minItems: 1
                items:
                  $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      example:
        completes_goal: 1000
        profiling:
          template_id: e198c976-ce22-436d-acc1-95aa318cc54d
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            name: birth gender
            quotas_enabled: true
            targets:
            - conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                name: SF-BirthGender-Quota-1
                completes_goal_percentage: 49.21
            - conditions:
              - object: selection
                question_id: 43
                option: '2'
              quota:
                name: SF-BirthGender-Quota-2
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: true
            targets:
            - conditions:
              - object: range
                question_id: 42
                min: 15
                max: 19
              quota:
                completes_goal_percentage: 28.21
            - conditions:
              - object: range
                question_id: 42
                min: 20
                max: 29
              quota:
                completes_goal_percentage: 30.79
            - conditions:
              - object: range
                question_id: 42
                min: 30
                max: 39
              quota:
                completes_goal_percentage: 21.4
            - conditions:
              - object: range
                question_id: 42
                min: 40
                max: 99
              quota:
                completes_goal_percentage: 19.6
          - object: regular
            quotas_enabled: true
            targets:
            - conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '98001'
                - '98007'
                - '98125'
                - '98258'
              quota:
                completes_goal_percentage: 50
            - conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '78001'
                - '78007'
                - '78125'
                - '78258'
              quota:
                completes_goal_percentage: 50
          - object: blended
            name: Number of movies watched near grocery
            quotas_enabled: true
            targets:
            - conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-1
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-2
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-3
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-4
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-5
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-6
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-7
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-1
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-2
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-3
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-4
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-5
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-6
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-7
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-1
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-2
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-3
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-4
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-5
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-6
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-7
                completes_goal_percentage: 2
            - conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '8'
              quota:
                name: SF-KROGER
                completes_goal_percentage: 2
          - object: regular
            quotas_enabled: true
            targets:
            - conditions:
              - object: selection
                question_id: 47
                option: '4'
              - object: selection
                question_id: 47
                option: '5'
              - object: selection
                question_id: 47
                option: '6'
              - object: selection
                question_id: 47
                option: '7'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
            - conditions:
              - object: selection
                question_id: 47
                option: '8'
              quota:
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: false
            targets:
            - conditions:
              - object: selection
                question_id: 113
                option: '5'
            - conditions:
              - object: selection
                question_id: 113
                option: '8'
            - conditions:
              - object: selection
                question_id: 113
                option: '6'
            - conditions:
              - object: selection
                question_id: 113
                option: '4'
          - object: regular
            quotas_enabled: false
            targets:
            - conditions:
              - object: selection
                question_id: 632
                option: '1'
            - conditions:
              - object: selection
                question_id: 632
                option: '2'
            - conditions:
              - object: selection
                question_id: 632
                option: '3'
            - conditions:
              - object: selection
                question_id: 632
                option: '4'
            - conditions:
              - object: selection
                question_id: 632
                option: '5'
            - conditions:
              - object: selection
                question_id: 632
                option: '6'
          - object: regular
            quotas_enabled: true
            targets:
            - name: Group 1
              conditions:
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - conditions:
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '3'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '4'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '5'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '6'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '7'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '8'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '9'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '10'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '11'
              quota:
                completes_goal_percentage: 12.0
                completes_goal: 12
                quota_nominal: 12
            - conditions:
              - object: selection
                question_id: 633
                option: '12'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
          - object: blended
            intent: control
            name: Control Quota 1
            quotas_enabled: true
            targets:
            - name: Quota 1
              conditions:
              - object: selection
                question_id: 632
                option: '1'
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
    ProfileTargetsResponseRangeConditionsV3:
      type: object
      required:
      - object
      - question_id
      - min
      - max
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `range`.
          enum:
          - range
          example: range
        question_id:
          $ref: '#/components/schemas/QuestionID'
        min:
          type: integer
          format: int32
          minimum: 1
          maximum: 99
          description: The minimum numeric value (inclusive).
          example: 18
        max:
          type: integer
          format: int32
          minimum: 1
          maximum: 99
          description: The maximum numeric value (inclusive).
          example: 24
        condition_name:
          type: string
          description: The name of the condition. This field will be present if the condition is part of a blended or grouped
            target.
          example: 18 to 24
        condition_name_translated:
          type: string
          description: The name of the condition translated (when appropriate and available). This field will be present if
            the condition is part of a blended or grouped target.
          example: 18 to 24
    ProfileTargetsResponseSelectionConditionsV3:
      type: object
      required:
      - object
      - question_id
      - option
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `selection`.
          enum:
          - selection
          example: selection
        question_id:
          $ref: '#/components/schemas/QuestionID'
        option:
          type: string
          description: the identifier for the condition
          example: '1'
        condition_name:
          type: string
          description: The name of the condition. This field will be present if the condition is part of a blended or grouped
            target.
          example: Dogs
        condition_name_translated:
          type: string
          description: The name of the condition translated (when appropriate and available). This field will be present if
            the condition is part of a blended or grouped target.
          example: Perros
    ProfileTargetsResponseOpenEndedConditionsV3:
      oneOf:
      - title: Allow All Values
        description: If `allow_all_values` is true, `open_ended_values` must be null.
        type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of control selections.  Always is `open_ended`.
            enum:
            - open_ended
            example: open_ended
          question_id:
            $ref: '#/components/schemas/QuestionID'
          allow_all_values:
            type: boolean
            enum:
            - true
            description: Flag to allow all values.
          open_ended_values:
            type: array
            minItems: 0
            maxItems: 0
            items:
              type: string
            nullable: true
            description: Must be null when `allow_all_values` is true.
          condition_name:
            type: string
            description: The name of the condition. This field will be present if the condition is part of a blended or grouped
              target.
            example: Open Ended 1
          condition_name_translated:
            type: string
            description: The name of the condition translated (when appropriate and available). This field will be present
              if the condition is part of a blended or grouped target.
            example: Open Ended 1
        required:
        - object
        - question_id
        - allow_all_values
        - open_ended_values
      - title: Specific Open End Values
        description: If `allow_all_values` is false, `open_ended_values` must contain at least one open end value.
        type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of control selections.  Always is `open_ended`.
            enum:
            - open_ended
            example: open_ended
          question_id:
            $ref: '#/components/schemas/QuestionID'
          allow_all_values:
            type: boolean
            enum:
            - false
            description: Flag to allow only specific open end values.
          open_ended_values:
            type: array
            items:
              type: string
            minItems: 1
            maxItems: 10000
            description: List of applicable open end values. Required when `allow_all_values` is false. Note that only 10,000
              values may be provided. For more than 10,000, please reach out to your integration consultant.
          condition_name:
            type: string
            description: The name of the condition. This field will be present if the condition is part of a blended or grouped
              target.
            example: Open Ended 1
          condition_name_translated:
            type: string
            description: The name of the condition translated (when appropriate and available). This field will be present
              if the condition is part of a blended or grouped target.
            example: Open Ended 1
        required:
        - object
        - question_id
        - allow_all_values
        - open_ended_values
      example:
        object: open_ended
        question_id: 45
        open_ended_values: []
        allow_all_values: true
        condition_name: Open Ended Values
        condition_name_translated: Open Ended Values Translated
    ResponseProfileConditionsV3:
      oneOf:
      - $ref: '#/components/schemas/ProfileTargetsResponseSelectionConditionsV3'
      - $ref: '#/components/schemas/ProfileTargetsResponseRangeConditionsV3'
      - $ref: '#/components/schemas/ProfileTargetsResponseOpenEndedConditionsV3'
    QuotaDetailsV3:
      oneOf:
      - title: Targets with conditions and quota
        type: object
        description: Targets with conditions and quota.
        required:
        - id
        - conditions
        - quota
        properties:
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          name:
            type: string
            description: The name of the target.
            example: Target-Male
          text:
            type: string
            description: Text of the used for display purpose.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions.
            minItems: 1
            items:
              $ref: '#/components/schemas/ResponseProfileConditionsV3'
          quota:
            type: object
            required:
            - completes_goal_percentage
            - quota_nominal
            - completes_goal
            properties:
              name:
                type: string
                description: Name of the quota used for tracking. This will be deprecated, functionally replaced by the `target.name`
                  field one layer up in the contract.
                deprecated: true
                example: SF_Quota_12
              completes_goal_percentage:
                type: number
                multipleOf: 0.01
                minimum: 0
                maximum: 100
                description: Percentage of total completes goal quota applied to this condition(s).
                example: 40
              quota_nominal:
                type: integer
                minimum: 0
                description: Total desired quota nominal applied to this condition(s).
                example: 40
              completes_goal:
                type: integer
                minimum: 0
                description: Total desired completes goal applied to this condition(s).
                example: 40
              completes:
                type: integer
                minimum: 0
                description: Actual completes filled by responded or supplier.
                example: 40
              prescreens:
                type: integer
                minimum: 0
                description: Actual prescreens filled by responded or supplier.
                example: 40
      - title: No quota
        type: object
        description: Targets with conditions and quota.
        required:
        - id
        - conditions
        properties:
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          name:
            type: string
            description: The name of the target.
            example: Target Name
          text:
            type: string
            description: Text of the used for display purpose.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/InterlockProfileConditionsV3'
    TimeStamp:
      type: string
      description: RFC3339 formatted timestamp.
      format: date-time
      example: '2023-10-05T14:48:00.000Z'
    NextCursor:
      description: |
        An identifier for pagination that indicates there are more items available.
        When present, use this value to retrieve the next page of results.
      type: string
      nullable: true
      example: bff6a669-a469-409d-8c94-dcf92258043a
    WebhookEventTypesList:
      type: object
      description: A response containing a list of valid events for webhooks.
      properties:
        events:
          $ref: '#/components/schemas/WebhookEventTypes'
    Webhook:
      type: object
      description: Contains the details of a webhook subscription, excluding the secret.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEventTypes'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookUpdatedAt'
    WebhookID:
      type: string
      format: ulid
      description: The ID of the webhook.
      example: 01JPVZD75DW4KRP7MPFMF6KGZX
    WebhookCreated:
      type: object
      description: The response object returned when a webhook is successfully created.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEventTypes'
        secret:
          $ref: '#/components/schemas/WebhookSecret'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookUpdatedAt'
    WebhookSecretRegenerated:
      type: object
      description: The response object returned when a webhook secret is successfully regenerated.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEventTypes'
        secret:
          $ref: '#/components/schemas/WebhookSecret'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookUpdatedAt'
    WebhookURL:
      type: string
      format: url
      description: The HTTPS endpoint where webhook notifications will be sent.
      example: https://example.com/webhook
    WebhookEventTypes:
      type: array
      description: An array of webhook event type names.
      items:
        $ref: '#/components/schemas/WebhookEventType'
      example:
      - target-group-updated
      - quota-fill-registered
    WebhookEventType:
      type: string
      description: Name of the event type that is valid for a webhook type notification.
      enum:
      - target-group-updated
      - quota-fill-registered
      - session-updated
    WebhookCreatedAt:
      type: string
      format: date-time
      description: The timestamp when the webhook was created, in RFC3339 UTC format.
      example: '2023-01-01T23:00:00.000Z'
    WebhookUpdatedAt:
      type: string
      format: date-time
      description: The timestamp when the webhook was last updated, in RFC3339 UTC format.
      example: '2023-01-01T23:05:00.000Z'
    WebhooksList:
      type: object
      description: A list of all webhooks for a specific account.
      properties:
        webhooks:
          type: array
          description: A list of webhooks.
          items:
            $ref: '#/components/schemas/Webhook'
        has_more:
          description: A flag that's true if there are more webhooks to retrieve in a subsequent request.
          type: boolean
          example: true
    WebhookSecret:
      type: string
      format: base64
      description: |
        This is your webhook's secret signing key. You must use it to verify the authenticity and integrity of incoming webhook requests.


        Each webhook request includes a `Cint-Signature` header with two components:

        - `t` (timestamp): A Unix timestamp representing the time of the webhook call.

        - `v1` (signature v1): An HMAC SHA256 hash of the payload, generated by signing it with the secret key.


        The payload used to create the signature is the concatenation of the timestamp (`t`) and the request body, separated
        by a period (`.`). For example:

        - Payload: `1732526080.{"foo":"bar"}`


        Example of `Cint-Signature` header:


        ```

        Cint-Signature: t=1732526080,v1=6532d4777122acc32cd388763fc0c0ba8732698d09cf99eea086e5a86f8d3ebe

        ```


        To verify the signature, you can use the following CLI command:


        ```

        $ PAYLOAD=''1732526080.{"foo":"bar"}''

        $ SECRET=FP7UPZpATKBcYJj4va95PYud+a3gCidRERiLO+9MoFE=

        $ echo -n $PAYLOAD | openssl dgst -sha256 -hmac $SECRET

        # => (stdin)= 6532d4777122acc32cd388763fc0c0ba8732698d09cf99eea086e5a86f8d3ebe

        ```'
      example: FP7UPZpATKBcYJj4va95PYud+a3gCidRERiLO+9MoFE=
    WebhookEventsDeliveryStatus:
      type: string
      description: |
        Delivery status of the webhook event.

        Pending is the initial status assigned to an event when it is first persisted.

        Delivering is a transient state indicating that delivery attempts are in progress.

        Delivered is the final success state indicating that the event has been successfully delivered to the webhook endpoint.

        Undelivered is a temporary failure state for a persisted event that could not be delivered but will be retried.

        Bounced is a temporary infrastructure failure state. Events in this status are managed by a Circuit Breaker and are considered non-retryable until connectivity is restored.

        Expired is the final terminal failure state. In this state, the event is retired, and no further automatic redelivery attempts will be made.
      enum:
      - pending
      - delivering
      - delivered
      - undelivered
      - bounced
      - expired
    WebhookEvent:
      type: object
      description: Represents a webhook event body, which varies by event type
      properties:
        id:
          type: string
          description: ULID for this webhook event
          format: ulid
        type:
          $ref: '#/components/schemas/WebhookEventType'
        payload:
          type: object
          description: The payload of the webhook event
          additionalProperties: true
        status:
          $ref: '#/components/schemas/WebhookEventsDeliveryStatus'
        created_at:
          type: string
          format: date-time
          description: RFC3339 formatted timestamp of the event creation time
      example:
        id: 01JPVZD75DW4KRP7MPFMF6KGZX
        type: target-group-updated
        payload:
          account_id: 1
          changes:
          - new_value:
              currency_code: USD
              currency_scale: 2
              value: 10
            object: user_requested_cpi_change
          id: 38e9ce47-b292-4250-b1d3-17e31440e2d4
          occurred_at: 2026-01-23 10:04:44.209000+00:00
          project_id: 01JJ77E6X1Y2G1RG2KMPFPXKYZ
          target_group_id: 01KFN50A2WJ5NW1NX39RRFFHKQ
          user:
          - las_user_id: 2783dacc-dc2c-4bc0-a011-50d9d2e2df07
            type: las_user
        status: delivered
        created_at: 2026-01-23 10:04:44.562205+00:00
    DraftQuotaV3:
      description: An array of detailed quota definitions.
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/DraftQuotaDetailsV3'
    ValidateProfilesRequestV3:
      description: The request body for validating a profile configuration.
      type: object
      required:
      - locale
      - completes_goal
      - profiling
      properties:
        locale:
          type: string
          example: eng_us
        completes_goal:
          $ref: '#/components/schemas/CompletesGoal'
        profiling:
          description: The core profiling configuration to be validated.
          type: object
          required:
          - profile_adjustment_type
          - profiles
          properties:
            profile_adjustment_type:
              type: string
              description: Defines how quotas are specified in the `profile` object. Use `percentage` to define quotas as
                a percentage of the `completes_goal`, or `nominal` to define them as a specific number of completes.
              enum:
              - percentage
              - nominal
              example: percentage
            profiles:
              type: array
              minItems: 1
              items:
                $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      example:
        locale: eng_us
        completes_goal: 1000
        profiling:
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            name: GENDER
            quotas_enabled: true
            targets:
            - name: Target-Male
              conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                completes_goal_percentage: 50
            - name: Target-Female
              conditions:
              - object: selection
                question_id: 43
                option: '2'
              quota:
                completes_goal_percentage: 50
          - object: regular
            quotas_enabled: false
            targets:
            - conditions:
              - object: selection
                question_id: 632
                option: '1'
            - conditions:
              - object: selection
                question_id: 632
                option: '2'
            - conditions:
              - object: selection
                question_id: 632
                option: '3'
            - conditions:
              - object: selection
                question_id: 632
                option: '4'
            - conditions:
              - object: selection
                question_id: 632
                option: '5'
            - conditions:
              - object: selection
                question_id: 632
                option: '6'
          - object: regular
            quotas_enabled: true
            targets:
            - name: Group 1
              conditions:
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - conditions:
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '3'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '4'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '5'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '6'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '7'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '8'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '9'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '10'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '11'
              quota:
                completes_goal_percentage: 12.0
                completes_goal: 12
                quota_nominal: 12
            - conditions:
              - object: selection
                question_id: 633
                option: '12'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
          - object: blended
            intent: control
            name: Control Quota 1
            quotas_enabled: true
            targets:
            - name: Quota 1
              conditions:
              - object: selection
                question_id: 632
                option: '1'
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
    CompositeDraftRegularProfileV3:
      description: The response object for a successfully generated blended profile.
      type: object
      required:
      - object
      - quotas_enabled
      - name
      - description
      - targets
      properties:
        object:
          type: string
          description: The type of profile. For this object, the value is always `blended`.
          enum:
          - blended
          example: blended
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
          example: true
        name:
          type: string
          description: The name of the profile.
          example: HISPANIC
        description:
          type: string
          description: A short summary of the profile. Summary language will be based on the target group's locale.
          example: Are you of Hispanic, Latino, or Spanish origin?
        description_translated:
          type: string
          description: A short summary of the profile by default english language.
          example: Are you of Hispanic, Latino, or Spanish origin?
        targets:
          $ref: '#/components/schemas/DraftQuotaV3'
      example:
        object: blended
        quotas_enabled: true
        name: GENDER x AGE
        description: Blended profile for Gender and Age
        description_translated: Blended profile for Gender and Age
        targets:
        - id: 01JQMD8R7F0VW45KPWQ7WYNCFP
          text: Male and 18-34
          name: Target-Male-18-34
          conditions:
          - object: selection
            question_id: 43
            option: '1'
          - object: range
            question_id: 42
            min: 18
            max: 34
          quota:
            name: MALE_18_34
            completes_goal_percentage: 25
            quota_nominal: 250
            completes_goal: 250
    GenerateDraftInterlockedProfileRequestV3:
      description: The request body for generating a blended (interlocked) profile from two or three regular profiles.
      type: object
      required:
      - locale
      - completes_goal
      - start_at
      - end_at
      - collects_pii
      - profiling
      properties:
        locale:
          type: string
          example: eng_us
        completes_goal:
          $ref: '#/components/schemas/CompletesGoal'
        start_at:
          type: string
          example: '2023-10-09T12:00:00.000Z'
        end_at:
          type: string
          example: '2023-10-09T12:00:00.000Z'
        collects_pii:
          type: boolean
          example: false
        profiling:
          description: The core profiling configuration containing the profiles to be blended.
          type: object
          required:
          - profile_adjustment_type
          - profiles
          properties:
            profile_adjustment_type:
              type: string
              description: |
                Defines how quotas are specified in the `profile` object.
                Use `percentage` to define quotas as a percentage of the `completes_goal`, or `nominal` to define them as a specific number of completes.
              enum:
              - percentage
              - nominal
              example: percentage
            profiles:
              type: array
              minItems: 2
              maxItems: 3
              items:
                $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      example:
        locale: eng_us
        completes_goal: 1000
        start_at: '2024-10-09T12:00:00.000Z'
        end_at: '2024-10-23T12:00:00.000Z'
        collects_pii: false
        profiling:
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            name: GENDER
            quotas_enabled: true
            targets:
            - name: Target-Male
              conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                completes_goal_percentage: 50
          - object: regular
            name: AGE
            quotas_enabled: true
            targets:
            - name: Target-Age-18-34
              conditions:
              - object: range
                question_id: 42
                min: 18
                max: 34
              quota:
                completes_goal_percentage: 50
    DraftQuotaDetailsV3:
      description: A polymorphic object representing a single quota target. The shape of the object depends on whether it
        has a `quota` block defined.
      oneOf:
      - title: Targets with conditions and quota
        type: object
        description: Profile target with condition or conditions with quota.
        required:
        - id
        - conditions
        - quota
        properties:
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          name:
            type: string
            description: The name of the target.
            example: Target-Condition
          text:
            type: string
            description: The display text for the answer option, in the requested `locale`.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/InterlockProfileConditionsV3'
          quota:
            type: object
            required:
            - completes_goal_percentage
            - quota_nominal
            - completes_goal
            properties:
              name:
                type: string
                description: Name of the quota used for tracking. This will be deprecated, functionally replaced by the `target.name`
                  field one layer up in the contract.
                deprecated: true
                example: SF_Quota_12
              completes_goal_percentage:
                type: number
                multipleOf: 0.01
                minimum: 0
                maximum: 100
                description: The goal for this quota, expressed as a percentage of the target group's total `completes_goal`.
                example: 40
              quota_nominal:
                type: integer
                minimum: 0
                description: The calculated number of completes for this quota, based on its percentage.
                example: 40
              completes_goal:
                type: integer
                minimum: 0
                description: The desired number of completes for this quota. This may differ from `quota_nominal` based on
                  balancing and other factors.
                example: 40
      - title: Targets with conditions and no quota
        type: object
        description: Profile target with condition or conditions with no quota.
        required:
        - id
        - conditions
        properties:
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          name:
            type: string
            description: The name of the target.
            example: Target-Condition
          text:
            type: string
            description: The display text for the answer option, in the requested `locale`.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/InterlockProfileConditionsV3'
    QuestionsTranslationResponse:
      type: object
      description: The paginated response object for a profiling question query.
      required:
      - total
      - profiles
      - has_more
      properties:
        total:
          type: integer
          description: Total number of questions available in the search results (not necessarily the count of records in
            the immediate response).
          example: 29
        profiles:
          description: Array of questions and question options for the request.
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/QuestionResponseProfileFormat'
        has_more:
          type: boolean
          description: A flag that's true if there are more results to retrieve in a subsequent request.
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
    QuestionQuotaV3:
      description: A polymorphic array containing conditions for a question. For question types like `range` or `open_ended`
        that do not have predefined conditions, this may be an empty array.
      oneOf:
      - title: Targets with conditions
        type: array
        minItems: 1
        items:
          $ref: '#/components/schemas/QuestionQuotaDetailsV3'
      - title: No conditions
        type: array
        nullable: true
        minItems: 0
        items:
          $ref: '#/components/schemas/RequestDraftNoQuotaV3'
    QuestionCategory:
      type: object
      description: Indicates the question's category.
      properties:
        id:
          $ref: '#/components/schemas/QuestionCategoryID'
        code:
          $ref: '#/components/schemas/QuestionCategoryCode'
        name:
          type: string
          description: The name of the question category.
      example:
        id: 23
        code: AIR
        name: Airlines/Travel
    QuestionCategoryCode:
      description: Code that uniquely identifies the question category.
      type: string
      enum:
      - AIR
      - ART
      - AUT
      - B2B
      - BAN
      - BEA
      - BEV
      - DEM
      - DEV
      - EDU
      - ELE
      - FAS
      - FOO
      - HOB
      - HOM
      - IT
      - MED
      - PER
      - POL
      - REC
      - SUP
      - TOB
      - OTH
    QuestionCategoryID:
      type: integer
      description: The unique identifier for a question category.
      example: 43
    QuestionResponseProfileFormat:
      type: object
      description: Contains the details for a single profiling question, including its answer options and translations.
      required:
      - object
      - name
      - description
      - quotas_enabled
      - targets
      - standard
      - profile_condition_type
      properties:
        object:
          type: string
          description: Object field to distinguish the operation.
          enum:
          - regular
          example: regular
        name:
          type: string
          description: The name of the profile.
          example: HISPANIC
        description:
          type: string
          description: A short summary of the profile. Summary language will be based on the target group's locale.
          example: Are you of Hispanic, Latino, or Spanish origin?
        description_translated:
          type: string
          description: A short summary of the profile by default english language.
          example: Are you of Hispanic, Latino, or Spanish origin?
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
          example: false
        targets:
          $ref: '#/components/schemas/QuestionQuotaV3'
        option_mask:
          type: string
          description: The question option mask.
          example: XX
        standard:
          type: boolean
          description: A flag that indicates if this is a standard Cint question (true) or a custom, account-specific question
            (false).
          example: true
        profile_condition_type:
          type: string
          description: The type of the profile.
          enum:
          - Single Punch
          - Multi Punch
          - Dummy
          - Text - Open-end
          - Numeric - Open-end
          example: Single Punch
        classification_id:
          type: integer
          description: ID associated with the question classification.
        classification_code:
          type: string
          description: The code representing the classification of the question (e.g. AUT = Automotive, BAN = Banking/Finance,
            AIR = Airlines/Travel).
          example: BAN
    QuestionQuotaDetailsV3:
      type: object
      description: Quota for conditions.
      required:
      - text
      - conditions
      properties:
        name:
          type: string
          description: The name of the target.
          example: Target-Condition
        text:
          type: string
          description: The display text for the answer option, in the requested locale.
          example: Condition Text
        text_translated:
          type: string
          description: Translated text of the condition used for display purpose.
          example: Condition Text
        conditions:
          type: array
          description: List of conditions for the quota.
          minItems: 1
          items:
            $ref: '#/components/schemas/InterlockProfileConditionsV3'
    ListQuestionCategories:
      type: object
      description: Lists all available question categories.
      properties:
        categories:
          type: array
          description: List of question categories.
          items:
            $ref: '#/components/schemas/QuestionCategory'
      example:
        categories:
        - id: 23
          code: AIR
          name: Airlines/Travel
    PanelDistributionRequestV3:
      description: The request body for a panel distribution calculation. The `profile_adjustment_type` field (`percentage`
        or `nominal`) determines the structure of the `quota` objects within the `profile`.
      oneOf:
      - title: Profiles populated with percentage as profile adjustment type
        type: object
        required:
        - locale
        - completes_goal
        - profile_adjustment_type
        - start_at
        - end_at
        - profile
        properties:
          locale:
            type: string
            example: eng_us
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profile_adjustment_type:
            type: string
            description: Defines how quotas are specified in the `profile` object. Use `percentage` to define quotas as a
              percentage of the `completes_goal`, or `nominal` to define them as a specific number of completes.
            enum:
            - percentage
            example: percentage
          start_at:
            type: string
            description: Fielding start date. Start date-time in ISO 8601 format.
            example: 2023-10-09 12:00:00+00:00
          end_at:
            type: string
            description: Fielding end date. End date-time in ISO 8601 format.
            example: 2023-10-23 12:00:00+00:00
          collects_pii:
            type: boolean
            example: false
          profile:
            $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      - title: Profiles populated with nominal as profile adjustment type
        type: object
        required:
        - locale
        - completes_goal
        - profile_adjustment_type
        - start_at
        - end_at
        - profile
        properties:
          locale:
            type: string
            example: eng_us
          completes_goal:
            $ref: '#/components/schemas/CompletesGoal'
          profile_adjustment_type:
            type: string
            description: Defines how quotas are specified in the `profile` object. Use `percentage` to define quotas as a
              percentage of the `completes_goal`, or `nominal` to define them as a specific number of completes.
            enum:
            - nominal
            example: nominal
          start_at:
            type: string
            description: Fielding start date. Start date-time in ISO 8601 format.
            example: 2023-10-09 12:00:00+00:00
          end_at:
            type: string
            description: Fielding end date. End date-time in ISO 8601 format.
            example: 2023-10-23 12:00:00+00:00
          collects_pii:
            type: boolean
            example: false
          profile:
            $ref: '#/components/schemas/RequestDraftRegularProfileV3'
      example:
        locale: eng_us
        completes_goal: 1000
        profile_adjustment_type: percentage
        start_at: '2024-10-09T12:00:00.000Z'
        end_at: '2024-10-23T12:00:00.000Z'
        profile:
          object: regular
          name: Age and Gender
          quotas_enabled: true
          targets:
          - name: Target-Male-18-34
            conditions:
            - object: selection
              question_id: 43
              option: '1'
            - object: range
              question_id: 42
              min: 18
              max: 34
            quota:
              name: Male 18-34
              completes_goal_percentage: 25
    TemplateRegularProfiles:
      type: object
      required:
      - object
      - quotas_enabled
      - targets
      properties:
        object:
          type: string
          description: A field that identifies the profile type. The value is always `regular` for this schema.
          enum:
          - regular
          example: regular
        name:
          type: string
          description: The name of the profile.
          example: Age
        description:
          type: string
          description: A short summary of the profile.
          example: What is your age?
        quotas_enabled:
          type: boolean
          description: Indicates if quotas are enabled for this profile.
          example: true
        targets:
          description: Defines the specific quota targets and their conditions for this profile.
          $ref: '#/components/schemas/TemplatesQuotaV3'
    ProfileTemplateID:
      type: string
      description: A unique identifier for the template.
      format: uuid
      example: 12345678-1234-1234-1234-123456789012
    TemplateQuotaDetailsV3:
      description: |
        Represents a single quota target within a profile template. A target consists of a set of conditions and may or may not have a specific percentage of completes allocated to it. The structure will be one of the following options:
        * An object with a `quota` field for targets with a defined percentage.
        * An object without a `quota` field for targets that are for profiling only.
      oneOf:
      - type: object
        description: A target that defines a set of conditions and the percentage of completes allocated to them
        required:
        - conditions
        - quota
        properties:
          name:
            type: string
            description: The name of the target.
            example: Target Name
          text:
            type: string
            description: The display text for the condition.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions.
            minItems: 1
            items:
              $ref: '#/components/schemas/InterlockProfileConditionsV3'
          quota:
            type: object
            required:
            - completes_goal_percentage
            properties:
              completes_goal_percentage:
                type: number
                multipleOf: 0.01
                minimum: 0
                maximum: 100
                description: The percentage of the total completes goal that is allocated to this target.
                example: 40
      - title: No quota
        type: object
        description: A target that defines a set of conditions that do not have a specific quota percentage assigned.
        required:
        - conditions
        properties:
          name:
            type: string
            description: The name of the target.
            example: Target Name
          text:
            type: string
            description: The display text for the condition.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/InterlockProfileConditionsV3'
    TemplatesQuotaV3:
      type: array
      description: A list of quota targets for the profile template.
      minItems: 1
      items:
        $ref: '#/components/schemas/TemplateQuotaDetailsV3'
    ProfileTemplateResponse:
      type: object
      description: The response payload for a single, complete profile template, including its overview details and full profiling
        question set.
      allOf:
      - properties:
          id:
            $ref: '#/components/schemas/ProfileTemplateID'
      - $ref: '#/components/schemas/ProfileTemplateOverview'
      - properties:
          profiling:
            $ref: '#/components/schemas/ProfilingTemplate'
    ProfileTemplatesList:
      type: object
      properties:
        templates:
          type: array
          description: A list of profile template summary objects.
          items:
            $ref: '#/components/schemas/ProfileTemplateListItem'
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
    ProfileTemplateListItem:
      type: object
      description: A summary view of a profile template, typically returned in a list. It combines the template's overview
        with its unique `id`.
      allOf:
      - properties:
          id:
            $ref: '#/components/schemas/ProfileTemplateID'
      - $ref: '#/components/schemas/ProfileTemplateOverview'
    ProfileTemplateScopeless:
      type: object
      properties:
        name:
          type: string
          description: A user-defined name for the template.
          example: My Template
        description:
          type: string
          description: A description for the template.
          example: My Template Description
        label:
          type: string
          description: A label for the template.
          example: My Template Label
        locales:
          type: array
          description: A list of locale codes where this template is applicable.
          items:
            $ref: '#/components/schemas/LocaleCode'
    ProfileTemplateOverview:
      description: Represents the overview information for a profile template, combining the base details with its `scope`.
      allOf:
      - $ref: '#/components/schemas/ProfileTemplateScopeless'
      - properties:
          scope:
            type: string
            description: |
              The scope of the profile template, which determines its availability.
              *   `global`: Choose this if you want the template to be available for all accounts.
              *   `account`: Choose this if you want the template to be available only for a specified account.
            enum:
            - global
            - account
            example: global
    ProfileTemplateRequest:
      description: The request payload for creating or updating a profile template.
      allOf:
      - $ref: '#/components/schemas/ProfileTemplateScopeless'
      - properties:
          profiling:
            $ref: '#/components/schemas/ProfilingTemplate'
      - required:
        - name
        - locales
        - label
        - profiling
    ProfilingTemplate:
      type: object
      required:
      - profile_adjustment_type
      - profiles
      properties:
        profile_adjustment_type:
          type: string
          description: The method used to specify quota targets. The only supported value is `percentage`, where you specify
            a proportion of the total completes for each target.
          example: percentage
          enum:
          - percentage
        profiles:
          type: array
          minItems: 1
          description: List of regular profiles.
          items:
            $ref: '#/components/schemas/TemplateRegularProfiles'
    ProjectHumanReadableID:
      description: The project's human-readable ID. This ID is unique within the scope of an account.
      type: string
      minLength: 6
      maxLength: 6
      example: FT354J
    ProjectIDWithHumanReadableIDResponse:
      type: object
      description: The response payload containing a project's `id` and `human_readable_id`.
      properties:
        id:
          $ref: '#/components/schemas/ProjectID'
        human_readable_id:
          $ref: '#/components/schemas/ProjectHumanReadableID'
    ProjectsList:
      type: object
      description: Paginated list of Projects.
      required:
      - projects
      - url
      - has_more
      properties:
        projects:
          type: array
          description: Array of Project list items, representing the results of the query.
          items:
            $ref: '#/components/schemas/ProjectListItem'
        url:
          type: string
          description: URL which produced this list (without query parameters).
          example: /accounts/543587/projects
        has_more:
          type: boolean
          description: If `true`, there are more results to fetch by providing the `next_cursor` in a subsequent request.
            If `false`, you are on the last page of results.
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
    ProjectIDResponse:
      type: object
      description: Response containing only the project ID.
      properties:
        id:
          type: string
          format: ulid
          pattern: ^[0-9A-Z]{26}$
          example: 01GV070G3SJECZAGE3Q3J6FV56
    ProjectStatistics:
      type: object
      description: An object containing key performance statistics for a project.
      required:
      - filling_goal
      - current_completes
      - current_prescreens
      - incidence_rate_median
      - length_of_interview_median_seconds
      - conversion_rate_average
      - drop_off_rate_average
      properties:
        filling_goal:
          type: integer
          format: int32
          description: The filling goal indicates the desired total number of completes across all target groups within the
            project.
          minimum: 0
          example: 1000
        current_completes:
          type: integer
          format: int32
          description: Current number of completes for the target groups within the project.
          minimum: 0
          example: 412
        current_prescreens:
          type: integer
          format: int32
          description: Current number of prescreens for the target groups within the project.
          minimum: 0
          example: 546
        incidence_rate_median:
          type: number
          format: float
          description: Current median incidence rate of the target groups within the project.
          minimum: 0
          maximum: 1
          example: 0.05
        length_of_interview_median_seconds:
          type: integer
          format: int32
          description: Current median length of interview of the target groups within the project in seconds.
          minimum: 0
          example: 1
        conversion_rate_average:
          type: number
          format: float
          description: Current average conversion rate of the target groups within the project.
          minimum: 0
          maximum: 1
          example: 0.05
        drop_off_rate_average:
          type: number
          format: float
          description: Current average drop-off rate of the target groups within the project.
          minimum: 0
          maximum: 1
          example: 0.05
    TargetGroupCustomerReferenceNumber:
      type: string
      pattern: ^[a-zA-Z0-9\-_ ]*$
      minLength: 3
      maxLength: 128
      description: A customer-provided reference number for the target group.
      example: AB-00246246
    ProjectStatus:
      type: string
      enum:
      - active
      - inactive
      description: The status of the project.
      example: active
    ProjectInfo:
      type: object
      description: The request payload for creating a new project
      properties:
        name:
          type: string
          description: The name of the project. Any leading or trailing whitespace will be trimmed.
          minLength: 5
          maxLength: 128
          example: A Project
        project_manager_id:
          type: string
          format: uuid
          example: 96C65204-90C2-4DCB-9393-B8226DD50C76
          description: Project manager ID.
        project_customer_reference_number:
          type: string
          description: A customer-provided reference number assigned to the project.
          minLength: 3
          maxLength: 128
          pattern: ^[a-zA-Z0-9\-_ ]*$
          example: RF-4567
      required:
      - name
      - project_manager_id
    TargetGroupHumanReadableID:
      description: The target group's human-readable ID. This ID is unique within the scope of an account.
      type: string
      minLength: 7
      maxLength: 7
      example: 9NRV3B9
    ProjectInfoUpdate:
      type: object
      description: The request payload for updating an existing project.
      required:
      - name
      - project_manager_id
      - project_customer_reference_number
      properties:
        name:
          type: string
          description: The name of the project. Any leading or trailing whitespace will be trimmed.
          minLength: 5
          maxLength: 128
          example: A Project
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        project_customer_reference_number:
          type: string
          pattern: ^[a-zA-Z0-9\-_ ]*$
          nullable: true
          minLength: 3
          maxLength: 128
          description: |
            A customer-provided reference number assigned to the project.

            :::danger Deletion Warning
            If this field is omitted from the request body during an update, the existing customer reference number will be permanently deleted.
            :::
          example: RF-4567
    ProjectListItem:
      type: object
      description: A single project summary object, typically returned in a list.
      required:
      - id
      - account_id
      - name
      - status
      - last_activity_at
      - target_group_count
      - statistics
      properties:
        id:
          type: string
          pattern: ^[0-9A-Z]{26}$
          description: A unique identifier for the project in ULID format.
          example: 01HD6WD8W4G8FMTFCX0JPR8TXN
        human_readable_id:
          description: The project's human-readable ID, unique within the account.
          $ref: '#/components/schemas/ProjectHumanReadableID'
        account_id:
          description: The unique identifier of the account this project belongs to.
          $ref: '#/components/schemas/AccountID'
        project_customer_reference_number:
          type: string
          description: A customer-provided reference number assigned to the project.
          minLength: 3
          maxLength: 128
          example: RF-4567
        name:
          type: string
          description: The name of the project.
          example: Test Project
        highlighted_name:
          type: string
          description: |
            The name of the project, with parts that matched the search string being highlighted between HTML emphasis tags. If there was no search string, or the search string matched this project based on the identifier (and not based on the name), this property will be omitted.
          example: <em>Test</em> Project
        target_group_human_readable_ids:
          type: array
          description: |
            If the search string matched one or more of the ID's of target groups contained within the project, those target groups will be listed here. If no such matches were found, this property will be omitted.
          items:
            $ref: '#/components/schemas/TargetGroupHumanReadableID'
        target_group_count:
          type: integer
          format: int32
          minimum: 0
          maximum: 1000
          example: 1
          description: The total number of target groups in this project.
        status:
          description: The current status of the project.
          $ref: '#/components/schemas/ProjectStatus'
        last_activity_at:
          type: string
          format: date-time
          description: The timestamp of the last activity on the project, in ISO 8601 format.
          example: '2023-01-01T23:00:00.000Z'
        statistics:
          description: An object containing key performance statistics for the project.
          $ref: '#/components/schemas/ProjectStatistics'
        target_group_customer_reference_numbers:
          type: array
          description: |
            If the search string matched one or more of the customer reference numbers of target groups contained within the project, those target groups will be listed here. If no such matches were found, this property will be omitted.
          items:
            $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
    ProjectOverview:
      type: object
      description: A summary overview of a single project, including its status and key performance statistics.
      required:
      - id
      - human_readable_id
      - account_id
      - status
      - statistics
      - project_manager_id
      - created_at
      properties:
        id:
          description: The project's unique identifier in ULID format.
          $ref: '#/components/schemas/ProjectID'
        human_readable_id:
          description: The project's human-readable ID, unique within the account.
          $ref: '#/components/schemas/ProjectHumanReadableID'
        name:
          type: string
          description: Name of the Project.
          example: Test Project
        account_id:
          $ref: '#/components/schemas/AccountID'
        status:
          $ref: '#/components/schemas/ProjectStatus'
        statistics:
          $ref: '#/components/schemas/ProjectStatistics'
        project_manager_id:
          description: Project manager ID.
          $ref: '#/components/schemas/UserID'
        project_customer_reference_number:
          type: string
          description: Customer reference number assigned to the project.
          example: RF-4567
        created_at:
          type: string
          format: date-time
          description: Date and time when the project was created (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
    ProjectDetails:
      type: object
      description: The full details of a single project.
      required:
      - id
      - name
      - project_manager_id
      - account_id
      properties:
        id:
          description: The project's unique identifier in ULID format.
          $ref: '#/components/schemas/ProjectID'
        human_readable_id:
          description: The project's human-readable ID, unique within the account.
          $ref: '#/components/schemas/ProjectHumanReadableID'
        name:
          type: string
          description: Name of the Project.
          example: Test Project
        project_manager_id:
          description: Project manager ID.
          $ref: '#/components/schemas/UserID'
        account_id:
          $ref: '#/components/schemas/AccountID'
        project_customer_reference_number:
          type: string
          description: Customer reference number assigned to the project.
          example: RF-4567
    RequestReconciliationByID:
      $ref: '#/components/schemas/Reconciliation'
    ReconciliationReasonCodesResponse:
      description: response model of requested reconciliations reason code data
      type: object
      properties:
        reconciliation_reasons:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationReasonCodes'
    ReconciliationsEligibleTargetGroupsResponse:
      type: object
      properties:
        target_groups:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationsEligibleTargetGroups'
        url:
          type: string
          description: URL related to the request
          example: /accounts/1/reconciliations/eligible-target-groups
        summary:
          type: object
          properties:
            monetary_amount:
              allOf:
              - $ref: '#/components/schemas/MonetaryAmount'
              - type: object
                description: Summary of monetary amount
            completes:
              type: string
              description: Completes summary
              example: '100'
            target_group_count:
              type: string
              description: Target group count
              example: '123'
        has_more:
          type: boolean
          description: Indicates if there are more pages of results
          example: true
        next_cursor:
          type: string
          description: Cursor for pagination. This field is optional and may be omitted if there are no more pages.
          example: 01JBVVGBWXTC06F0J0W18CBE9R
        page_size:
          type: integer
          description: Number of items per page
          example: 10
    ReconciliationRequests:
      type: object
      properties:
        id:
          type: string
          description: UniqueID generated for the reconciliation request
          example: 01HW8HMCD3FHC985ZFMEERX0YY
        name:
          type: string
          description: The name of the submitted reconciliation request
          example: filename.csv
        submitted_at:
          type: string
          format: date-time
          description: The timestamp when the reconciliation file was submitted (RFC3339 UTC format).
          example: '2023-01-01T23:00:00.000Z'
        status:
          type: string
          example: processing
          enum:
          - complete
          - processing
        submitted_by_user_id:
          type: string
          description: LAS ID of the user who submitted the reconciliation request
          example: c6eea0ec-fc9e-44de-bb0b-ed104022e576
        result_counts:
          $ref: '#/components/schemas/ReconciliationRequestSubmittedCount'
    FileName:
      description: The name of the file.
      type: string
      example: filename.csv
      maxLength: 255
    NextCursorULID:
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP0
      description: An ID of the next list of items and indicator that there are more items than currently viewable.
    SubmitReconciliationsResponse:
      description: response model of requested reconciliations data
      type: object
      properties:
        name:
          description: The name of the submitted reconciliation request
          type: string
        request_id:
          description: UniqueID generated for the reconciliation request
          type: string
          format: ulid
      example:
        name: Reconciliation_file_name.csv
        request_id: 01F8K8P3Z5KNYR5H0GQZAYGQJ9
    ReconciliationsEligibleTargetGroups:
      type: object
      properties:
        name:
          type: string
          description: Target group name
        target_group_id:
          type: string
          description: Target group identifier
        project_id:
          type: string
          description: Project identifier
        project_manager:
          type: object
          properties:
            id:
              type: string
              description: Project manager ID
            name:
              type: string
              description: Project manager name
            email:
              type: string
              description: Project manager email
        status:
          type: string
          description: Target group status. This field is optional and may be omitted if the status is not available.
        project_name:
          type: string
          description: Project name. This field is optional and may be omitted if the status is not available.
        last_reconciliation_date:
          type: string
          format: date-time
          description: Last reconciliation date in RFC3339 format. This field is optional and may be omitted if the status
            is not available.
          example: '2023-01-01T23:00:00.000Z'
        eligible_completes:
          type: string
          description: Number of eligible complete
        monetary_amount:
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
          - type: object
            description: Cost of eligible completes
    ReconciliationsFiles:
      description: Response object for a list of reconciliations files.
      type: object
      properties:
        reconciliation_requests:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationRequests'
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        page_size:
          type: integer
          example: 10
    RequestReconciliationsTargetGroups:
      description: Successfully returns a paginated list of target groups associated to a reconciliation request id.
      type: object
      properties:
        target_groups:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationsTargetGroup'
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        page_size:
          description: The number of target groups to return per page.
          type: integer
          example: 1
    RequestReconciliationsTargetGroup:
      allOf:
      - $ref: '#/components/schemas/ReconciliationsTargetGroup'
      - description: Successfully returns a single target group associated to a reconciliation request id.
    RequestID:
      type: string
      pattern: ^[0-9A-Z]{26}$
      description: ULID that uniquely identifies a reconciliation record.
      example: 01BX5DZKBKACTAV9WEVGEMMVS1
    responses-SubmitReconciliationsResponse:
      allOf:
      - $ref: '#/components/schemas/SubmitReconciliationsResponse'
      - description: response model of validated bulk reconciliations data
    RequestReconciliationsEligibleTargetGroups:
      allOf:
      - $ref: '#/components/schemas/ReconciliationsEligibleTargetGroupsResponse'
      - description: Successfully returns a list of eligible target groups for reconciliation.
    ReconciliationReasonCodes:
      type: object
      properties:
        code:
          description: The ID of the reconciliation reason code
          type: string
          example: '11'
        name:
          description: The title of the reconciliation reason code
          type: string
          example: Adjusted Complete
        description:
          description: The description of the reconciliation reason code
          type: string
          example: Respondent was adjusted from another status to complete via reconciliation
        allowed:
          description: Indicates if the reason code can be used by customers. Once a reason code is phased out, this value
            will be set to 'false'.
          type: boolean
          example: true
    ReconciliationsTargetGroup:
      type: object
      properties:
        target_group_id:
          $ref: '#/components/schemas/TargetGroupID'
        status:
          description: the status of the reconciliation file
          type: string
          enum:
          - complete
          - processing
        submitted_count:
          type: integer
          description: the number of RIDs in total that were submitted
          example: 20
        expired_count:
          type: integer
          description: the number of RIDs that don't fit in the reconciliation window
          example: 6
        invalid_count:
          type: integer
          description: the number of invalid RIDs processed
          example: 4
        positive_reversed_count:
          type: integer
          description: the number of RIDs positively reconciled
          example: 7
        negative_reversed_count:
          type: integer
          description: the number of RIDs negatively reconciled
          example: 3
    ReconciliationRequestSubmittedCount:
      type: object
      description: Counts of RIDs broken down by submitted, expired, invalid, positively reconciled, and negatively reconciled.
      properties:
        submitted:
          type: integer
          description: The number of RIDs in total that were submitted.
          example: 10
        expired:
          type: integer
          description: The number of RIDs that don't fit in the reconciliation window.
          example: 10
        invalid:
          type: integer
          description: The number of invalid RIDs that were not processed.
          example: 10
        total_reversed:
          type: integer
          description: The number of RIDs both positively and negatively reconciled.
          example: 10
        positive_reversed:
          type: integer
          description: The number of RIDs positively reconciled.
          example: 10
        negative_reversed:
          type: integer
          description: The number of RIDs to negatively reconciled.
          example: 10
    Reconciliation:
      type: object
      properties:
        request_id:
          $ref: '#/components/schemas/RequestID'
        name:
          description: The name of the submitted reconciliation file
          type: string
          example: Test_CSV_File_2312412
        status:
          description: the status of the reconciliation file
          type: string
          enum:
          - complete
          - processing
        submitted_at:
          type: string
          format: date-time
          description: DateTime Follows RFC3339
          example: '2023-01-01T23:00:00.000Z'
        submitter_las_id:
          type: string
          description: Submitter LAS UUID
          example: 4325c214c-2d72-7as2-b498-d6345342ff10b0
        submitted_count:
          type: integer
          description: the number of RIDs in total that were submitted
          example: 20
        expired_count:
          type: integer
          description: the number of RIDs that don't fit in the reconciliation window
          example: 6
        invalid_count:
          type: integer
          description: the number of invalid RIDs processed
          example: 4
        positive_reversed_count:
          type: integer
          description: the number of RIDs positively reconciled
          example: 7
        negative_reversed_count:
          type: integer
          description: the number of RIDs negatively reconciled
          example: 3
    ReconciliationDownloadType:
      type: string
      description: Reconciliation file types available for download.
      enum:
      - submitted-rids
      - expired-rids
      - invalid-rids
    CreateRecontactsJobResponse:
      type: object
      description: The response payload containing thejob_idfor a newly created recontact job.
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    GetTargetGroupRecontactsOverviewResponse:
      type: object
      description: The response payload containing the recontact overview for a target group.
      required:
      - saved_respondent_ids_count
      properties:
        saved_respondent_ids_count:
          type: integer
          description: The number of saved respondent IDs
          minimum: 0
          maximum: 100000
          example: 1000
    GetRecontactRemoveAllRsidsJobStatusResponse:
      type: object
      description: Recontacts Remove All RSIDs job status details.
      required:
      - job_id
      - created_at
      - created_by
      - status
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        completed_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        status:
          $ref: '#/components/schemas/RecontactJobStatus'
        created_by:
          $ref: '#/components/schemas/UserID'
        failure_reason:
          $ref: '#/components/schemas/RecontactJobFailureReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
    RecontactJobPartialSuccessReason:
      type: object
      description: The reason for the partial success of a job.
      required:
      - description
      properties:
        description:
          type: string
          example: Upload partially successful. 500 respondent IDs uploaded successfully, 10 failed (invalid or empty).
    RecontactJobStatus:
      type: string
      description: The status of an async Recontact update job.
      enum:
      - Completed
      - Failed
      - Processing
      example: Completed
    GetRecontactRsidsUpdateJobResponse:
      type: object
      description: The response payload containing the status and details of a recontact job.
      required:
      - job_id
      - created_at
      - created_by
      - status
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          description: The timestamp when the job was created, in ISO 8601 format.
          example: '2030-01-01T12:00:00.000Z'
        completed_at:
          type: string
          format: date-time
          description: The timestamp when the job finished processing. This field is `null` while the job status is `Processing`.
          example: '2030-01-01T12:05:00.000Z'
        status:
          $ref: '#/components/schemas/RecontactJobStatus'
        created_by:
          $ref: '#/components/schemas/UserID'
        failure_reason:
          description: An object containing the reason for the job's failure. This field is `null` unless the job `status`
            is `Failed`.
          $ref: '#/components/schemas/RecontactJobFailureReason'
        partial_success_reason:
          description: An object containing details about a partial success. This field may be present when the job `status`
            is `Completed` but not all items could be processed.
          $ref: '#/components/schemas/RecontactJobPartialSuccessReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
    CreateRecontactUploadRsidsByFileJobResponse:
      type: object
      description: The response payload containing the `job_id` for the newly created file upload job.
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    RecontactJobFailureReason:
      type: object
      description: The reason for the failure of a job.
      required:
      - code
      - description
      properties:
        code:
          type: string
          description: A machine-readable error code for the failure.
          example: JobExecutionStartMessageFailed
        description:
          type: string
          description: A human-readable explanation of the failure.
          example: The job execution start message failed. Please contact Cint for further assistance.
    RecontactsRespondentIDListResponse:
      type: object
      description: The response payload for a paginated list of respondent IDs.
      properties:
        data:
          type: array
          items:
            type: string
            format: uuid
          description: List of Respondent IDs
          example:
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
          - 5a3b2ada-0066-4dcb-afdd-7302be78ce9f
        next_cursor:
          type: string
          description: A pagination cursor that points to the next page of results. If this field is `null` or absent, you
            are on the last page.
          example: MDFKUkc0UFdISDRKMEpWRVRTTTNKTlZKWlcmMGVmZmRjOTctMTYxZS00NmJlLWJlM2MtNTU5NTYyMWU3ZDcx
        url:
          type: string
          description: The relative URL path for the current page of results.
          example: /demand/accounts/101/projects/01BTGNYV6HRNK8K8VKZASZCFP0/target-groups/01BTGNYV6HRNK8K8VKZASZCFP1/recontacts/rsids
    ReportRequestList:
      type: object
      description: A paginated list of report requests.
      required:
      - reports_requests
      properties:
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        reports_requests:
          type: array
          description: An array of report request objects.
          items:
            $ref: '#/components/schemas/ReportRequestListItem'
    Level:
      type: string
      description: Filter level for the report generation request.
      enum:
      - account
      - project
      - target_group
      - business_unit
    ReportType:
      type: string
      description: Report type to be generated.
      enum:
      - completes
      - reconciliations-status
      - reconciliation-eligible-rids
      - sample-bought
      - respondent-analysis
      - term-details
    ReportStatusResponse:
      type: object
      description: The response payload containing the status of a single report generation job.
      properties:
        report_id:
          type: string
          description: A unique identifier for the report in ULID format.
          pattern: ^[0-9A-Z]{26}$
          example: 01HY3NF37B6J2ABPA3H49C92YZ
        status:
          type: string
          description: The current status of the report generation job.
          enum:
          - completed
          - in_progress
          example: completed
        message:
          type: string
          example: Job successful
          description: A message describing the status of the report.
        start_date:
          type: string
          format: date-time
          description: The timestamp indicating when the report start date (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        end_date:
          type: string
          format: date-time
          description: The timestamp indicating when the report end date (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-11T23:00:00.000Z'
        report_url:
          type: string
          example: https://exchange.cint.com/download?file=1_completes_2024_02_29_22_26_03_Marketplace_Services.csv&download_url=%2Fdemand%2Faccounts%1F1%2Freports%2Fdownload%3Freport_type%3Dcompletes%26file%3D01HQVFK0PC5HWV2F4YQPJ5E%2F1__2024_02_29_22_26_03_Marketplace_Services.csv&type=report
          description: The download URL of the report.
        data_analysis:
          type: boolean
          description: Indicates if data analysis was included as an option in the report request.
          example: false
        survey_id:
          type: string
          description: The survey identifier associated with this report, if applicable.
          example: '1341234'
        respondent_answer:
          type: boolean
          description: Indicates if respondent answers were included as an option in the report request.
          example: false
    ReportGenerationRequest:
      type: object
      description: The request body for generating a new report.
      properties:
        filter:
          type: string
          description: The level at which to filter the report (e.g., by business unit, project, etc.).
          enum:
          - business_unit
          - target_group
          - project
          - null
          example: business_unit
        start_date:
          type: string
          description: The start date for the report's date range, in YYYY-MM-DD format.
          example: '2023-08-01'
        end_date:
          type: string
          description: The end date for the report's date range, in YYYY-MM-DD format.
          example: '2023-08-30'
        filter_ids:
          type: array
          items:
            type: string
          description: List of unique identifiers corresponding to the selected filter type.
          example:
          - id1
          - id2
          - id3
        report_options:
          type: object
          nullable: true
          properties:
            include_respondent_answers:
              type: boolean
              description: Include respondent answers in report.
              nullable: true
            link_type:
              type: number
              format: int
              description: Link type ID for term details report
              nullable: true
        email_recipients:
          type: array
          minItems: 1
          maxItems: 5
          items:
            type: string
          description: A list of user IDs to receive the report email. A minimum of 1 and a maximum of 5 user IDs are allowed.
          example:
          - y78d0r90-e174-4b05-5y67-8iof00018t17
          - t53u0r56-p132-1b05-5y67-5qvr17253n89
    ReportId:
      type: string
      description: A unique identifier for the report.
      pattern: ^[0-9A-Z]{26}$
      example: 01CTGNYV6HRNK8K8VKZASZCFP1
    ReportGenerationResponse:
      type: object
      description: The response payload returned immediately after a report generation request has been accepted.
      required:
      - message
      - report_id
      - report_url
      - status
      properties:
        message:
          type: string
          description: A human-readable status message from the reporting service.
          example: Report Created
        report_id:
          type: string
          format: uuid
          pattern: ^[0-9A-Z]{26}$
          description: A unique identifier for the report.
          example: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
        report_url:
          type: string
          description: The URL where the report can be downloaded once its status is `completed`. This will be `null` while
            the report is `pending` or` failed`.
          example: https://example.com/completes-buyside-{accountname}.csv
        create_date:
          type: string
          format: date-time
          description: The timestamp when the report generation was requested, in ISO 8601 format.
          example: '2025-07-11T14:02:14Z'
        status:
          type: string
          description: Status of the report
          enum:
          - pending
          - emailed
          - failed
          example: pending
        report_type:
          type: string
          description: Report Type
          example: completes
        level:
          type: string
          description: Type of filter
          enum:
          - Business Unit
          - Target Group
          - Project
          - Account
        create_params:
          type: object
          description: Parameters used to generate the report
          properties:
            start_date:
              type: string
              description: Start Date for date filter
              example: '2023-08-01'
            end_date:
              type: string
              description: End date of the report
              example: '2023-08-30'
            filter:
              type: string
              description: Type of filter used in the report
              enum:
              - business_unit
              - target_group
              - project
              example: business_unit
            filter_ids:
              type: array
              items:
                type: string
              description: List of unique identifiers corresponding to the selected filter type.
              example:
              - id1
              - id2
              - id3
            report_options:
              type: object
              nullable: true
              properties:
                include_respondent_answers:
                  type: boolean
                  description: Include respondent answers in report.
                  nullable: true
                link_type:
                  type: number
                  format: int
                  description: Link type ID for term details report
                  nullable: true
        requestor:
          type: object
          description: Requestor information
          properties:
            id:
              type: string
              format: uuid
              description: ID of the requestor
              example: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
            name:
              type: string
              description: Name of the requestor
              example: John Doe
            email:
              type: string
              format: email
              description: Email of the requestor
              example: John.Doe@cint.com
    ReportRequestListItem:
      type: object
      description: An individual Report Request in list of items.
      properties:
        account_name:
          $ref: '#/components/schemas/AccountName'
        create_date:
          type: string
          format: date-time
          description: The timestamp the report was created.
          example: '2023-01-01T23:00:00.000Z'
        create_params:
          type: object
          description: Create params of the request
          properties:
            start_date:
              type: string
              description: The start date for the report query. **Note:** The time is interpreted as 00:00 in the US/Central
                timezone.
              example: '2023-08-01'
            end_date:
              type: string
              description: The end date for the report query. **Note:** The time is interpreted as 00:00 in the US/Central
                timezone.
              example: '2023-08-30'
            filter:
              type: string
              description: Filter to be used in report.
              enum:
              - business_unit
              - project
              - target_group
              example: business_unit
            filter_ids:
              type: array
              items:
                type: string
              description: List of unique identifiers corresponding to the selected filter type.
              example:
              - id1
              - id2
              - id3
            report_options:
              type: object
              nullable: true
              properties:
                include_respondent_answers:
                  type: boolean
                  description: Include respondent answers in report.
                  nullable: true
                link_type:
                  type: string
                  description: Link type
                  enum:
                  - all
                  - api
                  - offer
                  - pass
                  - target
                  - yield
                  nullable: true
        requestor:
          type: object
          description: Report Requestor Details
          properties:
            id:
              type: string
              format: uuid
              description: ID of the requestor
              example: 96C65204-90C2-4DCB-9393-B8226DD50C76
            name:
              type: string
              description: Name of the requestor
              example: John Doe
            email:
              type: string
              format: email
              description: Email of the requestor
              example: JohnDoe@cint.com
        report_id:
          type: string
          description: A unique identifier for the report in ULID format.
          pattern: ^[0-9A-Z]{26}$
          example: 01HY3NF37B6J2ABPA3H49C92YZ
        report_type:
          type: string
          description: Report Type
          example: sample-bought
        report_url:
          type: string
          description: Report URL
          example: https://example.com/completes-buyside-{accountname}.csv
        status:
          type: string
          description: Status of the report
          enum:
          - pending
          - completed
          - failed
          example: completed
        level:
          type: string
          description: Filter level of the report
          enum:
          - Account
          - Project
          - Target Group
          - Business Unit
          example: Account
    Status:
      type: string
      description: Status of the report generation request.
      enum:
      - processing
      - failed
      - completed
    ReportShareResponse:
      type: object
      description: The response payload containing a shareable, pre-signed URL for a report.
      properties:
        report_pre_signed_url:
          type: string
          description: A temporary, pre-signed URL to access the report. This link is time-sensitive and will expire.
    AccountName:
      description: The name of the account.
      type: string
      nullable: true
      example: Lucid Marketplace Services
    UploadTestRespondentUniqueCodesRequest:
      type: object
      required:
      - respondent_unique_codes
      properties:
        respondent_unique_codes:
          type: array
          minItems: 1
          maxItems: 20000
          description: A list of unique codes to upload for the target group.
          items:
            type: string
            minLength: 1
            maxLength: 128
            description: A unique code, between 1 and 128 characters.
            example: respondent-unique-code-12345
          example:
          - respondent-unique-code-12345
          - respondent-unique-code-67890
          - respondent-unique-code-ABCDE
    GetLiveRespondentUniqueCodesStatsResponse:
      type: object
      required:
      - total_count
      - unconsumed_count
      properties:
        total_count:
          type: integer
          minimum: 0
          description: The total number of respondent unique codes in the target group.
          example: 1000
        unconsumed_count:
          type: integer
          minimum: 0
          description: The count of respondent unique codes that have not yet been consumed.
          example: 32
    GetTestRespondentUniqueCodesStatsResponse:
      type: object
      required:
      - total_count
      - unconsumed_count
      properties:
        total_count:
          type: integer
          minimum: 0
          description: The total number of respondent unique codes in the target group.
          example: 1000
        unconsumed_count:
          type: integer
          minimum: 0
          description: The count of respondent unique codes that have not yet been consumed.
          example: 32
    TooManyRequestsProblemDetails:
      type: object
      title: Too many requests problem details
      description: The error payload returned when the rate limit has been exceeded.
      required:
      - object
      - details
      properties:
        object:
          type: string
          description: A machine-readable string identifying the type of error.
          enum:
          - too_many_requests_problem_details
        details:
          type: string
          description: A human-readable message explaining that the rate limit was exceeded.
    UploadTestRespondentUniqueCodesResponse:
      type: object
      required:
      - uploaded_count
      properties:
        uploaded_count:
          type: integer
          minimum: 0
          maximum: 20000
          description: The number of respondent unique codes that were newly uploaded.
          example: 1000
    UploadLiveRespondentUniqueCodesResponse:
      type: object
      required:
      - uploaded_count
      properties:
        uploaded_count:
          type: integer
          minimum: 0
          maximum: 20000
          description: The number of respondent unique codes that were newly uploaded.
          example: 1000
    UploadLiveRespondentUniqueCodesRequest:
      type: object
      required:
      - respondent_unique_codes
      properties:
        respondent_unique_codes:
          type: array
          minItems: 1
          maxItems: 20000
          description: A list of unique codes to upload for the target group.
          items:
            type: string
            minLength: 1
            maxLength: 128
            description: A respondent unique code to be uploaded.
            example: respondent-unique-code-12345
          example:
          - respondent-unique-code-12345
          - respondent-unique-code-67890
          - respondent-unique-code-ABCDE
    respondent_fulfilment_result:
      title: Respondent Fulfillment Result
      type: object
      description: Provides information on the fulfillment status of a respondent's request.
      properties:
        id:
          type: string
          example: 6780395e-94fa-1eb7-612c-d2e19af42758
        status:
          type: integer
          example: 1
        links:
          type: array
          items:
            type: object
            properties:
              href:
                type: string
                example: https://goo.gl/forms/yukKhXoZOxzw8p2w2?&fedResponseID=6780395e-94fa-1eb7-612c-d2e19af42758
    respondent_fillfilment_transition_request:
      title: Respondent Fulfillment Transition Request
      type: object
      description: Provides information on the transition request of a respondent's status.
      properties:
        id:
          type: string
          example: 6780395e-94fa-1eb7-612c-d2e19af42758
          description: The session ID (RID) of the respondent.
        status:
          type: integer
          example: 5
          description: The status to which the respondent is being transitioned.
      required:
      - id
      - status
    respondent_fillfilment_transition_result:
      title: Respondent fulfillment session id transition result
      type: object
      description: Respondent's session status result.
      properties:
        id:
          type: string
          example: 6780395e-94fa-1eb7-612c-d2e19af42758
          description: The session ID (RID) of the respondent whose status was updated.
        status:
          type: integer
          example: 5
          description: The status to which the session (RID) was updated to.
    GetAccountAllocationTemplateBusinessUnitIdResponse:
      type: object
      description: The response payload containing the details of an account allocation template.
      required:
      - template_id
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          description: A unique identifier for the account allocation template.
          $ref: '#/components/schemas/TemplateID'
        template_name:
          type: string
          description: The name of the account allocation template.
        open_exchange_allocations:
          description: An object that defines the allocation rules for suppliers sourced from the Cint open exchange.
          $ref: '#/components/schemas/OpenExchangeAllocations'
        private_exchange_allocations:
          type: object
          description: An object that defines the allocation rules for suppliers sourced from private exchanges.
          properties:
            blocked_suppliers:
              type: array
              description: A list of suppliers from private exchanges that are explicitly blocked for this account.
              items:
                $ref: '#/components/schemas/SupplierInfo'
        last_modified_at:
          description: The date and time when the template was last modified, in ISO 8601 format.
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          description: The unique identifier of the user who last modified the template.
          $ref: '#/components/schemas/UserID'
    OpenExchangeAllocations:
      type: object
      description: Defines the allocation rules for suppliers sourced from the Cint open exchange.
      properties:
        exchange_suppliers:
          type: array
          description: A list of all available suppliers on the open exchange.
          items:
            $ref: '#/components/schemas/SupplierInfo'
        blocked_suppliers:
          type: array
          description: A list of open exchange suppliers that are explicitly blocked.
          items:
            $ref: '#/components/schemas/SupplierInfo'
        exchange_min_percentage:
          type: integer
          description: The minimum percentage of supply that must be sourced from the open exchange.
          example: 0
        exchange_max_percentage:
          type: integer
          description: The maximum percentage of supply that can be sourced from the open exchange.
          example: 100
        groups:
          type: array
          description: Defines specific supplier groups within the open exchange allocation.
          items:
            $ref: '#/components/schemas/OpenExchangeAllocationGroup'
    SupplierResponseWithCompletes:
      type: object
      properties:
        id:
          type: integer
          description: A unique identifier for the supplier.
          minimum: 0
          example: 420
        name:
          type: string
          description: The display name of the supplier.
          minLength: 1
          example: Clix Sense
        completes:
          type: integer
          nullable: true
          description: The number of successful survey completes from this supplier.
          minimum: 0
          example: 0
        pre_screens:
          type: integer
          nullable: true
          description: The number of pre-screen qualifications from this supplier.
          minimum: 0
          example: 0
    SupplierIds:
      type: array
      description: A list of unique supplier identifiers.
      items:
        type: string
      example:
      - '123'
      - '456'
    GetSystemAllocationTemplateBusinessUnitIdResponse:
      type: object
      description: The response payload containing the details of the system's default allocation template.
      required:
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        template_name:
          type: string
          description: The name of the system allocation template.
        open_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers sourced from the Cint open exchange.
          properties:
            exchange_suppliers:
              type: array
              description: A list of all available suppliers on the open exchange.
              items:
                $ref: '#/components/schemas/SupplierInfo'
            exchange_min_percentage:
              type: integer
              description: The minimum percentage of supply that must be sourced from the open exchange.
              example: 0
            exchange_max_percentage:
              type: integer
              description: The maximum percentage of supply that can be sourced from the open exchange.
              example: 100
        private_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers sourced from private exchanges.
          properties:
            blocked_suppliers:
              type: array
              description: A list of suppliers from private exchanges that are explicitly blocked.
              items:
                $ref: '#/components/schemas/SupplierInfo'
    GetSupplyAllocationResponse:
      type: object
      description: The response payload containing the detailed supply allocation for a target group.
      required:
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers sourced from the Cint open exchange.
          required:
          - blocked_suppliers
          - exchange_min_percentage
          - exchange_max_percentage
          - groups
          - exchange_suppliers
          properties:
            blocked_suppliers:
              type: array
              description: A list of open exchange suppliers that are explicitly blocked.
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            exchange_suppliers:
              type: array
              description: A list of all available suppliers on the open exchange.
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            exchange_min_percentage:
              type: integer
              description: The minimum percentage of supply that must be sourced from the open exchange.
              example: 0
              minimum: 0
              maximum: 100
            exchange_max_percentage:
              type: integer
              description: The maximum percentage of supply that can be sourced from the open exchange.
              example: 100
              minimum: 0
              maximum: 100
            groups:
              type: array
              description: A list of specific supplier groups within the open exchange allocation.
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - suppliers
                properties:
                  group_id:
                    type: string
                    description: A unique identifier for the supplier group.
                    example: '1'
                  group_name:
                    type: string
                    description: The display name of the supplier group.
                    example: Test group
                  min_percentage:
                    type: integer
                    description: The minimum percentage of supply traffic allocated to this group.
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    description: The maximum percentage of supply traffic allocated to this group.
                    example: 100
                    minimum: 0
                    maximum: 100
                  suppliers:
                    type: array
                    description: The list of suppliers included in this group.
                    items:
                      $ref: '#/components/schemas/SupplierResponseWithCompletes'
                  conversion_rate:
                    description: The historical conversion rate for this supplier group.
                    $ref: '#/components/schemas/ConversionRate'
                  completes:
                    type: integer
                    description: The total number of completes achieved by this group.
                    example: 400
                  prescreens:
                    type: integer
                    description: The total number of prescreens from this group.
                    example: 4200
                  total_remaining:
                    type: integer
                    description: The number of remaining completes available from this group.
                    example: 1000
        private_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers sourced from private exchanges.
          required:
          - blocked_suppliers
          - groups
          properties:
            blocked_suppliers:
              type: array
              description: A list of suppliers from private exchanges that are explicitly blocked.
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            groups:
              type: array
              description: A list of specific supplier groups within the private exchange allocation.
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier
                properties:
                  group_id:
                    type: string
                    description: A unique identifier for the supplier group.
                    example: '234'
                  group_name:
                    type: string
                    description: The display name of the supplier group.
                    example: Test group
                  min_percentage:
                    type: integer
                    description: The minimum percentage of supply traffic allocated to this group.
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    description: The maximum percentage of supply traffic allocated to this group.
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier:
                    description: The single supplier included in this private exchange group.
                    $ref: '#/components/schemas/SupplierResponseWithCompletes'
                  conversion_rate:
                    description: The historical conversion rate for this supplier group.
                    $ref: '#/components/schemas/ConversionRate'
                  completes:
                    type: integer
                    description: The total number of completes achieved by this group.
                    example: 400
                  prescreens:
                    type: integer
                    description: The total number of prescreens from this group.
                    example: 4200
                  total_remaining:
                    type: integer
                    description: The number of remaining completes available from this group.
                    example: 1000
    OpenExchangeAllocationGroup:
      type: object
      description: An object representing a group of suppliers and their allocation rules within the open exchange.
      properties:
        group_name:
          type: string
          description: The display name of the supplier group.
          example: Test group
        min_percentage:
          type: integer
          description: The minimum percentage of supply traffic that must be allocated to this group.
          example: 0
        max_percentage:
          type: integer
          description: The maximum percentage of supply traffic that can be allocated to this group.
          example: 100
        suppliers:
          type: array
          description: The list of suppliers included in this group.
          items:
            $ref: '#/components/schemas/SupplierInfo'
    SupplyAllocationUpdateRequest:
      type: object
      description: The request body for updating the supply allocation for a target group.
      required:
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers from the Cint open exchange.
          required:
          - blocked_supplier_ids
          - exchange_min_percentage
          - exchange_max_percentage
          - groups
          properties:
            blocked_supplier_ids:
              description: A list of supplier IDs to block from the open exchange.
              $ref: '#/components/schemas/SupplierIds'
            exchange_min_percentage:
              type: integer
              description: The minimum percentage of supply to source from the open exchange.
              example: 0
              minimum: 0
              maximum: 100
            exchange_max_percentage:
              type: integer
              description: The maximum percentage of supply to source from the open exchange.
              example: 100
              minimum: 0
              maximum: 100
            groups:
              type: array
              description: A list of specific supplier groups. To create a new group, omit the `group_id`. To update an existing
                group, include its `group_id`.
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier_ids
                properties:
                  group_id:
                    type: string
                    description: The unique identifier for an existing group you want to update. Omit this field to create
                      a new group.
                    example: '1'
                  group_name:
                    type: string
                    description: The display name of the supplier group.
                    example: Test group
                  min_percentage:
                    type: integer
                    description: The minimum percentage of supply traffic for this group.
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    description: The maximum percentage of supply traffic for this group.
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier_ids:
                    description: A list of supplier IDs to include in this group.
                    $ref: '#/components/schemas/SupplierIds'
        private_exchange_allocations:
          type: object
          description: Defines the allocation rules for suppliers from private exchanges.
          required:
          - blocked_supplier_ids
          - groups
          properties:
            blocked_supplier_ids:
              description: A list of supplier IDs to block from private exchanges.
              $ref: '#/components/schemas/SupplierIds'
            groups:
              type: array
              description: A list of private exchange groups. Each group contains exactly one supplier.
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier_id
                properties:
                  group_id:
                    type: string
                    description: The unique identifier for an existing group you want to update. Omit this field to create
                      a new group.
                    example: '234'
                  group_name:
                    type: string
                    description: The display name of the supplier group.
                    example: Test group
                  min_percentage:
                    type: integer
                    description: The minimum percentage of supply traffic for this group.
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    description: The maximum percentage of supply traffic for this group.
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier_id:
                    type: string
                    description: The unique identifier of the single supplier for this private exchange group.
                    example: '43'
    SupplierInfo:
      type: object
      description: Contains basic information about a supplier.
      properties:
        supplier_id:
          type: string
          description: A unique identifier for the supplier.
          example: '13512'
        supplier_name:
          type: string
          description: The display name of the supplier.
          example: Test supplier
    GetGlobalAllocationTemplateBusinessUnitIdResponse:
      type: object
      required:
      - template_id
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          description: A unique identifier for the global allocation template.
          $ref: '#/components/schemas/TemplateID'
        template_name:
          type: string
          description: The name of the global allocation template.
        open_exchange_allocations:
          description: An object that defines the allocation rules for suppliers sourced from the Cint open exchange.
          $ref: '#/components/schemas/OpenExchangeAllocations'
        private_exchange_allocations:
          type: object
          description: An object that defines the allocation rules for suppliers sourced from private exchanges.
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierInfo'
        last_modified_at:
          description: The date and time when the template was last modified, in ISO 8601 format.
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          description: The unique identifier of the user who last modified the template.
          $ref: '#/components/schemas/UserID'
    ConversionRate:
      type: number
      format: float
      description: The current conversion rate of the target group.
      minimum: 0
      maximum: 1
      example: 0.05
    ETag:
      type: string
      description: The `ETag` header provides a unique identifier that represents the current version state of a particular
        resource.
      example: W/"1234"
    CreateBulkUpdateTargetGroupProjectManagerJobRequest:
      type: object
      description: The request body used to create a job that updates the project manager for multiple target groups.
      properties:
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    GetBulkUpdateTargetGroupProjectManagerJobResponse:
      type: object
      description: The response payload containing the details of a bulk update job.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          description: The date and time when the job was created, in ISO 8601 format.
          example: '2023-01-01T23:00:00.000Z'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        project_manager_id:
          description: The unique identifier of the project manager assigned in this job.
          $ref: '#/components/schemas/UserID'
        updated_target_groups:
          description: A list of target groups that were successfully updated by the job. This object is `null` until the
            job's status is `Completed`.
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          description: A list of target groups that failed to update. This object is `null` until the job's status is `Completed`.
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    TargetGroupExpectedLengthOfInterview:
      type: integer
      format: int32
      description: Expected median length of interview of the Target Group.
      minimum: 1
      maximum: 45
      example: 1
    ReEntryConfiguration:
      description: The re-entry configuration of a Target Group.
      type: object
      required:
      - completes
      - pre_client_survey_processes
      - financial_terms
      - terminates
      - security_failures
      - overquota
      - in_screener
      properties:
        completes:
          allOf:
          - $ref: '#/components/schemas/TargetGroupClientSideReEntryAttribute'
          - description: Whether to allow re-entry from Complete status.
        pre_client_survey_processes:
          allOf:
          - $ref: '#/components/schemas/TargetGroupScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from Pre Client Survey Processes status.
        financial_terms:
          allOf:
          - $ref: '#/components/schemas/TargetGroupScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from Financial Terms status.
        terminates:
          allOf:
          - $ref: '#/components/schemas/TargetGroupClientAndScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from Terminates status.
        security_failures:
          allOf:
          - $ref: '#/components/schemas/TargetGroupClientAndScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from Security Failures status.
        overquota:
          allOf:
          - $ref: '#/components/schemas/TargetGroupClientAndScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from Overquota status.
        in_screener:
          allOf:
          - $ref: '#/components/schemas/TargetGroupClientAndScreenerSideReEntryAttribute'
          - description: Whether to allow re-entry from InScreener status.
    TargetGroupStatisticIssue:
      type: object
      description: Issue connected to a target group statistic
      properties:
        reason:
          $ref: '#/components/schemas/TargetGroupStatisticIssueReason'
        issue_type:
          $ref: '#/components/schemas/TargetGroupStatisticsIssueType'
        suggestions:
          $ref: '#/components/schemas/TargetGroupStatisticsIssuesSuggestions'
      required:
      - suggestions
      - issue_type
    IndustryCode:
      type: string
      description: Uniquely identifies the industry with which this Target Group is associated.
      default: other
      example: politics
    PacingIncrementInterval:
      type: string
      description: |
        Positive duration between increment intervals.  Limited to a subset of ISO-8601 duration in format PnDTnHnMnS (Java Duration without fractional seconds). The duration must be less than 398 days (13 months).
      format: duration
      example: PT12H
    TargetGroupStatus:
      type: string
      enum:
      - draft
      - scheduled
      - live
      - paused
      - completed
      - archived
      description: Target Group Status.
      example: draft
    TargetGroupChangelogItem:
      oneOf:
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `soft_launch_demographics_strictness_percentage_change`.
            enum:
            - soft_launch_demographics_strictness_percentage_change
          new_value:
            description: The new value for the demographics strictness. Could be null if the soft launch assistance is being
              switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchDemographicsStrictnessPercentage'
          old_value:
            description: The old value for the demographics strictness. Could be null if the soft launch assistance was switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchDemographicsStrictnessPercentage'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `soft_launch_filling_goal_percentage_change`.
            enum:
            - soft_launch_filling_goal_percentage_change
          new_value:
            description: The new value for the filling goal. Could be null if the soft launch assistance is being switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchFillingGoalPercentage'
          old_value:
            description: The old value for the filling goal. Could be null if the soft launch assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchFillingGoalPercentage'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `soft_launch_end_date_change`.
            enum:
            - soft_launch_end_date_change
          new_value:
            description: The new value for the soft launch end date. Could be null if the soft launch assistance is being
              switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchEndDate'
          old_value:
            description: The old value for the soft launch end date. Could be null if the soft launch assistance was switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchEndDate'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `soft_launch_assisted_change`.
            enum:
            - soft_launch_assisted_change
          new_value:
            description: The new value for the soft launch assistance. Could be null if soft launch assistance is being switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchAssisted'
          old_value:
            description: The old value for the soft launch assistance. Could be null if soft launch assistance was switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/SoftLaunchAssisted'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pacing_gemini_exposed_target_group_id_change`.
            enum:
            - pacing_gemini_exposed_target_group_id_change
          new_value:
            description: The new value for the exposed target group Id. Could be null if the pacing assistance is being switched
              off or the strategy is being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingGeminiExposedTargetGroupId'
          old_value:
            description: The old value for the exposed target group Id. Could be null if the pacing assistance was switched
              off or the strategy was being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingGeminiExposedTargetGroupId'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pacing_adaptive_increment_interval_change`.
            enum:
            - pacing_adaptive_increment_interval_change
          new_value:
            description: The new value for the increment interval. Could be null if the pacing assistance is being switched
              off or the strategy is being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingIncrementInterval'
          old_value:
            description: The old value for the increment interval. Could be null if the pacing assistance was switched off
              or the strategy was being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingIncrementInterval'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pacing_linear_increment_interval_change`.
            enum:
            - pacing_linear_increment_interval_change
          new_value:
            description: The new value for the increment interval. Could be null if the pacing assistance is being switched
              off or the strategy is being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingIncrementInterval'
          old_value:
            description: The old value for the increment interval. Could be null if the pacing assistance was switched off
              or the strategy was being changed.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingIncrementInterval'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pacing_assistance_change`.
            enum:
            - pacing_assistance_change
          new_value:
            description: The new value for the pacing assistance. Could be null if the pacing assistance is being switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingStrategy'
          old_value:
            description: The old value for the pacing assistance. Could be null if the pacing assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PacingStrategy'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `quota_overlay_balance_fill_change`.
            enum:
            - quota_overlay_balance_fill_change
          new_value:
            description: The new value for balance fill. Could be null if the quota assistance is being switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayBalanceFill'
          old_value:
            description: The old value for balance fill. Could be null if the quota assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayBalanceFill'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `quota_overlay_prevent_overfilling_change`.
            enum:
            - quota_overlay_prevent_overfilling_change
          new_value:
            description: The new value for prevent overfilling. Could be null if the quota assistance is being switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayPreventOverfilling'
          old_value:
            description: The old value for prevent overfilling. Could be null if the quota assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayPreventOverfilling'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `quota_overlay_assisted_change`.
            enum:
            - quota_overlay_assisted_change
          new_value:
            description: The new value for the quota assistance. Could be null if quota assistance is being switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayAssisted'
          old_value:
            description: The old value for the quota assistance. Could be null if quota assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/QuotaOverlayAssisted'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_assistance_change`.
            enum:
            - pricing_assistance_change
          new_value:
            description: The new value for the pricing assistance. Could be null if pricing assistance is being switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PricingAssistance'
          old_value:
            description: The old value for the pricing assistance. Could be null if pricing assistance was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/PricingAssistance'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_dynamic_total_budget_change`.
            enum:
            - pricing_dynamic_total_budget_change
          new_value:
            description: The new value for the total budget. Could be null if fielding assistant pricing is being switched
              off or a maximum CPI is being set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
          old_value:
            description: The old value for the total budget. Could be null if fielding assistant pricing was switched off
              or a maximum CPI was set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_dynamic_maximum_cpi_change`.
            enum:
            - pricing_dynamic_maximum_cpi_change
          new_value:
            description: The new value for the maximum CPI. Could be null if fielding assistant pricing is being switched
              off or a total budget is being set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
          old_value:
            description: The old value for the maximum CPI. Could be null if fielding assistant pricing was switched off or
              a total budget was set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_dynamic_minimum_cpi_change`.
            enum:
            - pricing_dynamic_minimum_cpi_change
          new_value:
            description: The new value for the minimum CPI. Could be null if fielding assistant pricing is being switched
              off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
          old_value:
            description: The old value for the minimum CPI. Could be null if fielding assistant pricing was switched off.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_dynamic_unlock_max_budget_usage_change`.
            enum:
            - pricing_dynamic_unlock_max_budget_usage_change
          new_value:
            description: The new value for the unlock max budget usage. Could be null if fielding assistant pricing is being
              switched off.
            allOf:
            - nullable: true
            - description: Flag controlling whether the maximum budget should be prioritized for max CPI capping
            - type: boolean
          old_value:
            description: The old value for the minimum CPI. Could be null if fielding assistant pricing was switched off.
            allOf:
            - nullable: true
            - description: Flag controlling whether the maximum budget should be prioritized for max CPI capping
            - type: boolean
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `pricing_rate_card_maximum_cpi_change`.
            enum:
            - pricing_rate_card_maximum_cpi_change
          new_value:
            description: The new value for the Rate Card maximum CPI.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
          old_value:
            description: The old value for the Rate Card maximum CPI.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `name_change`.
            enum:
            - name_change
          new_value:
            description: The new value for name.
            allOf:
            - $ref: '#/components/schemas/TargetGroupName'
          old_value:
            description: The old value for name. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupName'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `external_name_change`.
            enum:
            - external_name_change
          new_value:
            description: The new value for name.
            allOf:
            - type: string
              description: An external name of the Target Group.
              example: External Target Group Name
          old_value:
            description: The old value for name. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - type: string
              description: An external name of the Target Group.
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `business_unit_id_change`.
            enum:
            - business_unit_change
          new_value:
            description: The new value for business unit id.
            allOf:
            - $ref: '#/components/schemas/BusinessUnitID'
          old_value:
            description: The old value for business unit id. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/BusinessUnitID'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `project_manager_change`.
            enum:
            - project_manager_change
          new_value:
            description: The new value for project manager.
            allOf:
            - type: object
              properties:
                las_user_id:
                  allOf:
                  - nullable: true
                  - $ref: '#/components/schemas/UserID'
          old_value:
            description: The old value for project manager. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - type: object
              properties:
                las_user_id:
                  allOf:
                  - nullable: true
                  - $ref: '#/components/schemas/UserID'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `filling_goal_change`.
            enum:
            - filling_goal_change
          new_value:
            description: The new value for filling goal.
            allOf:
            - $ref: '#/components/schemas/TargetGroupFillingGoal'
          old_value:
            description: The old value for filling goal. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupFillingGoal'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `expected_length_of_interview_minutes_change`.
            enum:
            - expected_length_of_interview_minutes_change
          new_value:
            description: The new value for length of interview in minutes.
            allOf:
            - $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
          old_value:
            description: The old value for length of interview in minutes. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `expected_incidence_rate_change`.
            enum:
            - expected_incidence_rate_change
          new_value:
            description: The new value for incidence rate.
            allOf:
            - $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
          old_value:
            description: The old value for incidence rate. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `study_type_change`.
            enum:
            - study_type_change
          new_value:
            description: The new value for study type.
            allOf:
            - $ref: '#/components/schemas/StudyTypeCode'
          old_value:
            description: The old value for study type. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/StudyTypeCode'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `industry_lockout_code_change`.
            enum:
            - industry_lockout_code_change
          new_value:
            description: The new value for industry lockout code.
            allOf:
            - $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
          old_value:
            description: The old value for industry lockout code. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `cpi_note_change`.
            enum:
            - cpi_note_change
          new_value:
            description: The new value for cpi note.
            allOf:
            - $ref: '#/components/schemas/TargetGroupCpiNote'
          old_value:
            description: The old value for cpi note. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCpiNote'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `live_url_change`.
            enum:
            - live_url_change
          new_value:
            description: The new value for live url.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupLiveUrl'
          old_value:
            description: The old value for live url. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupLiveUrl'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `test_url_change`.
            enum:
            - test_url_change
          new_value:
            description: The new value for test url.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupTestUrl'
          old_value:
            description: The old value for test url. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupTestUrl'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `collects_pii_change`.
            enum:
            - collects_pii_change
          new_value:
            description: The new value for name.
            allOf:
            - $ref: '#/components/schemas/TargetGroupCollectsPII'
          old_value:
            description: The old value for name. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCollectsPII'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `cpi_change`.
            enum:
            - cpi_change
          new_value:
            description: The new value for name.
            allOf:
            - $ref: '#/components/schemas/TargetGroupCpi'
          old_value:
            description: The old value for name. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCpi'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `status_change`.
            enum:
            - status_change
          new_value:
            description: The new value for the target group status.
            allOf:
            - $ref: '#/components/schemas/TargetGroupStatus'
          old_value:
            description: The old value for the target group status.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupStatus'
          reason_code:
            description: The reason code for the status change.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupStatusChangeReasonCode'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `filling_strategy_change`.
            enum:
            - filling_strategy_change
          new_value:
            description: The new value for the filling strategy.
            allOf:
            - $ref: '#/components/schemas/FillingStrategy'
          old_value:
            description: The old value for the filling strategy.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/FillingStrategy'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `currency_change`.
            enum:
            - currency_change
          new_value:
            description: The new value for the currency.
            allOf:
            - $ref: '#/components/schemas/CurrencyCode'
          old_value:
            description: The old value for the currency.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/CurrencyCode'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `locale_change`.
            enum:
            - locale_change
          new_value:
            description: The new value for the locale.
            allOf:
            - $ref: '#/components/schemas/LocaleCode'
          old_value:
            description: The old value for the locale.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/LocaleCode'
      - type: object
        properties:
          object:
            type: string
            description: Object field to distinguish between different types of change, always is `project_id_change`.
            enum:
            - project_id_change
          new_value:
            description: The new value for the Project ID.
            allOf:
            - $ref: '#/components/schemas/ProjectID'
          old_value:
            description: The old value for the Project ID.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/ProjectID'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `fielding_period_start_date_change`.
            enum:
            - fielding_period_start_date_change
          new_value:
            description: The new value for the fielding period start date.
            allOf:
            - $ref: '#/components/schemas/FieldingRunStartAt'
          old_value:
            description: The old value for the fielding period start date.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/FieldingRunStartAt'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `fielding_period_end_date_change`.
            enum:
            - fielding_period_end_date_change
          new_value:
            description: The new value for the fielding period end date.
            allOf:
            - $ref: '#/components/schemas/FieldingRunEndAt'
          old_value:
            description: The old value for the fielding period end date.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/FieldingRunEndAt'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `user_requested_cpi_change`.
            enum:
            - user_requested_cpi_change
          new_value:
            description: The new value for the user requested CPI.
            allOf:
            - $ref: '#/components/schemas/MonetaryAmount'
          old_value:
            description: The old value for the user requested CPI. Possible to be null.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/MonetaryAmount'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `target_group_customer_reference_number_change`.
            enum:
            - target_group_customer_reference_number_change
          new_value:
            description: The new value for the Target Group Customer Reference Number.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          old_value:
            description: The old value for the Target Group Customer Reference Number.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
      - type: object
        properties:
          object:
            type: string
            description: object field to distinguish between different types of change. always is `private_exchange_cpi_change`.
            enum:
            - private_exchange_cpi_change
          supplier_id:
            type: string
            description: The ID of the supplier for which the private exchange CPI has changed.
            example: '123'
          new_value:
            description: The new value for the private exchange CPI.
            allOf:
            - $ref: '#/components/schemas/TargetGroupCpi'
          old_value:
            description: The old value for the private exchange CPI. Could be null if the old value was not set.
            allOf:
            - nullable: true
            - $ref: '#/components/schemas/TargetGroupCpi'
    LastCompleteDate:
      type: string
      format: date-time
      description: The timestamp the Target Groups latest complete was received (RFC3339 UTC format, 3 fractional digits).
      example: '2023-01-01T23:00:00.000Z'
    FetchTargetGroupResponse:
      type: object
      description: Response object for a target group.
      properties:
        human_readable_id:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
        name:
          $ref: '#/components/schemas/TargetGroupName'
        business_unit_id:
          $ref: '#/components/schemas/BusinessUnitIDAsInteger'
        locale:
          $ref: '#/components/schemas/LocaleCode'
        collects_pii:
          $ref: '#/components/schemas/TargetGroupCollectsPII'
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCode'
        industry_code:
          $ref: '#/components/schemas/IndustryCode'
        pricing_model:
          $ref: '#/components/schemas/TargetGroupPricingModel'
        cost_per_interview:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmount'
        client_cost_per_interview_note:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmount'
        client_id:
          $ref: '#/components/schemas/TargetGroupClientID'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        fielding_specification:
          $ref: '#/components/schemas/TargetGroupFieldingSpecification'
        completes_goal:
          $ref: '#/components/schemas/CompletesGoal'
        expected_length_of_interview_minutes:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        exclusion:
          $ref: '#/components/schemas/TargetGroupExclusionObject'
        industry_lockout_code:
          $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
        live_url:
          $ref: '#/components/schemas/TargetGroupLiveUrl'
        test_url:
          $ref: '#/components/schemas/TargetGroupTestUrl'
        fielding_assistant_assignment:
          $ref: '#/components/schemas/FieldingAssistantModulesAssignment'
        created_at:
          type: string
          format: date-time
          description: The timestamp indicating when the Target Group was created (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        profiling:
          $ref: '#/components/schemas/ProfilingResponse'
        allocations:
          $ref: '#/components/schemas/GetDraftSupplyAllocationGroupResponse'
        re_entry_configuration:
          description: This will only be included in the response if your account has access to this feature. If your account
            does not have access, the response will not contain this field. For more information if you need this behaviour,
            please contact your account manager.
          allOf:
          - $ref: '#/components/schemas/ReEntryConfiguration'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
      example:
        human_readable_id: 9NRV3B9
        name: Test Target Group
        business_unit_id: '3337'
        locale: spa_us
        collects_pii: false
        study_type_code: adhoc
        industry_code: other
        cost_per_interview:
          value: '2.7352'
          currency_code: USD
        client_cost_per_interview_note:
          value: '2.7352'
          currency_code: USD
        project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
        client_id: 1234
        fielding_specification:
          start_at: '2025-06-20T15:11:35.699Z'
          end_at: '2025-06-30T15:11:35.699Z'
        completes_goal: 1500
        expected_length_of_interview_minutes: 2
        expected_incidence_rate: 0.9
        exclusion:
          enabled: true
          list:
          - entity_type: RID
            entity_ids:
            - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
        industry_lockout_code: no_lock_out
        live_url: https://example.com/live
        test_url: https://example.com/test
        fielding_assistant_assignment:
          pricing:
            type: dynamic
            total_budget:
              value: '2.7352'
              currency_code: USD
            maximum_cpi:
              value: '2.7352'
              currency_code: USD
            minimum_cpi:
              value: '2.7352'
              currency_code: USD
          quota_overlay:
            prevent_overfill: true
            balance_fill: true
          pacing:
            type: linear
            increment_interval: string
          soft_launch:
            end_at: '2023-01-01T23:00:00.000Z'
            filling_goal_percentage: 1
            demographics_strictness_percentage: 100
        created_at: '2025-01-01T23:00:00.000Z'
        profiling:
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            id: 01JY5Q1GY7JWX1JHQH8D1W2N9Z
            name: birth gender
            description: ¿Es usted…?
            description_translated: What is your gender?
            quotas_enabled: true
            targets:
            - name: SF-BirthGender-Quota-1
              id: 01JY5V5NDSVHG8S3FX63Y73K3F
              text: Hombre
              text_translated: Male
              conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                name: SF-BirthGender-Quota-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - name: SF-BirthGender-Quota-2
              id: 01JY5V67FAY2N5TB8TSK6HWM2G
              text: Mujer
              text_translated: Female
              conditions:
              - object: selection
                question_id: 43
                option: '2'
              quota:
                name: SF-BirthGender-Quota-2
                completes_goal_percentage: 50.79
                completes_goal: 508
                quota_nominal: 508
          - object: regular
            id: 01JY5RJZ2BXP43NC1KHTJKH9SH
            description: Por favor, indique su edad.
            description_translated: What is your age?
            quotas_enabled: true
            targets:
            - name: SF-Age-15-19
              id: 01JY5V6KT0FSXXXHS8CFST9NWW
              text: 15 to 19
              text_translated: 15 to 19
              conditions:
              - object: range
                question_id: 42
                min: 15
                max: 19
              quota:
                completes_goal_percentage: 28.21
                completes_goal: 282
                quota_nominal: 282
            - name: SF-Age-20-29
              id: 01JY5V6ZPM95SM01DC61QA8PV4
              text: 20 to 29
              text_translated: 20 to 29
              conditions:
              - object: range
                question_id: 42
                min: 20
                max: 29
              quota:
                completes_goal_percentage: 30.79
                completes_goal: 308
                quota_nominal: 308
            - name: SF-Age-30-39
              id: 01JY5V79FGETBEWBB3Q8BZGGQQ
              text: 30 to 39
              text_translated: 30 to 39
              conditions:
              - object: range
                question_id: 42
                min: 30
                max: 39
              quota:
                completes_goal_percentage: 21.4
                completes_goal: 214
                quota_nominal: 214
            - name: SF-Age-40-99
              id: 01JY5V7M90KG77VGR0Y6C6ZYDD
              text: 40 to 99
              text_translated: 40 to 99
              conditions:
              - object: range
                question_id: 42
                min: 40
                max: 99
              quota:
                completes_goal_percentage: 19.6
                completes_goal: 196
                quota_nominal: 196
          - object: regular
            id: 01JY5S4CXZKEYQ2HHBY8AMABCY
            description: ¿Cuál es su código postal?
            description_translated: What is your zip code?
            quotas_enabled: true
            targets:
            - name: SF-ZIP-1
              id: 01JY5V9AXTDM6SHJEAHR9ZB87J
              text: ZIP_1
              text_translated: ZIP_1
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '98001'
                - '98007'
                - '98125'
                - '98258'
              quota:
                completes_goal_percentage: 50
                completes_goal: 500
                quota_nominal: 500
            - name: SF-ZIP-2
              id: 01JY5VAENK83GWHSBP535E13KZ
              text: ZIP_2
              text_translated: ZIP_2
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '78001'
                - '78007'
                - '78125'
                - '78258'
              quota:
                completes_goal_percentage: 50
                completes_goal: 500
                quota_nominal: 500
          - object: blended
            id: 01JY5SFFC6AX91XSRYPRV7TGD4
            name: Number of movies watched near grocery
            description: In the past 2 months, how many movies have you seen in a theater? English - Kosovo, Thinking about
              grocery shopping for your household, about how often do you shop at each of the following stores for groceries?
            description_translated: In the past 2 months, how many movies have you seen in a theater?, Thinking about grocery
              shopping for your household, about how often do you shop at each of the following stores for groceries?
            quotas_enabled: true
            targets:
            - name: SF-Walmart-Movies-1
              id: 01JY5VVGQA2GYHQQ52NR90MQY7
              text: 0 movies, Wal- Mart
              text_translated: 0 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-1
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-2
              id: 01JY5VZ4NR4AK9C98G45DZMQAQ
              text: 1 movies, Wal- Mart
              text_translated: 1 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-2
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-3
              id: 01JY5W0M1BD55GAH6JZNMTB748
              text: 2 movies, Wal- Mart
              text_translated: 2 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-3
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-4
              id: 01JY5W27HMMM64G75NEAKXRMPR
              text: 3 movies, Wal- Mart
              text_translated: 3 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-4
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-5
              id: 01JY5W3XKS1PMC78M298YRY75Z
              text: 4 movies, Wal- Mart
              text_translated: 4 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-5
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-6
              id: 01JY5W56Z2PVS17KAE223SYMWT
              text: 5 movies, Wal- Mart
              text_translated: 5 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-6
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Walmart-Movies-7
              id: 01JY5W6C7QERBXJK94TZAP350Z
              text: 6 movies, Wal- Mart
              text_translated: 6 movies, Wal- Mart
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-7
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-1
              id: 01JY5W93WT3K33YPMTSZCYPTYZ
              text: 0 movies, Target
              text_translated: 0 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-1
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-2
              id: 01JY5WA51A4SE3AXVDDAKBXJ5P
              text: 1 movies, Target
              text_translated: 1 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-2
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-3
              id: 01JY5WB080HA1CZC0532YXSPT6
              text: 2 movies, Target
              text_translated: 2 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-3
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-4
              id: 01JY5WBRGCMEM7B4GD6THCGP91
              text: 3 movies, Target
              text_translated: 3 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-4
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-5
              id: 01JY5WCCC9QJPA8G7E3FYY6W73
              text: 4 movies, Target
              text_translated: 4 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-5
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-6
              id: 01JY5WD1S8N7SYYBK7JBX894Y9
              text: 5 movies, Target
              text_translated: 5 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-6
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-Target-Movies-7
              id: 01JY5WDPWFMX6A6Q4G1FPAM16R
              text: 6 movies, Target
              text_translated: 6 movies, Target
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-7
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-1
              id: 01JY5WEA4MHF8DFXY3YV0DRAN2
              text: 0 movies, CVS
              text_translated: 0 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-1
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-2
              id: 01JY5WFA8Z81MNNZ4PKJMXGE81
              text: 1 movies, CVS
              text_translated: 1 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-2
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-3
              id: 01JY5WG16B26G90MY3TSBSJF0N
              text: 2 movies, CVS
              text_translated: 2 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-3
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-4
              id: 01JY5WGNA26K4RKST2FWH2CNXM
              text: 3 movies, CVS
              text_translated: 3 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-4
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-5
              id: 01JY5WH8AHVXWS76S6S7YNTSX3
              text: 4 movies, CVS
              text_translated: 4 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-5
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-6
              id: 01JY5WHVES46Z3Z8D4S0N8X09R
              text: 5 movies, CVS
              text_translated: 5 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-6
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-CVS-Movies-7
              id: 01JY5WJJVE15JT1SW6ZD56H579
              text: 6 movies, CVS
              text_translated: 6 movies, CVS
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-7
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
            - name: SF-KROGER
              id: 01JY5XWWE35A9B577VCMQ0PT0V
              text: Group 1, Kroger
              text_translated: Group 1, Kroger
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '8'
              quota:
                name: SF-KROGER
                completes_goal_percentage: 2
                completes_goal: 20
                quota_nominal: 20
          - object: regular
            id: 01JY5SZRBCNCYJ96A1CCSDH9D7
            description: ¿Es usted Hispano, Latino o del origen Español?
            description_translated: Are you of Hispanic, Latino, or Spanish origin?
            quotas_enabled: true
            targets:
            - name: Group-1
              id: 01JY5WKJHBTPFBGK21VGK3YSK0
              text: Group-1
              text_translated: Group-1
              conditions:
              - object: selection
                question_id: 47
                option: '4'
              - object: selection
                question_id: 47
                option: '5'
              - object: selection
                question_id: 47
                option: '6'
              - object: selection
                question_id: 47
                option: '7'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - name: Guatemala
              id: 01JY5WMBJQBMHHBBVXNR5BRKNS
              text: Guatemala
              text_translated: Guatemala
              conditions:
              - object: selection
                question_id: 47
                option: '8'
              quota:
                completes_goal_percentage: 50.79
                completes_goal: 508
                quota_nominal: 508
          - object: regular
            id: 01JY5T5QZRVCY69TK00BWHSXRZ
            description: ¿Cuál es su raza?
            description_translated: What is your race?
            quotas_enabled: false
            targets:
            - name: Asiático - Chino
              id: 01JY5WNZGMFCAMQTJV6J3QFQAB
              text: Asiático - Chino
              text_translated: Chinese
              conditions:
              - object: selection
                question_id: 113
                option: '5'
            - name: Asiático - Coreano
              id: 01JY5WQD67B8273R1MR3CMKPBW
              text: Asiático - Coreano
              text_translated: Korean
              conditions:
              - object: selection
                question_id: 113
                option: '8'
            - name: Asiático - Filipino
              id: 01JY5WRH7PYZA7P776CX8G6P73
              text: Asiático - Filipino
              text_translated: Filipino
              conditions:
              - object: selection
                question_id: 113
                option: '6'
            - name: Asiático - Indio
              id: 01JY5WSD5BYXZ85J3JJDK4JDSE
              text: Asiático - Indio
              text_translated: Indian
              conditions:
              - object: selection
                question_id: 113
                option: '4'
          - object: regular
            id: 01KNNMHHA3WX7ZJA5YBTBN8VNA
            name: STANDARD_RELATIONSHIP
            description: ¿Cuál es su estado?
            description_translated: What is your relationship status?
            quotas_enabled: false
            targets:
            - id: 01KNNMJ725HPFGAWN5PRGFX85Z
              text: Soltero/a, nunca he estado casado/a
              text_translated: Single, never married
              conditions:
              - object: selection
                question_id: 632
                option: '1'
            - id: 01KNNMJV51XJ88TF7ESTRPQBGK
              text: Casado/a
              text_translated: Married
              conditions:
              - object: selection
                question_id: 632
                option: '2'
            - id: 01KNNMKBS9EFZJZ3TS32C86VNB
              text: Separado/a, divorciado/a o viudo/a
              text_translated: Separated, divorced or widowed
              conditions:
              - object: selection
                question_id: 632
                option: '3'
            - id: 01KNNMKTSJS0TZ9A7684Y1KQHB
              text: Pareja de hecho / sala de estar con alguien
              text_translated: Domestic partnership/living with someone
              conditions:
              - object: selection
                question_id: 632
                option: '4'
            - id: 01KNNMMAEJ0P6JC0PRD3QX92QJ
              text: Prefiero no contestar
              text_translated: Prefer not to answer
              conditions:
              - object: selection
                question_id: 632
                option: '5'
            - id: 01KNNMMR8JV9WP5QFDMQX00VJ8
              text: Comprometido/ a
              text_translated: Engaged
              conditions:
              - object: selection
                question_id: 632
                option: '6'
          - object: regular
            id: 01KNNMPGCJCKD4AP031Y386AHX
            name: STANDARD_EDUCATION
            description: ¿Cuál es su nivel de educación?
            description_translated: What is the highest level of education you have completed?
            quotas_enabled: true
            targets:
            - id: 01KNNMQ06AWZWBV9TRDP8Q1B30
              name: Group 1
              text: Group 1
              text_translated: Group 1
              conditions:
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - id: 01KNNMQGRBJYCPDYHTR378M971
              text: Educacion primaria
              text_translated: Middle School - Grades 4 - 8
              conditions:
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMQYK6AXFRKRNN756HG3SM
              text: Educacion Secundaria Obligatoria
              text_translated: Completed some high school
              conditions:
              - object: selection
                question_id: 633
                option: '3'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMRBJH9E42AEJ2FSCJWACF
              text: Bachillerato
              text_translated: High school graduate
              conditions:
              - object: selection
                question_id: 633
                option: '4'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMRT6KKPT9AGPQRVPF4RQQ
              text: Formación profesional
              text_translated: Other post high school vocational training
              conditions:
              - object: selection
                question_id: 633
                option: '5'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMS4NQCQ6K8MY6W5NNZVRC
              text: Enseñanzas de régimen especial (Idiomas, artísticas y/o deportivas)
              text_translated: Completed some college, but no degree
              conditions:
              - object: selection
                question_id: 633
                option: '6'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMTD8VPYXQ42TYMBW86EQH
              text: Grado
              text_translated: Associate Degree
              conditions:
              - object: selection
                question_id: 633
                option: '7'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMTXBRBM0XRKP4PK9YQ2HB
              text: Diplomatura, magisterio, Arquitecto Técnico o Ingeniero Técnico
              text_translated: College Degree (such as B.A., B.S.)
              conditions:
              - object: selection
                question_id: 633
                option: '8'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMVEPR1NAGGN8GCM4RDDST
              text: Licenciatura, Arquitectura o Ingeniero superior
              text_translated: Completed some graduate, but no degree
              conditions:
              - object: selection
                question_id: 633
                option: '9'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMVVY2E9Y79810TXQ45B4A
              text: Master
              text_translated: Masters degree
              conditions:
              - object: selection
                question_id: 633
                option: '10'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMWA2HFAEZPSWMSK9F9E7D
              text: Doctorado
              text_translated: Doctorate degree
              conditions:
              - object: selection
                question_id: 633
                option: '11'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - id: 01KNNMWNRTRR51F0Z4QAF21Z66
              text: Ninguna de las anteriores
              text_translated: None of the Above
              conditions:
              - object: selection
                question_id: 633
                option: '12'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
          - object: blended
            intent: control
            id: 01KNNMXBPT5C6EMHMMCQD116YB
            name: Control Quota 1
            description: ¿Cuál es su estado?, ¿Cuál es su nivel de educación?
            description_translated: What is your relationship status?, What is the highest level of education you have completed?
            quotas_enabled: true
            targets:
            - id: 01KNNMXS1YBSZ1KDBM7WPXY4SB
              name: Quota 1
              text: Soltero/a, nunca he estado casado/a, Educación infantil, Educacion primaria
              text_translated: Single, never married, 3rd Grade or less, Middle School - Grades 4 - 8
              conditions:
              - object: selection
                question_id: 632
                option: '1'
                condition_name: Soltero/a, nunca he estado casado/a
                condition_name_translated: Single, never married
              - object: selection
                question_id: 633
                option: '1'
                condition_name: Educación infantil
                condition_name_translated: 3rd Grade or less
              - object: selection
                question_id: 633
                option: '2'
                condition_name: Educacion primaria
                condition_name_translated: Middle School - Grades 4 - 8
              quota:
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
        allocations:
          open_exchange_allocations:
            blocked_supplier_ids:
            - '123'
            - '456'
            exchange_min_percentage: 0
            exchange_max_percentage: 100
            groups:
            - group_name: Open group 1
              min_percentage: 0
              max_percentage: 100
              suppliers:
              - '123'
              - '456'
          private_exchange_allocations:
            blocked_supplier_ids:
            - '980'
            groups:
            - group_name: Private group 1
              min_percentage: 0
              max_percentage: 100
              supplier_id: '1966'
        re_entry_configuration:
          completes:
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          pre_client_survey_processes:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          financial_terms:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          terminates:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          security_failures:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          overquota:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          in_screener:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
        links:
          test_client_survey: https://survey.someexamplesurveylink.com/s3/7189709/Example-survey?RID={RID}
    EarningsPerClickPerMinute:
      type: object
      description: Earnings per Click divided by median length of interview in minutes.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    RateCard:
      type: object
      description: The CPI is derived from the rate card (also known as the pricing table), using the Estimated Length of
        Interview (LOI) and Incidence Rate (IR) of your Target Group. It will include the Initial Volume Discount if your
        Project qualifies for one.
      required:
      - country_code
      - token
      - rate_card_data
      properties:
        country_code:
          type: string
          description: String representing the country code.
          example: US
        token:
          type: string
          description: Rate card token.
          example: UkNUPUNPVU5UUlk6UkNWPTE2OkNDPVVT
        rate_card_data:
          $ref: '#/components/schemas/RateCardData'
    FillingStrategyUpdateResponse:
      type: object
      description: Response for filling strategy update.
      required:
      - filling_strategy
      properties:
        filling_strategy:
          $ref: '#/components/schemas/FillingStrategy'
    ProfileTemplateIdWithProfileAdjustmentType:
      type: object
      required:
      - template_id
      - profile_adjustment_type
      properties:
        template_id:
          type: string
          description: "The unique ID of the template. \nThis can be fetched from getProfileTemplate endpoint.\n"
          format: uuid
          example: 9284f2dc-421c-4f4a-ac68-6591c8fa4a38
        profile_adjustment_type:
          type: string
          description: '`percentage` will be the only profile adjustment type supported if template_id is provided.'
          enum:
          - percentage
          example: percentage
    ProfileTemplateId:
      type: object
      properties:
        template_id:
          type: string
          description: "The unique ID of the template. \nThis can be fetched from getProfileTemplate endpoint.\n"
          format: uuid
          example: 9284f2dc-421c-4f4a-ac68-6591c8fa4a38
    TargetGroupReEntryAttributeConfig:
      description: An object that defines whether to allow re-entry for either the current target group, or for other target
        groups in the same project. However, only those other target groups will be considered, which have the "project-level
        exclusion" setting enabled for themselves, and only as long as the current target group also has "project-level exclusion"
        enabled.
      type: object
      required:
      - allow_for_current_target_group
      - allow_for_other_target_groups
      properties:
        allow_for_current_target_group:
          type: boolean
          example: true
        allow_for_other_target_groups:
          type: boolean
          example: true
    UpdateDraftTargetGroupRequest:
      type: object
      description: Request body for updating a target group in draft status.
      required:
      - name
      - business_unit_id
      - locale
      - project_manager_id
      - fielding_specification
      - fielding_assistant_assignment
      - completes_goal
      - expected_length_of_interview_minutes
      - expected_incidence_rate
      - allocations
      - collects_pii
      properties:
        project_manager_id:
          description: The project manager
          allOf:
          - $ref: '#/components/schemas/UserID'
        fielding_specification:
          $ref: '#/components/schemas/TargetGroupFieldingSpecification'
        business_unit_id:
          $ref: '#/components/schemas/BusinessUnitID'
        collects_pii:
          $ref: '#/components/schemas/TargetGroupCollectsPII'
        cost_per_interview:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
        client_cost_per_interview_note:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
        exclusion:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/TargetGroupExclusionObject'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        expected_length_of_interview_minutes:
          allOf:
          - $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        completes_goal:
          allOf:
          - $ref: '#/components/schemas/CompletesGoal'
        client_id:
          $ref: '#/components/schemas/TargetGroupClientID'
        industry_code:
          $ref: '#/components/schemas/IndustryCodeWithReference'
        industry_lockout_code:
          nullable: true
          allOf:
          - $ref: '#/components/schemas/TargetGroupIndustryLockoutCodeWithReference'
        live_url:
          nullable: true
          maxLength: 3000
          allOf:
          - $ref: '#/components/schemas/TargetGroupLiveUrl'
        locale:
          $ref: '#/components/schemas/LocaleCodeWithReference'
        name:
          $ref: '#/components/schemas/TargetGroupName'
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCodeWithReference'
        test_url:
          nullable: true
          maxLength: 3000
          allOf:
          - $ref: '#/components/schemas/TargetGroupTestUrl'
        fielding_assistant_assignment:
          $ref: '#/components/schemas/FieldingAssistantModulesAssignmentRequestModel'
        profiling:
          $ref: '#/components/schemas/ProfilingRequest'
        allocations:
          $ref: '#/components/schemas/UpdateDraftSupplyAllocationGroupRequest'
        re_entry_configuration:
          description: This field is only applicable if your account has access to this feature. If your account does not
            have access, including this field in the request will result in a 403 Forbidden error. If you don't require this
            behaviour or don't have access to the feature, simply omit this field. For more information if you need this behaviour,
            please contact your account manager.
          allOf:
          - $ref: '#/components/schemas/ReEntryConfiguration'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
      example:
        name: Test Target Group
        business_unit_id: '3337'
        locale: spa_us
        collects_pii: false
        study_type_code: adhoc
        industry_code: other
        cost_per_interview:
          value: '2.7352'
          currency_code: USD
        client_cost_per_interview_note:
          value: '2.7352'
          currency_code: USD
        project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
        client_id: 1234
        fielding_specification:
          start_at: '2025-06-20T15:11:35.699Z'
          end_at: '2025-06-30T15:11:35.699Z'
        completes_goal: 1500
        expected_length_of_interview_minutes: 2
        expected_incidence_rate: 0.9
        exclusion:
          enabled: true
          list:
          - entity_type: RID
            entity_ids:
            - 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
        industry_lockout_code: no_lock_out
        live_url: https://example.com/live
        test_url: https://example.com/test
        fielding_assistant_assignment:
          pricing:
            type: dynamic
            total_budget:
              value: '2.7352'
              currency_code: USD
            maximum_cpi:
              value: '2.7352'
              currency_code: USD
            minimum_cpi:
              value: '2.7352'
              currency_code: USD
          quota_overlay:
            prevent_overfill: true
            balance_fill: true
          pacing:
            type: linear
            increment_interval: string
          soft_launch:
            end_at: '2023-01-01T23:00:00.000Z'
            filling_goal_percentage: 1
            demographics_strictness_percentage: 100
        profiling:
          template_id: e198c976-ce22-436d-acc1-95aa318cc54d
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            name: birth gender
            quotas_enabled: true
            targets:
            - name: SF-BirthGender-1
              conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                name: SF-BirthGender-Quota-1
                completes_goal_percentage: 49.21
            - name: SF-BirthGender-2
              conditions:
              - object: selection
                question_id: 43
                option: '2'
              quota:
                name: SF-BirthGender-Quota-2
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: true
            targets:
            - name: SF-Age-1
              conditions:
              - object: range
                question_id: 42
                min: 15
                max: 19
              quota:
                completes_goal_percentage: 28.21
            - conditions:
              - object: range
                question_id: 42
                min: 20
                max: 29
              quota:
                completes_goal_percentage: 30.79
            - name: SF-Age-2
              conditions:
              - object: range
                question_id: 42
                min: 30
                max: 39
              quota:
                completes_goal_percentage: 21.4
            - name: SF-Age-3
              conditions:
              - object: range
                question_id: 42
                min: 40
                max: 99
              quota:
                completes_goal_percentage: 19.6
          - object: regular
            quotas_enabled: true
            targets:
            - name: SF-Zip-1
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '98001'
                - '98007'
                - '98125'
                - '98258'
              quota:
                completes_goal_percentage: 50
            - name: SF-Zip-2
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '78001'
                - '78007'
                - '78125'
                - '78258'
              quota:
                completes_goal_percentage: 50
          - object: blended
            name: Number of movies watched near grocery
            quotas_enabled: true
            targets:
            - name: SF-Walmart-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-1
                completes_goal_percentage: 2
            - name: SF-Walmart-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-2
                completes_goal_percentage: 2
            - name: SF-Walmart-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-3
                completes_goal_percentage: 2
            - name: SF-Walmart-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-4
                completes_goal_percentage: 2
            - name: SF-Walmart-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-5
                completes_goal_percentage: 2
            - name: SF-Walmart-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-6
                completes_goal_percentage: 2
            - name: SF-Walmart-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-7
                completes_goal_percentage: 2
            - name: SF-Target-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-1
                completes_goal_percentage: 2
            - name: SF-Target-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-2
                completes_goal_percentage: 2
            - name: SF-Target-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-3
                completes_goal_percentage: 2
            - name: SF-Target-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-4
                completes_goal_percentage: 2
            - name: SF-Target-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-5
                completes_goal_percentage: 2
            - name: SF-Target-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-6
                completes_goal_percentage: 2
            - name: SF-Target-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-7
                completes_goal_percentage: 2
            - name: SF-CVS-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-1
                completes_goal_percentage: 2
            - name: SF-CVS-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-2
                completes_goal_percentage: 2
            - name: SF-CVS-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-3
                completes_goal_percentage: 2
            - name: SF-CVS-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-4
                completes_goal_percentage: 2
            - name: SF-CVS-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-5
                completes_goal_percentage: 2
            - name: SF-CVS-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-6
                completes_goal_percentage: 2
            - name: SF-CVS-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-7
                completes_goal_percentage: 2
            - name: SF-KROGER
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '8'
              quota:
                name: SF-KROGER
                completes_goal_percentage: 2
          - object: regular
            quotas_enabled: true
            targets:
            - name: Group-1
              conditions:
              - object: selection
                question_id: 47
                option: '4'
              - object: selection
                question_id: 47
                option: '5'
              - object: selection
                question_id: 47
                option: '6'
              - object: selection
                question_id: 47
                option: '7'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
            - name: SF-Ungrouped-1
              conditions:
              - object: selection
                question_id: 47
                option: '8'
              quota:
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: false
            targets:
            - name: Target-1
              conditions:
              - object: selection
                question_id: 113
                option: '5'
            - name: Target-2
              conditions:
              - object: selection
                question_id: 113
                option: '8'
            - name: Target-3
              conditions:
              - object: selection
                question_id: 113
                option: '6'
            - name: Target-4
              conditions:
              - object: selection
                question_id: 113
                option: '4'
          - object: regular
            quotas_enabled: false
            targets:
            - conditions:
              - object: selection
                question_id: 632
                option: '1'
            - conditions:
              - object: selection
                question_id: 632
                option: '2'
            - conditions:
              - object: selection
                question_id: 632
                option: '3'
            - conditions:
              - object: selection
                question_id: 632
                option: '4'
            - conditions:
              - object: selection
                question_id: 632
                option: '5'
            - conditions:
              - object: selection
                question_id: 632
                option: '6'
          - object: regular
            quotas_enabled: true
            targets:
            - name: Group 1
              conditions:
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - conditions:
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '3'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '4'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '5'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '6'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '7'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '8'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '9'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '10'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - conditions:
              - object: selection
                question_id: 633
                option: '11'
              quota:
                completes_goal_percentage: 12.0
                completes_goal: 12
                quota_nominal: 12
            - conditions:
              - object: selection
                question_id: 633
                option: '12'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
          - object: blended
            intent: control
            name: Control Quota 1
            quotas_enabled: true
            targets:
            - name: Quota 1
              conditions:
              - object: selection
                question_id: 632
                option: '1'
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
        allocations:
          open_exchange_allocations:
            blocked_supplier_ids:
            - '123'
            - '456'
            exchange_min_percentage: 0
            exchange_max_percentage: 100
            groups:
            - group_name: Open group 1
              min_percentage: 0
              max_percentage: 100
              suppliers:
              - '123'
              - '456'
          private_exchange_allocations:
            blocked_supplier_ids:
            - '980'
            groups:
            - group_name: Private group 1
              min_percentage: 0
              max_percentage: 100
              supplier_id: '1966'
        re_entry_configuration:
          completes:
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          pre_client_survey_processes:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          financial_terms:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          terminates:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          security_failures:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          overquota:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
          in_screener:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
    RespondentAnalysisStatusCodes:
      type: object
      description: Respondent analysis grouped status codes and counts.
      properties:
        status:
          type: string
          description: Status code.
          example: Complete, Terminate, In Survey, Overquota
        label:
          type: string
          description: Label of status code.
          example: Returned as Complete
        description:
          type: string
          description: Description of status code.
          example: Respondent completed the survey
        count:
          type: integer
          description: Count of status code.
          example: 100
    CostPerInterviewUpdateResponse:
      type: object
      description: Response for cost per interview update.
      required:
      - target_group_cpi
      properties:
        target_group_cpi:
          $ref: '#/components/schemas/TargetGroupCpi'
    TargetGroupLinks:
      type: object
      properties:
        links:
          type: object
          description: Contains external Target Group related links.
          properties:
            test_screener:
              type: string
              format: uri
              example: https://survey.someexamplesurveylink.com/s3/7189709/Example-survey?RID={RID}
              description: The test link into the study that the respondent gets redirected to upon qualification.
            test_client_survey:
              type: string
              format: uri
              example: https://survey.someexamplesurveylink.com/s3/7189709/Example-survey?RID={RID}
              description: The link into the study that the respondent gets redirected to upon qualification.
    TargetGroupChangeType:
      type: string
      enum:
      - business_unit_change
      - collects_pii_change
      - cpi_change
      - cpi_note_change
      - currency_change
      - expected_incidence_rate_change
      - expected_length_of_interview_minutes_change
      - external_name_change
      - fielding_period_end_date_change
      - fielding_period_start_date_change
      - filling_goal_change
      - filling_strategy_change
      - industry_lockout_code_change
      - live_url_change
      - locale_change
      - name_change
      - pacing_adaptive_increment_interval_change
      - pacing_assistance_change
      - pacing_gemini_exposed_target_group_id_change
      - pacing_linear_increment_interval_change
      - pricing_assistance_change
      - pricing_dynamic_maximum_cpi_change
      - pricing_dynamic_minimum_cpi_change
      - pricing_dynamic_total_budget_change
      - pricing_dynamic_unlock_max_budget_usage_change
      - pricing_rate_card_boost_cpi_change
      - pricing_rate_card_maximum_cpi_change
      - project_id_change
      - project_manager_change
      - quota_overlay_assisted_change
      - quota_overlay_balance_fill_change
      - quota_overlay_prevent_overfilling_change
      - soft_launch_assisted_change
      - soft_launch_demographics_strictness_percentage_change
      - soft_launch_end_date_change
      - soft_launch_filling_goal_percentage_change
      - status_change
      - study_type_change
      - target_group_customer_reference_number_change
      - test_url_change
      - user_requested_cpi_change
      - private_exchange_cpi_change
    PredictedRateCard:
      type: object
      description: The CPI is derived from the rate card (also known as the pricing table), using the Estimated Length of
        Interview (LOI) and Incidence Rate (IR) of your Target Group. It will include the Initial Volume Discount if your
        Project qualifies for one. This object represents a "predicted" rate card, meaning that this is the latest version
        of the rate card, which would apply to the Target Group if it were to be launched now.
      required:
      - country_code
      - predicted_rate_card_token
      - predicted_rate_card
      properties:
        country_code:
          type: string
          description: String representing the country code.
          example: US
        predicted_rate_card_token:
          type: string
          description: Rate card token.
          example: UkNUPUNPVU5UUlk6UkNWPTE2OkNDPVVT
        predicted_rate_card:
          $ref: '#/components/schemas/RateCardData'
    SoftLaunchFillingGoalPercentage:
      type: integer
      description: The percentage of the full filling goal to collect during the soft launch phase.
      minimum: 0
      maximum: 100
      example: 25
    ExclusionEntityType:
      type: string
      description: Indicates the entity type of the excluded element. Possible values are `RID` (Respondent ID) or `CID` (Access
        Respondent GUID)
      enum:
      - RID
      - CID
      example: RID
    CreateDraftTargetGroupRequest:
      type: object
      description: Request body for creating a target group in draft status.
      required:
      - name
      - business_unit_id
      - locale
      - project_manager_id
      - fielding_specification
      - fielding_assistant_assignment
      - completes_goal
      - collects_pii
      - expected_length_of_interview_minutes
      - expected_incidence_rate
      - allocations
      properties:
        name:
          $ref: '#/components/schemas/TargetGroupName'
        business_unit_id:
          $ref: '#/components/schemas/BusinessUnitIDWithReference'
        locale:
          $ref: '#/components/schemas/LocaleCodeWithReference'
        collects_pii:
          $ref: '#/components/schemas/TargetGroupCollectsPII'
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCodeWithReference'
        industry_code:
          $ref: '#/components/schemas/IndustryCodeWithReference'
        cost_per_interview:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
        client_cost_per_interview_note:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        client_id:
          $ref: '#/components/schemas/TargetGroupClientID'
        fielding_specification:
          $ref: '#/components/schemas/TargetGroupFieldingSpecification'
        completes_goal:
          $ref: '#/components/schemas/CompletesGoal'
        expected_length_of_interview_minutes:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        exclusion:
          $ref: '#/components/schemas/TargetGroupExclusionObject'
        industry_lockout_code:
          $ref: '#/components/schemas/TargetGroupIndustryLockoutCodeWithReference'
        live_url:
          nullable: true
          maxLength: 3000
          allOf:
          - $ref: '#/components/schemas/TargetGroupLiveUrl'
        test_url:
          nullable: true
          maxLength: 3000
          allOf:
          - $ref: '#/components/schemas/TargetGroupTestUrl'
        fielding_assistant_assignment:
          $ref: '#/components/schemas/FieldingAssistantModulesAssignmentRequestModel'
        profiling:
          $ref: '#/components/schemas/ProfilingRequest'
        allocations:
          $ref: '#/components/schemas/CreateDraftAllocationSpecificationGroupRequest'
        re_entry_configuration:
          description: This field is only applicable if your account has access to this feature. If your account does not
            have access, including this field in the request will result in a 403 Forbidden error. If you don't require this
            behaviour or don't have access to the feature, simply omit this field. For more information if you need this behaviour,
            please contact your account manager.
          allOf:
          - $ref: '#/components/schemas/ReEntryConfiguration'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
      example:
        name: Test Target Group
        business_unit_id: '3337'
        locale: spa_us
        collects_pii: false
        study_type_code: adhoc
        industry_code: other
        cost_per_interview:
          value: '2.7352'
          currency_code: USD
        client_cost_per_interview_note:
          value: '2.7352'
          currency_code: USD
        project_manager_id: b551326b-ac9d-4d32-8823-4f025787dab9
        fielding_specification:
          start_at: '2025-06-20T15:11:35.699Z'
          end_at: '2025-06-30T15:11:35.699Z'
        completes_goal: 1500
        expected_length_of_interview_minutes: 2
        expected_incidence_rate: 0.9
        exclusion:
          enabled: true
        industry_lockout_code: no_lock_out
        live_url: https://example.com/live
        test_url: https://example.com/test
        fielding_assistant_assignment:
          pricing:
            type: dynamic
            total_budget:
              value: '2.7352'
              currency_code: USD
            maximum_cpi:
              value: '2.7352'
              currency_code: USD
            minimum_cpi:
              value: '2.7352'
              currency_code: USD
          quota_overlay:
            prevent_overfill: true
            balance_fill: true
          pacing:
            type: linear
            increment_interval: string
          soft_launch:
            end_at: '2023-01-01T23:00:00.000Z'
            filling_goal_percentage: 1
            demographics_strictness_percentage: 100
        profiling:
          profile_adjustment_type: percentage
          profiles:
          - object: regular
            name: birth gender
            template_id: e198c976-ce22-436d-acc1-95aa318cc54d
            quotas_enabled: true
            targets:
            - name: MY-QUOTANAME-FOR-BIRTHGENDER-Q1
              conditions:
              - object: selection
                question_id: 43
                option: '1'
              quota:
                name: SF-BirthGender-Quota-1
                completes_goal_percentage: 49.21
            - name: MY-QUOTANAME-FOR-BIRTHGENDER-Q2
              conditions:
              - object: selection
                question_id: 43
                option: '2'
              quota:
                name: SF-BirthGender-Quota-2
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: true
            targets:
            - name: Target-1
              conditions:
              - object: range
                question_id: 42
                min: 15
                max: 19
              quota:
                completes_goal_percentage: 28.21
            - name: Target-2
              conditions:
              - object: range
                question_id: 42
                min: 20
                max: 29
              quota:
                completes_goal_percentage: 30.79
            - name: Target-3
              conditions:
              - object: range
                question_id: 42
                min: 30
                max: 39
              quota:
                completes_goal_percentage: 21.4
            - name: Target-4
              conditions:
              - object: range
                question_id: 42
                min: 40
                max: 99
              quota:
                completes_goal_percentage: 19.6
          - object: regular
            quotas_enabled: true
            targets:
            - name: SF-Zip-1
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '98001'
                - '98007'
                - '98125'
                - '98258'
              quota:
                completes_goal_percentage: 50
            - name: SF-Zip-2
              conditions:
              - object: open_ended
                question_id: 45
                allow_all_values: false
                open_ended_values:
                - '78001'
                - '78007'
                - '78125'
                - '78258'
              quota:
                completes_goal_percentage: 50
          - object: blended
            name: Number of movies watched near grocery
            quotas_enabled: true
            targets:
            - name: SF-Walmart-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-1
                completes_goal_percentage: 2
            - name: SF-Walmart-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-2
                completes_goal_percentage: 2
            - name: SF-Walmart-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-3
                completes_goal_percentage: 2
            - name: SF-Walmart-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-4
                completes_goal_percentage: 2
            - name: SF-Walmart-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-5
                completes_goal_percentage: 2
            - name: SF-Walmart-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-6
                completes_goal_percentage: 2
            - name: SF-Walmart-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '1'
              quota:
                name: SF-Walmart-7
                completes_goal_percentage: 2
            - name: SF-Target-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-1
                completes_goal_percentage: 2
            - name: SF-Target-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-2
                completes_goal_percentage: 2
            - name: SF-Target-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-3
                completes_goal_percentage: 2
            - name: SF-Target-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-4
                completes_goal_percentage: 2
            - name: SF-Target-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-5
                completes_goal_percentage: 2
            - name: SF-Target-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-6
                completes_goal_percentage: 2
            - name: SF-Target-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '2'
              quota:
                name: SF-Target-7
                completes_goal_percentage: 2
            - name: SF-CVS-1
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-1
                completes_goal_percentage: 2
            - name: SF-CVS-2
              conditions:
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-2
                completes_goal_percentage: 2
            - name: SF-CVS-3
              conditions:
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-3
                completes_goal_percentage: 2
            - name: SF-CVS-4
              conditions:
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-4
                completes_goal_percentage: 2
            - name: SF-CVS-5
              conditions:
              - object: selection
                question_id: 157
                option: '5'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-5
                completes_goal_percentage: 2
            - name: SF-CVS-6
              conditions:
              - object: selection
                question_id: 157
                option: '6'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-6
                completes_goal_percentage: 2
            - name: SF-CVS-7
              conditions:
              - object: selection
                question_id: 157
                option: '7'
              - object: selection
                question_id: 63
                option: '7'
              quota:
                name: SF-CVS-7
                completes_goal_percentage: 2
            - name: SF-KROGER
              conditions:
              - object: selection
                question_id: 157
                option: '1'
              - object: selection
                question_id: 157
                option: '2'
              - object: selection
                question_id: 157
                option: '3'
              - object: selection
                question_id: 157
                option: '4'
              - object: selection
                question_id: 63
                option: '8'
              quota:
                name: SF-KROGER
                completes_goal_percentage: 2
          - object: regular
            quotas_enabled: true
            targets:
            - name: Group-1
              conditions:
              - object: selection
                question_id: 47
                option: '4'
              - object: selection
                question_id: 47
                option: '5'
              - object: selection
                question_id: 47
                option: '6'
              - object: selection
                question_id: 47
                option: '7'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
            - name: SF-Ungrouped-1
              conditions:
              - object: selection
                question_id: 47
                option: '8'
              quota:
                completes_goal_percentage: 50.79
          - object: regular
            quotas_enabled: false
            targets:
            - name: MY-QUOTANAME-TARGET-1
              conditions:
              - object: selection
                question_id: 113
                option: '5'
            - name: MY-QUOTANAME-TARGET-2
              conditions:
              - object: selection
                question_id: 113
                option: '8'
            - name: MY-QUOTANAME-TARGET-3
              conditions:
              - object: selection
                question_id: 113
                option: '6'
            - name: MY-QUOTANAME-TARGET-4
              conditions:
              - object: selection
                question_id: 113
                option: '4'
          - object: regular
            name: STANDARD_RELATIONSHIP
            description: ¿Cuál es su estado?
            description_translated: What is your relationship status?
            quotas_enabled: false
            targets:
            - text: Soltero/a, nunca he estado casado/a
              text_translated: Single, never married
              conditions:
              - object: selection
                question_id: 632
                option: '1'
            - text: Casado/a
              text_translated: Married
              conditions:
              - object: selection
                question_id: 632
                option: '2'
            - text: Separado/a, divorciado/a o viudo/a
              text_translated: Separated, divorced or widowed
              conditions:
              - object: selection
                question_id: 632
                option: '3'
            - text: Pareja de hecho / sala de estar con alguien
              text_translated: Domestic partnership/living with someone
              conditions:
              - object: selection
                question_id: 632
                option: '4'
            - text: Prefiero no contestar
              text_translated: Prefer not to answer
              conditions:
              - object: selection
                question_id: 632
                option: '5'
            - text: Comprometido/ a
              text_translated: Engaged
              conditions:
              - object: selection
                question_id: 632
                option: '6'
          - object: regular
            name: STANDARD_EDUCATION
            description: ¿Cuál es su nivel de educación?
            description_translated: What is the highest level of education you have completed?
            quotas_enabled: true
            targets:
            - name: Group 1
              text: Group 1
              text_translated: Group 1
              conditions:
              - object: selection
                question_id: 633
                option: '1'
              - object: selection
                question_id: 633
                option: '2'
              quota:
                name: Group-1
                completes_goal_percentage: 49.21
                completes_goal: 492
                quota_nominal: 492
            - text: Educacion primaria
              text_translated: Middle School - Grades 4 - 8
              conditions:
              - object: selection
                question_id: 633
                option: '2'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Educacion Secundaria Obligatoria
              text_translated: Completed some high school
              conditions:
              - object: selection
                question_id: 633
                option: '3'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Bachillerato
              text_translated: High school graduate
              conditions:
              - object: selection
                question_id: 633
                option: '4'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Formación profesional
              text_translated: Other post high school vocational training
              conditions:
              - object: selection
                question_id: 633
                option: '5'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Enseñanzas de régimen especial (Idiomas, artísticas y/o deportivas)
              text_translated: Completed some college, but no degree
              conditions:
              - object: selection
                question_id: 633
                option: '6'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Grado
              text_translated: Associate Degree
              conditions:
              - object: selection
                question_id: 633
                option: '7'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Diplomatura, magisterio, Arquitecto Técnico o Ingeniero Técnico
              text_translated: College Degree (such as B.A., B.S.)
              conditions:
              - object: selection
                question_id: 633
                option: '8'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Licenciatura, Arquitectura o Ingeniero superior
              text_translated: Completed some graduate, but no degree
              conditions:
              - object: selection
                question_id: 633
                option: '9'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Master
              text_translated: Masters degree
              conditions:
              - object: selection
                question_id: 633
                option: '10'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Doctorado
              text_translated: Doctorate degree
              conditions:
              - object: selection
                question_id: 633
                option: '11'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
            - text: Ninguna de las anteriores
              text_translated: None of the Above
              conditions:
              - object: selection
                question_id: 633
                option: '12'
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
          - object: blended
            intent: control
            name: Control Quota 1
            description: ¿Cuál es su estado?, ¿Cuál es su nivel de educación?
            description_translated: What is your relationship status?, What is the highest level of education you have completed?
            quotas_enabled: true
            targets:
            - name: Quota 1
              text: Soltero/a, nunca he estado casado/a, Educación infantil, Educacion primaria
              text_translated: Single, never married, 3rd Grade or less, Middle School - Grades 4 - 8
              conditions:
              - object: selection
                question_id: 632
                option: '1'
                condition_name: Soltero/a, nunca he estado casado/a
                condition_name_translated: Single, never married
              - object: selection
                question_id: 633
                option: '1'
                condition_name: Educación infantil
                condition_name_translated: 3rd Grade or less
              - object: selection
                question_id: 633
                option: '2'
                condition_name: Educacion primaria
                condition_name_translated: Middle School - Grades 4 - 8
              quota:
                completes_goal_percentage: 0.0
                completes_goal: 0
                quota_nominal: 0
        allocations:
          open_exchange_allocations:
            blocked_supplier_ids: null
            exchange_min_percentage: 0
            exchange_max_percentage: 100
            groups: null
          private_exchange_allocations:
            blocked_supplier_ids:
            - '980'
            groups:
            - group_name: Private group 1
              min_percentage: 0
              max_percentage: 100
              supplier_id: '1966'
        re_entry_configuration:
          completes:
            client_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          pre_client_survey_processes:
            screener_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          financial_terms:
            screener_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          terminates:
            screener_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
            client_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          security_failures:
            screener_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
            client_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          overquota:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
          in_screener:
            screener_side:
              allow_for_current_target_group: true
              allow_for_other_target_groups: true
            client_side:
              allow_for_current_target_group: false
              allow_for_other_target_groups: false
    CostPerInterviewUpdateRequest:
      type: object
      description: Cost per interview update request.
      required:
      - target_group_cpi
      properties:
        target_group_cpi:
          $ref: '#/components/schemas/TargetGroupCpiRequestModel'
    TargetGroupTestUrl:
      description: 'The test link into the study that the respondent gets redirected to upon qualification.  Note:  This url
        must be HTTPS.'
      type: string
      example: https://example.com/test
    TargetGroupClientCpiMonetaryAmountRequestModel:
      description: This property can only be defined on a Target Group with dynamic pricing. This property must not be defined
        on Target Groups with rate card pricing.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmountRequestModel'
    TargetGroupStatusChangeReasonCode:
      type: string
      description: The reason code for the status change.
      enum:
      - max_cpi_limit_reached
      - live_respondent_unique_codes_exhausted
      - past_scheduled_end_date
      - total_completes_reached
      - past_soft_launch_end_date
      - no_completes_in_several_days
      - no_completes_after_many_prescreens
      - high_median_loi
      - excessive_redirect_errors
      - excessive_encryption_errors
      - excessive_qualification_setup_errors
      - high_drop_rates
      - low_epc
      - high_client_side_termination_rate
      example: max_cpi_limit_reached
    PacingGeminiExposedTargetGroupId:
      type: string
      format: ulid
      description: A 128 bit ULID. 26 characters, consisting of 10 characters representing the timestamp at the time of creation,
        and 16 characters for randomness.
      example: 01HC2K97AV64A8KSJT7GPH4ZC7
    TargetGroupCpiNote:
      description: CPI note is mainly used for information purposes to track internal margin. This property can only be defined
        on a Target Group with dynamic pricing.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    TargetGroupScreenerSideReEntryAttribute:
      description: An attribute of the re-entry configuration that applies on the screener side.
      type: object
      required:
      - screener_side
      properties:
        screener_side:
          $ref: '#/components/schemas/TargetGroupReEntryAttributeConfig'
    EarningsPerClick:
      type: object
      description: Current Cost per Interview multiplied by completes so far, divided by the number of entrants.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    DraftTargetGroupLinks:
      type: object
      properties:
        links:
          type: object
          description: Contains external Target Group related links.
          properties:
            test_client_survey:
              type: string
              format: uri
              example: https://survey.someexamplesurveylink.com/s3/7189709/Example-survey?RID={RID}
              description: The link into the study that the respondent gets redirected to upon qualification.
    ComputeTargetGroupTransitionsRequest:
      type: object
      description: Request body for computing target group transitions.
      properties:
        search_string:
          $ref: '#/components/schemas/TargetGroupSearchString'
        filters:
          $ref: '#/components/schemas/ComputeTargetGroupTransitionsFilters'
        included_target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
        excluded_target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    PricingAssistance:
      description: Assist the pricing of the target group.
      type: string
      enum:
      - dynamic
      example: dynamic
    ProfilingDraftResponse:
      type: object
      required:
      - profile_adjustment_type
      - profiles
      properties:
        profile_adjustment_type:
          type: string
          description: |
            The method used to specify quota targets. Must be one of:
              - **percentage**: specify a proportion of the total as a decimal with up to two decimal places (e.g. `12.34` for 12.34%).
              - **nominal**: specify an exact number of completes as an integer.
          example: percentage
          enum:
          - percentage
          - nominal
        profiles:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/DraftRegularProfileV3'
    BoundRateCard:
      type: object
      description: The CPI is derived from the rate card (also known as the pricing table), using the Estimated Length of
        Interview (LOI) and Incidence Rate (IR) of your Target Group. It will include the Initial Volume Discount if your
        Project qualifies for one. This object represents a "bound" rate card, meaning that this is the version of the rate
        card which was active at the time when the Target Group was launched, and which is now permanently associated with
        the Target Group.
      required:
      - country_code
      - bound_rate_card_token
      - bound_rate_card
      properties:
        country_code:
          type: string
          description: String representing the country code.
          example: US
        bound_rate_card_token:
          type: string
          description: Rate card token.
          example: UkNUPUNPVU5UUlk6UkNWPTE2OkNDPVVT
        bound_rate_card:
          $ref: '#/components/schemas/RateCardData'
    TargetGroupOverviewByTargetGroupId:
      type: object
      description: Basic attributes and statistics of a Target Group.
      required:
      - account_id
      - project_id
      - project_name
      - target_group_name
      - project_manager_id
      - progress
      - pricing_model
      - is_pricing_restricted
      - current_cost_per_interview
      - current_cost
      - status
      - country_code
      - language_code
      - conversion_rate
      - drop_off_rate
      - incidence_rate
      - median_length_of_interview_seconds
      - created_at
      properties:
        account_id:
          $ref: '#/components/schemas/AccountID'
        project_id:
          $ref: '#/components/schemas/ProjectID'
        project_name:
          type: string
          description: Name of the Project which contains the Target Group.
          example: Example Project
        target_group_name:
          type: string
          description: Name of the Target Group.
          example: Example Target Group
        human_readable_id:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        progress:
          $ref: '#/components/schemas/TargetGroupProgress'
        pricing_model:
          $ref: '#/components/schemas/TargetGroupPricingModel'
        is_pricing_restricted:
          type: boolean
          description: True when there are target group CPI restrictions in place from fielding assistant, otherwise false.
          example: true
        current_cost_per_interview:
          description: Currently active Cost per Interview for the Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        average_cost_per_interview:
          description: Average Cost per Interview for the Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        current_cost:
          description: The total cost of the completes collected so far in this Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        status:
          $ref: '#/components/schemas/TargetGroupStatus'
        country_code:
          type: string
          description: String representing country code.
          example: US
        language_code:
          type: string
          description: String representing language code.
          example: ENG
        conversion_rate:
          $ref: '#/components/schemas/ConversionRate'
        drop_off_rate:
          $ref: '#/components/schemas/DropOffRate'
        incidence_rate:
          $ref: '#/components/schemas/IncidenceRate'
        median_length_of_interview_seconds:
          $ref: '#/components/schemas/MedianLengthOfInterviewSeconds'
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCode'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
        created_at:
          type: string
          format: date-time
          description: Date and time when the target group was created (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
    TargetGroupClientAndScreenerSideReEntryAttribute:
      description: An attribute of the re-entry configuration that applies on both the client side and screener side.
      type: object
      required:
      - client_side
      - screener_side
      properties:
        client_side:
          $ref: '#/components/schemas/TargetGroupReEntryAttributeConfig'
        screener_side:
          $ref: '#/components/schemas/TargetGroupReEntryAttributeConfig'
    IndustryCodeWithReference:
      type: string
      description: Uniquely identifies the industry with which this Target Group is associated. Get a list of all available
        industries [here](#tag/Definitions/operation/get_industries).
      default: other
      example: politics
    TargetGroupClientCpiMonetaryAmount:
      description: This property can only be defined on a Target Group with dynamic pricing. This property must not be defined
        on Target Groups with rate card pricing.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    ProfilingDraftRequestWithTemplate:
      type: object
      required:
      - template_id
      - profile_adjustment_type
      - profiles
      properties:
        template_id:
          type: string
          description: "The ID of the profile template. \nIf the template is already applied but the request body has different\
            \ template id \nthen all the profiles associated to previous template will be deleted. \n"
          format: uuid
          example: 9284f2dc-421c-4f4a-ac68-6591c8fa4a38
        profile_adjustment_type:
          type: string
          description: |
            The method used to specify quota targets. Must be one of:
              - **percentage**: specify a proportion of the total as a decimal with up to two decimal places (e.g. `12.34` for 12.34%).
          example: percentage
          enum:
          - percentage
        profiles:
          type: array
          description: "The profiles to be added to the Target Group. \n**Constraint**: If using a template, if any template\
            \ profile shares the same question as \na profile in the profiles array, the profile in the array takes precedence\
            \ over the template profile.\n"
          minItems: 1
          items:
            $ref: '#/components/schemas/RequestDraftRegularProfileV3'
    TargetGroupStatisticsIssueType:
      type: string
      description: The type of issue.
      enum:
      - warning
      - error
      example: warning
    QuotaOverlayAssisted:
      description: Assists the target group with quota overlay functionality.
      type: boolean
      example: true
    ExclusionEntityID:
      type: string
      description: Indicates the entity identifier of the excluded element
      example: 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
    LocaleCodeWithReference:
      type: string
      description: Unique text code of the locale. Get a list of all available locales [here](#tag/Definitions/operation/get_locales).
      example: eng_us
    UpdateDraftSupplyAllocationGroupRequest:
      type: object
      required:
      - open_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          required:
          - blocked_supplier_ids
          - groups
          - exchange_min_percentage
          - exchange_max_percentage
          properties:
            blocked_supplier_ids:
              $ref: '#/components/schemas/SupplierIds'
            exchange_min_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 0
            exchange_max_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 100
            groups:
              type: array
              required:
              - group_id
              - group_name
              - min_percentage
              - max_percentage
              - suppliers
              items:
                type: object
                properties:
                  group_id:
                    description: id of group.
                    type: string
                    example: '123'
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Open group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  suppliers:
                    $ref: '#/components/schemas/SupplierIds'
        private_exchange_allocations:
          type: object
          required:
          - blocked_supplier_ids
          - groups
          properties:
            blocked_supplier_ids:
              $ref: '#/components/schemas/SupplierIds'
            groups:
              type: array
              required:
              - group_id
              - group_name
              - min_percentage
              - max_percentage
              - supplier_id
              items:
                type: object
                properties:
                  group_id:
                    description: id of group.
                    type: string
                    example: '123'
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Private group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  supplier_id:
                    type: string
                    example: '43'
    TargetGroupExpectedIncidenceRate:
      type: number
      format: float
      description: Expected incidence rate of the Target Group.
      minimum: 0
      maximum: 1
      multipleOf: 0.01
      example: 0.05
    TargetGroupStatisticsIssuesSuggestion:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ReasonCode'
        description:
          type: string
          example: Lower the quota.
      required:
      - code
      - description
    TargetGroupOverview:
      type: object
      description: Basic attributes and statistics of a Target Group.
      required:
      - project_name
      - target_group_name
      - project_manager_id
      - progress
      - pricing_model
      - is_pricing_restricted
      - current_cost_per_interview
      - current_cost
      - status
      - country_code
      - language_code
      - conversion_rate
      - drop_off_rate
      - incidence_rate
      - created_at
      properties:
        project_name:
          type: string
          description: Name of the Project which contains the Target Group.
          example: Example Project
        target_group_name:
          type: string
          description: Name of the Target Group.
          example: Example Target Group
        human_readable_id:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        progress:
          $ref: '#/components/schemas/TargetGroupProgress'
        pricing_model:
          $ref: '#/components/schemas/TargetGroupPricingModel'
        is_pricing_restricted:
          type: boolean
          description: True when there are target group CPI restrictions in place from fielding assistant, otherwise false.
          example: true
        current_cost_per_interview:
          description: Currently active Cost per Interview for the Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        average_cost_per_interview:
          description: Average Cost per Interview for the Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        current_cost:
          description: The total cost of the completes collected so far in this Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        status:
          $ref: '#/components/schemas/TargetGroupStatus'
        country_code:
          type: string
          description: String representing country code.
          example: US
        language_code:
          type: string
          description: String representing language code.
          example: ENG
        conversion_rate:
          $ref: '#/components/schemas/ConversionRate'
        drop_off_rate:
          $ref: '#/components/schemas/DropOffRate'
        incidence_rate:
          $ref: '#/components/schemas/IncidenceRate'
        median_length_of_interview_seconds:
          allOf:
          - $ref: '#/components/schemas/MedianLengthOfInterviewSeconds'
          - nullable: true
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCode'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
        created_at:
          type: string
          format: date-time
          description: Date and time when the target group was created (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
    TargetGroupIndustryLockoutCode:
      type: string
      description: Blocks respondents during a certain timeframe based on whether they've taken a separate Target Group in
        the same industry.
      example: past_30_days
    ExclusionEntityList:
      type: object
      properties:
        entity_type:
          $ref: '#/components/schemas/ExclusionEntityType'
        entity_ids:
          type: array
          items:
            $ref: '#/components/schemas/ExclusionEntityID'
    TargetGroupSearchString:
      type: string
      description: |
        Search string to match against. The string will be used to search based on the target group's name and/or the target group's human readable ID. Supports partial matching for target group name and human readable ID. Also supports English language stemmed matching for target group name.
      example: My Target Gr
    TargetGroupsListItem:
      type: object
      description: An individual Target Group in a list of Target Groups, with basic information and statistics.
      required:
      - id
      - name
      - locale
      - status
      - created_at
      - statistics
      - project_manager_id
      properties:
        id:
          type: string
          pattern: ^[0-9A-Z]{26}$
          description: ULID identifier of the Target Group.
          example: 01BX5ZZKBKACTAV9WEVGEMMVS1
        human_readable_id:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
        name:
          type: string
          description: Name of the Target Group.
          example: Example Target Group
        highlighted_name:
          type: string
          description: The name of the target group, with parts that matched the search string being highlighted between HTML
            emphasis tags. If there was no search string, or the search string matched this target group based on the identifier
            (and not based on the name), this property will be omitted.
          example: <em>Example</em> Target Group
        project_manager_id:
          type: string
          format: uuid
          example: 96C65204-90C2-4DCB-9393-B8226DD50C76
          description: Project manager ID.
        exclusion:
          $ref: '#/components/schemas/TargetGroupExclusionObject'
        locale:
          $ref: '#/components/schemas/LocaleCode'
        status:
          $ref: '#/components/schemas/TargetGroupStatus'
        created_at:
          type: string
          format: date-time
          description: The timestamp the Target Group was created at (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        updated_at:
          type: string
          format: date-time
          description: The timestamp the Target Group was updated at (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        statistics:
          $ref: '#/components/schemas/TargetGroupStatistics'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
    TargetGroupStatisticsIssuesSuggestions:
      type: array
      description: List of suggestions how to remedy the issues on the statistic.
      items:
        $ref: '#/components/schemas/TargetGroupStatisticsIssuesSuggestion'
    TargetGroupPerformance:
      type: object
      description: Display key statistics about performance of a target group.
      required:
      - entrants
      - prescreens
      - completes
      properties:
        entrants:
          type: integer
          description: Number of entrants.
          example: 100
        prescreens:
          type: integer
          description: Number of prescreens.
          example: 100
        completes:
          type: integer
          description: Number of completes.
          example: 100
        completes_cost:
          $ref: '#/components/schemas/MonetaryAmount'
        first_complete:
          type: string
          format: date-time
          description: First complete date.
          example: '2023-01-01T23:00:00.000Z'
        last_complete:
          type: string
          format: date-time
          description: Last complete date.
          example: '2023-01-01T23:00:00.000Z'
        incidence_rate:
          $ref: '#/components/schemas/IncidenceRate'
        drop_off_rate:
          $ref: '#/components/schemas/DropOffRate'
        conversion_rate:
          $ref: '#/components/schemas/ConversionRate'
        respondent_analysis:
          type: object
          description: Respondent analysis grouped status codes and counts.
          properties:
            live:
              type: array
              items:
                $ref: '#/components/schemas/RespondentAnalysisStatusCodes'
            test:
              type: array
              items:
                $ref: '#/components/schemas/RespondentAnalysisStatusCodes'
    FillingStrategy:
      type: string
      enum:
      - automated
      - prescreens
      - completes
      description: Target group filling strategy.
      example: completes
    MedianLengthOfInterviewSeconds:
      type: integer
      format: int32
      description: Current median length of interview of the Target Group in seconds.
      minimum: 0
      example: 1
    StatisticsIssuesArray:
      type: array
      description: List of issues.
      items:
        $ref: '#/components/schemas/TargetGroupStatisticIssue'
    StudyTypeCode:
      type: string
      description: Uniquely identifies the Study Type that indicates the Target Group limits and purpose.
      default: adhoc
      example: diary
    QuotaOverlayPreventOverfilling:
      type: boolean
      description: Applies a translation to prescreen quota calculation type, that prevents overfills.
      example: true
    TargetGroupPricingModel:
      type: string
      description: Denotes the pricing model setting for the target group based on the business unit.
      enum:
      - rate_card
      - dynamic
      default: dynamic
    TargetGroupClientSideReEntryAttribute:
      description: An attribute of the re-entry configuration that applies on the client side.
      type: object
      required:
      - client_side
      properties:
        client_side:
          $ref: '#/components/schemas/TargetGroupReEntryAttributeConfig'
    RateCardData:
      type: object
      properties:
        data_format:
          type: string
          enum:
          - loi_ir_matrix
          example: loi_ir_matrix
        length_of_interview_minutes:
          type: array
          minItems: 1
          items:
            type: number
            format: int32
            minimum: 1
          example:
          - 3
          - 6
          - 10
          - 15
          - 20
          - 25
          - 30
          - 35
          - 40
          - 45
          - 50
          - 55
          - 60
        incidence_rate_percents:
          type: array
          minItems: 1
          items:
            type: number
            format: int32
            minimum: 0
            maximum: 100
          example:
          - 75
          - 50
          - 30
          - 20
          - 15
          - 10
          - 7
          - 5
          - 3
          - 1
        pricing_table_currency_code:
          type: string
          description: Represents the currency code for the pricing table.
          example: USD
        pricing_table_data:
          type: array
          minItems: 1
          items:
            type: array
            minItems: 1
            items:
              type: number
              format: int32
              minimum: 0
          example:
          - - 32
            - 373
            - 495
            - 67
            - 898
            - 1248
            - 1895
            - 277
            - 347
            - 4695
          - - 374
            - 427
            - 549
            - 724
            - 952
            - 1302
            - 1949
            - 2824
            - 3524
            - 4749
          - - 434
            - 487
            - 609
            - 784
            - 1012
            - 1362
            - 2009
            - 2884
            - 3584
            - 4809
          - - 494
            - 547
            - 669
            - 844
            - 1072
            - 1422
            - 2069
            - 2944
            - 3644
            - 4869
          - - 554
            - 607
            - 729
            - 904
            - 1132
            - 1482
            - 2129
            - 3004
            - 3704
            - 4929
          - - 614
            - 667
            - 789
            - 964
            - 1192
            - 1542
            - 2189
            - 3064
            - 3764
            - 4989
          - - 739
            - 791
            - 914
            - 1089
            - 1316
            - 1666
            - 2314
            - 3189
            - 3889
            - 5114
          - - 849
            - 902
            - 1024
            - 1199
            - 1427
            - 1777
            - 2424
            - 3299
            - 3999
            - 5224
          - - 972
            - 1024
            - 1147
            - 1322
            - 1549
            - 1899
            - 2547
            - 3422
            - 4122
            - 5347
          - - 1056
            - 1108
            - 1231
            - 1406
            - 1633
            - 1983
            - 2631
            - 3506
            - 4206
            - 5431
          - - 114
            - 1192
            - 1315
            - 149
            - 1717
            - 2067
            - 2715
            - 359
            - 429
            - 5515
          - - 1224
            - 1276
            - 1399
            - 1574
            - 1801
            - 2151
            - 2799
            - 3674
            - 4374
            - 5599
          - - 1308
            - 136
            - 1483
            - 1658
            - 1885
            - 2235
            - 2883
            - 3758
            - 4458
            - 5683
    SoftLaunchDemographicsStrictnessPercentage:
      type: integer
      description: Controls how strictly should the soft launch demographics distribution follow the distribution in the full
        launch. A setting of 100% aims to fully match the demography, while 0% allows any distribution.
      minimum: 0
      maximum: 100
      example: 5
    TargetGroupCpiRequestModel:
      description: Target group CPI.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmountRequestModel'
    TargetGroupDetails:
      type: object
      description: Contains Target Group details.
      required:
      - id
      - name
      - account_name
      - business_unit_id
      - project_manager_id
      - study_type_code
      - industry_code
      - locale
      - completes_goal
      - expected_length_of_interview_minutes
      - expected_incidence_rate
      - industry_lockout_code
      - collects_pii
      - created_at
      properties:
        id:
          type: string
          pattern: ^[0-9A-Z]{26}$
          description: ULID identifier of the Target Group.
          example: 01BX5ZZKBKACTAV9WEVGEMMVS1
        human_readable_id:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
        name:
          $ref: '#/components/schemas/TargetGroupName'
        account_name:
          type: string
          description: Name of the Account to which the Target Group belongs to.
          example: Acme Inc.
        business_unit_id:
          $ref: '#/components/schemas/BusinessUnitID'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        study_type_code:
          $ref: '#/components/schemas/StudyTypeCode'
        industry_code:
          $ref: '#/components/schemas/IndustryCode'
        locale:
          $ref: '#/components/schemas/LocaleCode'
        completes_goal:
          $ref: '#/components/schemas/CompletesGoal'
        expected_length_of_interview_minutes:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        industry_lockout_code:
          $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
        client_cost_per_interview_note:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmount'
        client_id:
          $ref: '#/components/schemas/TargetGroupClientID'
        collects_pii:
          $ref: '#/components/schemas/TargetGroupCollectsPII'
        live_url:
          $ref: '#/components/schemas/TargetGroupLiveUrl'
        test_url:
          $ref: '#/components/schemas/TargetGroupTestUrl'
        created_at:
          type: string
          format: date-time
          description: The timestamp indicating when the Target Group was created (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
    CreateDraftAllocationSpecificationGroupRequest:
      description: Create allocation specification request object. Allowing you to set which suppliers are blocked, how the
        allocated suppliers are distributed into groups, and what their minimum and maximum percentages are.
      type: object
      required:
      - open_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          required:
          - blocked_supplier_ids
          - exchange_max_percentage
          - exchange_min_percentage
          - groups
          properties:
            blocked_supplier_ids:
              $ref: '#/components/schemas/SupplierIds'
            exchange_min_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 0
            exchange_max_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 100
            groups:
              type: array
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - suppliers
                properties:
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Open group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  suppliers:
                    $ref: '#/components/schemas/SupplierIds'
        private_exchange_allocations:
          type: object
          required:
          - blocked_supplier_ids
          - groups
          properties:
            blocked_supplier_ids:
              $ref: '#/components/schemas/SupplierIds'
            groups:
              type: array
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier_id
                properties:
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Private group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  supplier_id:
                    type: string
                    example: '123'
    ReasonCode:
      type: string
      example: '2131'
    ProfilingDraftResponseWithTemplate:
      type: object
      required:
      - template_id
      - profile_adjustment_type
      - profiles
      properties:
        template_id:
          type: string
          description: "The ID of the profile template. This field will be reference to template used. \n"
          format: uuid
          example: 9284f2dc-421c-4f4a-ac68-6591c8fa4a38
        profile_adjustment_type:
          type: string
          description: |
            The method used to specify quota targets. Must be one of:
              - **percentage**: specify a proportion of the total as a decimal with up to two decimal places (e.g. `12.34` for 12.34%).
              - **nominal**: specify an exact number of completes as an integer.
          example: percentage
          enum:
          - percentage
          - nominal
        profiles:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/DraftRegularProfileV3'
    QuotaOverlayBalanceFill:
      type: boolean
      description: Does not let quotas fill faster than the others within the same demography.
      example: true
    TargetGroupStatisticIssueReason:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ReasonCode'
        description:
          type: string
          example: Statistic outside of normal range.
      required:
      - code
      - description
    TargetGroupFillingGoal:
      type: integer
      format: int32
      minimum: 0
      description: Indicates the new value for filling goal.
      example: 750
    StudyTypeCodeWithReference:
      type: string
      description: Uniquely identifies the Study Type that indicates the Target Group limits and purpose. Get a list of all
        available Study Types [here](#tag/Definitions/operation/get_study_types).
      default: adhoc
      example: diary
    GetDraftSupplyAllocationGroupResponse:
      type: object
      properties:
        open_exchange_allocations:
          type: object
          properties:
            exchange_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponse'
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponse'
            exchange_min_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 0
            exchange_max_percentage:
              type: integer
              minimum: 0
              maximum: 100
              example: 100
            groups:
              type: array
              items:
                type: object
                properties:
                  group_id:
                    description: id of group.
                    type: string
                    example: '123'
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Open group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  suppliers:
                    type: array
                    items:
                      $ref: '#/components/schemas/SupplierResponse'
        private_exchange_allocations:
          type: object
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponse'
            groups:
              type: array
              items:
                type: object
                properties:
                  group_id:
                    description: id of group.
                    type: string
                    example: '123'
                  group_name:
                    description: only unique group names are valid.
                    type: string
                    example: Private group 1
                  min_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 0
                  max_percentage:
                    type: integer
                    minimum: 0
                    maximum: 100
                    example: 100
                  supplier:
                    $ref: '#/components/schemas/SupplierResponse'
    DraftRegularProfileV3:
      oneOf:
      - title: Regular Profile
        type: object
        required:
        - object
        - id
        - quotas_enabled
        - name
        - description
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - regular
            example: regular
          id:
            type: string
            description: The unique identifier for the profile.
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          name:
            type: string
            description: The name of the profile.
            example: HISPANIC
          description:
            type: string
            description: A short summary of the profile. Summary language will be based on the target group's locale.
            example: Are you of Hispanic, Latino, or Spanish origin?
          description_translated:
            type: string
            description: A short summary of the profile by default english language.
            example: Are you of Hispanic, Latino, or Spanish origin?
          targets:
            $ref: '#/components/schemas/TargetGroupsDraftQuotaV3'
      - title: Blended Profile
        type: object
        required:
        - object
        - id
        - quotas_enabled
        - name
        - description
        - targets
        properties:
          object:
            type: string
            description: Object field to distinguish the operation.
            enum:
            - blended
            example: blended
          intent:
            type: string
            description: The intent field is used to further specify the purpose of the blended profile, which can be either
              'interlock' or 'control'. If not provided, it will default to 'interlock'. This field allows for differentiation
              between blended profiles that are intended for interlocking purposes and those that are intended for control
              purposes.
            enum:
            - interlock
            - control
            example: interlock
          id:
            type: string
            description: The unique identifier for the profile.
            format: ULID
            example: 01JQM2QN1FDN1WZA3JZX639MAR
          quotas_enabled:
            type: boolean
            description: Flag indicating if quotas are enabled.
            example: true
          name:
            type: string
            description: The name of the profile.
            example: HISPANIC
          description:
            type: string
            description: A short summary of the profile. Summary language will be based on the target group's locale.
            example: Are you of Hispanic, Latino, or Spanish origin?
          description_translated:
            type: string
            description: A short summary of the profile by default english language.
            example: Are you of Hispanic, Latino, or Spanish origin?
          targets:
            $ref: '#/components/schemas/TargetGroupsDraftQuotaV3'
    TargetGroupCollectedCompletesAggregatedIntervals:
      type: object
      required:
      - timestamp
      - count
      properties:
        timestamp:
          type: string
          format: date-time
          description: The timestamp that represents the time when the aggregated interval ends. RFC3339 UTC format, 3 fractional
            digits.
          example: '2023-01-01T23:00:00.000Z'
        count:
          type: integer
          description: The count of collected completes by the end of the aggregated interval.
    TargetGroupChangelogBatch:
      type: object
      properties:
        id:
          type: string
          description: ID of the batch of changes applied.
        occurred_at:
          type: string
          description: Timestamp of when the batch of changes were applied.
        user:
          description: The details of the user who caused the batch of changes.
          oneOf:
          - type: object
            properties:
              type:
                type: string
                description: object field to distinguish between different types of users. always is `las_user`.
                enum:
                - las_user
              las_user_id:
                description: The LAS id of the user causing the change.
                allOf:
                - $ref: '#/components/schemas/UserID'
          - type: object
            properties:
              type:
                type: string
                description: object field to distinguish between different types of users. always is `system_marketplace_user`.
                enum:
                - system_marketplace_user
          - type: object
            properties:
              type:
                type: string
                description: object field to distinguish between different types of users. always is `system_user`.
                enum:
                - system_user
        changes:
          type: array
          description: |
            An array of changelog items containing the new and old value for a property. While both the
            new and the old value are nullable, at any given time at most one of them will be null.
          items:
            $ref: '#/components/schemas/TargetGroupChangelogItem'
    TargetGroupsDraftQuotaV3:
      type: array
      minItems: 1
      items:
        $ref: '#/components/schemas/TargetGroupsDraftQuotaDetailsV3'
    TargetGroupCollectsPII:
      type: boolean
      description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
      example: true
    BusinessUnitIDWithReference:
      type: string
      description: Determines the currency used for the Target Group. Get a list of all available business units [here](#tag/Definitions/operation/get_business_units).
      example: '1234'
    TargetGroupsDraftQuotaDetailsV3:
      oneOf:
      - title: Targets with conditions and quota
        type: object
        description: Profile target with condition or conditions with quota.
        required:
        - id
        - conditions
        - quota
        properties:
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          name:
            type: string
            description: The name of the target.
            example: Target Name
          text:
            type: string
            description: Text of the used for display purpose.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/ResponseProfileConditionsV3'
          quota:
            type: object
            required:
            - completes_goal_percentage
            - quota_nominal
            - completes_goal
            properties:
              name:
                type: string
                description: Name of the quota used for tracking. This will be deprecated, functionally replaced by the `target.name`
                  field one layer up in the contract.
                deprecated: true
                example: SF_Quota_12
              completes_goal_percentage:
                type: number
                multipleOf: 0.01
                minimum: 0
                maximum: 100
                description: Percentage of total completes goal quota applied to this condition(s).
                example: 40
              quota_nominal:
                type: integer
                minimum: 0
                description: Total desired quota nominal applied to this condition(s).
                example: 40
              completes_goal:
                type: integer
                minimum: 0
                description: Total desired completes goal applied to this condition(s).
                example: 40
      - title: Targets with conditions and no quota
        type: object
        description: Profile target with condition or conditions with no quota.
        required:
        - id
        - conditions
        properties:
          name:
            type: string
            description: Name of the target group.
            example: MY-QUOTANAME-TARGET-1
          id:
            type: string
            description: The unique identifier for the quota.
            format: ULID
            example: 01JQMD8R7F0VW45KPWQ7WYNCFP
          text:
            type: string
            description: Text of the used for display purpose.
            example: Condition Text
          text_translated:
            type: string
            description: Translated text of the condition used for display purpose.
            example: Condition Text
          conditions:
            type: array
            description: List of conditions for the quota.
            minItems: 1
            items:
              $ref: '#/components/schemas/ResponseProfileConditionsV3'
    CreatedDraftTargetGroupResponse:
      type: object
      description: Response for creating draft target Group.
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/TargetGroupID'
    SoftLaunchEndDate:
      type: string
      format: date-time
      description: The soft launch will be finished at this date, and the target group paused regardless of the fill.
      example: '2023-01-01T23:00:00.000Z'
    TargetGroupsList:
      type: object
      description: Paginated list of Target Groups.
      required:
      - target_groups
      - url
      - has_more
      properties:
        url:
          type: string
          description: URL which produced this list (without query parameters).
          example: /accounts/543587/projects/01BX5ZZKBKACTAV9WEVGEMMVRZ/target-groups
        has_more:
          type: boolean
          description: If there are further results to be shown using the returned next cursor or previous cursor, this will
            be true, otherwise false.
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        target_groups:
          type: array
          description: Array of Target Group list items, representing the results of the query.
          items:
            $ref: '#/components/schemas/TargetGroupsListItem'
    TargetGroupClientID:
      type: integer
      format: int32
      description: Client ID associated with the created Target Group
      example: 1234
      nullable: true
    TargetGroupChangelogList:
      type: object
      properties:
        changelog:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupChangelogBatch'
        next_cursor:
          type: string
          description: Provides the UUID to use as the "start_after" value of the next request. Empty value if no further
            results.
      example:
        changelog:
        - id: 1a8fa143-22ee-4b69-9779-401a411152fa
          occurred_at: '2023-09-11T09:27:41Z'
          user:
            type: las_user
            las_user_id: 16839d21-3329-408e-aa53-a7996cb8919e
          changes:
          - object: name_change
            new_value: Typo Fix
            old_value: Tpyo Fix
          - object: test_url_change
            new_value: https://myawesomeresearch.com/test
            old_value: null
          - object: cpi_note_change
            new_value:
              value: '1'
              currency_code: USD
              currency_scale: 2
            old_value:
              value: '5'
              currency_code: USD
              currency_scale: 2
        next_cursor: ''
    SupplierResponse:
      type: object
      properties:
        id:
          type: integer
          minimum: 0
          example: 420
        name:
          type: string
          minLength: 1
          example: Clix Sense
    PacingStrategy:
      description: The pacing strategy.
      type: string
      enum:
      - linear
      - adaptive
      - gemini
      example: linear
    ComputeTargetGroupTransitionsFilters:
      type: object
      description: Filters for computing target group transitions.
      properties:
        status:
          $ref: '#/components/schemas/schemas-TargetGroupStatus'
        country:
          $ref: '#/components/schemas/TargetGroupCountry'
        language:
          $ref: '#/components/schemas/TargetGroupLanguage'
    schemas-TargetGroupStatus:
      type: array
      items:
        $ref: '#/components/schemas/TargetGroupStatus'
    ComputeTargetGroupTransitionsResponse:
      type: object
      description: Matching target group Id with their possible transitions.
      properties:
        target_groups:
          $ref: '#/components/schemas/TargetGroupIds'
        is_launch_allowed:
          type: boolean
        is_pause_allowed:
          type: boolean
        is_resume_allowed:
          type: boolean
        is_relaunch_allowed:
          type: boolean
        is_finish_allowed:
          type: boolean
    DropOffRate:
      type: number
      format: float
      description: Current drop-off rate of the Target Group.
      minimum: 0
      maximum: 1
      example: 0.05
    FillingStrategyUpdateRequest:
      type: object
      description: Filling strategy update request.
      required:
      - filling_strategy
      properties:
        filling_strategy:
          $ref: '#/components/schemas/FillingStrategy'
    TargetGroupExclusionObject:
      type: object
      properties:
        enabled:
          type: boolean
          description: Whether or not the project level exclusion policy is enabled
          example: true
        list:
          deprecated: true
          description: 'Deprecated: Do not use this property. Use the [Exclusions endpoint](/demand/docs/reference/exclusion-create-upload-rids-by-file-job)
            instead. Note: Although this endpoint shows RID, the actual ID should be RSIDs. This naming issue has been corrected
            in future versions of the API.'
          type: array
          items:
            $ref: '#/components/schemas/ExclusionEntityList'
    BusinessUnitIDAsInteger:
      type: integer
      description: Determines the currency used for the Target Group.
      example: 1234
    TargetGroupProgress:
      type: object
      description: Measurement of the type and progress of the Target Group. A Target Group is considered fulfilled when the
        `filling_goal` has been reached.
      required:
      - current_completes
      - current_prescreens
      - filling_goal
      - filling_strategy
      properties:
        current_completes:
          type: integer
          format: int32
          description: Completes collected in the Target Group so far.
          minimum: 0
          example: 1
        current_prescreens:
          type: integer
          format: int32
          description: Prescreens collected in the Target Group so far.
          minimum: 0
          example: 1
        filling_goal:
          type: integer
          format: int32
          description: The limit of completes or prescreens to be collected in the Target Group.
          minimum: 1
          example: 1
        filling_strategy:
          $ref: '#/components/schemas/FillingStrategy'
    ProfilingRequest:
      oneOf:
      - title: Only template
        allOf:
        - $ref: '#/components/schemas/ProfileTemplateIdWithProfileAdjustmentType'
      - title: Only profiles
        allOf:
        - $ref: '#/components/schemas/ProfilingDraftRequest'
      - title: Both template and profiles
        allOf:
        - $ref: '#/components/schemas/ProfilingDraftRequestWithTemplate'
      - title: No profiling
        type: object
        nullable: true
        properties: {}
        description: If no profiling is required, this field can be set to null or omitted.
    FieldingRunStartAt:
      type: string
      format: date-time
      description: The timestamp the fielding run is scheduled to start at(RFC3339 UTC format, 3 fractional digits). The start
        time cannot be in the past.
      example: '2023-01-01T23:00:00.000Z'
    ProfilingDraftRequest:
      type: object
      required:
      - profile_adjustment_type
      - profiles
      properties:
        profile_adjustment_type:
          type: string
          description: |
            The method used to specify quota targets. Must be one of:
              - **percentage**: specify a proportion of the total as a decimal with up to two decimal places (e.g. `12.34` for 12.34%).
              - **nominal**: specify an exact number of completes as an integer.
          example: percentage
          enum:
          - percentage
          - nominal
        profiles:
          type: array
          minItems: 1
          items:
            $ref: '#/components/schemas/RequestDraftRegularProfileV3'
    FieldingRunEndAt:
      type: string
      format: date-time
      description: 'The timestamp the fielding run is scheduled to end at (RFC3339 UTC format, 3 fractional digits).  The
        end time has to be after the starting time. '
      example: '2023-01-01T23:00:00.000Z'
    TargetGroupIndustryLockoutCodeWithReference:
      type: string
      description: Blocks respondents during a certain timeframe based on whether they've taken a separate Target Group in
        the same industry. Get a list of all available lockout timeframes [here](#tag/Definitions/operation/get_industry_lockouts).
      example: past_30_days
    SoftLaunchAssisted:
      description: Assists the target group with soft launch functionality.
      type: boolean
      example: true
    TargetGroupCpi:
      description: Target group CPI.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    AverageCostPerInterview:
      type: object
      description: Average Cost per Interview for the Target Group.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    TargetGroupLanguage:
      type: array
      items:
        type: string
        pattern: ^[a-z]{3}$
        example: eng
    TargetGroupCountry:
      type: array
      items:
        type: string
        pattern: ^[a-z]{2}$
        example: us
    TargetGroupStatistics:
      type: object
      description: Statistics relevant for the Target Group, each statistic might include one or more issue descriptors.
      required:
      - progress
      properties:
        progress:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/TargetGroupProgress'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        last_complete_date:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/LastCompleteDate'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        earnings_per_click:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/EarningsPerClick'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        earnings_per_click_per_minute:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/EarningsPerClickPerMinute'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        average_cost_per_interview:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/AverageCostPerInterview'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        median_length_of_interview_seconds:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/MedianLengthOfInterviewSeconds'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        incidence_rate:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/IncidenceRate'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        drop_off_rate:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/DropOffRate'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
        conversion_rate:
          type: object
          required:
          - value
          - issues
          properties:
            value:
              $ref: '#/components/schemas/ConversionRate'
            issues:
              $ref: '#/components/schemas/StatisticsIssuesArray'
    TargetGroupLiveUrl:
      description: 'The link into the study that the respondent gets redirected to upon qualification.  Note:  This url must
        be HTTPS.'
      type: string
      example: https://example.com/live
    TargetGroupCollectedCompletesAggregatedIntervalsResponse:
      type: object
      required:
      - aggregated_completes_intervals
      properties:
        aggregated_completes_intervals:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupCollectedCompletesAggregatedIntervals'
    TargetGroupDetailsUpdateRequest:
      type: object
      description: The Target Group update request.
      required:
      - name
      - project_manager_id
      - expected_length_of_interview_minutes
      - expected_incidence_rate
      - live_url
      - test_url
      - industry_lockout_code
      properties:
        name:
          $ref: '#/components/schemas/TargetGroupName'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        expected_length_of_interview_minutes:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        industry_lockout_code:
          $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
        live_url:
          $ref: '#/components/schemas/TargetGroupLiveUrl'
        test_url:
          $ref: '#/components/schemas/TargetGroupTestUrl'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
        client_cost_per_interview_note:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
    ProfilingResponse:
      oneOf:
      - title: Only profiles
        allOf:
        - $ref: '#/components/schemas/ProfilingDraftResponse'
      - title: Both template and profiles
        allOf:
        - $ref: '#/components/schemas/ProfilingDraftResponseWithTemplate'
      - title: No profiling
        type: object
        nullable: true
        properties: {}
        description: |
          If no profiling is required, this field can be set to null or omitted.
    IncidenceRate:
      type: number
      format: float
      description: Current incidence rate of the Target Group.
      minimum: 0
      maximum: 1
      example: 0.05
  parameters:
    AccountID:
      name: account_id
      description: The account's unique identifier.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/AccountID'
    UserID:
      in: path
      name: user_id
      schema:
        $ref: '#/components/schemas/UserID'
      required: true
      description: Uniquely identifies a user.
    UserType:
      name: user_type
      in: query
      description: Filters users by user type. Currently, only 'project_manager' is supported.
      schema:
        type: string
        enum:
        - project_manager
    OptionalLocaleCodeFilter:
      name: locale
      in: query
      required: false
      description: Filter results by the specified locale code.
      schema:
        $ref: '#/components/schemas/LocaleCode'
      example: jpn_jp
    IdempotencyKeyULIDRequired:
      name: idempotency-key
      in: header
      required: true
      description: A unique key that you must provide to prevent accidental duplicate requests. If a network error occurs,
        you can safely retry the request with the same key.
      schema:
        $ref: '#/components/schemas/IdempotencyKeyULID'
    IfMatch:
      name: If-Match
      description: The ETag value of the resource you intend to update. This is used for optimistic locking to prevent you
        from accidentally overwriting changes made by someone else. You can get the ETag from a GET request for the resource.
        The `ETag` value should always be wrapped in double quotes, whether it is part of a weak `ETag` or standalone.
      in: header
      schema:
        type: string
        format: etag
        example: W/"1234"
    StartAfter:
      name: start_after
      in: query
      description: Returns a list of objects after the provided pagination cursor, using the next_cursor from the previous
        response.
      schema:
        type: string
      example: bff6a669-a469-409d-8c94-dcf92258043a
    EndBefore:
      name: end_before
      in: query
      description: Returns a list of objects that come before the provided pagination cursor. This is used for navigating
        to a previous page.
      schema:
        type: string
      example: 7daa40ad-303b-40a2-89df-a9760400cde7
    TemplateID:
      name: template_id
      in: path
      schema:
        $ref: '#/components/schemas/TemplateID'
      required: true
      description: The ID of the template.
    LocaleCodeFilter:
      name: locale
      in: query
      required: true
      description: Filter results by the specified locale code.
      schema:
        $ref: '#/components/schemas/LocaleCode'
      example: jpn_jp
    IfMatchRequired:
      name: If-Match
      required: true
      description: |
        The `ETag` value of the resource, used for optimistic locking.

        Providing the ETag ensures you don't accidentally overwrite changes made by another request.
        You can get this value from the `ETag` header of a `GET` request for the resource.
      in: header
      schema:
        type: string
        format: etag
        example: W/"1234"
    PageSize:
      name: page_size
      in: query
      description: A limit on the number of objects to be returned, between 1 and 100.
      schema:
        type: integer
        default: 10
      example: 15
    PageNumber:
      name: page_number
      in: query
      description: The page number of the results to retrieve.
      schema:
        type: integer
        minimum: 0
        default: 0
      example: 2
    ExclusionGroupID:
      name: exclusion_group_id
      in: path
      required: true
      description: A unique identifier for the exclusion group, in ULID format.
      schema:
        $ref: '#/components/schemas/ExclusionGroupID'
    ProjectID:
      name: project_id
      description: A unique identifier for the project, in ULID format.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ProjectID'
    TargetGroupID:
      name: target_group_id
      description: A unique identifier for the target group, in ULID format.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/TargetGroupID'
    ExclusionRespondentEntityType:
      name: entity_type
      in: query
      required: true
      description: The entity type of the identifiers included in the file.
      schema:
        $ref: '#/components/schemas/ExclusionEntityTypeWithRsidAndAccessRespondentGuid'
    RecontactPostContentType:
      name: Content-Type
      in: header
      required: true
      description: The multipart/form-data content type of the request body.
      schema:
        type: string
        enum:
        - multipart/form-data
    PageSize1000:
      name: page_size
      in: query
      required: false
      description: A limit on the number of objects to be returned, between 1 and 1000.
      schema:
        type: integer
        default: 1000
      example: 100
    JobID:
      name: job_id
      description: The character string representing a unique job ID.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/JobID'
    BusinessUnitID:
      in: path
      name: business_unit_id
      schema:
        $ref: '#/components/schemas/BusinessUnitID'
      required: true
      description: The unique identifier for the business unit.
    IfNoneMatch:
      name: If-None-Match
      description: The ETag value of the resource you intend to update. This is used for optimistic locking to prevent you
        from accidentally overwriting changes made by someone else. You can get the ETag from a GET request for the resource.
        The `ETag` value should always be wrapped in double quotes, whether it is part of a weak `ETag` or standalone. Using
        `*` will match any version state.
      in: header
      schema:
        type: string
        format: etag
        example: '1'
    IdempotencyKeyRequired:
      name: idempotency-key
      in: header
      required: true
      description: A shallow unique ID used as part of the deduplication mechanism for mutable operations,  this header is
        required.
      schema:
        $ref: '#/components/schemas/IdempotencyKey'
    FieldingRunID:
      name: fielding_run_id
      description: A unique identifier for the fielding run.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/FieldingRunID'
    ProfileIDV2:
      name: profile_id
      description: The character string representing a unique profile ID (ULID format).
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ProfileIDV2'
    WebhookID:
      name: webhook_id
      in: path
      description: The ID of the webhook.
      required: true
      schema:
        $ref: '#/components/schemas/WebhookID'
    WebhookEventsDeliveryStatuses:
      name: delivery_status
      in: query
      description: |
        Filter by event delivery status.

        Can be specified multiple times as a query parameter to return events
        with multiple delivery statuses. If not provided,
        events with all delivery statuses will be returned.

        Example: "?delivery_status=pending&delivery_status=delivering"
      required: false
      style: form
      explode: true
      schema:
        type: array
        items:
          $ref: '#/components/schemas/WebhookEventsDeliveryStatus'
    WebhookEventsTypes:
      name: type
      in: query
      description: |
        Filter by event type.

        Can be used multiple times as query parameter to return events of multiple types. If not provided, events of all types will be returned.

        Example: "?type=target-group-updated&type=quota-fill-registered"
      required: false
      style: form
      explode: true
      schema:
        $ref: '#/components/schemas/WebhookEventTypes'
    WebhookEventsStartTime:
      name: start_time
      in: query
      description: Start time from which to retrieve webhook events.
      required: true
      schema:
        $ref: '#/components/schemas/TimeStamp'
    WebhookEventsEndTime:
      name: end_time
      in: query
      description: |
        End time for retrieving webhook events. If not provided,
        the current time will be used.
      required: false
      schema:
        $ref: '#/components/schemas/TimeStamp'
    WebhookEventsOrder:
      name: created_at_sort_order
      in: query
      description: |
        Sort order for webhook events based on creation time.
        Use 'asc' for ascending order or 'desc' for descending order.
      required: false
      schema:
        type: string
        enum:
        - asc
        - desc
        default: asc
    QuestionsTranslationQuery:
      name: query
      in: query
      description: Text filter on the results set.
      schema:
        type: string
        example: automotive
    QuestionsTranslationAllowOnlyCustomQuals:
      name: only_custom_quals
      in: query
      description: If `true`, the response will only include your account's custom qualifications.
      schema:
        type: boolean
        example: true
    QuestionsTranslationIDs:
      name: id
      in: query
      description: List of comma separated question IDs.
      schema:
        type: string
        example: 42,43,97
    QuestionsTranslationAllowCustomQuals:
      name: allow_custom_quals
      in: query
      description: If `true`, the response will include your account's custom qualifications in addition to the standard ones.
      schema:
        type: boolean
        example: true
    QuestionsTranslationTranslationLanguage:
      name: translation_language
      in: query
      description: The ISO 639-2 (3-letter) code for the language to use for the `description_translated` and `text_translated`
        fields.
      schema:
        type: string
        example: spa
    QuestionsTranslationLocale:
      name: locale
      in: query
      description: Locale of target group in <language 1st 3 chars>_<country 2 char abbreviation> format.
      required: true
      schema:
        type: string
        example: eng_us
    ProfileTemplateID:
      name: profile_template_id
      in: path
      schema:
        $ref: '#/components/schemas/ProfileTemplateID'
      required: true
      description: A unique identifier for the profile template.
    ProfilingTemplatesLocales:
      name: locales
      in: query
      description: |
        Comma-separated list of locales to filter templates by. If multiple locales are provided,
        templates that match any of the locales will be returned (OR logic).

        Examples:
        - eng_us
        - eng_us,jpn_jp
      schema:
        type: string
        example: eng_us,jpn_jp
    ProfilingTemplatesScope:
      name: scope
      in: query
      description: Filter templates by scope. If scope is not provided, both global and account templates will be returned.
      schema:
        type: string
        enum:
        - global
        - account
        example: account
    Order:
      name: order
      in: query
      description: |
        The order in which to return the list objects.
        Default is `desc`, which returns objects in descending created_at order.
      schema:
        type: string
        enum:
        - desc
        - asc
        default: desc
    ProjectNameFilter:
      name: name
      in: query
      deprecated: true
      description: |
        **Deprecated:** Use the `search_string` parameter instead.

        Filters by the project name. If only `name` is supplied, it is treated as a `search_string`. If both `name` and `search_string` are supplied, `name` is ignored.
      schema:
        type: string
        example: Test Project
    ProjectStatusFilter:
      name: status
      in: query
      description: Filters the list of projects by their status.
      schema:
        $ref: '#/components/schemas/ProjectStatus'
    ProjectSearchString:
      name: search_string
      in: query
      description: |
        Searches for projects based on a string match in any of the following fields.
        * Project name
        * Project's human-readable ID
        * Human-readable IDs of any target groups within the project
      schema:
        type: string
        example: Test Project
        minLength: 5
        maxLength: 128
    ProjectManagerIDFilter:
      name: project_manager_id
      in: query
      description: Filters the list of projects by the assigned project manager's ID.
      schema:
        $ref: '#/components/schemas/UserID'
    SubmittedByUserID:
      in: query
      name: submitted_by_user_id
      schema:
        $ref: '#/components/schemas/UserID'
      description: Uniquely identifies a user.
    ReconTGStatus:
      name: status
      in: query
      required: false
      description: Filter by target group status
      schema:
        type: string
    IdempotencyKeyUUID:
      name: Idempotency-Key
      in: header
      schema:
        type: string
        description: A shallow unique ID used as part of the deduplication mechanism for mutable operations. Value should
          be UUIDv4.
        example: 96C65204-90C2-4DCB-9393-B8226DD50C76
    ReconProjectName:
      name: project_name
      in: query
      required: false
      description: Filter by project name
      schema:
        type: string
    RequestID:
      name: request_id
      in: path
      required: true
      description: Request ID path parameter that uniquely identifies a reconciliation record.
      schema:
        $ref: '#/components/schemas/RequestID'
    ReconPostContentType:
      name: Content-Type
      in: header
      required: true
      description: The content type of the request body.
      schema:
        type: string
        enum:
        - text/csv
        - application/csv
    ReconciliationFileName:
      description: The name of the file containing requests to reconcile.
      name: name
      in: query
      schema:
        type: string
        required: true
      example: recon_file_name.csv
    ReconciliationDownloadType:
      name: download_type
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ReconciliationDownloadType'
    Status:
      in: query
      name: status
      schema:
        type: string
      description: The character string representing search based on reversal file status.
    NextCursor:
      in: query
      name: next_cursor
      schema:
        $ref: '#/components/schemas/NextCursorULID'
    ReconProjectManagerID:
      name: project_manager_id
      in: query
      required: false
      description: Filter by project manager ID
      schema:
        type: string
    ReconTGName:
      name: name
      in: query
      required: false
      description: Filter by target group name
      schema:
        type: string
    SubmitReconFileName:
      name: name
      in: query
      required: true
      schema:
        $ref: '#/components/schemas/FileName'
    DueMonth:
      name: due_month
      in: query
      required: false
      description: Due month. Can be either 'current_month' or 'next_month'. Defaults to 'current_month' if not provided.
      schema:
        type: string
        enum:
        - current_month
        - next_month
        default: current_month
        example: current_month
    UpdateRecontactsJobID:
      name: job_id
      in: path
      required: true
      description: A unique identifier for the asynchronous recontact job.
      schema:
        $ref: '#/components/schemas/JobID'
    Level:
      name: level
      in: query
      schema:
        $ref: '#/components/schemas/Level'
    ReportTypeQuery:
      name: report_type
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/ReportType'
    ReportType:
      name: report_type
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ReportType'
    ReportId:
      name: report_id
      in: path
      description: A unique identifier for the report.
      required: true
      schema:
        $ref: '#/components/schemas/ReportId'
    ParametersStatus:
      name: Status
      in: query
      schema:
        $ref: '#/components/schemas/Status'
    RID:
      in: path
      name: RID
      schema:
        type: string
        example: 6780395e-94fa-1eb7-612c-d2e19af42758
      required: true
      description: "The session ID of the respondent routed to your survey. \nThe ID is passed in the URL path as a parameter\
        \ and is of type UUID4.\n"
    AuthorizationHeader:
      name: Authorization
      in: header
      required: true
      schema:
        type: string
        example: <api_key>
      description: API Key for authentication.
    TargetGroupStatus:
      name: status
      in: query
      description: Target Group status(es) to match against.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupStatus'
    TargetGroupCountry:
      name: country
      in: query
      description: Target Group country or countries to match against. Get a list of all available countries [here](#tag/Definitions/operation/list_all_question_categories).
      schema:
        type: array
        items:
          type: string
          pattern: ^[a-z]{2}$
          example: us
    ChangelogPageSize:
      name: page_size
      in: query
      description: |
        A limit on the number of objects to be returned, between 1 and 50.
      schema:
        type: integer
        default: 50
      example: 15
    TargetGroupSearchString:
      name: search_string
      in: query
      description: |
        Search string to match against. The string will be used to search based on the target group's name and/or the target group's human readable ID. Supports partial matching for target group name and human readable ID. Also supports English language stemmed matching for target group name.
      schema:
        type: string
        example: My Target Gr
    AggregationInterval:
      name: aggregation_interval
      description: An ISO-8601 formatted interval which is used to aggregate a time series.
      in: query
      schema:
        type: string
      example: P1DT5H
    TargetGroupHumanReadableIds:
      name: human_readable_ids
      in: query
      description: |
        An array of target group human readable ID's to filter by. When there are no other filter or search parameters supplied, the call will return a list of target groups that match these ID's.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupHumanReadableID'
    TargetGroupChangeTypes:
      name: change_types
      in: query
      description: Filter parameter to return only changes of given types.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupChangeType'
    TargetGroupName:
      name: name
      in: query
      deprecated: true
      description: |
        The (partial) name of the target group to match against. Supports partial and stemmed matching. This query parameter is deprecated and replaced by the `search_string` parameter. If only the `name` parameter is supplied, it will be used as if it was the `search_string`. If both `name` and `search_string` are supplied, `name` will be ignored.
      schema:
        type: string
        example: My Target Gr
    TargetGroupCustomerReferenceNumbers:
      name: target_group_customer_reference_numbers
      in: query
      description: |
        An array of target group customer reference numbers to filter by. When there are no other filter or search parameters supplied, the call will return a list of target groups that match these values.
      required: false
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
    CountryCode:
      in: query
      name: country_code
      schema:
        type: string
      required: true
      example: US
      description: Country code to find the rate card for.
    TargetGroupLanguage:
      name: language
      in: query
      description: Target Group language(s) to match against.
      schema:
        type: array
        items:
          type: string
          pattern: ^[a-z]{3}$
          example: eng
    TargetGroupExclusionStatus:
      name: exclusion_status
      in: query
      description: Only return target groups with the specified exclusion status.
      schema:
        type: boolean
        example: false
    CintAPIVersion:
      name: Cint-API-Version
      in: header
      required: true
      schema:
        type: string
      description: |
        This header is MANDATORY for all API requests. The API version format is `YYYY-MM-DD`.
    CintAPIVersion-2025-12-18:
      name: Cint-API-Version
      in: header
      required: true
      schema:
        type: string
        example: 2025-12-18
      description: |
        This header is MANDATORY for all API requests. The API version format is `YYYY-MM-DD`.
    CintAPIVersion-2025-05-27:
      name: Cint-API-Version
      in: header
      required: true
      schema:
        type: string
        example: 2025-05-27
      description: |
        This header is MANDATORY for all API requests. The API version format is `YYYY-MM-DD`.
    CintAPIVersion-upcoming-release:
      name: Cint-API-Version
      in: header
      required: true
      schema:
        type: string
        example: upcoming-release
      description: |
        This header is MANDATORY for all API requests. The API version format is `YYYY-MM-DD`.
    Authorization:
      name: Authorization
      in: header
      required: true
      schema:
        type: string
        example: <YOUR_JWT_TOKEN>
      description: JWT bearer token used for authentication and authorization.
  responses:
    Error_NotFound:
      description: A requested resource isn't found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 7a5972ba-0825-4360-b852-fa2430e47034
            object: not_found_error
            detail: resource not found
    Error_UnsupportedMediaType:
      description: The request content format is not supported.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 7a5972ba-0825-4360-b852-fa2430e47034
            object: unsupported_media_type_error
            detail: The 'Content-Type' header is incorrectly set 'application/pdf'
    Error_Forbidden:
      description: A requested is forbidden.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: fe68cdd2-ee87-4dbf-8950-63c5cbca94c7
            object: authorization_error
            detail: you don't have the right permissions to perform this operation
    Error_Unauthorized:
      description: A request is unauthorized.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 1dcf0f40-f0d1-4cf6-8c00-c3d019d32faf
            object: authorization_error
            detail: no valid authorization provided for this operation
    Error_Conflict:
      description: An already existing resource has conflicts with the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 3d61d9c3-68ee-4026-b436-6e76a2b33932
            object: conflict_error
            detail: this operation causes conflict(s) on the resources
    Error_BadRequest:
      description: A request is not valid and can't be processed.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 9e278238-d011-4e05-8327-1ce1d5d26254
            object: bad_request_error
            detail: Expected field 'foo' is missing.
    Error_ContentTooLarge:
      description: The request entity was larger than limits defined by the server.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 7a5972ba-0825-4360-b852-fa2430e47034
            object: content_too_large_error
            detail: File upload limit exceeded
    Error_Internal:
      description: A request failed due to an internal error.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: d94b8bb2-a540-4a91-9c05-2aa3ae9a5e1e
            object: unexpected_internal_error
            detail: an internal error has led to the failure of this operation
    Error_InvalidState:
      description: A request failed due to invalid state of the entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: d94b8bb2-a540-4a91-9c05-2aa3ae9a5e1e
            object: invalid_state_error
            detail: The entity does not meet the required state.
    Error_BadRequest_DemandAPI:
      description: A request is not valid and can't be processed.
      headers:
        traceparent:
          $ref: '#/components/headers/Traceparent'
        tracestate:
          $ref: '#/components/headers/Tracestate'
        is-synthetic-traffic:
          $ref: '#/components/headers/IsSyntheticTraffic'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ClientErrorDemandAPI'
    Error_Internal_DemandAPI:
      description: A request failed due to an internal error.
      headers:
        traceparent:
          $ref: '#/components/headers/Traceparent'
        tracestate:
          $ref: '#/components/headers/Tracestate'
        is-synthetic-traffic:
          $ref: '#/components/headers/IsSyntheticTraffic'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalErrorDemandAPI'
    WebhookEventsHistory:
      description: A response containing webhook events history for replay and debugging.
      content:
        application/json:
          schema:
            type: object
            properties:
              events:
                type: array
                description: A list of webhook events
                items:
                  $ref: '#/components/schemas/WebhookEvent'
              next_cursor:
                $ref: '#/components/schemas/NextCursor'
            additionalProperties: false
    Error_RateLimit:
      description: The request was rate limited. Please retry after the specified delay.
      headers:
        traceparent:
          description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
            specification. It's used to trace a single request as it moves through multiple services.
          required: false
          schema: *id001
        tracestate:
          description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace information.
            This allows different services to add their own data to a trace.
          required: false
          schema: *id002
        retry-After:
          description: The number of seconds to wait before making a follow-up request.
          schema:
            type: integer
            format: int32
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetails'
    Error_MethodNotAllowed:
      description: A request is valid but not supported by the current state of the target resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 10e53384-803e-4cb6-b8c2-d93fa196ea8e
            object: method_not_allowed_error
            detail: Cannot complete a target group which is paused.
    Precondition_Failed:
      description: The resource could not be modified because the ETag in the If-Match header does not match the current version.
        This means the resource was updated by another request after you retrieved it.
      headers:
        traceparent:
          description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context
            specification. It's used to trace a single request as it moves through multiple services.
          required: false
          schema: *id001
        tracestate:
          description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace information.
            This allows different services to add their own data to a trace.
          required: false
          schema: *id002
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 3d61d9c3-68ee-4026-b436-6e76a2b33932
            object: precondition_failed_error
            detail: The resource has been modified since you last retrieved it. Please fetch the latest version and try your
              request again.
  requestBodies:
    WebhookCreate:
      description: The request body for creating a new webhook subscription.
      required: true
      content:
        application/json:
          schema:
            type: object
            description: The configuration for a new webhook subscription.
            required:
            - url
            - events
            properties:
              url:
                $ref: '#/components/schemas/WebhookURL'
              events:
                $ref: '#/components/schemas/WebhookEventTypes'
          example:
            url: https://example.com/webhook
            events:
            - target-group-updated
    WebhookUpdate:
      description: Update an existing webhook request body.
      required: true
      content:
        application/json:
          schema:
            type: object
            description: The updated configuration for an existing webhook. Both fields are optional.
            properties:
              url:
                $ref: '#/components/schemas/WebhookURL'
              events:
                $ref: '#/components/schemas/WebhookEventTypes'
          example:
            url: https://example.com/webhook
            events:
            - session-updated
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token used for authentication and authorization. See [Authentication Process](https://developer.cint.com/en/guides#authentication-process)
        documentation for more information.
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: API Key Authentication
  headers:
    Tracestate:
      description: The `tracestate` header complements the `traceparent` header by carrying vendor-specific trace information.
        This allows different services to add their own data to a trace.
      required: false
      schema: *id002
    Location:
      description: |
        Contains the URL where a new resource can be found, often returned with a `201 Created` response. It follows the format defined in RFC 7231.
      required: true
      schema: *id003
    ETag:
      description: The `ETag` header provides a unique identifier that represents the current version of a resource. It's
        used for caching and to prevent concurrent modification issues.
      required: true
      schema:
        $ref: '#/components/schemas/ETag'
    Traceparent:
      description: The `traceparent` header carries the trace ID and parent span ID, as defined by the W3C Trace Context specification.
        It's used to trace a single request as it moves through multiple services.
      required: false
      schema: *id001
    IsSyntheticTraffic:
      description: 'Boolean value representing whether request is the product of synthetic traffic. By default, set to false. '
      schema:
        $ref: '#/components/schemas/IsSyntheticTraffic'
    IdempotencyKey:
      description: |
        A unique key that you can provide to safely retry requests without accidentally performing the same operation twice.

        We suggest using a UUID v4 or another random string with sufficient entropy to avoid collisions.

        Examples:
        - 96C65204-90C2-4DCB-9393-B8226DD50C76
        - 01BTGNYV6HRNK8K8VKZASZCFP0
      required: false
      schema:
        $ref: '#/components/schemas/IdempotencyKey'
