Covatic Audience Builder API

REST API behind the Covatic client platform (platform.covatic.io) for building and operating privacy-preserving audiences and campaigns: audience profiles, traits (behavioural, event and retargeting), campaign creation with attribution and time-series insights, tags, notes, company/user administration and QuickSight insight dashboards. Also exposes an AI audience-builder agent chat endpoint and a ChatGPT completions proxy. OpenAPI 3.1.0, 89 operations across 71 paths, FastAPI served, bearer-token (AWS Cognito JWT) authenticated.

OpenAPI Specification

covatic-audience-builder-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Audience builder
  summary: Audience builder is an app for clients to create their campaigns.
  version: 0.0.1
servers:
- url: https://prodaudiencebuilderapi.covatic.io
  description: Production (Covatic Audience Builder)
paths:
  /:
    get:
      tags:
      - Root
      summary: Read Root
      operationId: read_root__get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /access/:
    get:
      tags:
      - Auth
      summary: Secure Access
      operationId: secure_access_access__get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /user/:
    get:
      tags:
      - Auth
      summary: Secure User
      operationId: secure_user_user__get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
      - HTTPBearer: []
  /api/v1/profile/:
    get:
      tags:
      - Profiles
      summary: Get Profiles
      operationId: get_profiles_api_v1_profile__get
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 20
          - type: 'null'
          title: Profile status
          description: Query string to search the profile
        description: Query string to search the profile
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 50
          - type: 'null'
          title: Profile status
          description: Query string to filter the profile for status
          examples:
          - live
          - draft
          - completed
        description: Query string to filter the profile for status
      - name: location
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Locations
          examples:
          - value: live
          - value: draft
          - value: completed
          default: []
      - name: platform
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Platforms
          default: []
      - name: tag
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Tags
          default: []
      - name: sort
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 20
          - type: 'null'
          title: Profile sort
          description: Query string to sort profiles
        description: Query string to sort profiles
        example: latest
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: Page number
          default: 1
          title: Page
        description: Page number
      - name: size
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Page size
          default: 50
          title: Size
        description: Page size
      responses:
        '200':
          description: profiles retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page_Any_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    post:
      tags:
      - Profiles
      summary: Add Profile Data
      operationId: add_profile_data_api_v1_profile__post
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SharedProfile'
      responses:
        '200':
          description: Profile data added into the database
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__profile__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/profile/v2_profiles:
    get:
      tags:
      - Profiles
      summary: Get Profiles V2
      operationId: get_profiles_v2_api_v1_profile_v2_profiles_get
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      - name: search
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 20
          - type: 'null'
          title: Profile status
          description: Query string to search the profile
        description: Query string to search the profile
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 50
          - type: 'null'
          title: Profile status
          description: Query string to filter the profile for status
          examples:
          - live
          - draft
          - completed
        description: Query string to filter the profile for status
      - name: location
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Locations
          examples:
          - value: live
          - value: draft
          - value: completed
          default: []
      - name: platform
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Platforms
          default: []
      - name: tag
        in: query
        required: false
        schema:
          type: array
          items:
            type: string
          title: Tags
          default: []
      - name: sort
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            minLength: 3
            maxLength: 20
          - type: 'null'
          title: Profile sort
          description: Query string to sort profiles
        description: Query string to sort profiles
        example: latest
      - name: page
        in: query
        required: false
        schema:
          type: integer
          minimum: 1
          description: Page number
          default: 1
          title: Page
        description: Page number
      - name: size
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          description: Page size
          default: 50
          title: Size
        description: Page size
      responses:
        '200':
          description: profiles retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Page_Any_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/profile/v2/{id}:
    get:
      tags:
      - Profiles
      summary: Get Profile Data
      operationId: get_profile_data_api_v1_profile_v2__id__get
      security:
      - HTTPBearer: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: 5eb7cf5a86d9755df3a6c593
          title: Id
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      responses:
        '200':
          description: Profile data retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__profile__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/profile/{id}:
    delete:
      tags:
      - Profiles
      summary: Delete Profile Data
      operationId: delete_profile_data_api_v1_profile__id__delete
      security:
      - HTTPBearer: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: 5eb7cf5a86d9755df3a6c593
          title: Id
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      responses:
        '200':
          description: Profile data deleted from the database
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - Profiles
      summary: Partial Update Profile
      operationId: partial_update_profile_api_v1_profile__id__patch
      security:
      - HTTPBearer: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: 5eb7cf5a86d9755df3a6c593
          title: Id
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProfile'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__profile__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/profile/duplicate/{id}:
    post:
      tags:
      - Profiles
      summary: Duplicate Profile
      operationId: duplicate_profile_api_v1_profile_duplicate__id__post
      security:
      - HTTPBearer: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: 5eb7cf5a86d9755df3a6c593
          title: Id
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__profile__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/profile/{id}/status:
    patch:
      tags:
      - Profiles
      summary: Update Profile Status
      operationId: update_profile_status_api_v1_profile__id__status_patch
      security:
      - HTTPBearer: []
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
          example: 5eb7cf5a86d9755df3a6c593
          title: Id
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              additionalProperties: true
              title: Status Fields
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__profile__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/:
    get:
      tags:
      - Traits
      summary: Get Traits
      operationId: get_traits_api_v1_trait__get
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      responses:
        '200':
          description: trait retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/suggested:
    post:
      tags:
      - Traits
      summary: Get Suggested Traits
      operationId: get_suggested_traits_api_v1_trait_suggested_post
      security:
      - HTTPBearer: []
      parameters:
      - name: num_suggestions
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          examples:
          - 3
          title: Num Suggestions
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: suggested trait retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/estimation:
    post:
      tags:
      - Traits
      summary: Get Nested Traits Estimation
      operationId: get_nested_traits_estimation_api_v1_trait_estimation_post
      security:
      - HTTPBearer: []
      parameters:
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Profile Id
        example: profile_123
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: trait estimation retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/sec-group-stats:
    post:
      tags:
      - Traits
      summary: Get Sec Group Stats Nested
      operationId: get_sec_group_stats_nested_api_v1_trait_sec_group_stats_post
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: group percentage retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/sec-trait-breakdown:
    post:
      tags:
      - Traits
      summary: Get Sec Trait Stats Nested
      operationId: get_sec_trait_stats_nested_api_v1_trait_sec_trait_breakdown_post
      security:
      - HTTPBearer: []
      parameters:
      - name: trait_category
        in: query
        required: true
        schema:
          type: string
          maxLength: 100
          title: Trait Category
        example: FINANCE|Household Annual Income
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: group percentage retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/location-stats:
    post:
      tags:
      - Traits
      summary: Get Location Stats Nested
      operationId: get_location_stats_nested_api_v1_trait_location_stats_post
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: Location percentages retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/trait/platform-stats:
    post:
      tags:
      - Traits
      summary: Get Platform Stats Nested
      operationId: get_platform_stats_nested_api_v1_trait_platform_stats_post
      security:
      - HTTPBearer: []
      parameters:
      - name: parent_type
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Type
        examples:
          Octave:
            value: company
          Bauer UK:
            value: sub-company
          News UK:
            value: sub-company
      - name: parent_id
        in: query
        required: true
        schema:
          type: string
          maxLength: 50
          title: Parent Name
        examples:
          Octave:
            value: Octave
          Bauer UK:
            value: Bauer UK
          News UK:
            value: News UK
      - name: client_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            maxLength: 50
          - type: 'null'
          title: Client Id
        examples:
          Bauer Media:
            value: 5db1c6f588976c89fcb6bd70
          News UK Browser:
            value: 63247594f1861e200ef5b102
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NestedTraits'
              default:
                nested_traits: []
                exclusions: []
                locations: []
                platforms: []
      responses:
        '200':
          description: Location percentages retrieved
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/models__trait__Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'


# --- truncated at 32 KB (205 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/covatic/refs/heads/main/openapi/covatic-audience-builder-openapi.yml