Cint Target Groups API

Create, update, list and other operations on Target Groups. A Target Group is the main unit of work in the Exchange.

OpenAPI Specification

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


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


    While many operations work on a single object per request, the demand ordering API also provides asynchronous batch endpoints for performing bulk updates efficiently on certain resources. For safety, `POST` requests support an `Idempotency-Key` header to allow for safe retries without accidentally performing the same operation twice.

    '
  version: '2025-12-18'
servers:
- description: Production server
  url: https://api.cint.com/v1
security:
- BearerAuth: []
tags:
- name: Target Groups
  description: Create, update, list and other operations on Target Groups. A Target Group is the main unit of work in the Exchange.
paths:
  /demand/accounts/{account_id}/projects/{project_id}/target-groups:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_list_target_groups
      summary: List target groups for a project
      description: Fetch a paginated list of essential data points and statistical metrics related to Target Groups of a single project, such as current status, progress, and other relevant details, based on filter criteria such as language, country, name, etc.
      tags:
      - Target Groups
      parameters:
      - $ref: '#/components/parameters/EndBefore'
      - $ref: '#/components/parameters/StartAfter'
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/TargetGroupExclusionStatus'
      - $ref: '#/components/parameters/TargetGroupName'
      - $ref: '#/components/parameters/TargetGroupSearchString'
      - $ref: '#/components/parameters/TargetGroupHumanReadableIds'
      - $ref: '#/components/parameters/TargetGroupCustomerReferenceNumbers'
      - $ref: '#/components/parameters/TargetGroupStatus'
      - $ref: '#/components/parameters/TargetGroupCountry'
      - $ref: '#/components/parameters/TargetGroupLanguage'
      - $ref: '#/components/parameters/ProjectManagerIDFilter'
      responses:
        '200':
          description: A successful response returns a paginated list of matching Target Groups along with details such as attributes and metrics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupsList'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    post:
      operationId: create_target_group
      summary: Create a target group in draft status
      description: 'Creates a new target group in `draft` status.


        Key behaviors:


        * The `profiles` attribute is optional. However, if you provide it, you must also set the `profile_adjustment_type`.

        * **Constraint:** A given profile (or question) ID must appear in _only one_ of the arrays. Duplicate IDs will cause the request to fail.


        The API automatically removes duplicate open-ended values in this request before validation and saving, but rejects duplicates in selection or range conditions.

        '
      tags:
      - Target Groups
      requestBody:
        description: Create target group request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDraftTargetGroupRequest'
      responses:
        '201':
          description: Successfully created a Target Group in draft status.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatedDraftTargetGroupResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_target_group
      summary: Retrieve a draft target group
      description: 'Retrieves a target group by its ID.


        **Note:** This endpoint is intended for `draft` target groups. If the requested target group is not in draft status, this endpoint will return a `301 Moved Permanently` redirect to it''s target group details endpoint.

        '
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully returned a draft Target Group.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/FetchTargetGroupResponse'
                - $ref: '#/components/schemas/DraftTargetGroupLinks'
        '301':
          description: Redirecting, as the draft Target Group has been launched
          headers:
            location:
              $ref: '#/components/headers/Location'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_target_group
      summary: Update a target group in draft status
      description: "Update a target group in draft status.\n\nprofiles is optional field. If provided, `profile_adjustment_type` must be set as `percentage` or `nominal`.\n\n**Constraint:** a given profile (or question) ID must appear in _only one_ of these arrays.  \nIf the same ID is listed in more than one `profile`, the draft will fail to save.\n\nThe API automatically removes duplicate open-ended values in this request before validation and saving, but rejects duplicates in selection or range conditions.\n"
      tags:
      - Target Groups
      requestBody:
        description: Update target group request
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDraftTargetGroupRequest'
      responses:
        '204':
          description: Successfully updated a Target Group in draft status.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/details:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_target_group_details
      summary: Retrieve target group details
      description: 'Fetch details of a launched Target Group, such as Business Unit ID, Study Type ID, Industry ID, Locale, Completes Goal, and other  metadata related to the Target Group.

        Attempting to retrieve a draft Target Group details will result in a Not Found error.'
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns a paginated list of matching Target Groups along with details such as attributes and metrics.
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/TargetGroupDetails'
                - $ref: '#/components/schemas/TargetGroupLinks'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
    put:
      operationId: update_launched_target_group_details
      summary: Update launched target group details
      description: 'Update a launched Target Group details, such as the Project Manager ID, Live URL, and other metadata related to the Target Group.

        Attempting to update a draft Target Group details will result in a Not Found error.'
      tags:
      - Target Groups
      requestBody:
        description: The Target Group update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TargetGroupDetailsUpdateRequest'
      responses:
        '200':
          description: A successful response returns updated Target Group details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupDetails'
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/business-units/{business_unit_id}/rate-card:
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      summary: Retrieve a rate card
      description: Rate Cards predefine the prices that a buyer will be charged for sessions on a Target Group that fits the equivalent IR and LOI metrics. Buyers can understand the interaction of the active Rate Card on a Target Group with the statistics, price changes and available configurations such as maximum prices and price boost via help documents and guides. This API allows buyers to look up a Rate Card based on the provided search parameters. The Rate Card is returned as a 2D array where each row array is LOI (with the number and value of the rows defined by the length_of_interview_minutes) and each column (index within a row array) is IR in percentage with the values defined by the incidence_rate_percents field.
      operationId: get_rate_card
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/BusinessUnitID'
      - $ref: '#/components/parameters/CountryCode'
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully return matching Rate Card.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RateCard'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/rate-card:
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      summary: Retrieve a target group's rate card
      description: Depending on the state of the Target Group, this may be a predicted Rate Card, which may be replaced by a new version before the Target Group collects completes or the actual Rate Card which is permanently associated with the Target Group. This association is made when the Target Group first goes live. Rate Cards predefine the prices that a buyer will be charged for sessions on a Target Group that fits the equivalent IR and LOI metrics. Buyers can understand the interaction of the active Rate Card on a Target Group with the statistics, price changes and available configurations such as maximum prices and price boost via help documents and guides. The Rate Card is returned as a 2D array where each row array is LOI (with the number and value of the rows defined by the length_of_interview_minutes) and each column (index within a row array) is IR in percentage with the values defined by the incidence_rate_percents field.
      operationId: get_target_group_rate_card
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      - $ref: '#/components/parameters/TargetGroupID'
      tags:
      - Target Groups
      responses:
        '200':
          description: Successfully return matching Rate Card.
          content:
            application/json:
              schema:
                oneOf:
                - $ref: '#/components/schemas/PredictedRateCard'
                - $ref: '#/components/schemas/BoundRateCard'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/cost-per-interview:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    put:
      operationId: update_cost_per_interview
      summary: Update target group cost per interview
      description: Updates the cost per interview to the value specified in the request body. The target group cannot be in draft state. The Target Group CPI must not exceed the platform limit of $105.00. For non-USD amounts, the CPI is compared against the equivalent limit in the provided currency. Note - This limit is subject to platform configuration and may change.
      tags:
      - Target Groups
      requestBody:
        description: Cost per interview update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostPerInterviewUpdateRequest'
      responses:
        '200':
          description: Cost per interview on target group successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostPerInterviewUpdateResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/filling-strategy:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    put:
      operationId: update_filling_strategy
      summary: Update target group filling strategy
      description: Updates the filling strategy to the value specified in the request body.
      tags:
      - Target Groups
      requestBody:
        description: Filling strategy update request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FillingStrategyUpdateRequest'
      responses:
        '200':
          description: Filling strategy on target group successfully updated.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FillingStrategyUpdateResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '405':
          $ref: '#/components/responses/Error_MethodNotAllowed'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/compute-target-group-transitions:
    parameters:
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    post:
      summary: Compute available target group transitions
      description: Returns all target group Ids for the given query parameters and the available possible actions on the returned set of target groups.
      operationId: compute_target_group_transitions
      parameters:
      - $ref: '#/components/parameters/AccountID'
      - $ref: '#/components/parameters/ProjectID'
      requestBody:
        description: Compute target group transitions request.
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ComputeTargetGroupTransitionsRequest'
      tags:
      - Target Groups
      responses:
        '200':
          description: Target group Ids with their possible actions.
          headers:
            traceparent:
              $ref: '#/components/headers/Traceparent'
            tracestate:
              $ref: '#/components/headers/Tracestate'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ComputeTargetGroupTransitionsResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/overview:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    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'
  /demand/target-groups/{target_group_id}/overview:
    parameters:
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    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'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/performance:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_target_group_performance
      summary: Retrieve a target group's performance metrics
      description: Fetch a set of essential data points and statistical metrics related to a specific launched Target Group.
      tags:
      - Target Groups
      responses:
        '200':
          description: A successful response returns requested Target Group statistics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupPerformance'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/completes-aggregated-by-interval:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/AggregationInterval'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_target_group_completes_aggregated_by_interval
      summary: Retrieve a target group's collected completes
      tags:
      - Target Groups
      description: Returns a list of timestamps according to the aggregation interval and the Target Group's fielding period, with a count of completes collected thus far for each interval. When no interval is provided as a parameter, the endpoint defaults to an interval of 24 hours.
      responses:
        '200':
          description: Successfully return list of intervals with counts.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupCollectedCompletesAggregatedIntervalsResponse'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
  /demand/accounts/{account_id}/projects/{project_id}/target-groups/{target_group_id}/changelog:
    parameters:
    - $ref: '#/components/parameters/AccountID'
    - $ref: '#/components/parameters/ProjectID'
    - $ref: '#/components/parameters/TargetGroupID'
    - $ref: '#/components/parameters/ChangelogPageSize'
    - $ref: '#/components/parameters/StartAfter'
    - $ref: '#/components/parameters/EndBefore'
    - $ref: '#/components/parameters/TargetGroupChangeTypes'
    - $ref: '#/components/parameters/CintAPIVersion-2025-12-18'
    get:
      operationId: get_target_group_changelog
      summary: Retrieve a target group's Changelog
      tags:
      - Target Groups
      description: 'Returns a paginated list of historical changes for the target group.


        **Note:** The list of change types is extensible. Consumers should expect that new change types may be introduced in the future.

        '
      responses:
        '200':
          description: Successfully return list of profiles.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TargetGroupChangelogList'
        '400':
          $ref: '#/components/responses/Error_BadRequest'
        '401':
          $ref: '#/components/responses/Error_Unauthorized'
        '403':
          $ref: '#/components/responses/Error_Forbidden'
        '404':
          $ref: '#/components/responses/Error_NotFound'
        '500':
          $ref: '#/components/responses/Error_Internal'
