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-05-27'
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: Intelligent Calendar
  description: Select the best times for launching your Target Groups. Use before feasibility to optimise fill and time in
    field.
- name: Manage Profiling
  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 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: Questions
  description: List all profiling questions including account specific with translations and categories where available.
- 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: Returns a list of all accounts which a user is authorized to access.
      operationId: get_user_accounts
      description: |
        Returns a list of all accounts which a user is authorized to access.
      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-05-27'
  /accounts/{account_id}/service-clients:
    get:
      tags:
      - Accounts
      summary: Returns all service clients for an account.
      operationId: get_account_service_clients
      description: Lists all available service clients for an account.
      responses:
        '200':
          description: Successfully returned 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-05-27'
  /accounts/{account_id}/users:
    get:
      tags:
      - Accounts
      summary: Returns all users for an account.
      operationId: get_account_users
      description: Lists all available users for an account.
      responses:
        '200':
          description: Successfully returned a list of all users for an 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-05-27'
  /accounts/{account_id}/users/{user_id}/business-units:
    get:
      tags:
      - Accounts
      summary: Returns business unit ID for user's account.
      operationId: get_user_account_business_unit_id
      description: Returns the business unit ID associated with the specified user's account.
      responses:
        '200':
          description: Successfully returned the business unit ID associated with  the user's 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-05-27'
  /demand/accounts/{account_id}/allocation-template-association:
    get:
      operationId: get_account_allocation_template_association
      summary: Get the account's default allocation template if there is one.
      tags:
      - Allocation Templates Admin
      responses:
        '200':
          description: A successful response returns the account's default allocation template.
          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: Sets the account's default allocation template.
      description: This endpoint will set the default template used for an account. It uses the `If-Match` header for optimistic
        locking, which can be fetched from the [account's default allocation template endpoint](#tag/Allocation-Templates-Admin/operation/get_account_allocation_template_association)
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAccountAllocationTemplateAssociation'
      responses:
        '204':
          description: No Content
        '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-05-27'
  /demand/accounts/{account_id}/allocation-templates:
    get:
      operationId: list_account_allocation_templates
      summary: Lists all account allocation templates.
      description: This endpoint will return a paginated list of the allocation templates linked to an account. This list
        contains the id and name of the template as well as the information of when and by whom it was last updated.  You
        can define the page size of this paginated list. If the list result returned are greater than the `page_size`, the
        `start_after` and `end_before` can be used to fetch the remaining templates.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A successful response returns the account allocation templates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAccountAllocationTemplatesResponse'
        '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: Creates an account template.
      description: This endpoint will create an account template by providing the template name, the account for which it
        will be created for and the allocation specification - which suppliers are blocked, how the allocated suppliers are
        distributed into groups, and what their minimum and maximum percentages are.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IdempotencyKeyULIDRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocationTemplateCreateRequest'
      responses:
        '201':
          description: A location for the created allocation template.
          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-05-27'
  /demand/accounts/{account_id}/allocation-templates/{template_id}:
    get:
      operationId: get_account_allocation_template_by_template_id
      description: This endpoint will return an account allocation specification template based on a template id. The response
        will only include the open exchange suppliers. Support for private exchange suppliers in template administration is
        not supported yet.
      summary: Fetch an allocation account template
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/OptionalLocaleCodeFilter'
      responses:
        '200':
          description: A successful response returns the account allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountAllocationTemplateByTemplateIdResponse'
          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: Updates an allocation account template.
      description: This endpoint will update an allocations account template identified by an account id and a template id.  This
        update will use the provided allocation specification which contains blocked suppliers, how the allocated suppliers
        are distributed into groups, and what their minimum and maximum percentages are.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AllocationTemplateUpdateRequest'
      responses:
        '204':
          description: Successfully updated a account template.
        '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: Deletes an individual account template for an account
      tags:
      - Allocation Templates Admin
      responses:
        '204':
          description: Successfully deleted an account template.
        '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-05-27'
  /demand/allocation-templates:
    get:
      operationId: list_global_allocation_templates
      summary: Lists all global allocation templates.
      description: This endpoint will return a paginated list of the global allocation templates. This list contains the id
        and name of the template as well as the information of when and by whom it was last updated.  You can define the page
        size of this paginated list. If the list result returned are greater than the `page_size`, the `start_after` and `end_before`
        can be used to fetch the remaining templates.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: A successful response returns the global allocation templates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGlobalAllocationTemplatesResponse'
        '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-05-27'
  /demand/allocation-templates/{template_id}:
    get:
      operationId: get_global_allocation_template_by_template_id
      summary: Fetch a global allocation template.
      description: This endpoint will return a global allocation specification template based on a template id. The response
        will only include the open exchange suppliers.  Support for private exchange suppliers in template administration
        is not supported yet.
      tags:
      - Allocation Templates Admin
      parameters:
      - $ref: '#/components/parameters/OptionalLocaleCodeFilter'
      responses:
        '200':
          description: A successful response returns the global allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetGlobalAllocationTemplateByTemplateIdResponse'
          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-05-27'
  /demand/system-allocation-template:
    get:
      operationId: get_system_allocation_template
      summary: Gets the system allocation template
      description: This endpoint will return the system allocation default template based on the locale. The system default
        template has all of the available suppliers who are available in the locale. This data is dynamic as suppliers enter
        or exit particular markets. You can use this to ensure that your other allocations calls always use suppliers who
        are valid for the locale where you are creating a Target Group.
      tags:
      - Allocation Templates Admin
      responses:
        '200':
          description: A successful response returns the account allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSystemAllocationTemplateResponse'
        '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-05-27'
  /accounts/{account_id}/business-units:
    get:
      tags:
      - Definitions
      summary: Returns a list of business units available on the account.
      operationId: get_business_units
      description: "Lists available account business units. Business unit definitions are supposed to help you \norganize\
        \ surveys between different parts of your organization. They also determine the currency\nused by their assigned surveys.\n"
      responses:
        '200':
          description: Successfully returned account business units.
          content:
            application/json:
              schema:
                type: object
                properties:
                  business_units:
                    type: array
                    description: A list of business units.
                    items:
                      $ref: '#/components/schemas/BusinessUnit'
        '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-05-27'
  /accounts/{account_id}/clients:
    get:
      tags:
      - Definitions
      summary: Returns a list of clients assigned to an account.
      operationId: get_clients
      description: Lists available clients that have been created on the specified account.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageNumber'
      responses:
        '200':
          description: Successfully returned account clients.
          content:
            application/json:
              schema:
                type: object
                properties:
                  clients:
                    type: array
                    description: A list of clients.
                    items:
                      $ref: '#/components/schemas/ClientListItem'
        '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-05-27'
  /countries:
    get:
      tags:
      - Definitions
      summary: Returns a list of all available countries.
      operationId: get_countries
      description: "Lists available countries that can be used for target group filtering purposes.  \n`0/NA` is a special\
        \ country code that can be used for scenarios where a country is not applicable.\n"
      responses:
        '200':
          description: Successfully returned countries.
          content:
            application/json:
              schema:
                type: object
                properties:
                  countries:
                    type: array
                    description: A list of countries.
                    items:
                      $ref: '#/components/schemas/CountryListItem'
        '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-05-27'
  /industries:
    get:
      tags:
      - Definitions
      summary: Returns a list of industries.
      operationId: get_industries
      description: Lists available industries. Surveys can be associated with these industries.
      responses:
        '200':
          description: Successfully returned industries.
          content:
            application/json:
              schema:
                type: object
                properties:
                  industries:
                    type: array
                    description: A list of industries.
                    items:
                      $ref: '#/components/schemas/IndustryListItem'
        '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-05-27'
  /industry-lockouts:
    get:
      tags:
      - Definitions
      summary: Returns a list of all available industry lockouts.
      operationId: get_industry_lockouts
      description: |
        Lists available industry lockouts. An industry lockout locks respondents during a specific timeframe based on whether they have taken a separate survey in the same industry.
      responses:
        '200':
          description: Successfully returned industry lockouts.
          content:
            application/json:
              schema:
                type: object
                properties:
                  industry_lockouts:
                    type: array
                    description: A list of industry lockouts.
                    items:
                      $ref: '#/components/schemas/IndustryLockoutItem'
        '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-05-27'
  /integration-use-cases:
    get:
      tags:
      - Definitions
      summary: List of all supported integration use cases.
      operationId: get_integration_use_cases
      description: |
        Lists all supported integration use cases. A use case indicates
        the purpose for which the integration will be used.
      responses:
        '200':
          description: Successfully returned list of integration use cases.
          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 surveys
                    description: |
                      Create, update, and retrieve surveys, allocations, groups, qualifications, and quotas.
                  - id: performance_reporting
                    name: Performance reporting
                    description: |
                      Monitor survey performance and do reconciliation.
                  - id: financial_reporting
                    name: Financial reporting
                    description: |
                      Generate cost summary reports for sets of surveys.
        '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-05-27'
  /locales:
    get:
      tags:
      - Definitions
      summary: Returns a list of all available locales.
      operationId: get_locales
      description: Suggests locales with a better support.
      responses:
        '200':
          description: Successfully returned suggested locales.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Locales'
        '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-05-27'
  /study-types:
    get:
      tags:
      - Definitions
      summary: Returns a list of study types.
      operationId: get_study_types
      description: Lists available study types. Study types are supposed to indicate the survey's limits and its' purpose.
      responses:
        '200':
          description: Successfully returned study types.
          content:
            application/json:
              schema:
                type: object
                properties:
                  study_types:
                    type: array
                    description: A list of study types.
                    items:
                      $ref: '#/components/schemas/StudyTypeListItem'
        '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-05-27'
  /suppliers:
    get:
      tags:
      - Definitions
      summary: Returns a list of suppliers.
      operationId: get_suppliers
      description: Lists available suppliers on our marketplace.
      responses:
        '200':
          description: Successfully returned suppliers.
          content:
            application/json:
              schema:
                type: object
                properties:
                  suppliers:
                    type: array
                    description: A list of suppliers.
                    items:
                      $ref: '#/components/schemas/SupplierDetailsItem'
        '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-05-27'
  /demand/accounts/{account_id}/exclusion-groups:
    get:
      operationId: get_exclusion_groups_by_account_id
      summary: Lists all the Exclusion Groups on your account
      description: Exclusion Groups contain target groups from one or more Projects within your account and exclude respondents
        from all the listed target groups. This lists all the Exclusion Groups on your account, ordered by creation date.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/PageSize1000'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: The Exclusion Groups within the provided Account ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExclusionGroupsByAccountIdResponse'
        '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 a new Exclusion Group
      description: Exclusion Groups contain target groups from one or more Projects within your account and exclude respondents
        from all the listed target groups. This endpoint creates a new Exclusion Group and returns the Exclusion Group ID,
        which can be used to perform further operations on that Exclusion Group. You are allowed to create more than one Exclusion
        Group with the same tag. A target group can be in multiple Exclusion Groups. You can have up to 100 target groups
        in an Exclusion Group at any one time.
      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'
      responses:
        '201':
          description: The created Exclusion Group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateExclusionGroupResponse'
        '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-05-27'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}:
    get:
      operationId: get_exclusion_group_by_id
      summary: Retrieve an Exclusion Group by its ID
      description: Returns the details of a particular Exclusion Group.  This endpoint is most useful for developers who are
        looking to build a UI around the Exclusion Group functionality.
      tags:
      - Exclusions
      responses:
        '200':
          description: The Exclusion Group with the provided ID.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionGroupInfo'
        '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 an Exclusion Group by its ID
      description: |
        Modifies the details of a particular Exclusion Group.
        This endpoint is most useful for developers who are looking to build a UI around the Exclusion Group functionality.
      tags:
      - Exclusions
      requestBody:
        description: Update Exclusion Group request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateExclusionGroupRequest'
      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 by its ID. This is used to clean up unused Exclusion Groups or those
        that are not longer useful. You must remove all the target groups from within an Exclusion Group before deleting it.
        If the requested Exclusion Group has any target groups associated with it, the request will fail.
      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-05-27'
  /demand/accounts/{account_id}/exclusion-groups/{exclusion_group_id}/target-groups:
    get:
      operationId: get_exclusion_group_target_group_exclusions
      summary: Retrieve the target groups contained in an Exclusion Group
      description: |
        Get the list of target groups that are present in an Exclusion Group. Respondents with a complete in any of these target groups will not be able to enter any of the other listed target groups.  You can have up to 100 Target Groups in an Exclusion Group.
      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: Successfully returned the Exclusion Group target group exclusions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionGroupTargetGroupsResponse'
          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-05-27'
  /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: |
        Exclusion groups contain target groups from one or more projects within your account and exclude respondents from all the listed target groups. This endpoint adds target groups to an exclusion group. You can have up to 100 target groups in an exclusion group from any project in your account.
        Respondents with a complete in any of these target groups will not be able to enter any of the other listed target groups. Adding a target group from an exclusion group will only affect the status of future survey entrants.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ExclusionGroupID'
      requestBody:
        description: Target groups to Add to Exclusion Group.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddTargetGroupExclusionGroupRequest'
      responses:
        '204':
          description: target group(s) successfully added to 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'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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: |
        Exclusion groups contain target groups from one or more Projects within your account and exclude respondents from all the listed target groups. This endpoint removes target groups from an Exclusion Group. You can have up to 100 target groups in an Exclusion Group.
        Respondents with a complete in any of these target groups will not be able to enter any of the other listed Target Groups. Removing a target group from an Exclusion Group will only affect the status of future survey entrants.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ExclusionGroupID'
      requestBody:
        description: Target groups to Remove from an Exclusion Group.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RemoveTargetGroupExclusionGroupRequest'
      responses:
        '204':
          description: Target group(s) successfully removed from 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'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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: |
        This endpoint changes the exclusion status of target groups within the same project.
        If exclusions are enabled then respondents with a complete will not be able to enter any of the other enabled Target Groups within the project.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Update Bulk Exclusions request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkTargetGroupProjectExclusionStatus'
      responses:
        '204':
          description: Target group(s) exclusion policies successfully updated.
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/exclusions:
    get:
      operationId: get_exclusion_by_project_api
      summary: Retrieve target group exclusion statuses by project ID
      description: "This endpoint shows the current exclusion status of target groups within the same project. \nIf exclusions\
        \ are enabled then respondents with a complete will not be able to enter any of the other enabled target groups within\
        \ the project.\n"
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      responses:
        '200':
          description: Successfully returned the container details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkTargetGroupProjectExclusionStatus'
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusion-policy:
    get:
      operationId: get_target_group_exclusion_policy_api
      summary: Get project exclusion status for a target group
      description: |
        Shows if this target group excludes completes from other target groups within the project.
        If exclusions are enabled then respondents with a complete in another target group will not be able to enter this one.
      tags:
      - Exclusions
      responses:
        '200':
          description: Successfully returned the project exclusion status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectExclusionStatusResponse'
          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-05-27'
  ? /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: Retrieves a paginated list of access respondent GUIDs excluded from a given target group.
      description: Gets list of Access Respondent GUIDs excluded from a given target 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: All Access Respondent GUIDs excluded from a given target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CobraIDListPaginatedResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/cid:
    get:
      deprecated: true
      operationId: get_target_group_cid_exclusion_list_api
      summary: Retrieve a list of excluded access respondent GUIDs (Deprecated)
      description: Retrieve a list of access respondent GUIDs excluded from a given target group. If other APIs or the modern
        UI are used then only the first 10,000 IDs will be returned with this endpoint. We have replaced this endpoint with
        the [paginated](#operation/get_target_group_access_respondent_guid_exclusion_list_api_paginated) version. This endpoint
        will be removed from a future release of the Cint Exchange API but will be supported for the lifetime of this release.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '200':
          description: All Access Respondent GUIDs excluded from a given target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CobraIDListResponse'
        '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:
      deprecated: true
      operationId: upsert_target_group_cid_exclusion_list_api
      summary: Upload a list of access respondent GUIDs to exclude from a given target group (Deprecated)
      description: Creates or updates the list of Access Respondent GUIDs to be excluded from a given target group.  A maximum
        of 10ks can be excluded in this container. Access Respondent GUIDs can be obtained from the legacy Access or BAPI
        platforms. If other APIs or the modern UI are used then only the first 10,000 IDs will be returned with this endpoint.
        You can simultaneously exclude multiple exclusions containers and types (target group, Respondent ID or Access Respondent
        GUID for example) at a time up to their specific container limits. We have replaced this endpoint with new endpoints
        for [adding](#operation/exclusion_create_upload_rids_by_file_job) and [removing](#operation/exclusion_create_remove_all_respondents_job)
        respondents using jobs, allowing buyers to exclude up to 100,000 IDs in a target group. This endpoint will be removed
        from a future release of the Cint Exchange API but will be supported for the lifetime of this release.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/RunAsync'
      requestBody:
        description: List of Access Respondent GUIDs to be excluded from a target group.  A maximum of 10ks can be excluded
          in this container.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CobraIDListRequest'
      responses:
        '204':
          description: Access Respondent GUIDs successfully upserted for target 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'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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: Create a job to remove all specified entity type respondent exclusions
      description: Creates a job to remove all the specified exclusion respondents for the specified target group ID. 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. 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 generated Job ID of the requested remove respondent exclusions operation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRemoveAllRespondentExclusionsJobResponse'
        '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-05-27'
  ? /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 whilst perfoming 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-05-27'
  ? /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: Create a job to upload respondent exclusions by file
      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 generated Job ID of the uploaded respondents by file operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRespondentExclusionsUploadByFileJobResponse'
        '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-05-27'
  ? /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 information of a specific upload respondent ID based exclusions by file job
      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-05-27'
  /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 Respondent IDs on a target group.
      description: Retrieves the number of currently excluded Respondent IDs on a target group - both Respondent 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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/exclusions/rid:
    get:
      deprecated: true
      operationId: get_target_group_rid_exclusion_list_api
      summary: Retrieve the first 10k response IDs (RIDs) excluded from a given target group (Deprecated)
      description: Retrieve excluded RIDs from a target group. If other APIs or the modern UI are used then only the first
        10,000 IDs will be returned with this endpoint. This endpoint will be removed from a future release of the Cint Exchange
        API but will be supported for the lifetime of this release.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      responses:
        '200':
          description: All RIDs excluded from a given target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RespondentIDList'
        '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:
      deprecated: true
      operationId: upsert_target_group_rid_exclusion_list_api
      summary: Upload a list of response IDs (RIDs) to exclude from a given target group (Deprecated)
      description: Creates or updates the list of RIDs to be excluded from a given target group.  A maximum of 10ks can be
        excluded in this container. RIDs can be obtained from the Exchange or legacy Marketplace platforms. If other APIs
        or the modern UI are used then only the first 10,000 IDs will be returned with this endpoint. You can simultaneously
        exclude multiple exclusions containers and types (target group, RIDs or Access Respondent GUID for example) at a time
        up to their specific container limits. We have replaced this endpoint with new endpoints for [adding](#operation/exclusion_create_upload_rids_by_file_job)
        and [removing](#operation/exclusion_create_remove_all_respondents_job) respondents using jobs, allowing buyers to
        exclude up to 100,000 IDs in a target group. This endpoint will be removed from a future release of the Cint Exchange
        API but will be supported for the lifetime of this release.
      tags:
      - Exclusions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/RunAsync'
      requestBody:
        description: List of RIDs to be excluded from a given target group.  A maximum of 10ks can be excluded in this container.
          You can exclude multiple exclusions containers and types (target group, Respondent ID or Access Respondent GUID
          for example) at a time up to their specific container limits.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RespondentIDList'
      responses:
        '204':
          description: RIDs successfully upserted for target 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'
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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: Retrieve a paginated list of respondent IDs (RSIDs) excluded from a given target group.
      description: Retrieve a paginated list of respondent IDs (RSIDs) excluded from a given target 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: All RSIDs excluded from a given target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExclusionsRespondentIDListResponse'
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/exclusion-groups:
    get:
      operationId: get_exclusion_groups_for_target_group
      summary: Retrieve exclusion groups that contain a specific target group
      description: Get the Exclusion Groups that contain a specific target group, ordered by creation date. All of the Target
        Groups within these Exclusion Groups will be checked for matches when a respondent enters this target group.
      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: The exclusion groups for the requested target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExclusionGroupsByTargetGroupResponse'
        '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-05-27'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/generate-price-prediction:
    post:
      operationId: generate_price_prediction
      summary: Generates a price prediction
      description: |-
        Generates a price prediction based on the request type `rate_card` or `dynamic`. The type must match the business unit's pricing setup.

        This endpoint is **only applicable if your account has a Private Exchange setup**. If your account is not setup, it will result in a 403 forbidden error.
        For more information, if you need this behaviour, please contact your account manager.
      tags:
      - Exclusive Endpoints
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/BusinessUnitID'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetRedactedPricePredictionRequest'
      responses:
        '200':
          description: The calculated price prediction for a target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRedactedPricePredictionResponse'
        '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-05-27'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/target-groups/{target_group_id}/price:
    get:
      operationId: get_target_group_price
      summary: Retrieves the latest price for a target group
      description: |-
        Retrieves the latest price for a target group. The price will be based on the target group's pricing setup.

        This endpoint is **only applicable if your account has a Private Exchange setup**. If your account is not setup, it will result in a 403 forbidden error.
        For more information, if you need this behaviour, please contact your account manager.
      tags:
      - Exclusive Endpoints
      responses:
        '200':
          description: The price for a target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTargetGroupPriceResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/calculate-feasibility:
    post:
      summary: Provides non-draft Target Group feasibility for a given ID
      description: |-
        Returns 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.
        If a feasibility prediction is desired for an arbitrary Target Group setup that has no relation to the current Target Group, then the "Target Group feasibility" endpoint should be used instead (as opposed to "Target Group feasibility by ID").
      operationId: calculate_target_group_feasibility_by_id
      tags:
      - Feasibility
      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:
              $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'
        '422':
          $ref: '#/components/responses/Error_InvalidState'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/calculate-feasibility:
    post:
      deprecated: true
      operationId: calculate_target_group_feasibility_deprecated
      summary: Provides target group feasibility on draft mode (Deprecated)
      description: "Returns feasibility information for the draft target group Specification based\non the Target Group details\
        \ and profiles. \n\nIf profiles are provided, response includes per quota feasibility based \non profile conditions.\
        \ \n\nThis endpoint will be removed from a future release of the Cint Exchange API but will be supported for the lifetime\
        \ of this release.\n\n### Important Note-1 on Integration\n\n**Problem:** \nA common integration issue occurs when\
        \ the response from the `generateInterlocked` endpoint is incorrectly used as input for the `calculateFeasibility`\
        \ endpoint. This misuse leads to processing failures.\n\n**Background:**\nWithin quota objects in the interlocked\
        \ profile, related conditions can be structured in two formats: \n1. **Map of Related Conditions** \n2. **Array of\
        \ Related Conditions** \n\nThe `generateInterlocked` endpoint returns maps of related conditions. However, the `calculateFeasibility`\
        \ endpoint expects an array format. Passing the map format directly causes the feasibility calculation to fail.\n\n\
        **Recommended Mitigation:**\nTo ensure successful processing, the map structure must be converted to the expected\
        \ array format.\n\n**Step 1:** \nExample Response from generateInterlocked\n\n```json \n\"related_condition\": {\n\
        \  \"42\": [\n    {\n      \"text\": \"35-39\",\n      \"text_translated\": \"35-39\",\n      \"min\": 35,\n     \
        \ \"max\": 39\n    }\n  ],\n  \"43\": [\n    {\n      \"text\": \"Female\",\n      \"text_translated\": \"Female\"\
        ,\n      \"option\": \"2\"\n    }\n  ]\n} \n```\n\n**Step 2:** Transform to Array Format\n\n```json \n\"related_condition\"\
        : [\n  {\n    \"question_id\": 42,\n    \"conditions\": [\n      {\n        \"text\": \"35-39\",\n        \"text_translated\"\
        : \"35-39\",\n        \"min\": 15,\n        \"max\": 39\n      }\n    ]\n  },\n  {\n    \"question_id\": 43,\n   \
        \ \"conditions\": [\n      {\n        \"text\": \"Female\",\n        \"text_translated\": \"Female\",\n        \"\
        option\": \"2\"\n      }\n    ]\n  }\n] \n```\n\n**Step 3:**\nSubmit the transformed data to the `calculateFeasibility`\
        \ endpoint. The endpoint will then process the request successfully.\n\n**Root Cause:**\nThis issue arises due to\
        \ schema version inconsistencies across clients. An upcoming release will consolidate all versions into a single,\
        \ unified schema.\n\n### Important Note-2\nThough the Quota object's `ungrouped` conditions schema includes `quota_percentage`\
        \ and `quota_nominal` fields as shown in the following example, these fields are not used internally for any calculations\
        \ or logic. \n\n**Example:**\n\n```json \n\"ungrouped\": [\n  {\n    \"id\": \"01GV070G3SJECZAGE3Q3J6FV56\",\n   \
        \ \"condition\": {\n      \"related_condition\": [ ... ]\n    },\n    \"quota_percentage\": 40,\n    \"quota_nominal\"\
        : 906\n  }\n] \n```\n\nThe `quota_percentage` and `quota_nominal` field values in the above example will be ignored\
        \ by our backend services, These fields are retained for backward compatibility and documentation purposes only.\n"
      tags:
      - Feasibility
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateTargetGroupFeasibilityRequest'
      responses:
        '200':
          description: Successfully obtained target group feasibility.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateTargetGroupFeasibilityResponse'
          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'
        '422':
          $ref: '#/components/responses/Error_InvalidParams'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/target-groups/calculate-feasibility:
    post:
      operationId: calculate_target_group_feasibility
      summary: Provides Target Group feasibility on draft mode
      description: |
        Returns feasibility information for the draft Target Group Specification based
        on the Target Group details and profiles.

        If profiles are provided, response includes per quota feasibility based
        on profile conditions.
      tags:
      - Feasibility
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateTargetGroupFeasibilityRequestAlt'
      responses:
        '200':
          description: Successfully obtained target group feasibility.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateTargetGroupFeasibilityResponse'
          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'
        '422':
          $ref: '#/components/responses/Error_InvalidParams'
        '500':
          $ref: '#/components/responses/Error_Internal'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-assistant-assignment:
    get:
      operationId: get_fielding_assistant_assignment
      summary: Returns Fielding Assistant assignment details for a Target Group
      description: |-
        Returns Fielding Assistant assignment configuration details that includes:

          * Pricing
          * Quota overlay
          * Pacing
          * Soft launch
      tags:
      - Fielding Assistant
      responses:
        '200':
          description: Successfully returned Fielding Assistant assignment details for a Target Group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FieldingAssistantModulesAssignment'
          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 modules assignment
      description: Creates or updates a fielding assistant assignment with the configuration specified in the request body.
      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'
      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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/complete-fielding-runs-by-target-group-id:
    post:
      summary: Creates a bulk complete job for fielding runs of a set of target groups
      description: Creates a bulk job that completes all fielding runs for a set of target groups.  The status of the fielding
        runs will be set to complete, regardless if their goals or end dates have been reached.
      operationId: create_bulk_complete_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk complete target groups job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkCompleteTargetGroupJobRequest'
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: Location to created bulk complete target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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 for fielding runs of a set of target groups
      description: Returns a bulk complete job for fielding runs of a set of target groups.
      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 requested bulk complete target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkCompleteTargetGroupJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/launch-fielding-runs-by-target-group-id:
    post:
      summary: Creates a bulk launch job for fielding runs of a set of target groups
      description: Creates a bulk job that launches all scheduled fielding runs for a set of target groups.  The status of
        the fielding runs will be set to live and the fielding period will be updated to start `now`.
      operationId: create_bulk_launch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk launch target groups job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkLaunchTargetGroupJobRequest'
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: Location to created bulk launch target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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 for fielding runs of a set of target groups
      description: Returns a bulk launch job for fielding runs of a set of target groups.
      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 requested bulk launch target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkLaunchTargetGroupJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/pause-fielding-runs-by-target-group-id:
    post:
      summary: Creates a bulk pause job for fielding runs of a set of target groups
      description: Creates a bulk job that pauses all applicable fielding runs for a set of target groups.  The status of
        the fielding runs will be set to paused.
      operationId: create_bulk_pause_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk pause target groups job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkPauseTargetGroupJobRequest'
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: Location to created bulk pause target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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 for fielding runs of a set of target groups
      description: Returns a bulk pause job for fielding runs of a set of target groups.
      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 requested bulk pause target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkPauseTargetGroupJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/relaunch-fielding-runs-by-target-group-id:
    post:
      summary: Creates a bulk relaunch job for fielding runs of a set of target groups
      description: Creates a bulk job that relaunches all applicable completed fielding runs for a set of target groups.  The
        status of the fielding runs will be set to live if the run's goal and end date have not been reached.
      operationId: create_bulk_relaunch_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk relaunch target groups job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkRelaunchTargetGroupJobRequest'
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: Location to created bulk relaunch target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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 for fielding runs of a set of target groups
      description: Returns a bulk relaunch job for fielding runs of a set of target groups.
      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 requested bulk relaunch target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkRelaunchTargetGroupJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/resume-fielding-runs-by-target-group-id:
    post:
      summary: Creates a bulk resume job for fielding runs of a set of target groups
      description: Creates a bulk job that resumes all paused fielding runs for a set of target groups.  The status of the
        fielding runs will be set to live, if its goals and end date have not been reached.
      operationId: create_bulk_resume_target_groups_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk resume target groups job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkResumeTargetGroupJobRequest'
      tags:
      - Fielding (Batch)
      responses:
        '201':
          description: Location to created bulk resume target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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 for fielding runs of a set of target groups
      description: Returns a bulk resume job for fielding runs of a set of target groups.
      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 requested bulk resume target groups job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkResumeTargetGroupJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/launch-from-draft:
    post:
      summary: Creates a `launch fielding run from draft` job
      description: Creates a job that transitions a draft target group to live, able to collect completes on the Exchange.  The
        process is asynchronous, so success on this call just means a job has been created.  If validations are successful
        the target group will be set to live.  In order to check on the job you will need to retrieve the job status, please
        refer to the ["Returns a launch fielding run from draft job" endpoint](#tag/Fielding/operation/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: Create launch fielding run from draft job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLaunchFieldingRunFromDraftJobRequest'
      tags:
      - Fielding
      responses:
        '201':
          description: Location to the created launch fielding run from draft job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
        '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-05-27'
  ? /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 fielding run from draft` job
      description: Returns a `launch fielding run from draft` job.
      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 requested launch fielding run from draft job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLaunchFieldingRunFromDraftJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-run-jobs/schedule-from-draft:
    post:
      summary: Creates a `schedule fielding run from draft` job
      description: Returns location to the created 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: Create schedule fielding run from draft job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateScheduleFieldingRunFromDraftJobRequest'
      tags:
      - Fielding
      responses:
        '201':
          description: Location to the created schedule fielding run from draft job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            location:
              $ref: '#/components/headers/Location'
        '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-05-27'
  ? /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 fielding run from draft` job
      description: Returns a `schedule fielding run from draft` job.
      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 requested schedule fielding run from draft job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetScheduleFieldingRunFromDraftJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs:
    get:
      summary: Get fielding runs by target group id
      description: Fetches the fielding runs for a given target group.
      operationId: get_fielding_runs_by_target_group_id
      tags:
      - Fielding
      responses:
        '200':
          description: A successful response returns a list of matching fielding runs for a given target group id.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetListFieldingRunsResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}:
    get:
      summary: Retrieves a fielding run
      description: Fetches the details of a fielding run.
      operationId: get_fielding_run
      tags:
      - Fielding
      responses:
        '200':
          description: The requested fielding run.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetFieldingRunResponse'
        '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: Update a specific fielding run of a target group.
      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'
      responses:
        '202':
          description: A successful updated fielding run response.
          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-05-27'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/complete
  : post:
      operationId: complete_fielding_run
      summary: Complete a fielding run
      description: Completes a fielding run and sets the fielding run status to complete, regardless if its goals or end date
        has been reached. It is recommended to set Content-Length to zero when calling out to this endpoint.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      responses:
        '204':
          description: Successfully completed a Fielding Run.
          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-05-27'
  ? /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 a fielding run now
      description: Update the fielding run's fielding period to start now and launch the fielding run.  Both start and end
        time of the fielding run will be updated.
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      responses:
        '200':
          description: Successfully updated the fielding period and launched the fielding run
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            etag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LaunchNowFieldingRunResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/pause:
    post:
      operationId: pause_fielding_run
      summary: Pause a fielding run
      description: Pauses a live fielding run and sets the fielding run status to paused. To resume a fielding run and to
        set it live again, use the /resume API. It is recommended to set Content-Length to zero when calling out to this endpoint.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      responses:
        '204':
          description: Successfully paused a Fielding Run.
          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-05-27'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/relaunch
  : post:
      operationId: relaunch_fielding_run
      summary: Relaunch a fielding run
      description: Relaunches a completed fielding run and sets the fielding run status to live again, if its goals and end
        date have not been reached yet. It is recommended to set Content-Length to zero when calling out to this endpoint.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      responses:
        '204':
          description: Successfully relaunched a Fielding Run.
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/fielding-runs/{fielding_run_id}/resume:
    post:
      operationId: resume_fielding_run
      summary: Resume a fielding run
      description: Resumes a paused fielding run and sets the fielding run live again, if its goals and end date have not
        been reached. It is recommended to set Content-Length to zero when calling out to this endpoint.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      - $ref: '#/components/parameters/FieldingRunID'
      - $ref: '#/components/parameters/IfMatchRequired'
      tags:
      - Fielding
      responses:
        '204':
          description: Successfully resumed a Fielding Run.
          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-05-27'
  /demand/intelligent-calendar/suggest-days:
    post:
      summary: Suggest number of days for running a Target Group
      description: Provides you with a suggestion of the number of days for running a hypothetical Target Group. This endpoint
        requires you to give it the locale, the LOI, the IR, the expected number of completes, the price and optionally whether
        or not your Target Group collects PII.
      operationId: suggest_days
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuggestDaysRequest'
      responses:
        '200':
          description: Successfully return day suggestion.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestDaysResponse'
          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-05-27'
  /demand/intelligent-calendar/suggest-time-range:
    get:
      summary: Time range suggestion for different locales
      description: Provides you with a suggestion of the best possible time range to run your target groups in  any given
        locale. This endpoint requires you to give it a locale and a time range. You can put in a time range through either
        a start and end date or a number of days. If you use days, you will be given the best time range to start on from
        the moment you've made your request to the number of days you've given.
      operationId: suggest_time_range
      parameters:
      - name: days
        in: query
        description: Number of days in field. Only one of `days` or `start`/`end` MUST be provided.
        required: true
        schema:
          type: integer
          minimum: 1
        example: 10
      - name: start
        in: query
        description: Timestamp for start date in RFC3339 format, timezone-aware. Only one of `days` or `start`/`end` MUST
          be provided.
        required: true
        schema:
          type: string
          format: date-time
        example: '2023-01-01T23:00:00.000Z'
      - name: end
        in: query
        description: Timestamp for end date in RFC3339 format, timezone-aware. Only one of `days` or `start`/`end` MUST be
          provided.
        required: true
        schema:
          type: string
          format: date-time
        example: '2023-01-01T23:00:00.000Z'
      - name: locale
        in: query
        description: Locale code.
        required: true
        schema:
          $ref: '#/components/schemas/LocaleCode'
      responses:
        '200':
          description: Successfully return time range suggestion.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuggestedTimeRangeResponse'
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles:
    get:
      operationId: get_profiles
      summary: Get profiles
      description: Retrieve all profiles of a target group.
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Profiles retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAllProfilesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    post:
      operationId: create_profile
      summary: Create a profile
      description: "Creates a new profile on a launched target group by defining its questions + options \nsourced from the\
        \ question-translation endpoint.  \nDuplicate calls with the same payload will be no-ops (no second profile is created).\
        \  \n**This endpoint only handles initial creation.\n\nTo enable quotas, call [Enable Quotas](#tag/Manage-Profiling/operation/enable-quotas).\n\
        To update quotas, call [Update Quotas](#tag//Manage-Profiling/operation/bulk-update-quotas).\nTo update a profiles\
        \ conditions, call [Update profile conditions](#tag/Manage-Profiling/operation/update-profile-conditions).\nFor zip\
        \ profiles, currently, you can add only 999 conditions. In future releases, this limit will be increased.\n"
      tags:
      - Manage Profiling
      requestBody:
        description: Create profile request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProfileRequestBody'
      responses:
        '201':
          description: Successfully created profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutputRegularProfile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}:
    get:
      operationId: get_profile
      summary: Get profile
      description: Retrieve a specific profile of a target group.
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Profiles retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetProfileResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/conditions:
    put:
      operationId: update_profile_conditions
      summary: Updates profile conditions
      description: |
        Updates profile conditions. For zip profiles, currently, you can add only 999 conditions. In future releases, this limit will be increased.
      tags:
      - Manage Profiling
      requestBody:
        description: Update profiles condition request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileCreationConditions'
      responses:
        '200':
          description: Conditions Updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateProfileConditionsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/disable-quotas:
    post:
      operationId: disable_quotas_v2
      summary: Disables quotas for a profile
      description: Disables quotas for a profile.
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Successfully disabled quotas
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutputManageRegularProfile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/enable-quotas:
    post:
      operationId: enable_quotas
      summary: Enables quotas for a profile
      description: Enables quotas for a profile.
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Successfully enabled quotas
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutputManageRegularProfile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/group-quotas:
    post:
      operationId: group_quotas
      summary: Manage quota groups on a profile
      description: |
        Condition grouping is a way to combine a set of conditions into a single quota. This
        allows you to avoid setting individual quotas for each and every condition.
        Using this endpoint, you can declare the groups you want.
        Please note that each condition can be at most a member of one group. Also, a group of one
        condition will be automatically ungrouped.
        This is a declarative API.
      tags:
      - Manage Profiling
      requestBody:
        description: Updated profiles condition request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupQuotasRequestBody'
      responses:
        '201':
          description: Quota Groups Created with Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OutputManageRegularProfile'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/{profile_id}/remove-interlocks
  : post:
      operationId: remove_interlocks
      summary: Remove Interlocks
      description: Remove the interlocking between profiles.
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Successfully removed interlocks
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoveInterlocksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ProfileIDV2'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/apply-profiles:
    post:
      operationId: apply_profiles
      summary: Replace all profiles for a target group with provided profiles.
      description: "Verifies the input and if valid, applies all profiles to a specified target group. This endpoint overwrites\
        \ all existing profiles on the target group. Any profiles currently assigned to the target group that are not included\
        \ in this request's payload will be permanently removed.\nThis endpoint was intended to be used in conjuction with\
        \ profile templates, to quickly replace all profile setup with pre-existing standards.\n**Prerequisite for Interlocked\
        \ Profiles:** To apply an interlocked profile, you must first call the `generate_interlock` endpoint. Use the response\
        \ from that call when constructing the interlocked profile object for this request.\n\nNote that if you have enabled\
        \ any fielding assistant automation (quota_overlay, balance_fill, pacing) then any update to quotas will apply to\
        \ filling_goal.  If automation is \nnot enabled, then any changes to quotas will also update the actual quota value.\n"
      tags:
      - Manage Profiling
      requestBody:
        description: Apply profiles request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ApplyProfilesRequestBody'
            example:
              locale: eng_us
              filling_goal: 1000
              profile_adjustment_type: percentage
              profiles:
              - question_id: 96
                quotas_enabled: true
                conditions:
                  object: selection_conditions_details_template
                  data:
                  - option: '0'
                  - option: '1'
                  - option: '2'
                quotas:
                  ungrouped:
                  - index: 0
                    quota_percentage: 1
                  grouped:
                  - indexes:
                    - 1
                    - 2
                    name: Group 1 in question 96
                    quota_percentage: 1
              - question_id: 45
                quotas_enabled: true
                conditions:
                  object: zip_conditions_details_template
                  data:
                  - allow_all_zip: true
                    zip_codes: []
                quotas:
                  ungrouped: []
                  grouped: []
              interlocked_profile:
                id: 01K0CTH63Q4ZASX5ZJW3A08TMB
                name: GENDER, AGE
                quotas_enabled: true
                depends_on_questions:
                - 43
                - 42
                collects_pii: false
                quotas:
                  ungrouped:
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFE
                    condition:
                      id: 01JC3SMMDX6Y84EMBSC6V9TJFE
                      option: '1'
                      related_condition:
                        '42':
                        - text: 12-14
                          text_translated: 12-14
                          min: 12
                          max: 14
                    quota_percentage: 16
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFF
                    condition:
                      id: 01JC3SMMDX6Y84EMBSC6V9TJFF
                      option: '2'
                      related_condition:
                        '42':
                        - text: 15-19
                          text_translated: 15-19
                          min: 15
                          max: 19
                    quota_percentage: 20
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFG
                    condition:
                      id: 01JC3SMMDX6Y84EMBSC6V9TJFG
                      option: '3'
                      related_condition:
                        '42':
                        - text: 20-24
                          text_translated: 20-24
                          min: 20
                          max: 24
                    quota_percentage: 18
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFH
                    condition:
                      id: 01JC3SMMDX6Y84EMBSC6V9TJFH
                      option: '4'
                      related_condition:
                        '42':
                        - text: 25-40
                          text_translated: 25-40
                          min: 25
                    quota_percentage: 11
                    filling_goal: 30
                profiles:
                - id: 01JC3SMMDX6Y84EMBSC6V9TJFP
                  question_id: 43
                  quotas_enabled: true
                  interlock_id: 01K0CTH63Q4ZASX5ZJW3A08TMB
                  is_interlocked: true
                  conditions:
                    object: selection_conditions_details_template
                    data:
                    - option: '1'
                    - option: '2'
                  quotas:
                    ungrouped:
                    - index: 0
                      quota_percentage: 49
                    - index: 1
                      quota_percentage: 51
                    grouped: []
                - id: 01JC3SMMDX6Y84EMBSC6V9TJFQ
                  question_id: 42
                  quotas_enabled: true
                  interlock_id: 01K0CTH63Q4ZASX5ZJW3A08TMB
                  is_interlocked: true
                  conditions:
                    object: range_conditions_details_template
                    data:
                    - min: 15
                      max: 19
                    - min: 20
                      max: 29
                  quotas:
                    ungrouped:
                    - index: 0
                      quota_percentage: 49
                    - index: 1
                      quota_percentage: 51
                    grouped: []
      responses:
        '200':
          description: Successfully applied profiles
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyProfilesResponseBody'
              example:
                locale: eng_us
                filling_goal: 1000
                profile_adjustment_type: percentage
                profiles:
                - id: 01K1ED2S3FD51R6R761QSJK8EF
                  question_id: 45
                  name: ZIP
                  quotas_enabled: true
                  description: What is your zip code?
                  description_translated: What is your zip code?
                  conditions:
                    object: zip_conditions_details_template
                    data:
                    - id: 01K1ED2S3FD51R6R761QSJK8EG
                      text: ZIP_1
                      text_translated: ZIP_1
                      zip_codes: []
                      allow_all_zip: true
                  quotas:
                    ungrouped: []
                    grouped: []
                - id: 01K1ED2S3FD51R6R761QSJK8EA
                  question_id: 96
                  name: STATE
                  quotas_enabled: true
                  description: What is your state?
                  description_translated: What is your state?
                  conditions:
                    object: selection_conditions_details_template
                    data:
                    - id: 01K1ED2S3FD51R6R761QSJK8EB
                      text: NOT APPLICABLE
                      text_translated: NOT APPLICABLE
                      option: '0'
                    - id: 01K1ED2S3FD51R6R761QSJK8EC
                      text: ALABAMA
                      text_translated: ALABAMA
                      option: '1'
                    - id: 01K1ED2S3FD51R6R761QSJK8ED
                      text: ALASKA
                      text_translated: ALASKA
                      option: '2'
                  quotas:
                    ungrouped:
                    - id: 01K1ED2S3FD51R6R761QSJK8EB
                      conditions:
                      - 01K1ED2S3FD51R6R761QSJK8EB
                      quota: 10
                      quota_percentage: 1
                      filling_goal: 10
                      completes_goal: 10
                    grouped:
                    - id: 01K1ED2S3FD51R6R761QSJK8EE
                      name: Group 1 in question 96
                      conditions:
                      - 01K1ED2S3FD51R6R761QSJK8EC
                      - 01K1ED2S3FD51R6R761QSJK8ED
                      quota_percentage: 1
                      quota: 10
                      filling_goal: 10
                      completes_goal: 10
                interlocked_profile:
                  id: 01K0CTH63Q4ZASX5ZJW3A08TMB
                  name: GENDER, AGE
                  quotas_enabled: true
                  depends_on_questions:
                  - 43
                  - 42
                  quotas:
                    ungrouped:
                    - id: 01K0CTH63WBM38YN46T5HF4H5Z
                      condition:
                        id: 01K0CTH63WBM38YN46T5HF4H5Z
                        text: 15-19, Male
                        text_translated: 15-19, Male
                        option: '1'
                        related_condition:
                          '42':
                          - text: 15-19
                            text_translated: 15-19
                            min: 15
                            max: 19
                          '43':
                          - text: Male
                            text_translated: Male
                            option: '1'
                      quota_percentage: 3
                      filling_goal: 34
                      quota: 34
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ4
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ4
                        text: 15-19, Female
                        text_translated: 15-19, Female
                        option: '2'
                        related_condition:
                          '42':
                          - text: 15-19
                            text_translated: 15-19
                            min: 15
                            max: 19
                          '43':
                          - text: Female
                            text_translated: Female
                            option: '2'
                      quota_percentage: 4
                      filling_goal: 44
                      quota: 44
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ5
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ5
                        text: 20-29, Male
                        text_translated: 20-29, Male
                        option: '3'
                        related_condition:
                          '42':
                          - text: 20-29
                            text_translated: 20-29
                            min: 20
                            max: 29
                          '43':
                          - text: Male
                            text_translated: Male
                            option: '1'
                      quota_percentage: 15
                      filling_goal: 157
                      quota: 157
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ6
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ6
                        text: 20-29, Female
                        text_translated: 20-29, Female
                        option: '4'
                        related_condition:
                          '42':
                          - text: 20-29
                            text_translated: 20-29
                            min: 20
                            max: 29
                          '43':
                          - text: Female
                            text_translated: Female
                            option: '2'
                      quota_percentage: 18
                      filling_goal: 183
                      quota: 183
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ7
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ7
                        text: 35-39, Male
                        text_translated: 35-39, Male
                        option: '5'
                        related_condition:
                          '42':
                          - text: 35-39
                            text_translated: 35-39
                            min: 35
                            max: 39
                          '43':
                          - text: Male
                            text_translated: Male
                            option: '1'
                      quota_percentage: 10
                      filling_goal: 106
                      quota: 106
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ8
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ8
                        text: 35-39, Female
                        text_translated: 35-39, Female
                        option: '6'
                        related_condition:
                          '42':
                          - text: 35-39
                            text_translated: 35-39
                            min: 35
                            max: 39
                          '43':
                          - text: Female
                            text_translated: Female
                            option: '2'
                      quota_percentage: 11
                      filling_goal: 118
                      quota: 118
                    - id: 01K0CTH63XY6XHXB2TW2GPERJ9
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJ9
                        text: 40-49, Male
                        text_translated: 40-49, Male
                        option: '7'
                        related_condition:
                          '42':
                          - text: 40-49
                            text_translated: 40-49
                            min: 40
                            max: 49
                          '43':
                          - text: Male
                            text_translated: Male
                            option: '1'
                      quota_percentage: 16
                      filling_goal: 168
                      quota: 168
                    - id: 01K0CTH63XY6XHXB2TW2GPERJA
                      condition:
                        id: 01K0CTH63XY6XHXB2TW2GPERJA
                        text: 40-49, Female
                        text_translated: 40-49, Female
                        option: '8'
                        related_condition:
                          '42':
                          - text: 40-49
                            text_translated: 40-49
                            min: 40
                            max: 49
                          '43':
                          - text: Female
                            text_translated: Female
                            option: '2'
                      quota_percentage: 18
                      filling_goal: 188
                      quota: 188
                    grouped: []
                  profiles:
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFP
                    question_id: 43
                    name: GENDER
                    quotas_enabled: true
                    description: What is your gender?
                    description_translated: What is your gender?
                    conditions:
                      object: selection_conditions_details_template
                      data:
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRQ
                        option: '1'
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRR
                        option: '2'
                    quotas:
                      ungrouped:
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRQ
                        conditions:
                        - '0'
                        quota: 0
                        quota_percentage: 49
                        filling_goal: 0
                        prescreens: 0
                        completes: 0
                        completes_goal: 0
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRR
                        conditions:
                        - '1'
                        quota: 0
                        quota_percentage: 51
                        filling_goal: 0
                        prescreens: 0
                        completes: 0
                        completes_goal: 0
                      grouped: []
                    interlock_id: 01K0CTH63Q4ZASX5ZJW3A08TMB
                  - id: 01JC3SMMDX6Y84EMBSC6V9TJFQ
                    question_id: 42
                    name: AGE
                    quotas_enabled: true
                    description: What is your age?
                    description_translated: What is your age?
                    conditions:
                      object: range_conditions_details_template
                      data:
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRS
                        min: 15
                        max: 19
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRT
                        min: 20
                        max: 29
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRV
                        min: 35
                        max: 39
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRW
                        min: 40
                        max: 49
                    quotas:
                      ungrouped:
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRS
                        conditions:
                        - '0'
                        quota: 0
                        quota_percentage: 49
                        filling_goal: 0
                        prescreens: 0
                        completes: 0
                        completes_goal: 0
                      - id: 01K0CTH6CBNHE4EZT4GTN9DZRT
                        conditions:
                        - '1'
                        quota: 0
                        quota_percentage: 51
                        filling_goal: 0
                        prescreens: 0
                        completes: 0
                        completes_goal: 0
                      grouped: []
                    interlock_id: 01K0CTH63Q4ZASX5ZJW3A08TMB
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/batch-delete-profile-quotas:
    post:
      operationId: batch_delete_profile_quotas
      summary: Bulk delete profile quotas from a target group
      description: Bulk delete profile quotas from a target group.
      tags:
      - Manage Profiling
      requestBody:
        description: Delete profiles request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDeleteProfileQuotasRequestBody'
      responses:
        '204':
          description: Successfully deleted quotas
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/batch-delete-profiles:
    post:
      operationId: batch_delete_profiles
      summary: Bulk delete profiles from a target group
      description: Bulk delete profiles from a target group.
      tags:
      - Manage Profiling
      requestBody:
        description: Delete profiles request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDeleteProfileRequestBody'
      responses:
        '204':
          description: Successfully deleted profiles
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/create-interlocked-profile:
    post:
      operationId: create_interlocked_profile
      summary: Create an interlocked profile
      description: For use with live target groups.  Use this endpoint to generate interlocked profile from up to 3 existing
        profiles with quotas enabled, up to 150 total quotas.  Supplier distribution will be automatically applied to the
        quotas.
      tags:
      - Manage Profiling
      requestBody:
        description: Create profile request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInterlockedProfileRequestBody'
      responses:
        '200':
          description: Successfully created profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateInterlockedProfileResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profiles/filling-goal:
    put:
      operationId: bulk_update_quotas
      summary: Update quotas
      description: "Update quotas on a live target group.  \nNote that if you have enabled any fielding assistant automation\
        \ (quota_overlay, balance_fill, pacing) then this update will not impact completes_goal.  If automation is \nnot enabled,\
        \ then any changes to filling goal will also update completes goal.\n"
      tags:
      - Manage Profiling
      requestBody:
        description: Updated profiles quotas request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFillingGoalRequestBody'
      responses:
        '201':
          description: Successfully created profile
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAllProfilesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/quota-distribution:
    get:
      operationId: get_target_group_quota_distribution
      summary: Get Target Group Quota Distribution
      description: "Get the distribution of quotas given the target group filling goal. \nValues are evenly divided among\
        \ all quotas in all profiles for a target group.\n"
      tags:
      - Manage Profiling
      responses:
        '200':
          description: Quota Distribution Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTargetGroupQuotaDistributionResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/TargetGroupFillingGoal'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /accounts/{account_id}/webhooks:
    get:
      tags:
      - Notifications Webhooks
      summary: Returns a list of all webhooks for an account.
      operationId: get_webhooks
      description: Lists all available webhooks for an account.
      parameters:
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/EndBefore'
      responses:
        '200':
          description: Successfully returned a list of all webhooks for an account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhooksList'
              example:
                webhooks:
                - id: e8e705b9-ef5a-437c-873a-4f49a679f802
                  url: https://example.com/target-group-updated-webhook
                  event:
                  - 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
                  event:
                  - 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 for an account.
      requestBody:
        $ref: '#/components/requestBodies/WebhookCreate'
      responses:
        '201':
          description: Successfully created a new webhook.
          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-05-27'
  /accounts/{account_id}/webhooks/{webhook_id}:
    get:
      tags:
      - Notifications Webhooks
      summary: Returns a webhook for an account.
      operationId: get_webhook
      description: Returns a webhook for an account.
      responses:
        '200':
          description: Successfully returned a webhook.
          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 a webhook for an account.
      requestBody:
        $ref: '#/components/requestBodies/WebhookUpdate'
      responses:
        '200':
          description: Successfully updated a webhook.
          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: Deletes a webhook for an account.
      parameters:
      - $ref: '#/components/parameters/IfMatch'
      responses:
        '204':
          description: Successfully deleted a webhook.
        '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-05-27'
  /accounts/{account_id}/webhooks/{webhook_id}/regenerate-secret:
    post:
      tags:
      - Notifications Webhooks
      summary: Regenerate secret for a webhook.
      operationId: regenerate_webhook_secret
      description: Regenerates secret for a webhook.
      responses:
        '200':
          description: Successfully new webhook secret generated.
          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'
          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'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/WebhookID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /accounts/{account_id}/webhooks/events:
    get:
      tags:
      - Notifications Webhooks
      summary: Returns a list of valid events for webhooks.
      operationId: get_webhook_events
      description: Returns a list of valid events for webhooks. These events can be used to set up webhook type notifications.
      responses:
        '200':
          description: Success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookEventsList'
              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-05-27'
  /demand/accounts/{account_id}/drafts/generate-interlocked-profile:
    post:
      operationId: generate_draft_interlock_profile
      summary: Generate interlocked profile from provided profiles
      tags:
      - Profiling Helper
      description: "This API lets you create interlocked profiles without an existing target group, allowing you to experiment\
        \ with various conditions.  It automatically applies supplier distribution data to quotas on the interlocked profile.\n\
        \ \nYou can interlock up to 3 profiles; when using interlocked profiles on a draft target group, you are limited to\
        \ up to 150 total quotas defined (including interlock) on launch.\n \nNote that this API is applicable only for draft\
        \ target groups.\n"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateDraftInterlockRequest'
      responses:
        '200':
          description: Successfully returned valid interlocked profile JSON.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DraftInterlockProfilesResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFoundErrorResponseDemographics'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/profiles/validate:
    post:
      operationId: validate_profiles
      summary: Validate profiles
      description: "Validate profiles and provide warnings or errors.\n\nNote there is no storage or persistence behind this\
        \ endpoint; POST is used to enable requestors to send full profiles payload to check that it is valid before saving\
        \ and launching a Fielding Run.\n### Important Note-1 on Integration\n\n**Problem:** \nA common integration issue\
        \ occurs when the response from the `generateInterlocked` endpoint is incorrectly used as input for the \n`calculateFeasibility`\
        \ endpoint. This misuse leads to processing failures.\n\n**Background:**\nWithin quota objects in the interlocked\
        \ profile, related conditions can be structured in two formats: \n1. **Map of Related Conditions** \n2. **Array of\
        \ Related Conditions** \nThe `generateInterlocked` endpoint returns maps of related conditions. However, the `calculateFeasibility`\
        \ endpoint expects an array \nformat. Passing the map format directly causes the feasibility calculation to fail.\n\
        \n**Recommended Mitigation:**\nTo ensure successful processing, the map structure must be converted to the expected\
        \ array format.\n\n**Step 1:** \nExample Response from generateInterlocked\n\n```json \n\"related_condition\": {\n\
        \  \"42\": [\n    {\n      \"text\": \"35-39\",\n      \"text_translated\": \"35-39\",\n      \"min\": 35,\n     \
        \ \"max\": 39\n    }\n  ],\n  \"43\": [\n    {\n      \"text\": \"Female\",\n      \"text_translated\": \"Female\"\
        ,\n      \"option\": \"2\"\n    }\n  ]\n} \n```\n**Step 2:** Transform to Array Format\n\n```json \n\"related_condition\"\
        : [\n  {\n    \"question_id\": 42,\n    \"conditions\": [\n      {\n        \"text\": \"35-39\",\n        \"text_translated\"\
        : \"35-39\",\n        \"min\": 15,\n        \"max\": 39\n      }\n    ]\n  },\n  {\n    \"question_id\": 43,\n   \
        \ \"conditions\": [\n      {\n        \"text\": \"Female\",\n        \"text_translated\": \"Female\",\n        \"\
        option\": \"2\"\n      }\n    ]\n  }\n] \n```\n\n**Step 3:**\nSubmit the transformed data to the `calculateFeasibility`\
        \ endpoint. The endpoint will then process the request successfully.\n\n**Root Cause:**\nThis issue arises due to\
        \ schema version inconsistencies across clients. An upcoming release will consolidate all versions into a single,\
        \ unified schema.\n"
      tags:
      - Profiling Helper
      requestBody:
        description: Validate profiles request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidateProfilesRequestBody'
      responses:
        '200':
          description: Successfully validated profile
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequestErrorResponseDemographics'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedErrorResponseDemographics'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenErrorResponseDemographics'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDemographics'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalErrorResponseDemographics'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/panel-distribution/draft:
    post:
      summary: Get supplier distribution for draft target group profile conditions
      description: |-
        Supplier distribution enables the prediction of quota allocations for each profile condition, based on historical data trends.  For draft profiles, you must POST the full profile JSON for the system to properly predict appropriate distribution.
        Note that there is no storage or persistence behind this endpoint; POST Is used to allow requestors to send full payload and generate the supplier distribution structure.  The resulting output values should be used for specific quota numbers in your profile JSON before saving and launching your draft.
      operationId: get_panel_distribution_draft
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PanelDistributionDraftRequest'
      responses:
        '200':
          description: Successfully return supplier distribution prediction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplyProfilesResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest_DemandAPI'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '500':
          $ref: '#/components/responses/Error_Internal_DemandAPI'
      tags:
      - Profiling Quotas By Supplier
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  ? /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/profile/{profile_id}/panel-distribution
  : get:
      summary: Get supplier distribution for profile conditions in manage page
      description: Supplier distribution enables the prediction of quota allocations for  each profile condition, based on
        historical data trends.
      operationId: get_v2_panel_distribution_by_profile
      responses:
        '200':
          description: Successfully return supplier distribution prediction.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPanelDistributionResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest_DemandAPI'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '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/ProfileID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/profiling-templates:
    get:
      tags:
      - Profiling Templates
      operationId: list_profile_templates
      summary: List profile templates
      description: |
        Returns a paginated list of available profile templates in the form of a summary.
      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: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProfileTemplatesList'
        '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: Creates a new profile template.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileTemplateRequest'
      responses:
        '201':
          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'
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/profiling-templates/{profile_template_id}:
    get:
      tags:
      - Profiling Templates
      operationId: get_profile_template
      summary: Get a profile template
      description: Returns a certain profile template by its ID.
      parameters:
      - $ref: '#/components/parameters/ProfilingTemplatesLocales'
      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'
    put:
      tags:
      - Profiling Templates
      operationId: edit_profile_template
      summary: Edit a profile template
      description: Lets you edit an existing profile template.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProfileTemplateRequest'
      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: Deletes a certain profile template by its ID.
      parameters:
      - $ref: '#/components/parameters/ProfilingTemplatesLocales'
      responses:
        '204':
          description: OK
          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-05-27'
  /demand/accounts/{account_id}/projects:
    get:
      summary: Lists projects for an account
      operationId: list_account_projects
      description: Fetch a paginated list of projects for a specific account. Each individual project contains details such
        as the project name, last activity and 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: Successfully returns a paginated list of projects for an account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsList'
          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
      operationId: create_project
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInfo'
      responses:
        '202':
          description: Accepted
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            ETag:
              $ref: '#/components/headers/ETag'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectIDResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}:
    get:
      summary: Get an existing project by ID
      operationId: get_project_by_id
      responses:
        '200':
          description: A successful response returns the project details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDetails'
          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 an existing project
      operationId: update_project
      parameters:
      - $ref: '#/components/parameters/IfMatchRequired'
      - $ref: '#/components/parameters/IdempotencyKeyRequired'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProjectInfoUpdate'
      responses:
        '200':
          description: Successfully updated the project details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectIDWithHumanReadableIDResponse'
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/overview:
    get:
      summary: Overview for a project
      operationId: project_overview
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectOverview'
        '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/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/questions-translation:
    get:
      summary: List Questions with translations
      description: |-
        List questions with their translations.
        If you call with no parameters, you will retrieve the first page (100) of questions.  use start_after and end_before to navigate through pages of questions.
        To show account specific quals, use allow_custom_quals parameter.
        You can pass keywords to the query parameter.  This will return a list of questions based on matches in the question or option text.

        By default, this api filters baseed on our machine learning model and thus only returns questions that have sufficient training data.  To retrieve all questions, pass true to the no_filter parameter.
      operationId: account_questions_translation
      responses:
        '200':
          description: List account questions and translations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QuestionsTranslationResponse'
              examples:
                default:
                  $ref: '#/components/examples/QuestionsTranslationResponseExample'
        '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:
      - Questions
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/QuestionsTranslationIDs'
    - $ref: '#/components/parameters/QuestionsTranslationLocale'
    - $ref: '#/components/parameters/QuestionsTranslationTranslationLanguage'
    - $ref: '#/components/parameters/QuestionsTranslationLimit'
    - $ref: '#/components/parameters/QuestionsTranslationStartAfter'
    - $ref: '#/components/parameters/QuestionsTranslationEndBefore'
    - $ref: '#/components/parameters/QuestionsTranslationAllowCustomQuals'
    - $ref: '#/components/parameters/QuestionsTranslationQuery'
    - $ref: '#/components/parameters/QuestionsTranslationNoFilter'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/questions/categories:
    get:
      operationId: list_all_question_categories
      summary: List all question categories
      description: Returns a list of all available question categories.
      tags:
      - Questions
      responses:
        '200':
          description: Successfully return question categories.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListQuestionCategories'
        '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-05-27'
  /demand/accounts/{account_id}/reconciliations:
    get:
      summary: List submitted reconciliations by account id
      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
      description: Submit reconciliation requests for response IDs to reverse their status. A CSV 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-05-27'
  /demand/accounts/{account_id}/reconciliations/{request_id}:
    get:
      summary: Reconciliation submission by request ID
      operationId: get_reconciliation_by_request_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      responses:
        '200':
          description: Successfully returned reconciliation request.
          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-05-27'
  /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.
          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-05-27'
  /demand/accounts/{account_id}/reconciliations/{request_id}/target-groups/{target_group_id}:
    get:
      summary: Information for a given target group/request
      operationId: get_target_group_by_request_id_and_target_group_id
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/RequestID'
      - $ref: '#/components/parameters/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-05-27'
  /demand/accounts/{account_id}/reconciliations/eligible-target-groups:
    get:
      summary: List target groups eligible for reconciliation
      description: Returns 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 target group.
          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-05-27'
  /demand/accounts/{account_id}/reconciliations/reason-codes:
    get:
      summary: List reconciliation reason codes and details
      description: List all reconciliation reason codes, names and descriptions.
      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-05-27'
  /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 the Recontact opportunities added to a Target Group
      description: Creates a job to remove all the specified Respondent ID (RSID) Recontact opportunities added to a Target
        Group. 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. While execution time may vary, 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: The generated job response for the requested respondent ID recontacts removal
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRecontactsJobResponse'
        '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-05-27'
  ? /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-05-27'
  /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 Recontact opportunities by file
      description: Creates a job to upload new Respondent ID (RSIDs) Recontact opportunities 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 per job and
        the file size must be less than 5MB. While execution time may vary, storing 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'
      - $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 with Respondent ID (RSIDs).
            example: |
              0F1CE179-A917-49FF-9D50-B05FC91F7BD4
              75F1404C-65F6-4937-AD2A-588E4F66E07F
              9C23131D-388B-4E03-97B3-CF783E491445
      responses:
        '201':
          description: The generated Job ID of the requested upload RSIDs by file operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRecontactUploadRsidsByFileJobResponse'
        '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-05-27'
  ? /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 information on an upload Recontact opportunities by file job
      description: Gets information on a upload Respondent ID (RSID) recontact opportunities by file job. This should be checked
        regularly for progress and status. Execution time can vary but adding 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 Recontact "Upload RSIDs by File" job.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRecontactRsidsUpdateJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/overview:
    get:
      operationId: get_recontacts_overview
      summary: Retrieve 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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/recontacts/rsids:
    get:
      operationId: get_target_group_rsid_recontact_list
      summary: Gets a paginated list of Respondent IDs available for Recontact on a Target Group.
      description: Gets a paginated list of Respondent IDs (RSIDs) who are eligable for a Recontact opportunity on a given
        Target Group.
      tags:
      - Recontacts
      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: All RSIDs set for recontact on a given Target Group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecontactsRespondentIDListResponse'
        '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-05-27'
  /demand/accounts/{account_id}/reports:
    get:
      operationId: report_requests
      summary: List of report requests
      description: Lists all report requests made by the user in authorization token in last 90 days.  If the token has a
        `buyer_admin` role, then it will list all report requests made by all users in the account in last 90 days.
      tags:
      - Reports
      responses:
        '200':
          description: Successfully returns all report requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportRequestList'
        '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/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/reports/{report_id}/download:
    get:
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ReportId'
      operationId: download_report_v2
      summary: Download Report
      description: Allows user to download report generated (csv format or excel format based on report type).
      tags:
      - Reports
      responses:
        '200':
          description: Successfully returns a CSV or XLSX report file.
          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:
              $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/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/reports/{report_id}/share:
    get:
      operationId: share_report
      summary: Share Report
      description: Generate a shareable presigned url link for the report.
      tags:
      - Reports
      responses:
        '200':
          description: Successfully returns a report shareable presigned url link.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportShareResponse'
        '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/ReportTypeQueryRequired'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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'
        '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-05-27'
  /demand/accounts/{account_id}/reports/{report_type}:
    post:
      operationId: generate_report
      summary: Generate Report
      description: |-
        Generate reports in asynchronous pattern. Response includes a request identifier that can be used to track the request progress.  Response also includes a `report_url` that can be used to download the report when the request is complete. User can select if report needs to be generated for entire account or project or one or multiple target groups.
        **Report Name:**
        * Completes

          Level: Account, BU, Project and Target group
          Multiple selection: Yes
          Comments: Except account, user can select multiple values for BU, Project, Targetgroup

        * Reconciliation Eligible RIDs

          Level: Project and Target group
          Multiple selection: Yes
          Comments: Only multiple target groups selection is possible. Project is restricted to only 1 project at a time

        * Reconciliation status

          Level: Account, Project and Target group
          Multiple selection: Yes
          Comments: Except account, user can select multiple values for Project, Targetgroup

        * Respondent Analysis

          Level: Project and Target group
          Multiple selection: Yes
          Comments: Only Target group can be multiselect. Project is restricted to only 1 project at a time

        * Sample bought

          Level: Account, BU, Project and Target group
          Multiple selection: Yes
          Comments: Except account, user can select multiple values for BU, Project, Targetgroup

        * Termination details

          Level: Target group
          Multiple selection: No
          Comments: Only 1 Target group is allowed to be selected
      tags:
      - Reports
      requestBody:
        description: Report request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportGenerationRequest'
      responses:
        '202':
          description: Accepted report generation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportGenerationResponse'
          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/ReportType'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/reports/download:
    get:
      operationId: download_report
      summary: Download report (Deprecated)
      description: |-
        Allows user to download report generated (csv format or excel format based on report type). When a report is generated, `report_url` parameter is returned in the response. That parameter has this endpoint with all necessary parameters filled.
        **⚠️ DEPRECATED:** This endpoint is deprecated. Please use `/accounts/{account_id}/reports/{report_id}/download` instead.
      tags:
      - Reports
      responses:
        '200':
          description: Successfully returns a CSV or XLSX report file.
          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:
              $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'
      deprecated: true
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ReportTypeQuery'
    - $ref: '#/components/parameters/ReportFileName'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live:
    post:
      operationId: upload_live_respondent_unique_codes
      summary: Upload respondent unique codes for target group live url
      description: "Upload respondent unique code(s) for the given target group. They will be inserted into the **live URL**\
        \ for each respondent entering the session.\nThis will only be used in the context of the **live URL** of the target\
        \ group (as opposed to test codes used with the test URL).\n\nThe URL for the given target group will require setup\
        \ by using `[%RESPONDENT_UNIQUE_CODE%]`  \nAn example of the live URL setup: `https://example_live_url.com?[%RESPONDENT_UNIQUE_CODE%]`\n\
        \n**Processing Rules:**\n* Batch Size: A minimum of 1 and a maximum of 20 000 codes can be submitted in a single request.\n\
        * Code Format: Codes must consist solely of alphanumeric characters, hyphens (-), and underscores (_). \n  Each code\
        \ must have a length between 1 and 128 characters, inclusive.\n  All leading and trailing whitespace will be automatically\
        \ removed upon submission.\n* Uniqueness and Handling of Duplicates: Within the context of this target group's respondent\
        \ unique codes for live urls, only unique \n  submissions are processed. If duplicate codes are present in the uploaded\
        \ batch, only their first occurrence \n  will be considered for addition. Codes that were previously already uploaded\
        \ as **live** (i.e. not as test\n  codes) for the specified target group will be ignored and won't be added again.\n\
        \nThis endpoint is **only applicable if your account has access to this feature**. If your account does not have access,\
        \ it will result in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your\
        \ account manager."
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      requestBody:
        description: The request body for uploading live respondent unique codes.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UploadLiveRespondentUniqueCodesRequest'
      responses:
        '200':
          description: Contains information on how many respondent unique codes were successfully uploaded. For example, already  existing
            or duplicate codes will not be uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadLiveRespondentUniqueCodesResponse'
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live/stats:
    get:
      operationId: get_live_respondent_unique_codes_stats
      summary: Retrieves respondent unique code statistics for target group live url
      description: "Provides an overview of respondent unique code(s) usage for a specific target group live url. It returns\
        \ the total \nnumber of **live url** respondent unique codes stored and the count of those that remain unconsumed.\n\
        \nThis endpoint is only applicable if your account has access to this feature. If your account does not have access,\
        \ it will result in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your\
        \ account manager."
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '200':
          description: The status of a live respondent unique codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetLiveRespondentUniqueCodesStatsResponse'
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/live/unconsumed:
    delete:
      operationId: delete_unconsumed_live_respondent_unique_codes
      summary: Deletes all unconsumed respondent unique codes for target group live url
      description: "Deletes all **live url** respondent unqiue code(s) that are currently unconsumed for a specific target\
        \ group. These codes \nare associated with the **live url** that were previously added via the upload endpoints.\n\
        \n**Warning:** This action can potentially pause the target group if the target group is currently live.\n\nThis endpoint\
        \ is only applicable if your account has access to this feature. If your account does not have access, it will result\
        \ in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your account manager."
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '204':
          description: Successfully deleted all unconsumed live respondent unique codes for the target group.
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test:
    post:
      operationId: upload_test_respondent_unique_codes
      summary: Upload respondent unique codes for target group test url
      description: "Upload respondent unique code(s) for the given target group. They will be inserted into the **test URL**\
        \ for each respondent entering the session.\nThis will only be used in the context of the **test URL** of the target\
        \ group (as opposed to test codes used with the test URL)\n\nThe URL for the given target group will require setup\
        \ by using `[%RESPONDENT_UNIQUE_CODE%]`  \nAn example of the test URL setup: `https://example_test_url.com?[%RESPONDENT_UNIQUE_CODE%]`\n\
        \n**Processing Rules:**\n* Batch Size: A minimum of 1 and a maximum of 20 000 codes can be submitted in a single request.\n\
        * Code Format: Codes must consist solely of alphanumeric characters, hyphens (-), and underscores (_). \n  Each code\
        \ must have a length between 1 and 128 characters, inclusive.\n  All leading and trailing whitespace will be automatically\
        \ removed upon submission.\n* Uniqueness and Handling of Duplicates: Within the context of this target group's respondent\
        \ unique codes for test urls, only unique \n  submissions are processed. If duplicate codes are present in the uploaded\
        \ batch, only their first occurrence \n  will be considered for addition. Codes that were previously already uploaded\
        \ as **test** (i.e. not as test\n  codes) for the specified target group will be ignored and won't be added again.\n\
        \nThis endpoint is only applicable if your account has access to this feature. If your account does not have access,\
        \ it will result in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your\
        \ account manager."
      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'
      responses:
        '200':
          description: Contains information on how many respondent unique codes were successfully uploaded. For example, already  existing
            or duplicate codes will not be uploaded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadTestRespondentUniqueCodesResponse'
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test/stats:
    get:
      operationId: get_test_respondent_unique_codes_stats
      summary: Retrieves respondent unique codes statistics for target group test url
      description: "Provides an overview of test url respondent unique code(s) usage for a specific target group. It returns\
        \ the total \nnumber of **test url** respondent unique codes stored and the count of those that remain unconsumed.\n\
        \nThis endpoint is only applicable if your account has access to this feature. If your account does not have access,\
        \ it will result in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your\
        \ account manager."
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '200':
          description: The status of a test respondent unique codes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTestRespondentUniqueCodesStatsResponse'
        '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-05-27'
  /demand/accounts/{account_id}/target-groups/{target_group_id}/respondent-unique-codes/test/unconsumed:
    delete:
      operationId: delete_unconsumed_test_respondent_unique_codes
      summary: Deletes all unconsumed respondent unique codes for target group test url
      description: "Deletes all **test url** respondent unique code(s) that are currently unconsumed for a specific target\
        \ group. These codes \nare associated with the **test url** that were previously added via the upload endpoints.\n\
        \nThis endpoint is only applicable if your account has access to this feature. If your account does not have access,\
        \ it will result in a 403 forbidden error.\nFor more information, if you need this behaviour, please contact your\
        \ account manager."
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Respondent Unique Codes
      responses:
        '204':
          description: Successfully deleted all unconsumed test respondent unique codes for the target group.
        '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-05-27'
  /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: Fetch an allocation account template for a business unit and locale
      description: This endpoint will return a account allocation specification template based on a account id, 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.
      tags:
      - Target Group Allocations
      parameters:
      - $ref: '#/components/parameters/LocaleCodeFilter'
      responses:
        '200':
          description: A successful response returns the account allocation template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetAccountAllocationTemplateBusinessUnitIdResponse'
          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/AccountID'
    - $ref: '#/components/parameters/BusinessUnitID'
    - $ref: '#/components/parameters/TemplateID'
    - $ref: '#/components/parameters/Traceparent'
    - $ref: '#/components/parameters/Tracestate'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /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'
        '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/Traceparent'
    - $ref: '#/components/parameters/Tracestate'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/system-allocation-template:
    get:
      operationId: get_system_allocation_template_by_business_unit_id
      summary: Fetch the system allocation default for a business unit and locale
      description: This endpoint will return the system allocation default template based on a account id, business unit id,
        and locale. The system default template has all of the available suppliers from the open exchange filtered by the
        locale and will also return all the private exchange suppliers within the blocked suppliers group if the business
        unit has any private deals configured. This data is dynamic as suppliers enter or exit particular markets. You can
        use this endpoint to ensure that your other allocations calls always use suppliers who are valid for the locale where
        you are creating a Target Group.
      tags:
      - Target Group Allocations
      responses:
        '200':
          description: A successful response returns the system allocation default template.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSystemAllocationTemplateBusinessUnitIdResponse'
        '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/Traceparent'
    - $ref: '#/components/parameters/Tracestate'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/allocation-specification:
    get:
      operationId: get_target_group_allocation_specification
      summary: Fetches allocations for a target group
      description: This endpoint will return the allocations of a target group.  Allowing you to see which suppliers are blocked,
        how the allocated suppliers are distributed into groups, and what their minimum and maximum percentages are.
      tags:
      - Target Group Allocations
      responses:
        '200':
          description: A successful response returns allocations for a target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetSupplyAllocationResponse'
        '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 will update the allocations of a target group.  Allowing you to set which suppliers are blocked,
        how the allocated suppliers are distributed into groups, and what their minimum and maximum percentages are.
      tags:
      - Target Group Allocations
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SupplyAllocationUpdateRequest'
      responses:
        '204':
          description: Successfully updated allocations.
          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/Traceparent'
    - $ref: '#/components/parameters/Tracestate'
    - $ref: '#/components/parameters/CintAPIVersion-2025-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/batch-jobs/update-target-group-project-managers:
    post:
      summary: Creates a bulk update target group project managers job
      description: Returns location to created bulk update target group project managers job.
      operationId: create_bulk_update_target_group_project_manager_job
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Create bulk update target group project managers job request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateBulkUpdateTargetGroupProjectManagerJobRequest'
      tags:
      - Target Groups (Batch)
      responses:
        '201':
          description: Location to created bulk update target group project managers job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
            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/CintAPIVersion-2025-05-27'
  /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: Returns a bulk update target group project managers job.
      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: The requested bulk update target group project managers job.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBulkUpdateTargetGroupProjectManagerJobResponse'
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups:
    get:
      operationId: get_list_target_groups
      summary: Retrieve a paginated list of Target Groups for a given project, based on filter criteria
      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: "Create a target group in draft status. \n\nThe request body may include both `profiles` and `interlocked_profiles`\
        \ arrays in any of these four ways:\n1. Only `profiles`  \n2. Only `interlocked_profiles`  \n3. Both `profiles` and\
        \ `interlocked_profiles`  \n4. Neither\n\n**Constraint:** a given profile (or question) ID must appear in _only one_\
        \ of these arrays.  \nIf the same ID is listed in both `profiles` and `interlocked_profiles`, the draft will fail\
        \ to save.\n\nTo populate `interlocked_profiles`, first call the [generate interlock endpoint](#tag/Profiling-Helper/Profiling-Helper/operation/generate_draft_interlock_profile)\
        \ then include the response within your draft body.\nFor zip profiles, currently, you can add only 999 conditions.\
        \ In future releases, this limit will be increased.\n"
      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.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}:
    get:
      operationId: get_target_group
      summary: Fetches a target group in draft status
      description: 'Retrieves a target group using its Target Group ID. If the Target Group is not in a draft status it will
        redirect to the Target Group Details URL: `/v2/accounts/$1/projects/$2/target-groups/$3/details`'
      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.
      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-05-27'
  /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, Filling 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.
        For zip profiles, currently, you can add only 999 conditions. In future releases, this limit will be increased. 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-05-27'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/rate-card:
    get:
      summary: Find a Rate Card based on the provided parameters
      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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/rate-card:
    get:
      summary: Get the applicable Rate Card for the provided Target Group
      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-05-27'
  /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.
      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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/filling-strategy:
    put:
      operationId: update_filling_strategy
      summary: Updates the filling strategy on the given target group
      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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/re-entry-configuration:
    get:
      operationId: get_re_entry_configuration
      summary: Get re-entry configuration for a target group
      description: |-
        This endpoint will retrieve the current re- entry configuration of the given target group. This endpoint is not applicable for drafts, drafts will return a 404.
        This endpoint is only applicable if your account has access to this feature. If your account does not have access, it will result in a 403 forbidden error. For more information if you need this behavior, please contact your account manager.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Target Groups
      responses:
        '200':
          description: Return re-entry configuration for target group.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReEntryConfiguration'
        '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_re_entry_configuration
      summary: Update re-entry configuration for a target group
      description: |-
        Update the re-entry configuration of the given target group. This endpoint is not applicable for drafts, drafts will return a 404.
        This endpoint is only applicable if your account has access to this feature. If your account does not have access, it will result in a 403 forbidden error. For more information if you need this behavior, please contact your account manager.
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Target Groups
      requestBody:
        description: The new re-entry configuration to be saved.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReEntryConfiguration'
      responses:
        '204':
          description: Successfully updated re-entry configuration for target group.
        '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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/compute-target-group-transitions:
    post:
      summary: Computes 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-05-27'
  /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-05-27'
  /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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/performance:
    get:
      operationId: get_target_group_performance
      summary: 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-05-27'
  /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: Get Target Group's collected completes as an aggregated time series
      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-05-27'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/changelog:
    get:
      operationId: get_target_group_changelog
      summary: Get Target Group Changelog
      tags:
      - Target Groups
      description: |
        Returns a list of changes happened to the target group in the past.

        The list of expected change types can grow over time; 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-05-27'
components:
  schemas:
    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
    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
    UserID:
      type: string
      format: uuid
      description: An unique identifier for a user.
      example: b551326b-ac9d-4d32-8823-4f025787dab9
    AccountsList:
      type: object
      description: A list of all accounts available for authenticated user.
      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.
    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
    Error:
      type: object
      description: An error is returned to inform the client that the API request failed.
      required:
      - object
      - detail
      properties:
        id:
          type: string
          format: uuid
          description: unique identifier of the error
        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/invalid_param'
    invalid_param:
      type: object
      properties:
        name:
          type: string
        reason:
          type: string
      required:
      - name
      - reason
    AccountID:
      description: The account's unique identifier.
      type: integer
      format: int32
      example: 101
    AllocationTemplateExchangeSupplier:
      type: object
      title: Exchange
      required:
      - type
      - percentage_max
      - percentage_min
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `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
    responses-AllocationTemplateGroupSupplier:
      type: object
      title: Group
      required:
      - type
      - name
      - percentage_min
      - percentage_max
      - suppliers
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `group`.
          enum:
          - group
        name:
          type: string
          example: My happy allocation group
        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: 44
        percentage_min:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: Controls the minimum amount of fills from this supply allocation group. The value is `inclusive`.
          example: 78
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSupplierResponse'
    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
    GetAccountAllocationTemplateAssociation:
      type: object
      title: Account allocation template association.
      required:
      - template_id
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
    responses-AllocationTemplateBlockedSupplier:
      type: object
      title: Blocked
      required:
      - type
      - suppliers
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `blocked`.
          enum:
          - blocked
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/TemplateSupplierResponse'
    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/responses-AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/responses-AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/responses-AllocationTemplateBlockedSupplier'
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    LastModifiedAt:
      type: string
      format: datetime
      description: The last time the template was modified
      example: '2024-06-18T14:23:45Z'
    ETag:
      type: string
      description: The `ETag` header provides a unique identifier, that represents the current version state of a particular
        resource.
      example: W/"1234"
    AllocationTemplateBlockedSupplier:
      type: object
      title: Blocked
      required:
      - type
      - suppliers
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `blocked`.
          enum:
          - blocked
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/AllocationTemplateSupplier'
    TemplateID:
      type: string
      description: A unique identifier for the template.
      format: ulid
      example: 01JT5Z59MAKQ82J5K9Y3YGFNHN
    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
    AllocationTemplateCreateRequest:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          minLength: 3
          maxLength: 128
        supply_allocations:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplier'
    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
    responses-AllocationTemplateExchangeSupplier:
      type: object
      title: Exchange
      required:
      - type
      - percentage_max
      - percentage_min
      - suppliers
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `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'
    IdempotencyKeyULID:
      description: A shallow unique ID used as part of the deduplication mechanism for mutable operations.
      type: string
      format: ulid
      example: 01JCDRR74NW2SSGN567A766VAN
    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'
    LocaleCode:
      type: string
      description: Unique text code of the locale.
      example: eng_us
    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'
    AllocationTemplateGroupSupplier:
      type: object
      title: Group
      required:
      - type
      - name
      - percentage_min
      - percentage_max
      - suppliers
      properties:
        type:
          type: string
          description: object field to distinguish between different types of supply allocations. always is `group`.
          enum:
          - group
        name:
          type: string
          example: My happy allocation group
        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: 90
        percentage_min:
          type: integer
          nullable: true
          minimum: 0
          maximum: 100
          description: Controls the minimum amount of fills from this supply allocation group. The value is `inclusive`.
          example: 0
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/AllocationTemplateSupplier'
    ListAccountAllocationTemplatesResponse:
      type: object
      required:
      - has_more
      - templates
      - next_cursor
      properties:
        templates:
          type: array
          items:
            $ref: '#/components/schemas/AccountAllocationTemplateListItem'
        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=
    GetSystemAllocationTemplateResponse:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          example: My happy system template
        supply_allocations:
          type: array
          items:
            $ref: '#/components/schemas/responses-AllocationTemplateExchangeSupplier'
    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=
    UpdateAccountAllocationTemplateAssociation:
      type: object
      title: Set account allocation template association request object.
      required:
      - template_id
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
    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
          items:
            oneOf:
            - $ref: '#/components/schemas/responses-AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/responses-AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/responses-AllocationTemplateBlockedSupplier'
    AllocationTemplateSupplier:
      type: object
      required:
      - supplier_id
      properties:
        supplier_id:
          type: integer
          description: The ID of the supplier
          minimum: 0
          example: 420
    AllocationTemplateUpdateRequest:
      type: object
      required:
      - name
      - supply_allocations
      properties:
        name:
          type: string
          minLength: 3
          maxLength: 128
        supply_allocations:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/AllocationTemplateExchangeSupplier'
            - $ref: '#/components/schemas/AllocationTemplateGroupSupplier'
            - $ref: '#/components/schemas/AllocationTemplateBlockedSupplier'
    CountryListItem:
      type: object
      description: Country details.
      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: Human readable name of the country.
          example: United Kingdom
    IntegrationUseCaseListItem:
      type: object
      description: Integration use case.
      readOnly: true
      properties:
        id:
          type: string
          description: Use case ID.
          example: manage_surveys
        name:
          type: string
          description: Use case name.
          example: Manage surveys
        description:
          type: string
          description: Use case description.
          example: Create, update, and retrieve surveys, allocations, groups, qualifications, and quotas.
    SupplierDetailsItem:
      type: object
      description: Supplier details.
      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: Human readable name of the supplier.
          example: Acme Inc
    BusinessUnit:
      type: object
      description: Business unit details.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the business unit.
          example: 1234
        name:
          type: string
          description: Human readable name of the business unit.
          example: Example
        currency_code:
          type: string
          description: The business unit currency code.
          example: GBP
        pricing_models:
          type: array
          description: Contains available pricing models for the business unit.
          items:
            type: string
            description: Pricing model assigned to the business unit.
            enum:
            - rate_card
            - dynamic
            example: rate_card
    IndustryListItem:
      type: object
      description: Industry details.
      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: Human readable name of the industry.
          example: Politics
    IndustryLockoutItem:
      type: object
      description: 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: Human readable name of the industry lockout.
          example: Past 90 Days / 3 Months
    ClientListItem:
      type: object
      description: Client details.
      readOnly: true
      properties:
        id:
          type: integer
          description: Unique identifier of the client.
          example: 1234
        name:
          type: string
          description: Human readable name of the client.
          example: Acme Inc
    Locales:
      type: object
      properties:
        locales:
          type: array
          description: A list of suggested locales.
          items:
            type: object
            properties:
              country:
                type: object
                description: Details of the country based on the locale.
                properties:
                  code:
                    type: string
                    description: The 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.
                    name:
                      type: string
                      description: A human readable name of the country language.
                    code:
                      type: string
                      description: Country 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: Study type details.
      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: Human readable name of the study type.
          example: Adhoc
    ExclusionEnabled:
      type: boolean
      description: Indicates whether or not a given target group should exclude respondents from other target groups within
        the Project
    AddTargetGroupExclusionGroupRequest:
      type: object
      properties:
        data:
          type: array
          maxItems: 100
          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
    CreateRespondentExclusionsUploadByFileJobResponse:
      type: object
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    ExclusionGroupDescription:
      description: The description of the exclusion group that explains the goal of the exclusion group.
      type: string
      maxLength: 500
      example: 2025 Ongoing Tracker Study
    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
    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
    ExclusionGroupID:
      description: The character string representing a unique exclusion group ID (ULID format).
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    TargetGroupExclusionAPIStatusPair:
      type: object
      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: Whether or not the associated target group should have exclusion enabled within this Exclusion Container
          example: true
    CreateExclusionGroupResponse:
      type: object
      required:
      - exclusion_group_id
      properties:
        exclusion_group_id:
          $ref: '#/components/schemas/ExclusionGroupID'
    CreateExclusionGroupRequest:
      type: object
      required:
      - tag
      - description
      properties:
        tag:
          $ref: '#/components/schemas/ExclusionGroupTag'
        description:
          $ref: '#/components/schemas/ExclusionGroupDescription'
    ExclusionGroupInfo:
      type: object
      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 that the exclusions group was created
          example: '2025-05-27T09:28:21.229486012Z'
        update_date:
          type: string
          format: date-time
          description: The date that the exclusions group was updated
          example: '2024-05-27T10:28:21.5166203383Z'
    ExclusionGroupTag:
      description: The tag for the exclusion group to be used as the name of the exclusion group.
      type: string
      maxLength: 128
      example: 2025 Tracker
    ExclusionGroupTargetGroupsResponse:
      type: object
      required:
      - data
      - url
      description: List of target group IDs excluded within an Exclusion Group
      properties:
        data:
          type: array
          description: List of target group IDs
          items:
            $ref: '#/components/schemas/TargetGroupID'
        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 target group IDs.
          example: accounts/13/exclusion-groups/01JW97M2Y5Q5KB0N543B4G4T5Y/exclusions/target-groups
    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).
    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: URL to fetch the next page of Access Respondent GUIDs. Irrelevant given the current 'next_cursor' value.
          example: accounts/1/projects/01JBHD5A2NEW7JTV8KZGGTC2V2/target-groups/01JNNEJ3GC0Y713BBKGKC147DP/exclusions/access-respondent-guid/paginated
    ExclusionsJobStatus:
      type: string
      description: The status of an async Exclusions update job.
      enum:
      - Success
      - Failed
      - Processing
      example:
      - Success
    ProjectID:
      description: The character string representing a unique project ID (ULID format).
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP0
    CobraIDListResponse:
      type: object
      description: List of 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
        has_more:
          type: boolean
          description: Indicates whether there are more Access Respondent GUIDs available. For now will always be false, with
            a maximum return value of 10k
          example: false
        url:
          type: string
          description: URL to fetch the next page of Access Respondent GUIDs. Irrelevant given the current has_more value.
          example: accounts/{{accountID}}/projects/{{projectID}}/target-groups/{{targetGroupID}}/exclusions/cid
    UpdatedBy:
      type: string
      description: Who last updated this entity
      example: User1234
    ExclusionEntityTypeWithRsidAndAccessRespondentGuid:
      type: string
      description: Indicates the entity type of the excluded element. Possible values are `RSID` (Respondent ID) or `ACCESS_RESPONDENT_GUID`
        (Access Respondent GUID)
      enum:
      - RSID
      - ACCESS_RESPONDENT_GUID
      example: RSID
    BulkTargetGroupProjectExclusionStatus:
      type: array
      items:
        $ref: '#/components/schemas/TargetGroupExclusionAPIStatusPair'
    ProjectExclusionStatusResponse:
      type: object
      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'
    CreateDate:
      type: string
      format: datetime
      description: The time that this exclusions container was created
      example: '2024-06-18T14:23:45Z'
    UpdateDate:
      type: string
      format: date-time
      example: '2023-01-01T23:00:00.000Z'
      description: Time of last update
    RespondentIDList:
      type: array
      description: List of Respondent IDs
      items:
        type: string
        format: uuid
    JobTraceId:
      type: string
      description: The trace ID from the creation job request. Only present when the job status is 'Failure'. The trace ID
        as defined by the W3C trace context specification.
      example: 0af7651916cd43dd8448eb211c80319c
    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'
    UpdateExclusionGroupRequest:
      type: object
      properties:
        tag:
          $ref: '#/components/schemas/ExclusionGroupTag'
        description:
          $ref: '#/components/schemas/ExclusionGroupDescription'
    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
    TargetGroupID:
      description: The character string representing a unique target group ID (ULID format).
      type: string
      pattern: ^[0-9A-Z]{26}$
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    JobID:
      description: The character string representing a unique job ID.
      type: string
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    RemoveTargetGroupExclusionGroupRequest:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupID'
    CobraIDListRequest:
      type: object
      description: List of 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
    CreateRemoveAllRespondentExclusionsJobResponse:
      type: object
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    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'
    GetTargetGroupPriceResponse:
      type: object
      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 towards USD at the time of target group launch.
        pricing_config_token:
          $ref: '#/components/schemas/PricingConfigToken'
        open_exchange_price:
          type: object
          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
          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'
    BusinessUnitID:
      type: string
      description: Determines the currency used for the Target Group.
      example: '1234'
    RateCardPricingContext:
      type: object
      required:
      - type
      - rate_card_token
      properties:
        type:
          type: string
          enum:
          - rate_card
          description: Descriptor of the pricing module type
        maximum_cpi:
          $ref: '#/components/schemas/MonetaryAmount'
        cpi_boost:
          $ref: '#/components/schemas/MonetaryAmount'
        rate_card_token:
          $ref: '#/components/schemas/RateCardToken'
    MonetaryAmount:
      type: object
      description: Monetary amount.
      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:2015.
            example: 2
    DynamicPricingContext:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: Descriptor of the pricing module type
    RateCardToken:
      type: string
    PrivateExchangePricePrediction:
      type: object
      required:
      - pricing_context
      - supplier_id
      - cost_per_interview
      properties:
        pricing_context:
          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'
    PricingConfigToken:
      type: string
      description: The character string representing a unique immutable pricing config.
      example: MDFKSE42MDQ1RFg2Tk0wQjlBQ0Q5QVhQQzk7Nw==
    OpenExchangePricePrediction:
      type: object
      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'
    MonetaryAmountRequestModel:
      type: object
      description: Monetary amount.
      required:
      - value
      - currency_code
      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'
    GetRedactedPricePredictionResponse:
      type: object
      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'
    GetRedactedPricePredictionRequest:
      type: object
      required:
      - config
      properties:
        config:
          oneOf:
          - $ref: '#/components/schemas/RateCardPredictionConfig'
          - $ref: '#/components/schemas/DynamicPricingPredictionConfig'
    DynamicPricingPredictionConfig:
      title: Dynamic pricing configuration
      type: object
      description: Configure the user requested cost per interview.
      required:
      - type
      - user_requested_cpi
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: The pricing model type
        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: Configure the rate card pricing configuration.
      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: Maximum CPI to be set on the Target Group.
        cpi_boost:
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
          description: Additional amount to be added on top of the CPI inferred from the rate card. Respects maximum CPI.
        country_code:
          type: string
          description: String representing the country code.
          example: US
        expected_length_of_interview_minutes:
          type: integer
          format: int32
          description: Expected median length of interview.
          minimum: 1
          maximum: 45
          example: 1
        expected_incidence_rate:
          type: number
          format: float
          description: Expected incidence rate.
          minimum: 0
          maximum: 1
          multipleOf: 0.01
          example: 0.05
    CurrencyCode:
      type: string
      description: |
        The three-letter ISO 4217:2015 currency code, in uppercase.
        The currency code must be a currency supported by Cint.
      example: USD
    FeasibilityRegularProfileSelectionConditionsItemV2:
      type: object
      required:
      - option
      properties:
        option:
          type: string
          description: |
            The number option for the answer of the question relating to the condition.
          example: '1'
    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
    ExampleSelectionCondition:
      type: object
      required:
      - option
      properties:
        option:
          type: string
          example: A
    TargetGroupFeasibilityRequestPrivateExchangeAllocationsGroup:
      type: object
      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'
    FeasibilityRegularProfileRangeConditionsV2:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: An object field to distinguish between different types of control selections. always is `range_conditions_details`.
          enum:
          - range_conditions_details
          example: range_conditions_details
        data:
          type: array
          items:
            $ref: '#/components/schemas/FeasibilityRegularProfileRangeConditionItemV2'
    TargetGroupFeasibilityInterlockedProfileV2:
      type: object
      required:
      - quotas
      properties:
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedQuotaV2'
    TargetGroupFeasibilityInterlockedProfileRelatedConditionValueV2:
      type: object
      properties:
        option:
          type: string
          description: |
            The question option. Only set if the question has selection conditions like Gender question.
          example: '1'
        min:
          type: integer
          description: The minimum numeric value. Only set if the question has range conditions like Age question.
          example: 18
        max:
          type: integer
          description: |
            The maximum numeric value. Only set if the question has range conditions like Age question.
            Must be bigger than then 'min' property.
          example: 60
        zip_codes:
          type: array
          description: Only set if the question is a zip code question. Note that only 10,000 values may be provided
          maxItems: 10000
          items:
            type: string
            description: List of applicable zip codes.
          example:
          - '454'
          - '34534'
        allow_all_zip:
          type: boolean
          description: Flag to allow all zip codes. Only set if the question is a zip code question.
          example: true
    CalculateTargetGroupFeasibilityRequest:
      type: object
      required:
      - business_unit_id
      - locale
      - incidence_rate
      - length_of_interview
      - filling_goal
      - start_date
      - end_date
      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
        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
        length_of_interview:
          type: integer
          description: Expected time to finish the target group in minutes.
          minimum: 1
          maximum: 45
          example: 20
        filling_goal:
          type: integer
          description: Indicates the new value for filling goal.
          minimum: 1
          maximum: 10000
          example: 40
        start_date:
          type: string
          format: date-time
          description: The start date and time of the target group. Must be earlier than the 'end_date'.
          example: '2023-01-01T23:00:00.000Z'
        end_date:
          type: string
          format: date-time
          description: The end date and time of the target group. Must be later than the 'start_date'.
          example: '2023-01-01T23:00:00.000Z'
        step_days:
          type: number
          minimum: 0
          description: optional value of step days for when FA strategy is even paced.
        price:
          description: The desired Cost Per Interview for the filling goal suggestion. The price is ignored if it is rate
            card target group. If it is a Dynamic Pricing target group and the buyer does not enter a price then an initial
            suggestion will be used, which may be iterated on with a more accurate suggestion in the response as the whole
            request is processed.
          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'
        profiles:
          type: array
          description: List of profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRegularProfileV2'
        interlocked_profiles:
          type: array
          description: List of interlocked profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileV2'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestAllocationSpecification'
    CalculateTargetGroupFeasibilityByIdRequest:
      type: object
      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: Percentage of respondents that will qualify for the study after targeting using standard qualifications.
          minimum: 0
          exclusiveMinimum: true
          maximum: 1
          example: 0.5
        length_of_interview:
          type: integer
          description: Expected time to finish the target group in minutes.
          minimum: 1
          maximum: 45
          example: 20
        filling_goal:
          type: integer
          description: Indicates the new value for filling goal.
          minimum: 1
          maximum: 10000
          example: 40
        start_date:
          type: string
          format: date-time
          description: The start date and time of the target group. Must be earlier than the 'end_date'.
          example: '2023-01-01T23:00:00.000Z'
        end_date:
          type: string
          format: date-time
          description: The end date and time of the target group. Must be later than the 'start_date'.
          example: '2023-01-01T23:00:00.000Z'
        step_days:
          type: number
          minimum: 0
          description: optional value of step days for when FA strategy is even paced.
        price:
          description: The desired Cost Per Interview for the filling goal suggestion.
          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'
        profiles:
          type: array
          description: List of profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRegularProfileV2'
        interlocked_profiles:
          type: array
          description: List of interlocked profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileV2'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestAllocationSpecification'
    TargetGroupFeasibilityResponseOpenExchangeAllocations:
      type: object
      required:
      - min_completes
      - max_completes
      - groups
      properties:
        min_completes:
          type: integer
          example: 55
        max_completes:
          type: integer
          example: 85
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityResponseOpenExchangeAllocationsGroup'
    CalculateTargetGroupFeasibilityResponse:
      type: object
      description: Target Group feasibility information.
      required:
      - suggested_price
      properties:
        suggested_price:
          description: A single value for the suggested price.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        suggested_price_range:
          type: object
          description: If available, will contain suggested price as a range.
          required:
          - min
          - max
          properties:
            min:
              $ref: '#/components/schemas/MonetaryAmount'
            max:
              $ref: '#/components/schemas/MonetaryAmount'
        suggested_filling_goal_range:
          type: object
          description: The suggested filling 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/TargetGroupFeasibilityRegularProfileQuotaResponseV2'
        interlocked_profiles:
          type: array
          description: Provides feasibility per quota based on the interlocked profiles submitted with the request.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileQuotaResponseV2'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponseAllocationSpecification'
    FeasibilityRegularProfileRangeConditionItemV2:
      type: object
      required:
      - min
      - max
      properties:
        min:
          type: integer
          description: The minimum numeric value (inclusive). Must be smaller than 'max'.
          minimum: 0
          example: 18
        max:
          type: integer
          description: The maximum numeric value (inclusive). Must be bigger than 'min'.
          minimum: 0
          example: 60
    TargetGroupFeasibilityInterlockedProfileQuotaCompletesRangeV2:
      type: object
      description: Contains quota completes feasibility range
      required:
      - id
      - min_completes
      - max_completes
      properties:
        id:
          type: string
          description: the ID of the interlocked Quota
          format: ulid
          example: 01GV070G3SJECZAGE3Q3J6FV56
        min_completes:
          $ref: '#/components/schemas/TargetGroupFeasibilityProfileQuotaCompletesRangeItemV2'
        max_completes:
          $ref: '#/components/schemas/TargetGroupFeasibilityProfileQuotaCompletesRangeItemV2'
    TargetGroupFeasibilityRegularProfileQuotaResponseV2:
      type: object
      description: The Target Group profile per quota feasibility.
      required:
      - question_id
      properties:
        question_id:
          type: integer
          description: Uniquely identifies the question used in the profile.
          minimum: 0
          example: 42
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              description: Ungrouped quotas feasibility range objects, ordered based on the ungrouped quotas provided in the
                feasibility request body.
              items:
                $ref: '#/components/schemas/TargetGroupFeasibilityRegularProfileQuotaCompletesRangeV2'
            grouped:
              type: array
              description: Grouped quotas feasibility range objects, ordered based on the grouped quotas provided in the feasibility
                request body.
              items:
                $ref: '#/components/schemas/TargetGroupFeasibilityRegularProfileQuotaCompletesRangeV2'
    TargetGroupFeasibilityRequestOpenExchangeAllocations:
      type: object
      required:
      - blocked_supplier_ids
      - supplier_ids
      - exchange_min_percentage
      - exchange_max_percentage
      - groups
      properties:
        blocked_supplier_ids:
          type: array
          items:
            type: string
            example: '234'
        supplier_ids:
          type: array
          items:
            type: string
            example: '123'
        exchange_min_percentage:
          type: integer
          example: 0
        exchange_max_percentage:
          type: integer
          example: 100
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRequestOpenExchangeAllocationsGroup'
    TargetGroupFeasibilityRequestOpenExchangeAllocationsGroup:
      type: object
      required:
      - group_name
      - min_percentage
      - max_percentage
      - suppliers
      properties:
        group_name:
          type: string
          example: Test group
        min_percentage:
          type: integer
          example: 0
        max_percentage:
          type: integer
          example: 100
        suppliers:
          type: array
          items:
            type: string
            example: '434'
    TargetGroupFeasibilityRequestPrivateExchangeAllocations:
      type: object
      required:
      - blocked_supplier_ids
      - groups
      properties:
        blocked_supplier_ids:
          type: array
          items:
            type: string
            example: '435'
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRequestPrivateExchangeAllocationsGroup'
    TargetGroupFeasibilityInterlockedProfileRelatedConditionItemV2:
      type: object
      required:
      - question_id
      - conditions
      properties:
        question_id:
          type: integer
          description: Question identifier. Must be included in property 'depends_on_questions'.
          minimum: 0
          example: 45
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileRelatedConditionValueV2'
    TargetGroupFeasibilityInterlockedProfileQuotaResponseV2:
      type: object
      description: The Interlocked profile per quota feasibility.
      required:
      - quotas
      properties:
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileQuotaCompletesRangeV2'
    TargetGroupFeasibilityProfileQuotaCompletesRangeItemV2:
      type: object
      required:
      - percentage
      - nominal
      properties:
        percentage:
          type: integer
          description: The number of predicted completes expressed as a percentage.
          minimum: 0
          maximum: 100
        nominal:
          type: integer
          description: The number of predicted completes.
          minimum: 0
    FeasibilityGroupedRegularQuotaV2:
      type: object
      required:
      - indexes
      - quota_percentage
      properties:
        indexes:
          type: array
          description: An array of indexes for the condition objects specified in the conditions array.
          items:
            type: integer
          example:
          - 1
          - 2
        quota_percentage:
          type: integer
          description: The quota percentage for the condition.
          minimum: 0
          maximum: 100
          example: 100
    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
    FeasibilitySingularRegularQuotaV2:
      type: object
      required:
      - index
      - quota_percentage
      properties:
        index:
          type: integer
          minimum: 0
          description: The index of the condition object specified in the conditions array.
          example: 0
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: The quota percentage for the condition.
          example: 100
    TargetGroupFeasibilityRegularProfileV2:
      type: object
      required:
      - question_id
      - conditions
      properties:
        question_id:
          type: integer
          description: the identifier for the underlying question from the profiling library
          minimum: 0
          example: 42
        conditions:
          oneOf:
          - $ref: '#/components/schemas/FeasibilityRegularProfileRangeConditionsV2'
          - $ref: '#/components/schemas/FeasibilityRegularProfileSelectionConditionsV2'
          - $ref: '#/components/schemas/FeasibilityRegularProfileZipConditionsV2'
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/FeasibilitySingularRegularQuotaV2'
            grouped:
              type: array
              items:
                $ref: '#/components/schemas/FeasibilityGroupedRegularQuotaV2'
      example:
        question_id: 42
        conditions:
          object: range_conditions_details
          data:
          - min: 18
            max: 24
          - min: 25
            max: 35
          - min: 36
            max: 45
        quotas:
          ungrouped:
          - index: 0
            quota_percentage: 100
          - index: 1
            quota_percentage: 25
          grouped:
          - indexes:
            - 1
            - 2
            quota_percentage: 75
    ExampleRangeCondition:
      type: object
      required:
      - min
      - max
      properties:
        min:
          type: integer
          example: 1
        max:
          type: integer
          example: 99
    TargetGroupFeasibilityInterlockedQuotaV2Alt:
      type: object
      required:
      - id
      - condition
      properties:
        id:
          type: string
          description: the ID of the interlocked Quota
          format: ulid
          example: 01GV070G3SJECZAGE3Q3J6FV56
        condition:
          $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileConditionV2Alt'
        quota_percentage:
          type: integer
          description: |
            The quota percentage for the interlock condition.
            Either provide 'quota_percentage' or 'quota_nominal'.
          minimum: 0
          maximum: 100
          example: 40
        quota_nominal:
          type: number
          description: |
            The filling goal for the interlock condition.
            Either provide 'quota_percentage' or 'quota_nominal'.
          minimum: 0
          example: 906
    FeasibilityRegularProfileZipConditionsV2:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `zip_conditions_details`.
          enum:
          - zip_conditions_details
          example: zip_conditions_details
        data:
          type: array
          items:
            $ref: '#/components/schemas/FeasibilityRegularProfileZipConditionsItemV2'
    TargetGroupFeasibilityInterlockedProfileConditionV2:
      type: object
      required:
      - related_condition
      properties:
        related_condition:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileRelatedConditionItemV2'
    TargetGroupFeasibilityInterlockedProfileV2Alt:
      type: object
      required:
      - quotas
      properties:
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedQuotaV2Alt'
    TargetGroupFeasibilityResponsePrivateExchangeAllocations:
      type: object
      required:
      - groups
      properties:
        groups:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityResponsePrivateExchangeAllocationsGroup'
    CalculateTargetGroupFeasibilityRequestAlt:
      type: object
      required:
      - business_unit_id
      - locale
      - incidence_rate
      - length_of_interview
      - filling_goal
      - start_date
      - end_date
      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
        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
        length_of_interview:
          type: integer
          description: Expected time to finish the target group in minutes.
          minimum: 1
          maximum: 45
          example: 20
        filling_goal:
          type: integer
          description: Indicates the new value for filling goal.
          minimum: 1
          maximum: 10000
          example: 40
        start_date:
          type: string
          format: date-time
          description: The start date and time of the target group. Must be earlier than the 'end_date'.
          example: '2023-01-01T23:00:00.000Z'
        end_date:
          type: string
          format: date-time
          description: The end date and time of the target group. Must be later than the 'start_date'.
          example: '2023-01-01T23:00:00.000Z'
        step_days:
          type: number
          minimum: 0
          description: optional value of step days for when FA strategy is even paced.
        price:
          description: The desired Cost Per Interview for the filling goal suggestion. The price is ignored if it is rate
            card target group. If it is a Dynamic Pricing target group and the buyer does not enter a price then an initial
            suggestion will be used, which may be iterated on with a more accurate suggestion in the response as the whole
            request is processed.
          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'
        profiles:
          type: array
          description: List of profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityRegularProfileV2'
        interlocked_profiles:
          type: array
          description: List of interlocked profiles.
          items:
            $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileV2Alt'
        allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestAllocationSpecification'
    ExampleZipCodeCondition:
      type: object
      required:
      - zip_codes
      - allow_all_zip
      properties:
        zip_codes:
          type: array
          items:
            type: string
          example:
          - '98026'
          - '77389'
        allow_all_zip:
          type: boolean
          example: false
    InvalidParamsError:
      type: object
      description: An error with information regarding fields that are not valid.
      required:
      - id
      - object
      - detail
      properties:
        id:
          type: string
          format: uuid
          description: unique identifier of the error
        object:
          type: string
          description: Type of the error. Always `validation_error`.
          pattern: ^([a-z]*_)*([a-z]*)$
        detail:
          type: string
          description: An error message provides a concise overview of the cause of the error.
        errors:
          type: array
          description: List of validation errors in the request payload.
          items:
            type: object
            properties:
              code:
                type: string
                description: A short informative string identifying the cause of the error.
                pattern: ^([a-z]*_)*([a-z]*)$
              description:
                type: string
                description: An error message provides a concise overview of the cause of the error.
    FeasibilityRegularProfileSelectionConditionsV2:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: An object field to distinguish between different types of control selections. always is `selection_conditions_details`.
          enum:
          - selection_conditions_details
          example: selection_conditions_details
        data:
          type: array
          items:
            $ref: '#/components/schemas/FeasibilityRegularProfileSelectionConditionsItemV2'
    TargetGroupFeasibilityInterlockedProfileConditionV2Alt:
      type: object
      required:
      - related_condition
      properties:
        related_condition:
          $ref: '#/components/schemas/RelatedConditionsV2MapAlt'
    TargetGroupFeasibilityResponseAllocationSpecification:
      type: object
      required:
      - open_exchange_allocations
      properties:
        open_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponseOpenExchangeAllocations'
        private_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityResponsePrivateExchangeAllocations'
    TargetGroupFeasibilityRequestAllocationSpecification:
      type: object
      required:
      - open_exchange_allocations
      properties:
        open_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestOpenExchangeAllocations'
        private_exchange_allocations:
          $ref: '#/components/schemas/TargetGroupFeasibilityRequestPrivateExchangeAllocations'
    TargetGroupFeasibilityRegularProfileQuotaCompletesRangeV2:
      type: object
      description: Contains quota completes feasibility range
      required:
      - min_completes
      - max_completes
      properties:
        min_completes:
          $ref: '#/components/schemas/TargetGroupFeasibilityProfileQuotaCompletesRangeItemV2'
        max_completes:
          $ref: '#/components/schemas/TargetGroupFeasibilityProfileQuotaCompletesRangeItemV2'
    TargetGroupFeasibilityInterlockedQuotaV2:
      type: object
      required:
      - id
      - condition
      properties:
        id:
          type: string
          description: the ID of the interlocked Quota
          format: ulid
          example: 01GV070G3SJECZAGE3Q3J6FV56
        condition:
          $ref: '#/components/schemas/TargetGroupFeasibilityInterlockedProfileConditionV2'
        quota_percentage:
          type: integer
          description: |
            The quota percentage for the interlock condition.
            Either provide 'quota_percentage' or 'quota_nominal'.
          minimum: 0
          maximum: 100
          example: 40
        quota_nominal:
          type: number
          description: |
            The filling goal for the interlock condition.
            Either provide 'quota_percentage' or 'quota_nominal'.
          minimum: 0
          example: 906
    FeasibilityRegularProfileZipConditionsItemV2:
      type: object
      properties:
        zip_codes:
          type: array
          description: |
            The number option for the answer of the question relating to the condition.
            Note that only 10,000 values may be provided
          maxItems: 10000
          items:
            type: string
          example:
          - '40202'
          - '50309'
        allow_all_zip:
          type: boolean
          description: |
            If true, the profile will allow all zip codes. If false,
            the profile will only allow the zip codes specified in the data field.
          example: false
    RelatedConditionsV2MapAlt:
      type: object
      description: The key of this map is the question_id that this condition applies to. For each key, the value is an array
        of conditions, where each condition can be any of the schemas specified.
      additionalProperties:
        type: array
        items:
          oneOf:
          - $ref: '#/components/schemas/ExampleRangeCondition'
          - $ref: '#/components/schemas/ExampleZipCodeCondition'
          - $ref: '#/components/schemas/ExampleSelectionCondition'
      example:
        '45':
        - zip_codes:
          - '98026'
          - '77389'
          allow_all_zip: false
        - min: 1
          max: 99
        '8822':
        - option: A
        '12345':
        - min: 1
          max: 99
    ModuleDynamicPricingRequestModel:
      title: Dynamic pricing
      type: object
      description: This module can only be used for Target Groups with dynamic pricing. It does not support Target Groups
        with rate card pricing. Controls CPI to try achieving 100% fill at the moment of fielding end date as cheaply as possible.
        Requires at least one of the upper limits (total budget, maximum CPI) to be specified, but not both simultaneously.
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: Descriptor of the pricing module type.
        total_budget:
          description: Maximum monetary amount to be spent for the target number of completes. Only one of `maximum_cpi` or
            `total_budget` can be specified.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        maximum_cpi:
          description: Maximum CPI to be set on the Target Group. 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: Minimum CPI to be set on the Target Group. Must be lower than the maximum, if specified. Can be overruled
            by total budget.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
      required:
      - type
    IncrementInterval:
      type: string
      format: duration
      description: |
        Positive duration between increment intervals.  Limited to a subset of ISO-8601 duration in format PnDTnHnMnS. The duration must be less than 398 days (13 months).
    ModuleRateCardPricing:
      title: Rate Card pricing
      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: Descriptor of the pricing module type.
        maximum_cpi:
          description: Maximum CPI to be set on the Target Group.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        boost_cpi:
          description: Additional amount to be added to the CPI inferred from the rate card. Respects maximum CPI.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
      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: Descriptor of the pricing module type.
        maximum_cpi:
          description: Maximum CPI to be set on the Target Group. Must be higher than the minimum, if specified.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
        boost_cpi:
          description: Additional amount to be added to the CPI inferred from the rate card. Respects maximum CPI.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmountRequestModel'
      required:
      - type
    CintAPIVersion:
      type: string
      pattern: ^\d{4}-\d{2}-\d{2}$
      example: '2025-05-27'
      description: |-
        The API version is based on the date when the API version was released.
        For example, the API version 2024-12-02 was released on 2 Dec 2024.

        This header is MANDATORY for all API requests. If this header is not provided, the request will fail with a validation error.

        The API version format follows `YYYY-MM-DD`, representing the release date.
    ModuleLinearPacing:
      title: Linear even pacing
      type: object
      description: Increments quotas in regular intervals between Target Group start date and an end date.
      properties:
        type:
          type: string
          enum:
          - linear
          description: Descriptor of the pacing module type.
        increment_interval:
          $ref: '#/components/schemas/IncrementInterval'
      required:
      - type
      - increment_interval
    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: Descriptor of the pacing module type.
        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:
          oneOf:
          - $ref: '#/components/schemas/ModuleDynamicPricingRequestModel'
          - $ref: '#/components/schemas/ModuleRateCardPricingRequestModel'
        quota_overlay:
          $ref: '#/components/schemas/ModuleQuotaOverlay'
        pacing:
          oneOf:
          - $ref: '#/components/schemas/ModuleLinearPacing'
          - $ref: '#/components/schemas/ModuleAdaptivePacing'
          - $ref: '#/components/schemas/ModuleGeminiPacing'
        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:
          title: Soft launch fielding end date
          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:
          title: Soft launch percentage of the filling goal
          description: The percentage of the full filling goal to collect during the soft launch phase.
          type: integer
          minimum: 1
          maximum: 100
        demographics_strictness_percentage:
          title: Strictness of demography distribution during soft launch.
          description: Controls how strictly the soft launch demographics distribution should follow the distribution in the
            full launch. A setting of 100% aims to fully match the demography, while 0% allows any distribution.
          type: integer
          minimum: 0
          maximum: 100
      required:
      - end_at
      - filling_goal_percentage
      - demographics_strictness_percentage
    FieldingAssistantModulesAssignment:
      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:
          oneOf:
          - $ref: '#/components/schemas/ModuleDynamicPricing'
          - $ref: '#/components/schemas/ModuleRateCardPricing'
        quota_overlay:
          $ref: '#/components/schemas/ModuleQuotaOverlay'
        pacing:
          oneOf:
          - $ref: '#/components/schemas/ModuleLinearPacing'
          - $ref: '#/components/schemas/ModuleAdaptivePacing'
          - $ref: '#/components/schemas/ModuleGeminiPacing'
        soft_launch:
          $ref: '#/components/schemas/ModuleSoftLaunch'
    ModuleQuotaOverlay:
      title: Quota overlay
      type: object
      description: Manages the way how completes goal is translated to quotas.
      properties:
        prevent_overfill:
          type: boolean
          description: Applies a translation to prescreen quota filling strategy, that prevents overfills.
          example: true
        balance_fill:
          type: boolean
          description: Does not let quotas fill faster than the others within the same demography.
          example: true
      required:
      - prevent_overfill
      - balance_fill
    ModuleGeminiPacing:
      title: Pacing module
      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: Descriptor of the pacing module type.
        exposed_target_group_id:
          type: string
          format: ulid
          description: Uniquely identifies exposed Target Group by ID.
          example: 01HC2Z6TM8C4F3Y5CA6S2JR475
      required:
      - type
      - exposed_target_group_id
    ModuleDynamicPricing:
      title: Dynamic pricing
      type: object
      description: This module can only be used for Target Groups with dynamic pricing. It does not support Target Groups
        with rate card pricing. Controls CPI to try achieving 100% fill at the moment of fielding end date as cheaply as possible.
        Requires at least one of the upper limits (total budget, maximum CPI) to be specified, but not both simultaneously.
      properties:
        type:
          type: string
          enum:
          - dynamic
          description: Descriptor of the pricing module type.
        total_budget:
          description: Maximum monetary amount to be spent for the target number of completes. Only one of `maximum_cpi` or
            `total_budget` can be specified.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        maximum_cpi:
          description: Maximum CPI to be set on the Target Group. Must be higher than the minimum, if specified. Only one
            of `maximum_cpi` or `total_budget` can be specified.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
        minimum_cpi:
          description: Minimum CPI to be set on the Target Group. Must be lower than the maximum, if specified. Can be overruled
            by total budget.
          allOf:
          - $ref: '#/components/schemas/MonetaryAmount'
      required:
      - type
    CreateBulkPauseTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk pause target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    TargetGroupIds:
      type: array
      description: List of target group IDs.
      items:
        $ref: '#/components/schemas/TargetGroupID'
    BulkUpdatedTargetGroups:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              target_group_id:
                $ref: '#/components/schemas/TargetGroupID'
              target_group_name:
                $ref: '#/components/schemas/TargetGroupName'
        has_more:
          type: boolean
          enum:
          - false
    CreateBulkCompleteTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk complete target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    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'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    BulkJobFailureReason:
      type: object
      properties:
        code:
          type: string
          example: TargetGroupNotFound
        description:
          type: string
          example: Target group not found.
    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'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    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'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    GetBulkResumeTargetGroupJobResponse:
      type: object
      description: Bulk resume 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'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    GetBulkRelaunchTargetGroupJobResponse:
      type: object
      description: Bulk relaunch 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'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    BulkJobStatus:
      type: string
      enum:
      - Completed
      - Failed
      - Processing
    CreateBulkLaunchTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk launch target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    CreateBulkResumeTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk resume target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    CreateBulkRelaunchTargetGroupJobRequest:
      type: object
      description: Request body for creating a bulk relaunch target groups job.
      properties:
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    BulkFailedTargetGroups:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              target_group_id:
                $ref: '#/components/schemas/TargetGroupID'
              target_group_name:
                $ref: '#/components/schemas/TargetGroupName'
              failure_reason:
                $ref: '#/components/schemas/BulkJobFailureReason'
        has_more:
          type: boolean
          enum:
          - false
    TargetGroupName:
      type: string
      description: Name of the Target Group. Any leading or trailing whitespaces will be trimmed.
      minLength: 5
      maxLength: 128
      example: Test Target Group
    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
    FieldingRunJobFailureReasonDetail:
      type: object
      properties:
        name:
          type: string
          example: profile_validation_error_001
        reason:
          type: string
          example: profile_condition_min_greater_than_max_001
        detail:
          type: string
          example: QuestionID - 1, Details - Min > Max - 50-40
    FieldingRunStatus:
      description: The status of a fielding run.
      type: string
      enum:
      - scheduled
      - live
      - paused
      - completed
    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-01T23:00:00.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    FieldingRunItem:
      type: object
      description: Fielding run details.
      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-01T23:00:00.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
    FieldingRunJobStatus:
      description: The status of an async fielding run job.
      type: string
      enum:
      - Completed
      - Failed
      - Processing
    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-01T23:00:00.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    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 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-01T23:00:00.000Z'
      required:
      - start_fielding_at
      - end_fielding_at
    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:
      - 96C65204-90C2-4DCB-9393-B8226DD50C76
      - 01BTGNYV6HRNK8K8VKZASZCFP0
    FieldingRunID:
      description: The character string representing a unique fielding run ID.
      type: string
      example: 01BTGNYV6HRNK8K8VKZASZCFP1
    GetListFieldingRunsResponse:
      type: object
      description: List of fielding runs for a given target group id.
      properties:
        data:
          type: array
          description: Array of fielding run list items, representing the results of the query. Currently, this array will
            contain at most one fielding run.
          items:
            $ref: '#/components/schemas/FieldingRunItem'
        has_more:
          type: boolean
          description: If there are further results to be shown. Currently, this property will consistently return false.
          enum:
          - false
      required:
      - data
      - has_more
    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
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/FieldingRunJobStatus'
        failure_reason:
          $ref: '#/components/schemas/FieldingRunJobFailureReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
      required:
      - job_id
      - created_at
      - created_by
      - status
    FieldingRunJobFailureReason:
      type: object
      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'
    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
          example: '2023-01-01T23:00:00.000Z'
        created_by:
          $ref: '#/components/schemas/UserID'
        status:
          $ref: '#/components/schemas/FieldingRunJobStatus'
        failure_reason:
          $ref: '#/components/schemas/FieldingRunJobFailureReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
      required:
      - job_id
      - created_at
      - created_by
      - status
    GetFieldingRunResponse:
      allOf:
      - $ref: '#/components/schemas/FieldingRunItem'
      - description: Fielding run details.
    TooManyRequestsProblemDetails:
      type: object
      title: Too many requests problem details
      required:
      - object
      - details
      properties:
        object:
          type: string
          enum:
          - too_many_requests_problem_details
        details:
          type: string
    SuggestDaysRequest:
      type: object
      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: Expected time to finish the target group in minutes.
          minimum: 1
          maximum: 45
          example: 5
        incidence_rate:
          type: number
          description: Percentage of respondents that will qualify for the study after targeting using standard qualifications.
          minimum: 0
          maximum: 1
          example: 0.5
        completes:
          type: integer
          description: the completes value for the condition
          minimum: 1
          example: 1000
    SuggestDaysResponse:
      type: object
      properties:
        days:
          type: integer
          description: the suggested number of days
          example: 10
    SuggestedTimeRangeResponse:
      type: object
      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-01T23:00:00.000Z'
        holidays:
          type: array
          description: List of holidays in the suggested time range.
          items:
            type: object
            properties:
              date:
                type: string
                example: '2023-01-01'
              name:
                type: string
                example: New Year's Day
              respondent_rate:
                type: number
                format: double
                example: 0.65
              completes_rate:
                type: number
                format: double
                example: 0.54
        timezone:
          type: string
          description: IANA code for timezones across the world.
          example: Europe/London
    GetProfileOutputManageRegularProfile:
      allOf:
      - type: object
        properties:
          object:
            type: string
            enum:
            - profile
      - $ref: '#/components/schemas/OutputManageRegularProfile'
    InputDraftParticipantProfile:
      type: object
      properties:
        id:
          type: string
          example: 01JAC2AQM5NAZVE08KMPEB2PVP
        question_id:
          $ref: '#/components/schemas/QuestionID'
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
          example: true
        interlock_id:
          type: string
          description: The identifier for the interlock that this profile composes.
          format: ULID
        is_interlocked:
          type: boolean
          description: Flag indicating if this profile is part of an interlock.
          example: true
        conditions:
          oneOf:
          - $ref: '#/components/schemas/InputParticipantSelectionConditions'
          - $ref: '#/components/schemas/InputParticipantRangeConditions'
          - $ref: '#/components/schemas/InputParticipantZipConditions'
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/InputDraftSingularRegularQuota'
            grouped:
              type: array
              items:
                $ref: '#/components/schemas/InputDraftGroupedRegularQuota'
    ManageValidateProfilesGroupedQuota:
      type: object
      properties:
        id:
          type: string
          description: The identifier for the grouped quota.
          format: ULID
        legacy_id:
          type: string
          description: The legacy identifier for the grouped quota.
        quota_percentage:
          type: number
          format: float
        quota:
          type: integer
        filling_goal:
          type: integer
          example: 1000
        prescreens:
          type: integer
          example: 100
        completes:
          type: integer
        completes_goal:
          type: integer
          example: 50
        name:
          type: string
        conditions:
          type: array
          items:
            type: string
    InputDraftInterlockedParticipantRangeProfileCondition:
      type: object
      properties:
        min:
          type: integer
          description: The minimum numeric value (inclusive).
        max:
          type: integer
          description: The maximum numeric value (inclusive).
    CreateInterlockedProfileRequestBody:
      type: object
      properties:
        target_group_filling_goal:
          type: integer
          format: int64
          example: 100
          minimum: 1
          maximum: 10000
          description: Target group filling goal.
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/ProfileIDV2'
    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'
    ProfileCreationRangeConditions:
      type: object
      required:
      - min
      - max
      properties:
        min:
          type: integer
          description: The minimum numeric value (inclusive).
          example: 18
        max:
          type: integer
          description: The maximum numeric value (inclusive).
          example: 24
    InputDraftRangeConditions:
      type: object
      description: A conditions object for range-based profiles.
      properties:
        object:
          type: string
          enum:
          - range_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/RangeConditionDetails'
    GroupQuotasRequestBody:
      type: object
      properties:
        data:
          type: array
          description: The grouping state you want to have on the conditions
          items:
            type: object
            properties:
              name:
                type: string
                description: The name of the group
              conditions:
                type: array
                description: List of condition options you want to be a member of the group
                items:
                  type: string
                  example: '1'
      example:
        data:
        - name: Group 1
          conditions:
          - 01JBG14JYJPYWGSA0FDS0QXCVT
          - 01JBG14JYKD43A6SMJ77QN7RN5
          - 01JBG14XFNZDHBM06RZWAEE63Z
    OutputRegularProfileCondition:
      type: object
      required:
      - id
      - text
      - text_translated
      properties:
        id:
          type: string
          format: ULID
          description: Profile condition identifier.
        text:
          type: string
          description: Condition text
        text_translated:
          type: string
          description: Condition text in target language
      anyOf:
      - $ref: '#/components/schemas/SelectionConditionDetails'
      - $ref: '#/components/schemas/RangeConditionDetails'
      - $ref: '#/components/schemas/ZipConditionDetails'
    ConditionV2:
      type: object
      properties:
        id:
          type: string
          description: the identifier for the condition
        option:
          type: string
          description: question option
        min:
          type: integer
          description: The minimum numeric value (inclusive).
        max:
          type: integer
        zip_codes:
          type: array
          maxItems: 10000
          items:
            type: string
            description: List of applicable zip codes. Note that only 10,000 values may be provided
        allow_all_zip:
          type: boolean
          description: Flag to allow all zip codes.
        text:
          type: string
          description: text description for the condition.
        text_translated:
          type: string
          description: translated text description for the condition.
    OutputManageRegularProfile:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile identifier.
        legacy_id:
          type: string
          description: Legacy profile identifier.
        question_id:
          type: integer
          description: Question ID
        name:
          type: string
          description: Profile name
        description:
          type: string
          description: Profile description
        description_translated:
          type: string
          description: Profile description in target language
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        conditions:
          type: object
          required:
          - object
          - data
          properties:
            object:
              type: string
              enum:
              - zip_conditions_details_template
              - range_conditions_details_template
              - selection_conditions_details_template
            data:
              type: array
              items:
                $ref: '#/components/schemas/OutputRegularProfileCondition'
        quotas:
          type: object
          required:
          - ungrouped
          - grouped
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/ManageValidateProfilesUngroupedQuota'
            grouped:
              type: array
              items:
                $ref: '#/components/schemas/ManageValidateProfilesGroupedQuota'
        interlock_id:
          type: string
          format: ULID
          description: The identifier for the interlock that this profile is part of, if applicable.
        is_interlocked:
          type: boolean
          description: Flag indicating if the profile is part of an interlock.
    OutputInterlockedProfileQuotaConditionDetails:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile condition identifier.
        text:
          type: string
          description: Condition text
        text_translated:
          type: string
          description: Condition text in target language
        option:
          type: string
          example: '1'
        related_condition:
          $ref: '#/components/schemas/RelatedConditionsV2Map'
    InputDraftSingularRegularQuota:
      type: object
      properties:
        index:
          type: integer
          description: The index of the condition as reference to the item from the list of conditions.
          example: 0
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: Percentage of total quota applied to this condition(s).
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value expressed as a nominal value.
          example: 550
    CreateInterlockedProfileResponse:
      type: object
      properties:
        locale:
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageRegularProfile'
        interlocked_profile:
          $ref: '#/components/schemas/OutputManageInterlockedProfile'
    InputDraftZipConditions:
      type: object
      description: A conditions object for ZIP code-based profiles.
      properties:
        object:
          type: string
          enum:
          - zip_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/ZipConditionDetails'
    InputInterlockedDraftProfile:
      type: object
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/ProfileIDV2'
        name:
          type: string
          example: Age, Gender
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        depends_on_questions:
          type: array
          description: Array of questionIDs that this profile depends on.
          items:
            type: integer
        collects_pii:
          type: boolean
          description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
          example: true
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: ULID
                    example: 01HW8NWD653V44M5FXWD5FJD9Q
                  condition:
                    type: object
                    properties:
                      id:
                        $ref: '#/components/schemas/ConditionID'
                      option:
                        type: string
                        example: '1'
                      related_condition:
                        $ref: '#/components/schemas/RelatedConditionsV2Map'
                  quota_percentage:
                    type: integer
                    description: The quota percentage for the template.
                    minimum: 0
                    maximum: 100
                    example: 40
                  quota:
                    type: integer
                    example: 400
                  filling_goal:
                    type: integer
                    description: The filling goal for the template.
                    example: 100
                    minimum: 1
                    maximum: 10000
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftParticipantProfile'
    ApplyProfilesResponseBody:
      type: object
      properties:
        locale:
          type: string
          description: Locale of the target group.
          example: eng_us
        filling_goal:
          type: integer
          format: int64
          example: 100
          minimum: 1
          maximum: 10000
          description: Target group filling goal.
        profile_adjustment_type:
          type: string
          enum:
          - percentage
          - nominal
          example: percentage
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/OutputRegularProfile'
        interlocked_profile:
          $ref: '#/components/schemas/OutputInterlockedProfile'
    UnauthorizedErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    OutputRegularProfileUngroupedQuota:
      type: object
      required:
      - id
      - conditions
      - quota
      - completes
      - prescreens
      - completes_goal
      properties:
        id:
          type: string
          format: ULID
          description: Profile quota identifier.
        index:
          type: integer
          description: Quota index
        name:
          type: string
          description: Quota name
        conditions:
          type: array
          description: Quota condition identifiers
          items:
            type: string
        quota:
          type: integer
          description: Quota value
        quota_percentage:
          type: integer
          description: Quota percentage value
        filling_goal:
          type: integer
          description: Filling goal value
        prescreens:
          type: integer
          description: Prescreen value
        completes:
          type: integer
          description: Completes value
        completes_goal:
          type: integer
          description: Completes goal value
    InputParticipantSelectionConditions:
      type: object
      description: A conditions object for interlocked selection profiles.
      properties:
        object:
          type: string
          enum:
          - selection_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftInterlockedParticipantSelectionProfileCondition'
    OutputRegularProfile:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile identifier.
        question_id:
          type: integer
          description: Question ID
        name:
          type: string
          description: Profile name
        description:
          type: string
          description: Profile description
        description_translated:
          type: string
          description: Profile description in target language
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        conditions:
          type: object
          required:
          - object
          - data
          properties:
            object:
              type: string
              enum:
              - zip_conditions_details_template
              - range_conditions_details_template
              - selection_conditions_details_template
            data:
              type: array
              items:
                $ref: '#/components/schemas/OutputRegularProfileCondition'
        quotas:
          type: object
          required:
          - ungrouped
          - grouped
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/OutputRegularProfileUngroupedQuota'
            grouped:
              type: array
              items:
                $ref: '#/components/schemas/OutputRegularProfileGroupedQuota'
        interlock_id:
          type: string
          format: ULID
          description: The identifier for the interlock that this profile is part of, if applicable.
        is_interlocked:
          type: boolean
          description: Flag indicating if the profile is part of an interlock.
    OutputInterlockedProfileUngroupedQuota:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile quota identifier.
        name:
          type: string
          description: Quota name
        condition:
          $ref: '#/components/schemas/OutputInterlockedProfileQuotaConditionDetails'
        quota_percentage:
          type: integer
          description: Quota percentage value
        filling_goal:
          type: integer
          description: Filling goal value
        quota:
          type: integer
          description: Quota value
        completes:
          type: integer
          description: Completes value
        prescreens:
          type: integer
          description: Prescreen value
    InputDraftRegularProfile:
      type: object
      properties:
        question_id:
          $ref: '#/components/schemas/QuestionID'
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
          example: true
        conditions:
          oneOf:
          - $ref: '#/components/schemas/InputDraftSelectionConditions'
          - $ref: '#/components/schemas/InputDraftRangeConditions'
          - $ref: '#/components/schemas/InputDraftZipConditions'
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/InputDraftSingularRegularQuota'
            grouped:
              type: array
              items:
                $ref: '#/components/schemas/InputDraftGroupedRegularQuota'
    InputDraftSelectionConditions:
      type: object
      description: A conditions object for selection-based profiles.
      properties:
        object:
          type: string
          enum:
          - selection_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/SelectionConditionDetails'
    BatchDeleteProfileRequestBody:
      type: object
      properties:
        profiles:
          type: array
          description: IDs of the profiles you want to delete
          items:
            $ref: '#/components/schemas/ProfileIDV2'
      example:
        profiles:
        - 01HW8NWD653V44M5FXWD5FJD9Q
        - 01HW8CWD653M44M5FXWD5FJE9Q
    ZipConditionDetails:
      type: object
      required:
      - zip_codes
      - allow_all_zip
      properties:
        zip_codes:
          type: array
          description: List of applicable zip codes
          maxItems: 10000
          items:
            type: string
            example: '90210'
        allow_all_zip:
          type: boolean
          description: Flag to allow all zip codes
          example: true
    ConditionID:
      type: string
      description: Condition identifier
      format: ULID
    GetProfileOutputManageInterlockedProfile:
      allOf:
      - type: object
        properties:
          object:
            type: string
            enum:
            - interlocked_profile
      - $ref: '#/components/schemas/OutputManageInterlockedProfile'
    SelectionConditionDetails:
      type: object
      required:
      - option
      properties:
        option:
          type: string
          description: Question option
          example: '1'
    ManageValidateProfilesUngroupedQuota:
      type: object
      properties:
        id:
          type: string
          description: The identifier for the quota.
          format: ULID
        legacy_id:
          type: string
          description: The legacy identifier for the quota.
        quota_percentage:
          type: number
          format: float
        quota:
          type: integer
          example: 23
        filling_goal:
          type: integer
          example: 1000
        prescreens:
          type: integer
          example: 100
        completes:
          type: integer
        completes_goal:
          type: integer
          example: 50
        condition:
          type: string
          description: The condition string representing the quota.
    InputParticipantRangeConditions:
      type: object
      description: A conditions object for interlocked range profiles.
      properties:
        object:
          type: string
          enum:
          - range_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftInterlockedParticipantRangeProfileCondition'
    BatchDeleteProfileQuotasRequestBody:
      type: object
      properties:
        profiles:
          type: array
          items:
            type: object
            properties:
              profile_id:
                $ref: '#/components/schemas/ProfileIDV2'
              quotas:
                type: array
                description: IDs of the quotas you want to delete.
                items:
                  type: string
                  format: ULID
    InputParticipantZipConditions:
      type: object
      description: A conditions object for interlocked ZIP profiles.
      properties:
        object:
          type: string
          enum:
          - zip_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftInterlockedParticipantZipProfileCondition'
    OutputRegularProfileGroupedQuota:
      type: object
      required:
      - id
      - conditions
      - name
      - quota
      - completes
      - prescreens
      - completes_goal
      properties:
        id:
          type: string
          format: ULID
          description: Profile quota identifier.
        conditions:
          type: array
          items:
            type: string
            description: Quota condition identifier
        name:
          type: string
          description: Group name
        quota:
          type: integer
          description: Quota value
        completes:
          type: integer
          description: Completes value
        prescreens:
          type: integer
          description: Prescreen value
        completes_goal:
          type: integer
          description: Completes goal value
    OutputManageInterlockedProfileUngroupedQuota:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile quota identifier.
        legacy_id:
          type: string
          description: Legacy profile quota identifier.
        quota_percentage:
          type: number
          description: Quota percentage value
          format: float
        quota:
          type: integer
          description: Quota value
        filling_goal:
          type: integer
          description: Filling goal value
        prescreens:
          type: integer
          description: Prescreen value
        completes:
          type: integer
          description: Completes value
        completes_goal:
          type: integer
          description: Completes goal value
        condition:
          $ref: '#/components/schemas/OutputInterlockedProfileQuotaConditionDetails'
    GetTargetGroupQuotaDistributionResponse:
      type: object
      properties:
        quota_updates_allowed:
          type: boolean
          example: true
        quota_distribution:
          type: array
          items:
            type: object
            description: Container for the distributed value of a quota's filling goal
            properties:
              quota_id:
                type: string
                description: The quota ID of the quota being updated
                example: 01JBFEKDMTWHFA93BK0DSDGYWC
              filling_goal:
                $ref: '#/components/schemas/QuotaFillingGoal'
    ApplyProfilesRequestBody:
      type: object
      required:
      - locale
      - filling_goal
      - profile_adjustment_type
      properties:
        locale:
          type: string
          description: Locale of the target group.
          example: eng_us
        filling_goal:
          type: integer
          format: int64
          example: 100
          minimum: 1
          maximum: 10000
          description: Target group filling goal.
        profile_adjustment_type:
          type: string
          enum:
          - percentage
          - nominal
          example: percentage
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftRegularProfile'
        interlocked_profile:
          $ref: '#/components/schemas/InputInterlockedDraftProfile'
    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
    RangeConditionDetails:
      type: object
      required:
      - min
      - max
      properties:
        min:
          type: number
          description: Minimum value(inclusive)
        max:
          type: number
          description: Maximum value(inclusive)
    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
    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_027
          - profile_validation_error_028
          - profile_validation_error_029
          - profile_validation_error_030
          - profile_validation_error_031
          - 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
        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
          - at_least_one_quota_object_should_be_populated_with_quota_nominal_or_quota_percentage_value_019
          - not_supported_question_option_020
          - zip_not_supported_in_interlock_021
          - profiles_to_be_interlocked_cannot_be_less_than_2_022
          - profiles_to_be_interlocked_cannot_be_greater_than_3_023
          - number_of_quotas_in_interlock_cannot_be_greater_than_max_024
          - interlock_quota_will_be_always_enabled_025
          - at_least_one_quota_object_should_be_populated_with_completes_goal_or_completes_goal_percentage_value_026
          - invalid_profile_id_format_027
          - interlock_profile_already_exists_remove_existing_interlock_before_proceeding_028
          - not_a_valid_profile_id_029
          - total_number_of_quotas_cannot_be_greater_than_max_030
          - quota_value_cannot_be_null_031
          - invalid_open_ended_option_032
          - quota_conditions_out_of_bounds_033
          - interlocked_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_more_than_999_038
        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
    OutputInterlockedProfile:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile identifier.
        name:
          type: string
          description: Profile name
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        depends_on_questions:
          type: array
          items:
            type: integer
          description: List of questions that this profile depends on.
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/OutputInterlockedProfileUngroupedQuota'
            grouped:
              type: array
              items:
                type: string
              maxItems: 0
              example: []
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/OutputRegularProfile'
    QuotaFillingGoal:
      type: integer
      format: int64
      example: 100
      minimum: 1
      maximum: 10000
      description: The filling goal for a given quota/condition.
    CreateProfileRequestBody:
      type: object
      required:
      - conditions
      - question_id
      properties:
        question_id:
          $ref: '#/components/schemas/QuestionID'
        conditions:
          $ref: '#/components/schemas/ProfileCreationConditions'
    InputDraftInterlockedParticipantSelectionProfileCondition:
      type: object
      properties:
        option:
          type: string
          description: Question option
    GetAllProfilesResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageRegularProfile'
        interlocked_profile:
          $ref: '#/components/schemas/OutputManageInterlockedProfile'
        locale:
          type: string
    GetProfileResponse:
      oneOf:
      - $ref: '#/components/schemas/GetProfileOutputManageRegularProfile'
      - $ref: '#/components/schemas/GetProfileOutputManageInterlockedProfile'
    ForbiddenErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    OutputManageInterlockedProfile:
      type: object
      properties:
        id:
          type: string
          format: ULID
          description: Profile identifier.
        name:
          type: string
          description: Profile name
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        depends_on_questions:
          type: array
          items:
            type: integer
          description: List of questions that this profile depends on.
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                $ref: '#/components/schemas/OutputManageInterlockedProfileUngroupedQuota'
            grouped:
              type: array
              items:
                type: string
              maxItems: 0
              example: []
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageRegularProfile'
    InputDraftInterlockedParticipantZipProfileCondition:
      type: object
      properties:
        zip_codes:
          type: array
          description: |
            The number option for the answer of the question
            relating to the condition.
            Note that only 10,000 values may be provided
          maxItems: 10000
          items:
            type: string
        allow_all_zip:
          type: boolean
          description: |
            If true, the profile will allow all zip codes. If false,
            the profile will only allow the zip codes specified in the data field.
          example: true
    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
    ProfileCreationZipConditions:
      type: object
      required:
      - zip_codes
      - allow_all_zip
      properties:
        zip_codes:
          type: array
          maxItems: 10000
          items:
            type: string
          description: List of applicable zip codes. Note that only 10,000 values may be provided
        allow_all_zip:
          type: boolean
          description: Flag to allow all zip codes.
    InputDraftGroupedRegularQuota:
      type: object
      properties:
        name:
          type: string
          description: the name of the group of conditions
          maxLength: 64
          example: Group 1
        indexes:
          type: array
          description: The indexes of the conditions as reference to the items from the list of conditions.
          items:
            type: integer
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: Percentage of total quota applied to this condition(s).
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value expressed as a nominal value.
          example: 550
    ProfileCreationConditions:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: object field to distinguish between different types of control selections.
          enum:
          - zip_conditions
          - range_conditions
          - selection_conditions
          example: selection_conditions
        data:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/ProfileCreationRangeConditions'
            - $ref: '#/components/schemas/ProfileCreationZipConditions'
            - type: array
              items:
                type: string
    UpdateProfileConditionsResponse:
      type: object
      properties:
        locale:
          type: string
        filling_goal:
          type: integer
        profile_adjustment_type:
          type: string
          enum:
          - percentage
          - nominal
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageRegularProfile'
        interlocked_profiles:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageInterlockedProfile'
    NotFoundErrorResponseDemographics:
      type: object
      properties:
        object:
          type: string
        detail:
          type: string
    QuestionID:
      type: integer
      description: Question identifier
      example: 42
    RelatedConditionsV2Map:
      type: object
      description: |
        A mapping of condition IDs to their details.   Each key is a string formatted question ID (e.g. "42"),   and each value is an array of ConditionV2 objects.
      additionalProperties:
        type: array
        items:
          $ref: '#/components/schemas/ConditionV2'
    RemoveInterlocksResponse:
      type: object
      properties:
        locale:
          type: string
        data:
          type: array
          items:
            $ref: '#/components/schemas/OutputManageRegularProfile'
        interlocked_profile:
          $ref: '#/components/schemas/OutputManageInterlockedProfile'
    UpdateFillingGoalRequestBody:
      type: object
      description: Filling goal update request.
      properties:
        filling_goal:
          type: integer
          format: int64
          example: 100
          minimum: 1
          maximum: 10000
          description: Target group filling goal.
        profiles:
          type: array
          description: A list of profiles and filling goals with the associated profile IDs
          items:
            type: object
            required:
            - profile_id
            - quotas
            properties:
              profile_id:
                type: string
                format: ULID
                description: Profile identifier.
                example: 01JBFEKDMTR4TVM6W05NN4JYR9
              quotas:
                type: array
                description: A list of filling goals with the associated quota IDs
                items:
                  type: object
                  required:
                  - quota_id
                  - filling_goal
                  properties:
                    quota_id:
                      type: string
                      description: The quota ID of the quota being updated
                      example: 01JBFEKDMTWHFA93BK0DSDGYWC
                    filling_goal:
                      $ref: '#/components/schemas/QuotaFillingGoal'
    ProfileIDV2:
      type: string
      format: ULID
      description: Profile identifier
      example: 01HY0PYB3TW23RQRVNFYRC2PP6
    WebhookCreatedAt:
      type: string
      format: date-time
      description: The timestamp the webhook was updated at (RFC3339 UTC format, 3 fractional digits).
      example: '2023-01-01T23:00:00.000Z'
    WebhookUpdatedAt:
      type: string
      format: date-time
      description: The timestamp the webhook was updated at (RFC3339 UTC format, 3 fractional digits).
      example: '2023-01-01T23:00:00.000Z'
    WebhookURL:
      type: string
      format: url
      description: The URL of the webhook.
      example: https://example.com/webhook
    WebhookCreated:
      type: object
      description: A response containing the details of the webhook.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEvents'
        secret:
          $ref: '#/components/schemas/WebhookSecret'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookUpdatedAt'
    WebhookSecretRegenerated:
      type: object
      description: A response containing the details of the webhook.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEvents'
        secret:
          $ref: '#/components/schemas/WebhookSecret'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookUpdatedAt'
    WebhookEventsList:
      type: object
      description: A response containing a list of valid events for webhooks.
      properties:
        events:
          $ref: '#/components/schemas/WebhookEvents'
    WebhookEvents:
      type: array
      description: Names of the events that are valid for a webhook type notification.
      items:
        type: string
        description: Name of the event that is valid for a webhook type notification.
        enum:
        - target-group-updated
        - quota-fill-registered
        - session-updated
      example:
      - target-group-updated
      - quota-fill-registered
    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: Whether there are more webhooks.
          type: boolean
    WebhookSecret:
      type: string
      format: base64
      description: |-
        The secret key used to sign the payload of webhook calls. Webhook consumers must use
        this key 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=
    WebhookID:
      type: string
      format: ulid
      description: The ID of the webhook.
      example: 01JPVZD75DW4KRP7MPFMF6KGZX
    Webhook:
      type: object
      description: A response containing the details of the webhook.
      properties:
        id:
          $ref: '#/components/schemas/WebhookID'
        url:
          $ref: '#/components/schemas/WebhookURL'
        events:
          $ref: '#/components/schemas/WebhookEvents'
        created_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
        updated_at:
          $ref: '#/components/schemas/WebhookCreatedAt'
    InputValidateProfilesInterlockedProfile:
      type: object
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/ProfileIDV2'
        name:
          type: string
          example: Age, Gender
        quotas_enabled:
          type: boolean
          description: Flag indicating if quotas are enabled.
        depends_on_questions:
          type: array
          description: Array of questionIDs that this profile depends on.
          items:
            type: integer
        quotas:
          type: object
          properties:
            ungrouped:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                    format: ULID
                    example: 01HW8NWD653V44M5FXWD5FJD9Q
                  condition:
                    type: object
                    properties:
                      id:
                        $ref: '#/components/schemas/ConditionID'
                      option:
                        type: string
                        example: '1'
                      related_condition:
                        $ref: '#/components/schemas/RelatedConditionsV2'
                  quota_percentage:
                    type: integer
                    description: The quota percentage for the template.
                    minimum: 0
                    maximum: 100
                    example: 40
                  quota:
                    type: integer
                    description: Nominal quota number.
                    minimum: 0
                    example: 150
                  filling_goal:
                    $ref: '#/components/schemas/QuotaFillingGoal'
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftParticipantProfile'
    QuestionProfileZipConditionsV3:
      type: object
      required:
      - object
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `zip_conditions_details_template`.
          enum:
          - zip_conditions_details_template
          example: zip_conditions_details_template
        data:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - allow_all_zip
            properties:
              allow_all_zip:
                type: boolean
                enum:
                - true
                description: Flag to allow all zip codes.
              zip_codes:
                type: array
                minItems: 0
                maxItems: 10000
                items:
                  type: string
                nullable: true
                description: Must be null when `allow_all_zip` is true. Maximum 10,000 elements
    ApplyProfileResponseConditionDetail:
      type: object
      properties:
        id:
          type: string
        text:
          type: string
        text_translated:
          type: string
        min:
          type: integer
        max:
          type: integer
        option:
          type: string
        zip_codes:
          type: array
          maxItems: 10000
          items:
            type: string
        allow_all_zip:
          type: boolean
      required:
      - id
      - text
      - text_translated
      - min
      - max
      - option
      - zip_codes
      - allow_all_zip
    DraftProfileResponseUngroupedQuota:
      type: object
      properties:
        id:
          type: string
        index:
          type: integer
        name:
          type: string
        conditions:
          type: array
          items:
            type: string
        quota_percentage:
          type: integer
        quota:
          type: integer
        filling_goal:
          type: integer
        prescreens:
          type: integer
        completes:
          type: integer
        completes_goal:
          type: integer
      required:
      - index
      - quota_percentage
      - quota
      - filling_goal
    RelatedConditionV2:
      type: object
      properties:
        question_id:
          $ref: '#/components/schemas/QuestionID'
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/ConditionV2'
    GenerateDraftInterlockRequest:
      type: object
      properties:
        locale:
          type: string
        filling_goal:
          type: integer
        start_at:
          type: string
          description: Starting timestamp of the suggested time range.
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        end_at:
          type: string
          description: Ending timestamp of the suggested time range.
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        interlocked_profile_id:
          type: string
          description: The identifier for the interlock that this profile composes.
          format: ULID
        collects_pii:
          type: boolean
          example: true
        profiles:
          type: array
          items:
            type: object
            properties:
              question_id:
                $ref: '#/components/schemas/QuestionID'
              quotas_enabled:
                type: boolean
              conditions:
                oneOf:
                - $ref: '#/components/schemas/QuestionProfileSelectionConditions'
                - $ref: '#/components/schemas/QuestionProfileRangeConditions'
                - $ref: '#/components/schemas/QuestionProfileZipConditionsV3'
              quotas:
                $ref: '#/components/schemas/ApplyProfileRequestQuotas'
    RelatedConditionsV2:
      type: array
      items:
        $ref: '#/components/schemas/RelatedConditionV2'
      minItems: 1
      example:
      - question_id: 42
        conditions:
        - option: '1'
          text: Male
          text_translated: Male
      - question_id: 43
        conditions:
        - min: 30
          max: 50
          text: 30-50
          text_translated: 30-50
    DraftInterlockProfilesResponse:
      type: array
      description: Array of interlocked profiles.
      items:
        type: object
        properties:
          id:
            type: string
            description: Unique identifier of interlocked profile
            example: 01J82QX46HS1QBAG8D14KBQP26
          name:
            type: string
            description: Name of the interlocked Profile
            example: GENDER, AGE
          quotas_enabled:
            type: boolean
            description: Denotes whether quotas are enabled. For generate draft interlock, this will be defaulted to true.
            example: true
          depends_on_questions:
            type: array
            description: Array of question id's used to create interlocked profile. First element is considered as parent
              profile.
            items:
              type: integer
          quotas:
            type: object
            description: Quotas for interlocked profile.
            properties:
              ungrouped:
                type: array
                description: Array of ungrouped quotas which relate to interlock condition
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      format: ulid
                      description: Unique identifier to represent quota
                      example: 01J82QX46HS1QBAG8D14KBQP2D
                    name:
                      type: string
                    quota_percentage:
                      type: integer
                      example: 9
                    quota:
                      type: number
                      example: 906
                    filling_goal:
                      type: number
                      example: 906
                    condition:
                      type: object
                      properties:
                        id:
                          type: string
                          format: ulid
                          description: Unique identifier to represent condition
                          example: 01J82QX46HS1QBAG8D14KBQP2D
                        text:
                          type: string
                          example: 15-19, Male
                        translated_text:
                          type: string
                          example: 15-19, Male
                        option:
                          type: string
                          example: '1'
                        related_condition:
                          $ref: '#/components/schemas/RelatedConditionsV2Map'
                    prescreens:
                      type: integer
                      example: 4200
                    completes:
                      type: integer
                      example: 906
          profiles:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Profile identifier
                  example: '1000'
                question_id:
                  type: integer
                  description: the identifier for the underlying question from the profiling library
                  example: 42
                name:
                  type: string
                  description: the name of the profile
                  example: AGE
                quotas_enabled:
                  type: boolean
                  description: Denotes whether quotas are enabled for this profile.
                  example: true
                description:
                  type: string
                  description: a short summary of the profile
                  example: What is your age?
                description_translated:
                  type: string
                  description: translated description of question
                  example: string
                conditions:
                  $ref: '#/components/schemas/ApplyProfileResponseConditions'
                quotas:
                  $ref: '#/components/schemas/DraftProfileResponseQuotas'
                interlock_id:
                  type: string
                  description: The interlock ID this profile belongs to.
                  example: 01J82QX46HS1QBAG8D14KBQP26
                is_interlocked:
                  type: boolean
                  description: Denotes whether this profile is interlocked.
                  example: true
    ApplyProfileRequestGroupedQuota:
      type: object
      properties:
        indexes:
          type: array
          items:
            type: integer
          example:
          - 0
          - 1
          - 2
        name:
          type: string
          example: Age Group
        quota_percentage:
          type: integer
          example: 50
        quota_nominal:
          type: integer
          example: 23
      required:
      - indexes
      - name
      - quota_percentage
      - quota_nominal
    ApplyProfileRequestQuotas:
      type: object
      properties:
        ungrouped:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfileRequestUngroupedQuota'
        grouped:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfileRequestGroupedQuota'
      required:
      - ungrouped
      - grouped
    DraftProfileResponseGroupedQuota:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        indexes:
          type: array
          items:
            type: integer
        conditions:
          type: array
          items:
            type: string
        quota_percentage:
          type: integer
        quota:
          type: integer
        filling_goal:
          type: integer
        prescreens:
          type: integer
        completes:
          type: integer
        completes_goal:
          type: integer
      required:
      - name
      - indexes
      - quota_percentage
      - quota
      - filling_goal
    QuestionProfileRangeConditions:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `range_conditions_details_template`.
          enum:
          - range_conditions_details_template
          example: range_conditions_details_template
        data:
          type: array
          items:
            type: object
            required:
            - min
            - max
            properties:
              min:
                type: integer
                description: The minimum numeric value (inclusive).
              max:
                type: integer
                description: The maximum numeric value (inclusive).
    QuestionProfileSelectionConditions:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `selection_conditions_details_template`.
          enum:
          - selection_conditions_details_template
          example: selection_conditions_details_template
        data:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - option
            properties:
              option:
                type: string
                description: the identifier for the condition
    DraftProfileResponseQuotas:
      type: object
      properties:
        ungrouped:
          type: array
          items:
            $ref: '#/components/schemas/DraftProfileResponseUngroupedQuota'
        grouped:
          type: array
          items:
            $ref: '#/components/schemas/DraftProfileResponseGroupedQuota'
      required:
      - ungrouped
      - grouped
    ApplyProfileRequestUngroupedQuota:
      type: object
      properties:
        index:
          type: integer
          example: 0
        quota_percentage:
          type: integer
          example: 90
        quota_nominal:
          type: integer
          example: 23
      required:
      - index
      - quota_percentage
      - quota_nominal
    ValidateProfilesRequestBody:
      type: object
      required:
      - locale
      - filling_goal
      - profile_adjustment_type
      properties:
        locale:
          type: string
          description: Locale of the target group.
          example: eng_us
        filling_goal:
          type: integer
          format: int64
          example: 100
          minimum: 1
          maximum: 10000
          description: Target group filling goal.
        profile_adjustment_type:
          type: string
          enum:
          - percentage
          - nominal
          example: percentage
        profiles:
          type: array
          items:
            $ref: '#/components/schemas/InputDraftRegularProfile'
        interlocked_profiles:
          type: array
          items:
            $ref: '#/components/schemas/InputValidateProfilesInterlockedProfile'
    ApplyProfileResponseConditions:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
          enum:
          - range_conditions_details
          - selection_conditions_details
          - zip_conditions_details
          example: range_conditions_details
        data:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfileResponseConditionDetail'
    ApplyProfileResponseUngroupedQuota:
      type: object
      properties:
        id:
          type: string
        conditions:
          type: array
          items:
            type: string
        quota:
          type: integer
        filling_goal:
          type: integer
        prescreens:
          type: integer
        completes:
          type: integer
      required:
      - id
      - conditions
      - quota
      - filling_goal
      - prescreens
      - completes
    ApplyProfileResponseQuotas:
      type: object
      properties:
        ungrouped:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfileResponseUngroupedQuota'
        grouped:
          type: array
          items:
            $ref: '#/components/schemas/ApplyProfileResponseGroupedQuota'
      required:
      - ungrouped
      - grouped
    IsSyntheticTraffic:
      type: boolean
      default: false
      description: Boolean value representing whether request is the product of synthetic traffic. By default, set to false.
    ProfileID:
      type: string
      description: Profile identifier
      example: '1000'
    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
    GetPanelDistributionResponse:
      type: object
      properties:
        object:
          type: string
          enum:
          - profile
          - interlocked_profile
      oneOf:
      - properties:
          profile:
            $ref: '#/components/schemas/OutputManageRegularProfile'
      - properties:
          interlocked_profile:
            $ref: '#/components/schemas/OutputManageInterlockedProfile'
    PanelDistributionDraftRequest:
      type: object
      description: Panel distribution prediction request.
      properties:
        locale:
          $ref: '#/components/schemas/LocaleCode'
        start_at:
          title: The Target Group start date
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        end_at:
          title: The Target Group end date
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        profile:
          type: object
          description: The profile details contain a question ID and conditions for which the panel distribution is to be
            obtained.
          properties:
            question_id:
              $ref: '#/components/schemas/QuestionID'
            conditions:
              oneOf:
              - type: object
                properties:
                  object:
                    type: string
                    description: Differentiates between various condition types. In the case of Range Conditions, it is always  `range_conditions`.
                    enum:
                    - range_conditions
                    example: range_conditions
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        min:
                          type: integer
                          description: The minimum numeric value (inclusive).
                          example: 18
                        max:
                          type: integer
                          description: The maximum numeric value (inclusive).
                          example: 24
              - type: object
                properties:
                  object:
                    type: string
                    description: Differentiates between various condition types. In the case of Selection Conditions, it is
                      always `selection_conditions`.
                    enum:
                    - selection_conditions
                    example: selection_conditions
                  data:
                    type: array
                    items:
                      type: string
                      description: ID of the selections
                example:
                  object: selection_conditions
                  data:
                  - '1'
                  - '2'
                  - '3'
            quotas:
              $ref: '#/components/schemas/ApplyProfileRequestQuotas'
          required:
          - conditions
      required:
      - locale
      - start_at
      - end_at
    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
    ApplyProfileResponseGroupedQuota:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        conditions:
          type: array
          items:
            type: string
        quota:
          type: integer
        filling_goal:
          type: integer
        prescreens:
          type: integer
        completes:
          type: integer
      required:
      - id
      - name
      - conditions
      - quota
      - filling_goal
      - prescreens
      - completes
    ApplyProfilesResponse:
      type: object
      properties:
        data:
          type: array
          description: Array of profiles
          items:
            type: object
            properties:
              id:
                type: string
                description: Profile identifier
                example: '1000'
              question_id:
                type: integer
                description: the identifier for the underlying question from the profiling library
                example: 42
              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?
              translated_description:
                type: string
                description: translated description of question
                example: string
              conditions:
                $ref: '#/components/schemas/ApplyProfileResponseConditions'
              quotas:
                $ref: '#/components/schemas/ApplyProfileResponseQuotas'
    ProfileTemplatesList:
      type: object
      properties:
        templates:
          type: array
          description: List of templates items.
          items:
            $ref: '#/components/schemas/ProfileTemplateListItem'
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
    ProfileTemplateOverview:
      allOf:
      - $ref: '#/components/schemas/ProfileTemplateScopeless'
      - properties:
          scope:
            type: string
            description: |-
              The scope of the profiling templates. Can be either `global` or `account`.
              - global: The profiling templates are common for all accounts. - account: The profiling templates are available only for the endpoint account.
            enum:
            - global
            - account
            example: global
    RegularProfileZipConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `zip_conditions_details_template`.
          enum:
          - zip_conditions_details_template
          example: zip_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/ZipConditionItem'
    NextCursor:
      description: |
        An ID of the next list of items and indicator
        that there are more items than currently viewable.
      type: string
      nullable: true
      example: bff6a669-a469-409d-8c94-dcf92258043a
    ProfileTemplateResponse:
      type: object
      allOf:
      - properties:
          id:
            $ref: '#/components/schemas/ProfileTemplateID'
      - $ref: '#/components/schemas/ProfileTemplateOverview'
      - properties:
          profiles:
            $ref: '#/components/schemas/TemplateRegularProfiles'
    ProfileTemplateScopeless:
      type: object
      properties:
        name:
          type: string
          description: A 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
          items:
            $ref: '#/components/schemas/LocaleCode'
    SelectionConditionItem:
      type: object
      properties:
        option:
          type: string
          description: |
            The number option for the answer of the question
            relating to the condition.
      example:
        option: '-73'
    RegularProfileRangeConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `range_conditions_details_template`.
          enum:
          - range_conditions_details_template
          example: range_conditions_details_template
        data:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
                description: text description for the condition.
              min:
                type: integer
                description: The minimum numeric value (inclusive).
              max:
                type: integer
                description: The maximum numeric value (inclusive).
      example:
        object: range_conditions_details_template
        data:
        - text: 18 to 24 years old
          min: 18
          max: 24
        - text: 25 to 35 years old
          min: 25
          max: 35
        - text: 36 to 46 years old
          min: 36
          max: 45
    TemplateRegularProfiles:
      type: array
      description: List of regular profiles.
      items:
        type: object
        properties:
          question_id:
            type: integer
            description: The identifier for the underlying question from the profiling library.
            example: 42
          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?
          conditions:
            oneOf:
            - $ref: '#/components/schemas/RegularProfileRangeConditionsTemplate'
            - $ref: '#/components/schemas/RegularProfileSelectionConditionsTemplate'
            - $ref: '#/components/schemas/RegularProfileZipConditionsTemplate'
          quotas:
            type: object
            properties:
              ungrouped:
                type: array
                items:
                  $ref: '#/components/schemas/SingularRegularQuotaTemplate'
              grouped:
                type: array
                items:
                  $ref: '#/components/schemas/GroupedRegularQuotaTemplate'
    ProfileTemplateID:
      type: string
      description: A unique identifier for the template.
      format: uuid
      example: 12345678-1234-1234-1234-123456789012
    GroupedRegularQuotaTemplate:
      type: object
      properties:
        indexes:
          type: array
          description: The indexes of the condition as reference to the item from the list of conditions.
          items:
            type: integer
            minimum: 0
          example:
          - 1
          - 2
        name:
          type: string
          description: The name of the group of conditions.
          maxLength: 64
          example: Group 1
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: The quota value expressed as a percentage for the profile
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value for the profile
          example: 550
    SingularRegularQuotaTemplate:
      type: object
      properties:
        index:
          type: integer
          description: The index of the condition as reference to the item from the list of conditions.
          minimum: 0
          example: 0
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: The quota value expressed as a percentage for the profile
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value for the profile
          example: 550
    RegularProfileSelectionConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `selection_conditions_details_template`.
          enum:
          - selection_conditions_details_template
          example: selection_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/SelectionConditionItem'
    ZipConditionItem:
      type: object
      properties:
        zip_codes:
          type: array
          description: |
            The values specified for the answer of the question
            relating to the condition.
            Please note that only 10,000 values may be provided.
          maxItems: 10000
          items:
            type: string
        allow_all_zip:
          type: boolean
          description: |
            If true, the profile will allow all zip codes. If false,
            the profile will only allow the zip codes specified in the data field.
          example: true
      example:
        zip_codes:
        - '40202'
        - '50309'
        allow_all_zip: false
    ProfileTemplateListItem:
      type: object
      allOf:
      - properties:
          id:
            $ref: '#/components/schemas/ProfileTemplateID'
      - $ref: '#/components/schemas/ProfileTemplateOverview'
    ProfileTemplateRequest:
      allOf:
      - $ref: '#/components/schemas/ProfileTemplateScopeless'
      - properties:
          profiles:
            $ref: '#/components/schemas/TemplateRegularProfiles'
      - required:
        - name
        - locales
        - profiles
    ProjectInfoUpdate:
      type: object
      description: Details to update on an existing project
      required:
      - name
      - project_manager_id
      - purchase_order_number
      - project_customer_reference_number
      properties:
        name:
          type: string
          description: Name of the project used to describe the project
          minLength: 5
          maxLength: 128
          example: A Project
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        purchase_order_number:
          type: string
          nullable: true
          minLength: 3
          maxLength: 128
          description: |
            Purchase order number assigned to the project. Upon review based on feedback, this field name has caused confusion. We have deprecated it in favor of project customer reference number.
            If the purchase order number is not provided in the request, it will be deleted.
            The purchase order number is a string that can contain English alphanumeric characters, space, underscore, and hyphen.
          example: PO-1234
          deprecated: true
        project_customer_reference_number:
          type: string
          nullable: true
          minLength: 3
          maxLength: 128
          description: |
            Customer reference number assigned to the project.
            If the project customer reference number is not provided in the request, it will be deleted.
            The project customer reference number is a string that can contain English alphanumeric characters, space, underscore, and hyphen.
          example: RF-4567
    ProjectListItem:
      type: object
      description: An individual Target Group in a list of Target Groups, with basic information and statistics.
      required:
      - id
      - account_id
      - name
      - status
      - last_activity_at
      - target_group_count
      - statistics
      properties:
        id:
          type: string
          pattern: ^[0-9A-Z]{26}$
          description: ULID identifier of the Project.
          example: 01HD6WD8W4G8FMTFCX0JPR8TXN
        human_readable_id:
          $ref: '#/components/schemas/ProjectHumanReadableID'
        account_id:
          $ref: '#/components/schemas/AccountID'
        purchase_order_number:
          type: string
          deprecated: true
          description: Purchase order number assigned to the project. Upon review based on feedback, this field name has caused
            confusion. We have deprecated it in favor of project customer reference number.
          minLength: 3
          maxLength: 128
          example: PO-1234
        project_customer_reference_number:
          type: string
          description: Customer reference number assigned to the project.
          minLength: 3
          maxLength: 128
          example: RF-4567
        name:
          type: string
          description: 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: Count of all the target groups belonging to this project.
        status:
          $ref: '#/components/schemas/ProjectStatus'
        last_activity_at:
          type: string
          format: date-time
          description: Indicates the last activity on Project (RFC3339 UTC format, 3 fractional digits).
          example: '2023-01-01T23:00:00.000Z'
        statistics:
          $ref: '#/components/schemas/ProjectStatistics'
        target_group_customer_reference_numbers:
          type: array
          nullable: true
          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'
    ProjectInfo:
      type: object
      description: Initial Project Setup
      properties:
        name:
          type: string
          description: Name of the project used to describe the project. Any leading or trailing whitespaces 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: |
            Customer reference number assigned to the project.
            The project customer reference number is a string that can contain English alphanumeric characters, space, underscore, and hyphen.
          minLength: 3
          maxLength: 128
          example: RF-4567
      required:
      - name
      - project_manager_id
    TargetGroupHumanReadableID:
      description: The target group's human readable ID. These ID's are scoped to within an account.
      type: string
      minLength: 7
      maxLength: 7
      example: 9NRV3B9
    ProjectIDResponse:
      type: object
      description: Response containing only the project ID.
      properties:
        id:
          type: string
          format: ulid
          example: 01GV070G3SJECZAGE3Q3J6FV56
    TargetGroupCustomerReferenceNumber:
      type: string
      pattern: ^[a-zA-Z0-9\-_ ]*$
      minLength: 3
      maxLength: 128
      description: |
        The customer reference number for the target group. When not null, it must be between 3 and 128
        characters and contain only English alphanumeric characters, space, dash, and underscore.
      example: AB-00246246
    ProjectOverview:
      type: object
      description: Get an overview of a project
      required:
      - id
      - human_readable_id
      - account_id
      - status
      - statistics
      - project_manager_id
      - created_at
      properties:
        id:
          $ref: '#/components/schemas/ProjectID'
        human_readable_id:
          $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.
          allOf:
          - $ref: '#/components/schemas/UserID'
        purchase_order_number:
          type: string
          deprecated: true
          description: Purchase order number assigned to the project. Upon review based on feedback, this field name has caused
            confusion. We have deprecated it in favor of project customer reference number.
          example: PO-1234
        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'
    ProjectsList:
      type: object
      description: Paginated list of Target Groups.
      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 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'
    ProjectStatistics:
      type: object
      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 is used to indicate the desired number of completes  on a survey.
          minimum: 0
          example: 1000
        current_completes:
          type: integer
          format: int32
          description: Current number of completes for the Target Group.
          minimum: 0
          example: 412
        current_prescreens:
          type: integer
          format: int32
          description: Current number of prescreens for the Target Group.
          minimum: 0
          example: 546
        incidence_rate_median:
          type: number
          format: float
          description: Current median incidence rate of 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 Project in seconds.
          minimum: 0
          example: 1
        conversion_rate_average:
          type: number
          format: float
          description: Current average conversion rate of 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 Project.
          minimum: 0
          maximum: 1
          example: 0.05
    ProjectHumanReadableID:
      description: The project's human readable ID. These ID's are scoped to within an account.
      type: string
      minLength: 6
      maxLength: 6
      example: FT354J
    ProjectStatus:
      type: string
      enum:
      - active
      - inactive
      description: Project Status.
      example: active
    ProjectDetails:
      type: object
      description: Project details
      required:
      - id
      - name
      - project_manager_id
      - account_id
      properties:
        id:
          $ref: '#/components/schemas/ProjectID'
        human-readable-id:
          $ref: '#/components/schemas/ProjectHumanReadableID'
        name:
          type: string
          description: Name of the Project.
          example: Test Project
        project_manager_id:
          description: Project manager ID.
          allOf:
          - $ref: '#/components/schemas/UserID'
        account_id:
          $ref: '#/components/schemas/AccountID'
        purchase_order_number:
          type: string
          deprecated: true
          description: Purchase order number assigned to the project. Upon review based on feedback, this field name has caused
            confusion. We have deprecated it in favor of project customer reference number.
          example: PO-1234
        project_customer_reference_number:
          type: string
          description: Customer reference number assigned to the project.
          example: RF-4567
    ProjectIDWithHumanReadableIDResponse:
      type: object
      description: Response containing the project ID and project HRID.
      properties:
        id:
          $ref: '#/components/schemas/ProjectID'
        human_readable_id:
          $ref: '#/components/schemas/ProjectHumanReadableID'
    QuestionProfileConditionsV3:
      oneOf:
      - $ref: '#/components/schemas/QuestionProfileSelectionConditionsV3'
      - $ref: '#/components/schemas/QuestionProfileRangeConditionsV3'
      - $ref: '#/components/schemas/QuestionProfileZipConditionsV3'
    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
    QuestionsTranslationResponse:
      type: object
      description: Overall structure of questions endpoint response
      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
        result:
          description: Array of questions and question options for the request.
          type: array
          items:
            type: object
            required:
            - question_id
            - name
            - description
            - conditions
            - standard
            - profile_condition_type
            properties:
              question_id:
                type: integer
                description: The question identifier.
              name:
                type: string
                description: The question name.
                example: CAR
              description:
                type: string
                description: The locale question text.
                example: Do you own any cars and how many?
              description_translated:
                type: string
                description: The translated question text.
                example: ¿Tienes algún coche y cuántos?
              conditions:
                $ref: '#/components/schemas/QuestionProfileConditionsV3'
              option_mask:
                type: string
                description: Option template for open ended questions. Letter “X” means number, letter “A” means alphanumeric
                  character.
                example: XX
              standard:
                type: boolean
                description: A flag indicating whether a standard question or not.
                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
    QuestionProfileSelectionConditionsV3:
      type: object
      required:
      - object
      - data
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `selection_conditions_details_template`.
          enum:
          - selection_conditions_details_template
          example: selection_conditions_details_template
        data:
          type: array
          minItems: 1
          items:
            type: object
            required:
            - option
            properties:
              text:
                type: string
                description: The text of the condition. Text will be based on the target group's locale.
                example: Male
              text_translated:
                type: string
                description: The translated text of the condition. Translated Text will always be english.
                example: Male
              option:
                type: string
                description: the identifier for the condition
      example:
        object: selection_conditions_details_template
        data:
        - text: Male
          option: '1'
        - text: Female
          option: '2'
    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: Question Category identifier.
      example: 43
    QuestionProfileRangeConditionsV3:
      type: object
      required:
      - object
      properties:
        object:
          type: string
          description: Object field to distinguish between different types of control selections.  Always is `range_conditions_details_template`.
          enum:
          - range_conditions_details_template
          example: range_conditions_details_template
    FileName:
      description: The name of the file.
      type: string
      example: filename.csv
      maxLength: 255
    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
    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
    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.
    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
    ReconciliationRequestSubmittedCount:
      type: object
      description: The number of RIDs in total that were 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: 0
        invalid:
          type: integer
          description: The number of invalid RIDs that were not processed.
          example: 0
        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: 0
    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
    ReconciliationReasonCodesResponse:
      description: response model of requested reconciliations reason code data
      type: object
      properties:
        reconciliation_reasons:
          type: array
          items:
            $ref: '#/components/schemas/ReconciliationReasonCodes'
    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
    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
    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:
          type: integer
          description: Number of items per page
          example: 10
    RequestID:
      type: string
      pattern: ^[0-9A-Z]{26}$
      description: ULID that uniquely identifies a reconciliation record.
      example: 01BX5DZKBKACTAV9WEVGEMMVS1
    ReconciliationRequests:
      type: object
      properties:
        id:
          type: string
          example: 01HW8HMCD3FHC985ZFMEERX0YY
        name:
          type: string
          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
          example: c6eea0ec-fc9e-44de-bb0b-ed104022e576
        result_counts:
          $ref: '#/components/schemas/ReconciliationRequestSubmittedCount'
    RequestReconciliationByID:
      allOf:
      - $ref: '#/components/schemas/Reconciliation'
      - description: Successfully returns a single reconciliation associated to a request id.
    RequestReconciliationsTargetGroup:
      allOf:
      - $ref: '#/components/schemas/ReconciliationsTargetGroup'
      - description: Successfully returns a single target group associated to a reconciliation request id.
    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
    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.
    RecontactJobFailureReason:
      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.
    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'
    CreateRecontactsJobResponse:
      type: object
      description: The response with the generated job ID for recontacts
      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
    GetRecontactRsidsUpdateJobResponse:
      type: object
      description: Recontacts RSIDs job 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'
        partial_success_reason:
          $ref: '#/components/schemas/RecontactJobPartialSuccessReason'
        job_trace_id:
          $ref: '#/components/schemas/JobTraceId'
    RecontactJobStatus:
      type: string
      description: The status of an async Recontact update job.
      enum:
      - Completed
      - Failed
      - Processing
      example:
      - Completed
    RecontactsRespondentIDListResponse:
      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}}/recontacts/rsids
    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).
    CreateRecontactUploadRsidsByFileJobResponse:
      type: object
      required:
      - job_id
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
    ReportStatusResponse:
      type: object
      description: Report status response.
      properties:
        report_id:
          type: string
          format: ulid
          example: 01HY3NF37B6J2ABPA3H49C92YZ
          description: The ID of the report.
        status:
          type: string
          example: COMPLETED
          description: The status of the report, either 'COMPLETED' or 'IN PROGRESS'.
        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
          example: false
        survey_id:
          type: string
          example: 1341234
        respondent_answer:
          type: boolean
          example: false
    ReportId:
      type: string
      description: Unique report id for that file
      example: 01CTGNYV6HRNK8K8VKZASZCFP1
    ReportRequestList:
      type: object
      description: Paginated list of Report Request.
      required:
      - reports_requests
      properties:
        next_cursor:
          $ref: '#/components/schemas/NextCursor'
        reports_requests:
          type: array
          description: Array of Report request list item.
          items:
            $ref: '#/components/schemas/ReportRequestListItem'
    ReportGenerationRequest:
      type: object
      description: Report Generation request Body.
      properties:
        filter:
          type: string
          description: Type of filter
          enum:
          - BusinessUnit
          - TargetGroup
          - Project
          - null
          example: BusinessUnit
        start_date:
          type: string
          description: Start Date for date filter
          example: '2023-08-01'
        end_date:
          type: string
          description: End Date for date filter
          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
    ReportRequestListItem:
      type: object
      description: An individual Report Request in list of items.
      required:
      - account_name
      - create_date
      - create_params
      - report_id
      - report_type
      - report_url
      - status
      - requestor_name
      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: string
          description: Create params of the request
        requestor_name:
          type: string
          description: Report Requestor Name
          example: John Doe
        report_id:
          type: string
          format: uuid
          description: Id of the report
          example: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
        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
    ReportFileName:
      type: string
      description: Name of the report file.
    ReportGenerationResponse:
      type: object
      description: Response for report generation
      required:
      - message
      - report_id
      - report_url
      - start_date
      - end_date
      - status
      properties:
        message:
          type: string
          description: Message from the reports-api
          example: Report Created
        report_id:
          type: string
          format: uuid
          description: Id of the report
          example: 8b60d37e-af52-45f1-ad5e-e92acc38e01d
        report_url:
          type: string
          description: Report URL
          example: https://example.com/completes-buyside-{accountname}.csv
        start_date:
          type: string
          description: Start Date of the report
          example: '2023-08-01'
        end_date:
          type: string
          description: End Date of the report
          example: '2023-08-30'
        status:
          type: string
          description: Status of the report
          enum:
          - pending
          - emailed
          - failed
          example: pending
    ReportShareResponse:
      type: object
      description: Report share response.
      properties:
        report_pre_signed_url:
          type: string
          description: The pre-signed URL of the report.
    AccountName:
      description: |
        Name of the account
      type: string
      nullable: true
      example: Lucid Marketplace Services
    ReportType:
      type: string
      description: Report type to be generated.
      enum:
      - completes
      - reconciliations-status
      - reconciliation-eligible-rids
      - sample-bought
      - respondent-analysis
      - term-details
    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
    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
    UploadLiveRespondentUniqueCodesRequest:
      type: object
      required:
      - respondent_unique_codes
      properties:
        respondent_unique_codes:
          type: array
          minItems: 1
          maxItems: 20000
          description: A list of unique respondent unique codes to be uploaded 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
    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
    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
    UploadTestRespondentUniqueCodesRequest:
      type: object
      required:
      - respondent_unique_codes
      properties:
        respondent_unique_codes:
          type: array
          minItems: 1
          maxItems: 20000
          description: A list of unique respondent unique codes to be uploaded 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
    SupplierResponseWithCompletes:
      type: object
      properties:
        id:
          type: integer
          minimum: 0
          example: 420
        name:
          type: string
          minLength: 1
          example: Clix Sense
        completes:
          type: integer
          nullable: true
          minimum: 0
          example: 0
        pre_screens:
          type: integer
          nullable: true
          minimum: 0
          example: 0
    OpenExchangeAllocations:
      type: object
      properties:
        exchange_suppliers:
          type: array
          items:
            $ref: '#/components/schemas/SupplierInfo'
        blocked_suppliers:
          type: array
          items:
            $ref: '#/components/schemas/SupplierInfo'
        exchange_min_percentage:
          type: integer
          example: 0
        exchange_max_percentage:
          type: integer
          example: 100
        groups:
          type: array
          items:
            $ref: '#/components/schemas/OpenExchangeAllocationGroup'
    SupplyAllocationUpdateRequest:
      type: object
      required:
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          required:
          - blocked_supplier_ids
          - exchange_min_percentage
          - exchange_max_percentage
          - groups
          properties:
            blocked_supplier_ids:
              $ref: '#/components/schemas/SupplierIds'
            exchange_min_percentage:
              type: integer
              example: 0
              minimum: 0
              maximum: 100
            exchange_max_percentage:
              type: integer
              example: 100
              minimum: 0
              maximum: 100
            groups:
              type: array
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier_ids
                properties:
                  group_id:
                    type: string
                    example: '1'
                  group_name:
                    type: string
                    example: Test group
                  min_percentage:
                    type: integer
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier_ids:
                    $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_id:
                    type: string
                    example: '234'
                  group_name:
                    type: string
                    example: Test group
                  min_percentage:
                    type: integer
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier_id:
                    type: string
                    example: '234'
    GetAccountAllocationTemplateBusinessUnitIdResponse:
      type: object
      required:
      - template_id
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        template_name:
          type: string
          description: The name of the account allocation template.
        open_exchange_allocations:
          $ref: '#/components/schemas/OpenExchangeAllocations'
        private_exchange_allocations:
          type: object
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierInfo'
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    GetGlobalAllocationTemplateBusinessUnitIdResponse:
      type: object
      required:
      - template_id
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      - last_modified_at
      - last_modified_by
      properties:
        template_id:
          $ref: '#/components/schemas/TemplateID'
        template_name:
          type: string
          description: The name of the account allocation template.
        open_exchange_allocations:
          $ref: '#/components/schemas/OpenExchangeAllocations'
        private_exchange_allocations:
          type: object
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierInfo'
        last_modified_at:
          $ref: '#/components/schemas/LastModifiedAt'
        last_modified_by:
          $ref: '#/components/schemas/UserID'
    SupplierInfo:
      type: object
      properties:
        supplier_id:
          type: string
          example: '13512'
        supplier_name:
          type: string
          example: Test supplier
    ConversionRate:
      type: number
      format: float
      description: Current conversion rate of the Target Group.
      minimum: 0
      maximum: 1
      example: 0.05
    SupplierIds:
      type: array
      items:
        type: string
      example:
      - '123'
      - '456'
    OpenExchangeAllocationGroup:
      type: object
      properties:
        group_name:
          type: string
          example: Test group
        min_percentage:
          type: integer
          example: 0
        max_percentage:
          type: integer
          example: 100
        suppliers:
          type: array
          items:
            $ref: '#/components/schemas/SupplierInfo'
    GetSupplyAllocationResponse:
      type: object
      required:
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        open_exchange_allocations:
          type: object
          required:
          - blocked_suppliers
          - exchange_min_percentage
          - exchange_max_percentage
          - groups
          - exchange_suppliers
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            exchange_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            exchange_min_percentage:
              type: integer
              example: 0
              minimum: 0
              maximum: 100
            exchange_max_percentage:
              type: integer
              example: 100
              minimum: 0
              maximum: 100
            groups:
              type: array
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - suppliers
                properties:
                  group_id:
                    type: string
                    example: '1'
                  group_name:
                    type: string
                    example: Test group
                  min_percentage:
                    type: integer
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    example: 100
                    minimum: 0
                    maximum: 100
                  suppliers:
                    type: array
                    items:
                      $ref: '#/components/schemas/SupplierResponseWithCompletes'
                  conversion_rate:
                    $ref: '#/components/schemas/ConversionRate'
                  completes:
                    type: integer
                    example: 400
                  prescreens:
                    type: integer
                    example: 4200
                  total_remaining:
                    type: integer
                    example: 1000
        private_exchange_allocations:
          type: object
          required:
          - blocked_suppliers
          - groups
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierResponseWithCompletes'
            groups:
              type: array
              items:
                type: object
                required:
                - group_name
                - min_percentage
                - max_percentage
                - supplier
                properties:
                  group_id:
                    type: string
                    example: '234'
                  group_name:
                    type: string
                    example: Test group
                  min_percentage:
                    type: integer
                    example: 0
                    minimum: 0
                    maximum: 100
                  max_percentage:
                    type: integer
                    example: 100
                    minimum: 0
                    maximum: 100
                  supplier:
                    $ref: '#/components/schemas/SupplierResponseWithCompletes'
                  conversion_rate:
                    $ref: '#/components/schemas/ConversionRate'
                  completes:
                    type: integer
                    example: 400
                  prescreens:
                    type: integer
                    example: 4200
                  total_remaining:
                    type: integer
                    example: 1000
    GetSystemAllocationTemplateBusinessUnitIdResponse:
      type: object
      required:
      - template_name
      - open_exchange_allocations
      - private_exchange_allocations
      properties:
        template_name:
          type: string
          description: The name of the account allocation template.
        open_exchange_allocations:
          type: object
          properties:
            exchange_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierInfo'
            exchange_min_percentage:
              type: integer
              example: 0
            exchange_max_percentage:
              type: integer
              example: 100
        private_exchange_allocations:
          type: object
          properties:
            blocked_suppliers:
              type: array
              items:
                $ref: '#/components/schemas/SupplierInfo'
    GetBulkUpdateTargetGroupProjectManagerJobResponse:
      type: object
      description: Bulk update target group project managers job details.
      properties:
        job_id:
          $ref: '#/components/schemas/JobID'
        created_at:
          type: string
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        status:
          $ref: '#/components/schemas/BulkJobStatus'
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        updated_target_groups:
          $ref: '#/components/schemas/BulkUpdatedTargetGroups'
        failed_target_groups:
          $ref: '#/components/schemas/BulkFailedTargetGroups'
    CreateBulkUpdateTargetGroupProjectManagerJobRequest:
      type: object
      description: Request body for creating a bulk update target group project managers job.
      properties:
        project_manager_id:
          $ref: '#/components/schemas/UserID'
        target_group_ids:
          $ref: '#/components/schemas/TargetGroupIds'
    ExclusionEntityList:
      type: object
      properties:
        entity_type:
          $ref: '#/components/schemas/ExclusionEntityType'
        entity_ids:
          type: array
          items:
            $ref: '#/components/schemas/ExclusionEntityID'
    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'
    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'
    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
      - filling_goal
      - profile
      - expected_length_of_interview_minutes
      - expected_incidence_rate
      - supply_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:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        filling_goal:
          $ref: '#/components/schemas/TargetGroupFillingGoal'
        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'
        profile:
          description: Profiling for the target group.
          allOf:
          - $ref: '#/components/schemas/TargetGroupDraftProfilesRequest'
        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
    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.
    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
    TargetGroupInputDraftRegularProfileRangeConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `range_conditions_details_template`.
          enum:
          - range_conditions_details_template
          example: range_conditions_details_template
        data:
          type: array
          items:
            type: object
            properties:
              min:
                type: integer
                description: The minimum numeric value (inclusive).
              max:
                type: integer
                description: The maximum numeric value (inclusive).
      example:
        object: range_conditions_details_template
        data:
        - min: 18
          max: 24
        - min: 25
          max: 35
        - min: 36
          max: 45
    TargetGroupDraftRegularProfileSelectionConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `selection_conditions_details_template`.
          enum:
          - selection_conditions_details_template
          example: selection_conditions_details_template
        data:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
                description: text description for the condition.
              option:
                type: string
                description: |
                  The number option for the answer of the question
                  relating to the condition.
      example:
        object: selection_conditions_details_template
        data:
        - option: '1'
        - option: '2'
        - option: '3'
    TargetGroupInputDraftRegularProfile:
      type: array
      description: List of regular profiles.
      items:
        type: object
        properties:
          question_id:
            type: integer
            description: The identifier for the underlying question from the profiling library.
            example: 42
          quotas_enabled:
            type: boolean
            description: Indicates whether or not the defined quotas on the profile are enabled
            example: true
          conditions:
            oneOf:
            - $ref: '#/components/schemas/TargetGroupInputDraftRegularProfileRangeConditionsTemplate'
            - $ref: '#/components/schemas/TargetGroupInputDraftRegularProfileSelectionConditionsTemplate'
            - $ref: '#/components/schemas/TargetGroupInputDraftRegularProfileZipConditionsTemplate'
          quotas:
            type: object
            properties:
              ungrouped:
                type: array
                items:
                  $ref: '#/components/schemas/TargetGroupDraftSingularRegularQuotaTemplate'
              grouped:
                type: array
                items:
                  $ref: '#/components/schemas/TargetGroupDraftGroupedRegularQuotaTemplate'
    TargetGroupCollectedCompletesAggregatedIntervalsResponse:
      type: object
      required:
      - aggregated_completes_intervals
      properties:
        aggregated_completes_intervals:
          type: array
          items:
            $ref: '#/components/schemas/TargetGroupCollectedCompletesAggregatedIntervals'
    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: float
              minimum: 0
          example:
          - - 3.2
            - 3.73
            - 4.95
            - 6.7
            - 8.98
            - 12.48
            - 18.95
            - 27.7
            - 34.7
            - 46.95
          - - 3.74
            - 4.27
            - 5.49
            - 7.24
            - 9.52
            - 13.02
            - 19.49
            - 28.24
            - 35.24
            - 47.49
          - - 4.34
            - 4.87
            - 6.09
            - 7.84
            - 10.12
            - 13.62
            - 20.09
            - 28.84
            - 35.84
            - 48.09
          - - 4.94
            - 5.47
            - 6.69
            - 8.44
            - 10.72
            - 14.22
            - 20.69
            - 29.44
            - 36.44
            - 48.69
          - - 5.54
            - 6.07
            - 7.29
            - 9.04
            - 11.32
            - 14.82
            - 21.29
            - 30.04
            - 37.04
            - 49.29
          - - 6.14
            - 6.67
            - 7.89
            - 9.64
            - 11.92
            - 15.42
            - 21.89
            - 30.64
            - 37.64
            - 49.89
          - - 7.39
            - 7.91
            - 9.14
            - 10.89
            - 13.16
            - 16.66
            - 23.14
            - 31.89
            - 38.89
            - 51.14
          - - 8.49
            - 9.02
            - 10.24
            - 11.99
            - 14.27
            - 17.77
            - 24.24
            - 32.99
            - 39.99
            - 52.24
          - - 9.72
            - 10.24
            - 11.47
            - 13.22
            - 15.49
            - 18.99
            - 25.47
            - 34.22
            - 41.22
            - 53.47
          - - 10.56
            - 11.08
            - 12.31
            - 14.06
            - 16.33
            - 19.83
            - 26.31
            - 35.06
            - 42.06
            - 54.31
          - - 11.4
            - 11.92
            - 13.15
            - 14.9
            - 17.17
            - 20.67
            - 27.15
            - 35.9
            - 42.9
            - 55.15
          - - 12.24
            - 12.76
            - 13.99
            - 15.74
            - 18.01
            - 21.51
            - 27.99
            - 36.74
            - 43.74
            - 55.99
          - - 13.08
            - 13.6
            - 14.83
            - 16.58
            - 18.85
            - 22.35
            - 28.83
            - 37.58
            - 44.58
            - 56.83
    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: ''
    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'
    AverageCostPerInterview:
      type: object
      description: Average Cost per Interview for the Target Group.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    CostPerInterviewUpdateRequest:
      type: object
      description: Cost per interview update request.
      required:
      - target_group_cpi
      properties:
        target_group_cpi:
          $ref: '#/components/schemas/TargetGroupCpiRequestModel'
    TargetGroupCollectsPII:
      type: boolean
      description: Indicates whether or not the target group collects Personally Identifiable Information (PII).
      example: true
    schemas-TargetGroupStatus:
      type: array
      items:
        $ref: '#/components/schemas/TargetGroupStatus'
    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'
    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
      - filling_goal
      - profile
      - 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'
        filling_goal:
          $ref: '#/components/schemas/TargetGroupFillingGoal'
        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'
        profile:
          description: Profiling for the target group.
          allOf:
          - $ref: '#/components/schemas/TargetGroupDraftProfilesRequest'
        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
    MedianLengthOfInterviewSeconds:
      type: integer
      format: int32
      description: Current median length of interview of the Target Group in seconds.
      minimum: 0
      example: 1
    InterlockProfilesResponseV2:
      type: array
      description: Array of interlocked profiles.
      items:
        type: object
        required:
        - id
        - name
        - quotas_enabled
        - depends_on_questions
        - quotas
        - profiles
        properties:
          id:
            type: string
            description: Unique identifier of interlocked profile
            example: 01J82QX46HS1QBAG8D14KBQP26
          name:
            type: string
            description: Name of the interlocked Profile
            example: GENDER, AGE
          quotas_enabled:
            type: boolean
            description: Denotes whether quotas are enabled. For generate draft interlock, this will be defaulted to true.
            example: true
          depends_on_questions:
            type: array
            description: Array of question id's used to create interlocked profile. First element is considered as parent
              profile.
            items:
              type: integer
          quotas:
            type: object
            description: Quotas for interlocked profile.
            properties:
              ungrouped:
                type: array
                description: Array of ungrouped quotas which relate to interlock condition
                items:
                  type: object
                  required:
                  - id
                  - quota_percentage
                  - condition
                  properties:
                    id:
                      type: string
                      format: ulid
                      description: Unique identifier to represent quota
                      example: 01J82QX46HS1QBAG8D14KBQP2D
                    quota_percentage:
                      type: integer
                      description: Percentage of total quota applied to this condition(s).
                      minimum: 0
                      maximum: 100
                      example: 9
                    filling_goal:
                      type: integer
                      description: The target group's desired value of completes/prescreens
                      example: 906
                    condition:
                      type: object
                      required:
                      - id
                      - option
                      - related_condition
                      properties:
                        id:
                          type: string
                          format: ulid
                          description: Unique identifier to represent condition
                          example: 01J82QX46HS1QBAG8D14KBQP2D
                        text:
                          type: string
                          example: 15-19, Male
                        translated_text:
                          type: string
                          example: 15-19, Male
                        option:
                          type: string
                          example: '1'
                        related_condition:
                          $ref: '#/components/schemas/RelatedConditionsV2'
          profiles:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                  description: Profile identifier
                  example: '1000'
                question_id:
                  type: integer
                  description: the identifier for the underlying question from the profiling library
                  example: 42
                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?
                translated_description:
                  type: string
                  description: translated description of question
                  example: string
                conditions:
                  $ref: '#/components/schemas/ApplyProfileResponseConditions'
                quotas:
                  $ref: '#/components/schemas/DraftProfileResponseQuotas'
    FillingStrategy:
      type: string
      enum:
      - automated
      - prescreens
      - completes
      description: Target group filling strategy.
      example: completes
    ExclusionEntityID:
      type: string
      description: Indicates the entity identifier of the excluded element
      example: 5a3b2ada-0066-4dcb-afdd-7302be78ce9e
    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'
    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'
    StatisticsIssuesArray:
      type: array
      description: List of issues.
      items:
        $ref: '#/components/schemas/TargetGroupStatisticIssue'
    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
    TargetGroupDraftSingularRegularQuotaTemplate:
      type: object
      required:
      - index
      properties:
        index:
          type: integer
          description: The index of the condition as reference to the item from the list of conditions.
          minimum: 0
          example: 0
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: The quota value expressed as a percentage for the profile
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value for the profile
          example: 550
    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'
    IndustryCode:
      type: string
      description: Uniquely identifies the industry with which this Target Group is associated.
      default: other
      example: politics
    CreatedDraftTargetGroupResponse:
      type: object
      description: Response for creating draft target Group.
      required:
      - id
      properties:
        id:
          $ref: '#/components/schemas/TargetGroupID'
    TargetGroupOverview:
      type: object
      description: Basic attributes and statistics of a Target Group.
      required:
      - project_name
      - target_group_name
      - 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
      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'
        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'
    ReasonCode:
      type: string
      example: 2131
    TargetGroupDraftRegularProfileRangeConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `range_conditions_details_template`.
          enum:
          - range_conditions_details_template
          example: range_conditions_details_template
        data:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
                description: text description for the condition.
              min:
                type: integer
                description: The minimum numeric value (inclusive).
              max:
                type: integer
                description: The maximum numeric value (inclusive).
      example:
        object: range_conditions_details_template
        data:
        - text: 18 to 24 years old
          min: 18
          max: 24
        - text: 25 to 35 years old
          min: 25
          max: 35
        - text: 36 to 46 years old
          min: 36
          max: 45
    Currency:
      type: object
      description: Currency information.
      properties:
        amount:
          type: string
          description: "An integer represented as a string, with the value expressed in the currency's smallest \nunit (minor\
            \ units). The number of minor units is defined by the ISO 4217 currency scale.\n"
          example: '15'
        code:
          $ref: '#/components/schemas/CurrencyCode'
    TargetGroupPricingModel:
      type: string
      description: Denotes the pricing model setting for the target group based on the business unit.
      enum:
      - ratecard
      - dynamic
      default: dynamic
    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.
    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
    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'
    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
    FillingStrategyUpdateRequest:
      type: object
      description: Filling strategy update request.
      required:
      - filling_strategy
      properties:
        filling_strategy:
          $ref: '#/components/schemas/FillingStrategy'
    TargetGroupOverviewByTargetGroupId:
      type: object
      description: Basic attributes and statistics of a Target Group.
      required:
      - account_id
      - project_id
      - project_name
      - target_group_name
      - 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
      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'
        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
    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'
        client_cpi:
          $ref: '#/components/schemas/TargetGroupClientCpiMonetaryAmountRequestModel'
        live_url:
          $ref: '#/components/schemas/TargetGroupLiveUrl'
        test_url:
          $ref: '#/components/schemas/TargetGroupTestUrl'
        target_group_customer_reference_number:
          allOf:
          - $ref: '#/components/schemas/TargetGroupCustomerReferenceNumber'
          - nullable: true
    TargetGroupStatus:
      type: string
      enum:
      - draft
      - scheduled
      - live
      - paused
      - completed
      - archived
      description: Target Group Status.
      example: draft
    FillingStrategyUpdateResponse:
      type: object
      description: Response for filling strategy update.
      required:
      - filling_strategy
      properties:
        filling_strategy:
          $ref: '#/components/schemas/FillingStrategy'
    TargetGroupStatisticIssueReason:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ReasonCode'
        description:
          type: string
          example: Statistic outside of normal range.
      required:
      - code
      - description
    TargetGroupStatisticsIssueType:
      type: string
      description: The type of issue.
      enum:
      - warning
      - error
      example: warning
    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.
    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'
    SupplierResponse:
      type: object
      properties:
        id:
          type: integer
          minimum: 0
          example: 420
        name:
          type: string
          minLength: 1
          example: Clix Sense
    TargetGroupStatisticsIssuesSuggestions:
      type: array
      description: List of suggestions how to remedy the issues on the statistic.
      items:
        $ref: '#/components/schemas/TargetGroupStatisticsIssuesSuggestion'
    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
    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/Currency'
        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'
    TargetGroupFillingGoal:
      type: integer
      format: int32
      minimum: 0
      description: Indicates the new value for filling goal.
      example: 750
    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'
    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'
    TargetGroupExpectedIncidenceRate:
      type: number
      format: float
      description: Expected incidence rate of the Target Group.
      minimum: 0
      maximum: 1
      multipleOf: 0.01
      example: 0.05
    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'
    TargetGroupStatisticsIssuesSuggestion:
      type: object
      properties:
        code:
          $ref: '#/components/schemas/ReasonCode'
        description:
          type: string
          example: Lower the quota.
      required:
      - code
      - description
    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'
    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'
    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
    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
      - filling_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'
        filling_goal:
          $ref: '#/components/schemas/TargetGroupFillingGoal'
        expected_length_of_interview_minutes:
          $ref: '#/components/schemas/TargetGroupExpectedLengthOfInterview'
        expected_incidence_rate:
          $ref: '#/components/schemas/TargetGroupExpectedIncidenceRate'
        industry_lockout_code:
          $ref: '#/components/schemas/TargetGroupIndustryLockoutCode'
        client_cpi:
          $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
    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
    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
    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
    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
    TargetGroupCountry:
      type: array
      items:
        type: string
        pattern: ^[a-z]{2}$
        example: us
    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
    TargetGroupDraftProfilesRequest:
      type: object
      description: Template profile which holds the regular profiles and interlocked profiles. The interlocked profiles are
        used to create a target group with interlocked quotas.  This needs to be generated from generate interlocked profiles
        endpoint.
      required:
      - profile_adjustment_type
      properties:
        profile_adjustment_type:
          type: string
          description: |
            The adjustment type for quota values.  Based on the value selected, you must include the appropriate quota parameter for profiles with quotas enabled:

            - percentage    quota_percentage
            - nominal       quota_nominal

            If both are included, the invalid attribute will be ignored.
          example: percentage
          enum:
          - percentage
          - nominal
      anyOf:
      - properties:
          drafts:
            $ref: '#/components/schemas/TargetGroupInputDraftRegularProfile'
      - properties:
          interlocked_profiles:
            $ref: '#/components/schemas/DraftInterlockProfilesResponse'
    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'
    TargetGroupInputDraftRegularProfileSelectionConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `selection_conditions_details_template`.
          enum:
          - selection_conditions_details_template
          example: selection_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/SelectionConditionItem'
      example:
        object: selection_conditions_details_template
        data:
        - option: '1'
        - option: '2'
        - option: '3'
    TargetGroupExpectedLengthOfInterview:
      type: integer
      format: int32
      description: Expected median length of interview of the Target Group.
      minimum: 1
      maximum: 45
      example: 1
    TargetGroupDraftProfile:
      type: object
      description: Template profile
      required:
      - profile_adjustment_type
      properties:
        profile_adjustment_type:
          type: string
          description: |
            The adjustment type for quota values.  Based on the value selected, you must include the appropriate quota parameter for profiles with quotas enabled:

            - percentage    quota_percentage
            - nominal       quota_nominal

            If both are included, the invalid attribute will be ignored.
          example: percentage
          enum:
          - percentage
          - nominal
        drafts:
          $ref: '#/components/schemas/TargetGroupDraftRegularProfile'
        interlocked_profiles:
          $ref: '#/components/schemas/InterlockProfilesResponseV2'
    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'
    DropOffRate:
      type: number
      format: float
      description: Current drop-off rate of the Target Group.
      minimum: 0
      maximum: 1
      example: 0.05
    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'
    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'
    CostPerInterviewUpdateResponse:
      type: object
      description: Response for cost per interview update.
      required:
      - target_group_cpi
      properties:
        target_group_cpi:
          $ref: '#/components/schemas/TargetGroupCpi'
    TargetGroupCpi:
      description: Target group CPI.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    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:
        reason: max_cpi_limit_reached
    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/BusinessUnitID'
        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'
        filling_goal:
          $ref: '#/components/schemas/TargetGroupFillingGoal'
        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'
        profile:
          $ref: '#/components/schemas/TargetGroupDraftProfile'
        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
    PricingAssistance:
      description: Assist the pricing of the target group.
      type: string
      enum:
      - dynamic
      example: dynamic
    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
    IncidenceRate:
      type: number
      format: float
      description: Current incidence rate of the Target Group.
      minimum: 0
      maximum: 1
      example: 0.05
    QuotaOverlayBalanceFill:
      type: boolean
      description: Does not let quotas fill faster than the others within the same demography.
      example: true
    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'
    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
    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
    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'
    QuotaOverlayPreventOverfilling:
      type: boolean
      description: Applies a translation to prescreen quota calculation type, that prevents overfills.
      example: true
    TargetGroupDraftGroupedRegularQuotaTemplate:
      type: object
      required:
      - indexes
      - name
      properties:
        indexes:
          type: array
          description: The indexes of the condition as reference to the item from the list of conditions.
          items:
            type: integer
            minimum: 2
          example:
          - 1
          - 2
        name:
          type: string
          description: The name of the group of conditions.
          maxLength: 64
          example: Group 1
        quota_percentage:
          type: integer
          minimum: 0
          maximum: 100
          description: The quota value expressed as a percentage for the profile
          example: 40
        quota_nominal:
          type: integer
          minimum: 0
          description: The quota value for the profile
          example: 550
    StudyTypeCode:
      type: string
      description: Uniquely identifies the Study Type that indicates the Target Group limits and purpose.
      default: adhoc
      example: diary
    EarningsPerClickPerMinute:
      type: object
      description: Earnings per Click divided by median length of interview in minutes.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    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'
    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
    EarningsPerClick:
      type: object
      description: Current Cost per Interview multiplied by completes so far, divided by the number of entrants.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmount'
    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'
    SoftLaunchAssisted:
      description: Assists the target group with soft launch functionality.
      type: boolean
      example: true
    TargetGroupDraftRegularProfileZipConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `zip_conditions_details_template`.
          enum:
          - zip_conditions_details_template
          example: zip_conditions_details_template
        data:
          type: array
          items:
            type: object
            properties:
              text:
                type: string
                description: text description for the condition.
              zip_codes:
                type: array
                description: |
                  The number option for the answer of the question
                  relating to the condition.
                  Note that only 10,000 values may be provided
                maxItems: 10000
                items:
                  type: string
              allow_all_zip:
                type: boolean
                description: |
                  If true, the profile will allow all zip codes. If false,
                  the profile will only allow the zip codes specified in the data field.
                example: true
    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'
    PacingStrategy:
      description: The pacing strategy.
      type: string
      enum:
      - linear
      - adaptive
      - gemini
      example: linear
    QuotaOverlayAssisted:
      description: Assists the target group with quota overlay functionality.
      type: boolean
      example: true
    TargetGroupClientID:
      type: integer
      format: int32
      description: Client ID associated with the created Target Group
      example: 1234
      nullable: true
    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
    TargetGroupLanguage:
      type: array
      items:
        type: string
        pattern: ^[a-z]{3}$
        example: eng
    SoftLaunchFillingGoalPercentage:
      type: integer
      description: The percentage of the full filling goal to collect during the soft launch phase.
      minimum: 0
      maximum: 100
      example: 25
    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'
    TargetGroupCpiRequestModel:
      description: Target group CPI.
      allOf:
      - $ref: '#/components/schemas/MonetaryAmountRequestModel'
    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
    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
    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.
    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'
    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'
    TargetGroupDraftRegularProfile:
      type: array
      description: List of regular profiles.
      items:
        type: object
        properties:
          question_id:
            type: integer
            description: The identifier for the underlying question from the profiling library.
            example: 42
          quotas_enabled:
            type: boolean
            description: Indicates whether or not the defined quotas on the profile are enabled
            example: true
          conditions:
            oneOf:
            - $ref: '#/components/schemas/TargetGroupDraftRegularProfileRangeConditionsTemplate'
            - $ref: '#/components/schemas/TargetGroupDraftRegularProfileSelectionConditionsTemplate'
            - $ref: '#/components/schemas/TargetGroupDraftRegularProfileZipConditionsTemplate'
          quotas:
            type: object
            properties:
              ungrouped:
                type: array
                items:
                  $ref: '#/components/schemas/TargetGroupDraftSingularRegularQuotaTemplate'
              grouped:
                type: array
                items:
                  $ref: '#/components/schemas/TargetGroupDraftGroupedRegularQuotaTemplate'
    TargetGroupInputDraftRegularProfileZipConditionsTemplate:
      type: object
      properties:
        object:
          type: string
          description: |
            Object field to distinguish between different types of control selections.
            Always is `zip_conditions_details_template`.
          enum:
          - zip_conditions_details_template
          example: zip_conditions_details_template
        data:
          type: array
          items:
            $ref: '#/components/schemas/ZipConditionItem'
      example:
        object: zip_conditions_details_template
        data:
        - allow_all_zip: true
          zip_codes: []
    InvalidParam:
      type: object
      description: Describes a single invalid parameter in a request.
      properties:
        name:
          type: string
        reason:
          type: string
      required:
      - name
      - reason
  parameters:
    AccountID:
      name: account_id
      description: The account's unique identifier.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/AccountID'
    UserType:
      name: user_type
      in: query
      description: Filter users by user type.
      schema:
        type: string
        enum:
        - project_manager
    UserID:
      in: path
      name: user_id
      schema:
        $ref: '#/components/schemas/UserID'
      required: true
      description: Uniquely identifies a user.
    IdempotencyKeyULIDRequired:
      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/IdempotencyKeyULID'
    EndBefore:
      name: end_before
      in: query
      description: Returns a list of objects that come before the provided pagination cursor, using the previous_cursor from
        the response.
      schema:
        type: string
      example: 7daa40ad-303b-40a2-89df-a9760400cde7
    LocaleCodeFilter:
      name: locale
      in: query
      required: true
      description: Filter by question locale code.
      schema:
        $ref: '#/components/schemas/LocaleCode'
      example: jpn_jp
    IfMatch:
      name: If-Match
      description: The `If-Match` header contains a string that identifies the expected  version state of a resource, represented
        as an `ETag` value.  It serves as a mechanism for optimistic locking, ensuring that a resource  is updated or deleted
        only if its current state matches the specified  `ETag` value, thereby preventing unintended overwrites. 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"
    IfMatchRequired:
      name: If-Match
      required: true
      description: The `If-Match` header contains a string that identifies the expected  version state of a resource, represented
        as an `ETag` value.  It serves as a mechanism for optimistic locking, ensuring that a resource  is updated or deleted
        only if its current state matches the specified  `ETag` value, thereby preventing unintended overwrites. 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"
    TemplateID:
      name: template_id
      in: path
      schema:
        $ref: '#/components/schemas/TemplateID'
      required: true
      description: The ID of the template.
    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
    OptionalLocaleCodeFilter:
      name: locale
      in: query
      required: false
      description: Filter by locale code.
      schema:
        $ref: '#/components/schemas/LocaleCode'
      example: jpn_jp
    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
    ProjectID:
      name: project_id
      description: The character string representing a unique project ID (ULID format).
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ProjectID'
    ExclusionGroupID:
      name: exclusion_group_id
      in: path
      required: true
      description: The character string representing a unique exclusion group ID (ULID format).
      schema:
        $ref: '#/components/schemas/ExclusionGroupID'
    TargetGroupID:
      name: target_group_id
      description: The character string representing a unique target group ID (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
    JobID:
      name: job_id
      description: The character string representing a unique job ID.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/JobID'
    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
    RunAsync:
      name: run-async
      in: query
      required: false
      description: A boolean value indicating whether the request should be processed asynchronously
      schema:
        type: boolean
        default: false
    BusinessUnitID:
      in: path
      name: business_unit_id
      schema:
        $ref: '#/components/schemas/BusinessUnitID'
      required: true
      description: Uniquely identifies a business unit.
    IfNoneMatch:
      name: If-None-Match
      description: The `If-None-Match` header contains a string that identifies a  version state of a resource, represented
        as an `ETag` value.  It serves as a mechanism for optimistic locking, ensuring that a resource  is updated or deleted
        only if its current state does not match the specified  `ETag` value, thereby preventing unintended overwrites. Using
        `*` will match any version state.
      in: header
      schema:
        type: string
        format: etag
        example: 1
    CintAPIVersion:
      name: Cint-API-Version
      in: header
      required: true
      schema:
        $ref: '#/components/schemas/CintAPIVersion'
    FieldingRunID:
      name: fielding_run_id
      description: The character string representing a unique fielding run ID.
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/FieldingRunID'
    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'
    ProfileIDV2:
      name: profile_id
      description: The character string representing a unique profile ID (ULID format).
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ProfileIDV2'
    TargetGroupFillingGoal:
      name: target_group_filling_goal
      in: query
      description: Prescribed filling goal for a target group
      required: true
      schema:
        type: integer
        example: 100
        minimum: 1
        maximum: 10000
    WebhookID:
      name: webhook_id
      in: path
      description: The ID of the webhook.
      required: true
      schema:
        $ref: '#/components/schemas/WebhookID'
    ProfileID:
      name: profile_id
      in: path
      required: true
      description: the unique ID of a profile
      schema:
        $ref: '#/components/schemas/ProfileID'
    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).
      schema:
        type: string
        example:
        - eng_us
        - eng_us,jpn_jp
    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
    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
    ProfileTemplateID:
      name: profile_template_id
      in: path
      schema:
        $ref: '#/components/schemas/ProfileTemplateID'
      required: true
      description: The ID of the template.
    ProjectStatusFilter:
      name: status
      in: query
      description: Project Status filter query parameter.
      schema:
        $ref: '#/components/schemas/ProjectStatus'
    ProjectManagerIDFilter:
      name: project_manager_id
      in: query
      description: Project Manager ID filter query parameter.
      schema:
        $ref: '#/components/schemas/UserID'
    ProjectNameFilter:
      name: name
      in: query
      deprecated: true
      description: |
        Filter by the project name. This has been deprecated in favour of the `search_string` query parameter. If only `name` is supplied, it will be used as if `search_string` has been supplied. If both `name` and `search_string` are supplied, `name` will be ignored.
      schema:
        type: string
        example: Test Project
    ProjectSearchString:
      name: search_string
      in: query
      description: |
        Search for projects by the project's name, the project's human readable ID, or any of the human readable ID's of any of the target groups contained within the project.
      schema:
        type: string
        example: Test Project
        minimum: 5
        maximum: 128
    QuestionsTranslationTranslationLanguage:
      name: translation_language
      in: query
      description: Request language to translate into.
      schema:
        type: string
        example: spa
    QuestionsTranslationStartAfter:
      name: start_after
      in: query
      description: Used for pagination to iterate to next page.   Accepts the question id, so in practical usage you would
        include the highest id from the previous page of questions  retrieved to get the next page. For instance, if you make
        a list request and receive 100 objects, ending with 97,  your subsequent call can include start_after=97 in order
        to fetch the next page of the list.  If you are using "id" or "query" for filtering based on a specific question,
        you cannot use "start_after" at the same time. Is mutually exclusive with end_before.
      schema:
        type: integer
        example: 42
    QuestionsTranslationIDs:
      name: id
      in: query
      description: List of comma separated question IDs.
      schema:
        type: string
        example: 42,43,97
    QuestionsTranslationEndBefore:
      name: end_before
      in: query
      description: Used for pagination to traverse to previous page.   Accepts the question id, so in practical usage you
        would include the lowest id from the previous page of questions  retrieved to get the previous page. For instance,
        if you make a list request and receive 100 objects,  starting with 42, your subsequent call can include ending_before=42
        in order to fetch the previous page of the list. If you are using "id" or "query" for filtering based on a specific
        question, you cannot use "end_before" at the same time. Is mutually exclusive with start_after.
      schema:
        type: integer
        example: 97
    QuestionsTranslationAllowCustomQuals:
      name: allow_account_specific
      in: query
      description: Whether to include also account specific questions (Previously called custom questions).
      schema:
        type: boolean
        example: true
    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
    QuestionsTranslationQuery:
      name: query
      in: query
      description: Text filter on the results set.
      schema:
        type: string
        example: Filtering response elements by this text
    QuestionsTranslationLimit:
      name: limit
      in: query
      description: Limit number of questions returned in response.
      schema:
        type: integer
        default: 100
        example: 20
        minimum: 1
        maximum: 100
    QuestionsTranslationNoFilter:
      name: no_filter
      in: query
      description: Whether to skip filtering questions based on support from the model.
      schema:
        type: boolean
        example: true
    SubmitReconFileName:
      name: name
      in: query
      required: true
      schema:
        $ref: '#/components/schemas/FileName'
    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
    ReconPostContentType:
      name: Content-Type
      in: header
      required: true
      description: The content type of the request body.
      schema:
        type: string
        enum:
        - text/csv
        - application/csv
    ReconProjectName:
      name: project_name
      in: query
      required: false
      description: Filter by project name
      schema:
        type: string
    ReconTGStatus:
      name: status
      in: query
      required: false
      description: Filter by target group status
      schema:
        type: string
    Status:
      in: query
      name: status
      schema:
        type: string
      description: The character string representing search based on reversal file status.
    ReconTGName:
      name: name
      in: query
      required: false
      description: Filter by target group name
      schema:
        type: string
    NextCursor:
      in: query
      name: next_cursor
      schema:
        $ref: '#/components/schemas/NextCursorULID'
    RequestID:
      name: request_id
      in: path
      required: true
      description: Request ID path parameter that uniquely identifies a reconciliation record.
      schema:
        $ref: '#/components/schemas/RequestID'
    SubmittedByUserID:
      in: query
      name: submitted_by_user_id
      schema:
        $ref: '#/components/schemas/UserID'
      description: Uniquely identifies a user.
    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
    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
    parameters-TargetGroupID:
      name: target_group_id
      in: path
      required: true
      description: Target group ID path parameter that uniquely identifies a target group.
      schema:
        $ref: '#/components/schemas/TargetGroupID'
    ReconProjectManagerID:
      name: project_manager_id
      in: query
      required: false
      description: Filter by project manager ID
      schema:
        type: string
    UpdateRecontactsJobID:
      name: job_id
      in: path
      required: true
      description: The job ID of the recontact job.
      schema:
        $ref: '#/components/schemas/JobID'
    ReportType:
      name: report_type
      in: path
      required: true
      schema:
        $ref: '#/components/schemas/ReportType'
    ReportFileName:
      name: file
      in: query
      required: true
      schema:
        $ref: '#/components/schemas/ReportFileName'
    ReportTypeQueryRequired:
      name: report_type
      in: query
      required: true
      schema:
        $ref: '#/components/schemas/ReportType'
    ReportId:
      name: report_id
      in: path
      description: the unique ID of a report
      required: true
      schema:
        $ref: '#/components/schemas/ReportId'
    ReportTypeQuery:
      name: report_type
      in: query
      required: false
      schema:
        $ref: '#/components/schemas/ReportType'
    Tracestate:
      name: tracestate
      required: false
      in: header
      schema:
        $ref: '#/components/schemas/Tracestate'
    Traceparent:
      name: traceparent
      required: false
      in: header
      schema:
        $ref: '#/components/schemas/Traceparent'
    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
    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
    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
    TargetGroupStatus:
      name: status
      in: query
      description: Target Group status(es) to match against.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupStatus'
    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
    TargetGroupChangeTypes:
      name: change_types
      in: query
      description: Filter parameter to return only changes of given types.
      schema:
        type: array
        items:
          $ref: '#/components/schemas/TargetGroupChangeType'
    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'
    TargetGroupExclusionStatus:
      name: exclusion_status
      in: query
      description: Only return target groups with the specified exclusion status.
      schema:
        type: boolean
        example: false
    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
    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_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_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_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_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_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
    Precondition_Failed:
      description: Resource could not be modified due to wrong expected version
      headers:
        traceparent:
          $ref: '#/components/headers/Traceparent'
        tracestate:
          $ref: '#/components/headers/Tracestate'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            id: 3d61d9c3-68ee-4026-b436-6e76a2b33932
            object: precondition_failed_error
            detail: resource could not be modified due to wrong expected version
    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_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_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_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_InvalidParams:
      description: A request failed due to invalid state of the entity
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InvalidParamsError'
          example:
            id: d94b8bb2-a540-4a91-9c05-2aa3ae9a5e1e
            object: invalid_state_error
            detail: The entity does not meet the required state.
            errors:
            - code: profile_validation_error_100
              description: invalid question id - 123
    Error_RateLimit:
      description: Rate limiting
      headers:
        traceparent:
          $ref: '#/components/headers/Traceparent'
        tracestate:
          $ref: '#/components/headers/Tracestate'
        retry-After:
          description: How long the user agent should wait before making a follow-up request.
          schema:
            type: integer
            format: int32
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsProblemDetails'
    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'
    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.
  requestBodies:
    WebhookUpdate:
      description: Update an existing webhook request body.
      required: true
      content:
        application/json:
          schema:
            type: object
            description: A response containing the ID of the updated webhook.
            properties:
              url:
                $ref: '#/components/schemas/WebhookURL'
              events:
                $ref: '#/components/schemas/WebhookEvents'
          example:
            url: https://example.com/webhook
            events:
            - session-updated
    WebhookCreate:
      description: Create a new webhook request body.
      required: true
      content:
        application/json:
          schema:
            type: object
            description: A response containing the ID of the created webhook.
            required:
            - url
            - events
            properties:
              url:
                $ref: '#/components/schemas/WebhookURL'
              events:
                $ref: '#/components/schemas/WebhookEvents'
          example:
            url: https://example.com/webhook
            events:
            - target-group-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.
  headers:
    Tracestate:
      description: The `tracestate` header complements the `traceparent` header by providing  additional contextual information,
        thereby allowing for the enrichment  of tracing context and offering more fine-grained control.
      required: false
      schema:
        $ref: '#/components/schemas/Tracestate'
    Traceparent:
      description: The `traceparent` header primarily carries essential trace context  information, including the trace ID
        and parent span ID as defined by  the W3C trace context specification. It's used to pinpoint the position  of an incoming
        request within the trace graph, facilitating the tracking  of distributed operations.
      required: false
      schema:
        $ref: '#/components/schemas/Traceparent'
    Location:
      description: The location of a resource. Must follow https://datatracker.ietf.org/doc/html/rfc7231#section-7.1.2
      required: true
      schema:
        type: string
        description: This can be an URI reference pointing to a resource or the ID of the resource itself.
        example:
        - https://api.cint.com/demand/business-units
        - /demand/business-units
        - business-units
        - fe666fcd-490c-4cb4-b4e0-2f86e15c27e6
    ETag:
      description: The `ETag` header provides a unique identifier, that represents the current version state of a particular
        resource.
      required: true
      schema:
        $ref: '#/components/schemas/ETag'
    IdempotencyKey:
      description: A shallow unique ID used as part of the deduplication mechanism for mutable operations.
      schema:
        $ref: '#/components/schemas/IdempotencyKey'
    IsSyntheticTraffic:
      description: 'Boolean value representing whether request is the product of synthetic traffic. By default, set to false. '
      schema:
        $ref: '#/components/schemas/IsSyntheticTraffic'
  examples:
    QuestionsTranslationResponseExample:
      summary: Questions translation response example
      value:
        total: 3
        result:
        - question_id: 42
          name: AGE
          description: Qual é a sua idade?
          description_translated: What is your age?
          conditions:
            object: range_conditions_details_template
            data: []
          option_mask: XX
          standard: true
        - question_id: 43
          name: GENDER
          description: Você...?
          description_translated: Are you...?
          conditions:
            object: selection_conditions_details_template
            data:
            - text: 'Masculino '
              text_translated: Male
              option: '1'
            - text: Feminino
              text_translated: Female
              option: '2'
          option_mask: ''
          standard: true
        - question_id: 79356
          name: STANDARD_Postal_Code_BR
          description: Qual o seu CEP?
          description_translated: ''
          conditions:
            object: zip_conditions_details_template
            data:
            - text: Qual o seu CEP?
              text_translated: ''
              option: null
              allow_all_zip: true
          option_mask: XXXXX
          standard: true