components:
  schemas:
    FieldingAssistantModulesAssignment:
      title: Fielding Assistant modules assignment
      description: A container for all enabled Fielding Assistant modules for a target group. Each module is optional; if a module is omitted or set to `null`, it is considered disabled.
      type: object
      properties:
        pricing:
          oneOf:
          - $ref: '#/components/schemas/ModuleDynamicPricing'
          - $ref: '#/components/schemas/ModuleRateCardPricing'
          nullable: true
        quota_overlay:
          allOf:
          - $ref: '#/components/schemas/ModuleQuotaOverlay'
          nullable: true
        pacing:
          oneOf:
          - $ref: '#/components/schemas/ModuleLinearPacing'
          - $ref: '#/components/schemas/ModuleAdaptivePacing'
          - $ref: '#/components/schemas/ModuleGeminiPacing'
          nullable: true
        soft_launch:
          allOf:
          - $ref: '#/components/schemas/ModuleSoftLaunch'
          nullable: true
    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
    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'
    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
    ModuleSoftLaunch:
      title: Soft launch
      type: object
      description: Manages a soft launch of a target group. During a soft launch, pacing modules are ignored.
      properties:
        end_at:
          type: string
          description: The soft launch will be finished at this date, and the target group paused regardless of the fill.
          format: date-time
          example: '2023-01-01T23:00:00.000Z'
        filling_goal_percentage:
          description: The percentage of the full filling goal to collect during the soft launch phase.
          type: integer
          minimum: 1
          maximum: 100
          example: 1
        demographics_strictness_percentage:
          description: Controls how strictly the soft launch's demographic distribution should follow the full launch's distribution. A value of `100` aims to match the distribution perfectly, while `0` allows any distribution.
          type: integer
          minimum: 0
          maximum: 100
          example: 1
      required:
      - end_at
      - filling_goal_percentage
      - demographics_strictness_percentage
    schemas-TargetGroupStatus:
      type: array
      items:
        $ref: '#/components/schemas/TargetGroupStatus'
    FetchTargetGroupResponse:
      type: object
      description: Response object for a target group.
      properties:
        human_readable_id:
          $ref: '#/c

# --- truncated at 32 KB (244 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cint/refs/heads/main/openapi/cint-target-groups-api-openapi.yml