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' /api/v1/event-trait/: get: tags: - Event Traits summary: Get Event Traits description: 'Get all event traits for a specific parent_id, optionally filtered by smart_match category. If category is provided, only returns traits that start with that category.' operationId: get_event_traits_api_v1_event_trait__get security: - HTTPBearer: [] parameters: - name: category in: query required: false schema: anyOf: - type: string maxLength: 50 - type: 'null' title: Category example: Rugby - 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: event traits retrieved content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Event Traits summary: Create Event Trait description: 'Create a new event trait with auto-generated unique trait_code. Either smart_match or keywords must be provided.' operationId: create_event_trait_api_v1_event_trait__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: required: true content: application/json: schema: $ref: '#/components/schemas/EventTraitCreate' responses: '200': description: event trait created content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/event-trait/media-property-options: post: tags: - Event Traits summary: Create Media Property Option description: Create a new media property option. operationId: create_media_property_option_api_v1_event_trait_media_property_options_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: required: true content: application/json: schema: $ref: '#/components/schemas/MediaPropertyOptionsCreate' responses: '200': description: media property option created content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Event Traits summary: Get Media Property Options description: Get media property options filtered by parent_id with pagination. operationId: get_media_property_options_api_v1_event_trait_media_property_options_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: 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: media property options retrieved content: application/json: schema: $ref: '#/components/schemas/Page_MediaPropertyOptions_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/event-trait/media-property-options/{property_id}: patch: tags: - Event Traits summary: Update Media Property Option description: Update an existing media property option. operationId: update_media_property_option_api_v1_event_trait_media_property_options__property_id__patch security: - HTTPBearer: [] parameters: - name: property_id in: path required: true schema: type: string title: Property 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/MediaPropertyOptionsUpdate' responses: '200': description: media property option updated content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Event Traits summary: Delete Media Property Option description: Delete a media property option. operationId: delete_media_property_option_api_v1_event_trait_media_property_options__property_id__delete security: - HTTPBearer: [] parameters: - name: property_id in: path required: true schema: type: string title: Property 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: media property option deleted content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/event-trait/{trait_code}: put: tags: - Event Traits summary: Update Event Trait description: 'Update an existing event trait and all audiences that use it. The trait_code remains unchanged, so no CVCQL reprocessing is needed.' operationId: update_event_trait_api_v1_event_trait__trait_code__put security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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/EventTraitUpdate' responses: '200': description: event trait updated content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Event Traits summary: Delete Event Trait description: 'Delete an event trait and remove it from all audiences that use it. This will also re-evaluate the CVCQL for affected audiences.' operationId: delete_event_trait_api_v1_event_trait__trait_code__delete security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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: event trait deleted content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/event-trait/{trait_code}/audiences: get: tags: - Event Traits summary: Get Audience Profiles By Event Trait description: 'Get all audience profiles that are using a specific event trait. The event trait information is stored in the nested_query.traits structure.' operationId: get_audience_profiles_by_event_trait_api_v1_event_trait__trait_code__audiences_get security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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: audience profiles using event 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/retargeting-trait/: get: tags: - Retargeting Traits summary: Get Retargeting Traits description: Get all retargeting traits for a specific parent_id. operationId: get_retargeting_traits_api_v1_retargeting_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: retargeting traits retrieved content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Retargeting Traits summary: Create Retargeting Trait description: Create a new retargeting trait with auto-generated unique trait_code (RET prefix). operationId: create_retargeting_trait_api_v1_retargeting_trait__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: required: true content: application/json: schema: $ref: '#/components/schemas/RetargetingTraitCreate' responses: '200': description: retargeting trait created content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/retargeting-trait/{trait_code}: put: tags: - Retargeting Traits summary: Update Retargeting Trait description: Update an existing retargeting trait and all audiences that use it. operationId: update_retargeting_trait_api_v1_retargeting_trait__trait_code__put security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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/RetargetingTraitUpdate' responses: '200': description: retargeting trait updated content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Retargeting Traits summary: Delete Retargeting Trait description: Delete a retargeting trait and remove it from all audiences that use it. operationId: delete_retargeting_trait_api_v1_retargeting_trait__trait_code__delete security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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: retargeting trait deleted content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/retargeting-trait/{trait_code}/audiences: get: tags: - Retargeting Traits summary: Get Audience Profiles By Retargeting Trait description: Get all audience profiles that are using a specific retargeting trait. operationId: get_audience_profiles_by_retargeting_trait_api_v1_retargeting_trait__trait_code__audiences_get security: - HTTPBearer: [] parameters: - name: trait_code in: path required: true schema: type: string title: Trait Code - 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: audience profiles using retargeting 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/insights/get-qs-dashboard: post: tags: - Insights summary: Get Qs Dashborad Url operationId: get_qs_dashborad_url_api_v1_insights_get_qs_dashboard_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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/QSInput' responses: '200': description: Dashboard link 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/insights/qs-groups: get: tags: - Insights summary: List Qs Groups description: 'Return all QuickSight groups in the account. Used by the frontend to populate a group selector when configuring a company''s QuickSight dashboard settings. Falls back to a known list if the QuickSight API is unreachable.' operationId: list_qs_groups_api_v1_insights_qs_groups_get responses: '200': description: QuickSight groups retrieved content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' security: - HTTPBearer: [] /api/v1/tag/: get: tags: - Tags summary: Get Tags operationId: get_tags_api_v1_tag__get security: - HTTPBearer: [] parameters: - name: search in: query required: false schema: anyOf: - type: string minLength: 3 maxLength: 20 - type: 'null' title: Search tag description: Query string to search the tag description: Query string to search the tag - 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 - 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 responses: '200': description: All tags content: application/json: schema: $ref: '#/components/schemas/Page_Tag_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Tags summary: Add Tags operationId: add_tags_api_v1_tag__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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Tag' responses: '200': description: Tag 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/tag/{id}: delete: tags: - Tags summary: Delete Tags operationId: delete_tags_api_v1_tag__id__delete security: - HTTPBearer: [] parameters: - name: id in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Id responses: '200': description: Tag deleted from the database content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/: get: tags: - Campaigns summary: Get Campaigns description: 'Retrieve a paginated list of campaigns with optional filtering and sorting. Supports: - Pagination (page, size) - Status filtering - Search by name, orderId, and audienceCode - Filter by tags, platforms, type, creator - Date range filtering (by creation date) - Multiple sort options' operationId: get_campaigns_api_v1_campaigns__get security: - HTTPBearer: [] parameters: - name: page in: query required: false schema: type: integer minimum: 1 description: Page number (1-indexed) default: 1 title: Page description: Page number (1-indexed) - name: size in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Items per page (max 100) default: 20 title: Size description: Items per page (max 100) - name: status in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by status title: Status description: Filter by status - name: sort in: query required: false schema: anyOf: - type: string - type: 'null' description: 'Sort option: latest, oldest, name-ascending, name-descending' title: Sort description: 'Sort option: latest, oldest, name-ascending, name-descending' - name: search in: query required: false schema: anyOf: - type: string - type: 'null' description: Search in name, orderId, and audienceCode title: Search description: Search in name, orderId, and audienceCode - name: tag in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by tags title: Tag description: Filter by tags - name: platform in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by platforms title: Platform description: Filter by platforms - name: type in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by campaign type title: Type description: Filter by campaign type - name: createdBy in: query required: false schema: anyOf: - type: array items: type: string - type: 'null' description: Filter by creator title: Createdby description: Filter by creator - name: startDate in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by start date title: Startdate description: Filter by start date - name: endDate in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by end date title: Enddate description: Filter by end date - 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 responses: '200': description: Get paginated list of campaigns content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Campaigns summary: Create New Campaign description: "Create a new campaign.\n\nArgs:\n campaign_data: Campaign creation request body\n\ \nReturns:\n Created campaign with generated unique audienceCode and optional orderId\n\nRaises:\n\ \ 400: Invalid request body or validation errors\n 409: Campaign with same name already\ \ exists" operationId: create_new_campaign_api_v1_campaigns__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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CampaignCreateRequest' responses: '201': description: Create a new campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/created-by: get: tags: - Campaigns summary: Get Campaign Created By description: "Retrieve unique list of createdBy values from campaigns.\n\nQuery Parameters:\n- parent_id:\ \ Filter by company/sub-company ID (from CompanyInfoQueryParams)\n- page: Page number for pagination\n\ - size: Items per page\n\nReturns:\n Paginated list of unique createdBy values" operationId: get_campaign_created_by_api_v1_campaigns_created_by_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: 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: Get list of campaign creators content: application/json: schema: $ref: '#/components/schemas/Page_str_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/tracking-url: get: tags: - Campaigns summary: Get Tracking Url description: "Get the tracking URL based on the parent_id (company or sub-company).\n\nQuery Parameters:\n\ \ parent_id: Company or sub-company name (from CompanyInfoQueryParams)\n\nReturns:\n Tracking\ \ URL for the specified parent with is_default flag\n\nExample Response (specific mapping):\n\ \ {\n \"status_code\": 200,\n \"response_type\": \"success\",\n \"description\"\ : \"Tracking URL retrieved successfully\",\n \"data\": {\n \"tracking_url\"\ : \"https://sca-cvc-prod.covatic.io/mobile/api/v1.0\",\n \"is_default\": false\n \ \ }\n }\n\nExample Response (default/fallback):\n {\n \"status_code\": 200,\n\ \ \"response_type\": \"success\",\n \"description\": \"Tracking URL retrieved successfully\"\ ,\n \"data\": {\n \"tracking_url\": \"https://mobile-cvc-fra-cvc-dev.covatic.io/mobile/api/v1.0\"\ ,\n \"is_default\": true\n }\n }" operationId: get_tracking_url_api_v1_campaigns_tracking_url_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 responses: '200': description: Get tracking URL for the parent company content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/insights/summary: get: tags: - Campaigns summary: Get Campaign Insights Summary operationId: get_campaign_insights_summary_api_v1_campaigns__campaignId__insights_summary_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get campaign insights summary statistics content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/insights/timeseries: get: tags: - Campaigns summary: Get Campaign Insights Timeseries operationId: get_campaign_insights_timeseries_api_v1_campaigns__campaignId__insights_timeseries_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get campaign insights time series data content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/insights/targeting-changes: get: tags: - Campaigns summary: Get Campaign Insights Targeting Changes operationId: get_campaign_insights_targeting_changes_api_v1_campaigns__campaignId__insights_targeting_changes_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get campaign insights targeting changes log content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/insights/attribution: get: tags: - Campaigns summary: Get Campaign Attribution Insights description: 'Retrieve the full pre-computed Attribution insights payload for a campaign. Returns a single document containing `events`, `totals`, `chart`, `performance_summary`, `sec_summary`, and `audience_summary`. Top-N ranking, scope filtering, and conversion-rate rollups are all performed on the frontend per PRO-138 / DATA-874. Returns 404 if the campaign does not exist, no insights document exists, or the stored insights document is not of type Attribution.' operationId: get_campaign_attribution_insights_api_v1_campaigns__campaignId__insights_attribution_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get full Attribution insights document for a campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/suggestions/{suggestionId}/dismiss: post: tags: - Campaigns summary: Dismiss Suggestion description: "Dismiss a suggested audience for a smart campaign.\n\n- Moves suggestion to DISMISSED\ \ status\n- Creates record in campaign_history collection\n- Removes from suggestions array in\ \ campaign\n\nArgs:\n campaignId: Campaign ID\n suggestionId: Audience code of the suggestion\n\ \ dismissal_data: Optional reason for dismissal\n\nReturns:\n Updated campaign without the\ \ dismissed suggestion\n\nRaises:\n 400: Not a Smart campaign\n 404: Campaign or suggestion\ \ not found" operationId: dismiss_suggestion_api_v1_campaigns__campaignId__suggestions__suggestionId__dismiss_post security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - name: suggestionId in: path required: true schema: type: string title: Suggestionid - 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 requestBody: content: application/json: schema: $ref: '#/components/schemas/SuggestionDismissalRequest' default: {} responses: '200': description: Dismiss a suggested audience content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/suggestions/{suggestionId}/accept: post: tags: - Campaigns summary: Accept Suggestion description: "Accept a suggested audience and add it to the campaign audiences.\n\n- Moves suggestion\ \ to ACCEPTED status\n- Adds audience to audiences array\n- Removes from suggestions array\n-\ \ Re-estimates reach, duration, and updates nested_traits from all audiences\n\nArgs:\n campaignId:\ \ Campaign ID\n suggestionId: Audience code of the suggestion\n\nReturns:\n Updated campaign\ \ with new audience added\n\nRaises:\n 400: Not a Smart campaign\n 404: Campaign or suggestion\ \ not found\n 409: Audience code already exists in campaign" operationId: accept_suggestion_api_v1_campaigns__campaignId__suggestions__suggestionId__accept_post security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - name: suggestionId in: path required: true schema: type: string title: Suggestionid - 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 responses: '200': description: Accept and add suggested audience to campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/history: get: tags: - Campaigns summary: Get Campaign History description: "Retrieve change history for a specific campaign.\n\nUseful for:\n- Data team to review\ \ what was dismissed (filter by suggestion_dismissed)\n- Users to see full audit trail\n- Analytics\ \ on suggestion quality\n- Compliance and reporting\n\nQuery Parameters:\n- change_type: Filter\ \ by specific type (suggestion_dismissed, suggestion_accepted,\n performance_updated,\ \ audience_added, audience_removed, etc.)\n- page: Page number (1-indexed)\n- size: Items per\ \ page (max 100)\n\nArgs:\n campaignId: Campaign ID\n change_type: Optional filter for change\ \ type\n page: Page number\n size: Items per page\n\nReturns:\n Paginated list of campaign\ \ history records" operationId: get_campaign_history_api_v1_campaigns__campaignId__history_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - name: change_type in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter by change type title: Change Type description: Filter by change type - name: page in: query required: false schema: type: integer minimum: 1 description: Page number (1-indexed) default: 1 title: Page description: Page number (1-indexed) - name: size in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Items per page (max 100) default: 20 title: Size description: Items per page (max 100) - 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 responses: '200': description: Get change history for a campaign content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/suggestions: get: tags: - Campaigns summary: Get Campaign Suggestions description: "Get all suggestions for a smart campaign.\n\nReturns the list of pending, accepted,\ \ and dismissed suggestions.\nFor full campaign details including audiences, use GET /campaigns/{campaignId}\n\ \nArgs:\n campaignId: Campaign ID\n\nReturns:\n List of suggestions with their status\n\n\ Raises:\n 400: Not a Smart campaign\n 404: Campaign not found" operationId: get_campaign_suggestions_api_v1_campaigns__campaignId__suggestions_get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get suggestions for a smart campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' post: tags: - Campaigns summary: Add Campaign Suggestions description: "Add new suggestions to a smart campaign (typically used by data team).\n\nThe system\ \ automatically:\n- Checks dismissal history to prevent re-suggesting dismissed audiences\n- Filters\ \ out suggestions with audience codes that already exist\n- Creates history records for each added\ \ suggestion\n\nArgs:\n campaignId: Campaign ID\n suggestions_data: Array of suggestions\ \ to add (max 20)\n\nReturns:\n Summary with added and skipped suggestions\n\nRaises:\n \ \ 400: Not a Smart campaign or invalid data\n 404: Campaign not found" operationId: add_campaign_suggestions_api_v1_campaigns__campaignId__suggestions_post security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/AddSuggestionsRequest' responses: '200': description: Add suggestions to a smart campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/audiences/performance: patch: tags: - Campaigns summary: Update Audience Performance description: "Update performance metrics for existing audiences in a smart campaign.\n\nTypically\ \ used by the data team to update performance ratings based on analytics.\nCreates history records\ \ for each performance update.\n\nArgs:\n campaignId: Campaign ID\n performance_data: Array\ \ of performance updates\n\nReturns:\n Updated campaign with new performance ratings\n\nRaises:\n\ \ 400: Not a Smart campaign or invalid performance rating\n 404: Campaign or audience not\ \ found" operationId: update_audience_performance_api_v1_campaigns__campaignId__audiences_performance_patch security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdatePerformanceRequest' responses: '200': description: Update audience performance metrics content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/audiences: post: tags: - Campaigns summary: Bulk Add Audiences description: "Bulk add audiences to a smart campaign.\n\n- Adds each audience to the smart campaign\ \ audiences array\n- Skips audience codes that already exist in the campaign\n- Creates campaign_history\ \ records (change_type=\"audience_added\") for each\n- Re-estimates reach, duration, and nested_traits\ \ from all audiences\n\nArgs:\n campaignId: Campaign ID\n audiences_data: Array of audiences\ \ to add (max 50)\n\nReturns:\n Summary with added/skipped audiences and updated campaign\n\ \nRaises:\n 400: Not a Smart campaign\n 404: Campaign not found" operationId: bulk_add_audiences_api_v1_campaigns__campaignId__audiences_post security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/BulkAddAudiencesRequest' responses: '200': description: Bulk add audiences to a smart campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/audiences/{audienceCode}: delete: tags: - Campaigns summary: Remove Audience description: "Remove an audience from a smart campaign.\n\n- Removes audience from audiences array\n\ - Re-estimates reach, duration, and updates nested_traits from remaining audiences\n- Creates\ \ record in campaign_history collection (change_type=\"audience_removed\")\n\nArgs:\n campaignId:\ \ Campaign ID\n audienceCode: Audience code to remove\n removal_data: Optional reason for\ \ removal\n\nReturns:\n Updated campaign without the removed audience\n\nRaises:\n 400:\ \ Not a Smart campaign\n 404: Campaign or audience not found" operationId: remove_audience_api_v1_campaigns__campaignId__audiences__audienceCode__delete security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - name: audienceCode in: path required: true schema: type: string title: Audiencecode - 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 requestBody: content: application/json: schema: $ref: '#/components/schemas/AudienceRemovalRequest' default: {} responses: '200': description: Remove an audience from a smart campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}: get: tags: - Campaigns summary: Get Campaign Detail description: "Retrieve detailed information about a specific campaign.\n\nArgs:\n campaignId:\ \ Campaign ID (MongoDB ObjectId)\n\nReturns:\n Campaign details\n\nRaises:\n 404: Campaign\ \ not found" operationId: get_campaign_detail_api_v1_campaigns__campaignId__get security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '200': description: Get campaign details content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' patch: tags: - Campaigns summary: Update Existing Campaign description: "Update an existing campaign (partial update).\n\nArgs:\n campaignId: Campaign ID\ \ to update\n update_data: Partial update data (only send fields to update)\n\nReturns:\n \ \ Updated campaign\n\nRaises:\n 400: Invalid request body\n 404: Campaign not found\n\ \ 409: Campaign name already exists" operationId: update_existing_campaign_api_v1_campaigns__campaignId__patch security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CampaignUpdateRequest' responses: '200': description: Update an existing campaign content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Campaigns summary: Delete Existing Campaign description: "Delete a campaign (soft delete).\n\nArgs:\n campaignId: Campaign ID to delete\n\ \nReturns:\n 204 No Content on success\n\nRaises:\n 404: Campaign not found\n 409: Cannot\ \ delete active campaign" operationId: delete_existing_campaign_api_v1_campaigns__campaignId__delete security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 responses: '204': description: Delete a campaign '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/campaigns/{campaignId}/status: patch: tags: - Campaigns summary: Update Campaign Status Endpoint description: "Update only the status of a campaign.\n\nArgs:\n campaignId: Campaign ID to update\n\ \ status_data: New status\n\nReturns:\n Updated campaign with new status\n\nRaises:\n \ \ 400: Invalid status value\n 404: Campaign not found" operationId: update_campaign_status_endpoint_api_v1_campaigns__campaignId__status_patch security: - HTTPBearer: [] parameters: - name: campaignId in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Campaignid - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CampaignStatusUpdateRequest' responses: '200': description: Update campaign status content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/notes/: post: tags: - Notes summary: Create Note description: 'Create a new note for an audience or campaign. Requires: - Valid JWT token - CAMPAIGNS or ADVERTISING feature permission - CREATE role permission (super_admin, admin, editor)' operationId: create_note_api_v1_notes__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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NoteCreateRequest' responses: '200': description: Create a new note content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' get: tags: - Notes summary: Get Notes By Entity description: 'Retrieve paginated notes for a specific entity (audience or campaign). Notes are returned in reverse chronological order (newest first). Requires: - Valid JWT token - CAMPAIGNS or ADVERTISING feature permission - VIEW role permission (all roles)' operationId: get_notes_by_entity_api_v1_notes__get security: - HTTPBearer: [] parameters: - name: entity_type in: query required: true schema: $ref: '#/components/schemas/NoteEntityType' description: Entity type (audience or campaign) description: Entity type (audience or campaign) - name: entity_id in: query required: true schema: type: string description: Entity ID (audience_code or campaign _id) title: Entity Id description: Entity ID (audience_code or campaign _id) - name: page in: query required: false schema: type: integer minimum: 1 description: Page number (1-indexed) default: 1 title: Page description: Page number (1-indexed) - name: size in: query required: false schema: type: integer maximum: 100 minimum: 1 description: Items per page (max 100) default: 20 title: Size description: Items per page (max 100) - 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 responses: '200': description: Get paginated notes for a specific entity content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/notes/{note_id}: get: tags: - Notes summary: Get Note description: 'Retrieve a single note by its ID. Requires: - Valid JWT token - CAMPAIGNS or ADVERTISING feature permission - VIEW role permission (all roles)' operationId: get_note_api_v1_notes__note_id__get security: - HTTPBearer: [] parameters: - name: note_id in: path required: true schema: type: string description: Note ID title: Note Id description: Note 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 responses: '200': description: Get a single note by ID content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Notes summary: Update Note description: 'Update an existing note. Requires: - Valid JWT token - CAMPAIGNS or ADVERTISING feature permission - EDIT role permission (super_admin, admin, editor)' operationId: update_note_api_v1_notes__note_id__put security: - HTTPBearer: [] parameters: - name: note_id in: path required: true schema: type: string description: Note ID title: Note Id description: Note 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/NoteUpdateRequest' responses: '200': description: Update a note content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Notes summary: Delete Note description: 'Soft delete a note. Requires: - Valid JWT token - CAMPAIGNS or ADVERTISING feature permission - DELETE role permission (super_admin, admin, editor)' operationId: delete_note_api_v1_notes__note_id__delete security: - HTTPBearer: [] parameters: - name: note_id in: path required: true schema: type: string description: Note ID title: Note Id description: Note 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 responses: '200': description: Delete a note content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/ai_audience/create-audiences: get: tags: - Audience Builder summary: Get Audiences operationId: get_audiences_api_v1_ai_audience_create_audiences_get security: - HTTPBearer: [] parameters: - name: audience_description in: query required: true schema: type: string maxLength: 1500 title: Audience Description example: Affluent renters who use public transport - 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 responses: '200': description: Audiences created content: application/json: schema: $ref: '#/components/schemas/models__trait__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/ai_audience_agent/chat: post: tags: - Audience Builder Agent summary: Chat description: 'Chat with the AI Audience Builder to create targeted audience segments. Send a message describing your target audience and the assistant will help you build it using available traits and reach estimates. Query params: parent_type, parent_id, sec_threshold (optional, default 100)' operationId: chat_api_v1_ai_audience_agent_chat_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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatRequest' responses: '200': description: Chat response from AI Audience Builder content: application/json: schema: $ref: '#/components/schemas/ChatResponse' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/location: get: tags: - Commons summary: Get Locations operationId: get_locations_api_v1_location_get security: - HTTPBearer: [] parameters: - 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: All locations content: application/json: schema: $ref: '#/components/schemas/Page_Location_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/platform: get: tags: - Commons summary: Get Platforms operationId: get_platforms_api_v1_platform_get security: - HTTPBearer: [] parameters: - 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: All platform content: application/json: schema: $ref: '#/components/schemas/Page_Platform_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/created-by: get: tags: - Commons summary: Get Created By operationId: get_created_by_api_v1_created_by_get security: - HTTPBearer: [] parameters: - 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: All created by users. content: application/json: schema: $ref: '#/components/schemas/Page_str_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/client-id: get: tags: - Commons summary: Get Client Id operationId: get_client_id_api_v1_client_id_get responses: '200': description: Client ID retrieved content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' security: - HTTPBearer: [] /api/v1/seed/platforms: get: tags: - Seeders summary: Seed Platforms operationId: seed_platforms_api_v1_seed_platforms_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/v1/seed/locations: get: tags: - Seeders summary: Seed Locations operationId: seed_locations_api_v1_seed_locations_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/v1/seed/clients: get: tags: - Seeders summary: Seed Clients operationId: seed_clients_api_v1_seed_clients_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/v1/seed/media-property-options: get: tags: - Seeders summary: Seed Media Property Options Endpoint operationId: seed_media_property_options_endpoint_api_v1_seed_media_property_options_get responses: '200': description: Successful Response content: application/json: schema: {} security: - HTTPBearer: [] /api/v1/seed/smart-campaigns: get: tags: - Seeders summary: Seed Smart Campaigns description: "Seed Smart Campaigns with performance data and AI-generated suggestions.\n\nThis endpoint\ \ populates Smart Campaigns with:\n- Performance ratings (Excellent/Good/Average/Poor) for existing\ \ audiences\n- AI-generated audience suggestions with realistic data\n- Proper audit trail in\ \ campaign_history collection\n\nQuery Parameters:\n- campaign_id: Seed a specific campaign (optional,\ \ if not provided seeds all)\n- parent_id: Filter campaigns by company/sub-company (optional)\n\ - num_suggestions: Number of suggestions to add per campaign (1-20, default: 5)\n- add_performance:\ \ Whether to add performance data to audiences (default: true)\n- add_suggestions: Whether to\ \ add AI suggestions (default: true)\n\nExamples:\n- Seed all smart campaigns: GET /seed/smart-campaigns\n\ - Seed specific campaign: GET /seed/smart-campaigns?campaign_id=6957d233ed139f90b161370c\n- Seed\ \ for a company: GET /seed/smart-campaigns?parent_id=Octave\n- Add 10 suggestions: GET /seed/smart-campaigns?num_suggestions=10\n\ - Only add suggestions: GET /seed/smart-campaigns?add_performance=false\n- Only add performance:\ \ GET /seed/smart-campaigns?add_suggestions=false\n\nReturns:\n Summary of seeding operation\ \ including campaigns processed and changes made" operationId: seed_smart_campaigns_api_v1_seed_smart_campaigns_get security: - HTTPBearer: [] parameters: - name: campaign_id in: query required: false schema: anyOf: - type: string - type: 'null' description: Specific campaign ID to seed title: Campaign Id description: Specific campaign ID to seed - name: parent_id in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter campaigns by parent_id title: Parent Id description: Filter campaigns by parent_id - name: num_suggestions in: query required: false schema: type: integer maximum: 20 minimum: 1 description: Number of suggestions per campaign default: 5 title: Num Suggestions description: Number of suggestions per campaign - name: add_performance in: query required: false schema: type: boolean description: Add performance data to audiences default: true title: Add Performance description: Add performance data to audiences - name: add_suggestions in: query required: false schema: type: boolean description: Add AI suggestions default: true title: Add Suggestions description: Add AI suggestions responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/seed/campaign-insights: get: tags: - Seeders summary: Seed Campaign Insights Endpoint description: 'Seed the campaign_insights collection with realistic sample data. Generates 90 days of time series, 7 targeting change batches with 20 total audience operations, and derived summary statistics. If a campaign already has insights data it will be replaced. Query Parameters: - campaign_id: Seed insights for a specific campaign (optional) - parent_id: Seed insights for all campaigns under a company (optional) Examples: - Seed all campaigns: GET /seed/campaign-insights - Seed specific campaign: GET /seed/campaign-insights?campaign_id=6957d233ed139f90b161370c - Seed for a company: GET /seed/campaign-insights?parent_id=Octave' operationId: seed_campaign_insights_endpoint_api_v1_seed_campaign_insights_get security: - HTTPBearer: [] parameters: - name: campaign_id in: query required: false schema: anyOf: - type: string - type: 'null' description: Specific campaign ID to seed insights for title: Campaign Id description: Specific campaign ID to seed insights for - name: parent_id in: query required: false schema: anyOf: - type: string - type: 'null' description: Filter campaigns by parent_id title: Parent Id description: Filter campaigns by parent_id responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/clients: get: tags: - Users summary: Get All Companies operationId: get_all_companies_api_v1_user_clients_get security: - HTTPBearer: [] parameters: - name: search in: query required: false schema: anyOf: - type: string minLength: 3 maxLength: 20 - type: 'null' title: Search tag description: Query string to search the company description: Query string to search the company - 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: All clients content: application/json: schema: $ref: '#/components/schemas/Page_Company_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/list: post: tags: - Users summary: Get Company Users operationId: get_company_users_api_v1_user_list_post security: - HTTPBearer: [] parameters: - name: search in: query required: false schema: anyOf: - type: string minLength: 3 maxLength: 20 - type: 'null' title: Search tag description: Query string to search the user in a company description: Query string to search the user in a company - 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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CompanyRequest' responses: '200': description: All Company users content: application/json: schema: $ref: '#/components/schemas/Page_Any_' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/clients/default/{default_client_id}: put: tags: - Users summary: Update Default Client operationId: update_default_client_api_v1_user_clients_default__default_client_id__put security: - HTTPBearer: [] parameters: - name: default_client_id in: path required: true schema: type: string example: 5eb7cf5a86d9755df3a6c593 title: Default Client Id responses: '200': description: Client updated successfully content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/company/default: post: tags: - Users summary: Update Default Company operationId: update_default_company_api_v1_user_company_default_post requestBody: content: application/json: schema: $ref: '#/components/schemas/CompanyCreateUsersRequest' required: true responses: '200': description: Client updated successfully content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/v1/user/update-user-association: post: tags: - Users summary: Update User Association operationId: update_user_association_api_v1_user_update_user_association_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: required: true content: application/json: schema: $ref: '#/components/schemas/CreateCompanyUsersRequest' responses: '200': description: User linked content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/create-users-with-roles: post: tags: - Users summary: Create Users With Roles description: "Creates multiple Cognito users in bulk with specific roles and associated companies.\n\ \nExpects payload like:\n{\n \"emails\": [\"imran+bulk1@covatic.com\", \"imran+bulk2@covatic.com\"\ ],\n \"roles\": [\"super_admin\"],\n \"associated_companies\": [\n {\n \ \ \"parent_id\": \"BBC\",\n \"parent_type\": \"company\",\n \"is_default\"\ : true,\n \"permissions\": [\"insights\", \"advertising\"]\n }\n ],\n \ \ \"company\": {\n \"parent_id\": \"BBC\",\n \"parent_type\": \"company\"\n }\n\ }" operationId: create_users_with_roles_api_v1_user_create_users_with_roles_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: required: true content: application/json: schema: $ref: '#/components/schemas/CreateUsersWithRolesRequest' responses: '200': description: Users created with roles content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/resend-invite: post: tags: - Users summary: Resend Invite description: Resend invite to an existing Cognito user operationId: resend_invite_api_v1_user_resend_invite_post requestBody: content: application/json: schema: $ref: '#/components/schemas/UserEmailRequestModel' required: true responses: '200': description: User invite sent successfully content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/v1/user/delete/{user_cognito_id}: delete: tags: - Users summary: Delete User description: "Delete a user from Cognito, the database, and QuickSight.\n\nProcess:\n1. Retrieve\ \ user record from DB (to obtain email and company for QS cleanup)\n2. Attempt to delete from\ \ Cognito\n3. If user deleted from Cognito OR user doesn't exist in Cognito:\n - Proceed to\ \ delete from database\n4. Best-effort removal from QuickSight (revoke dashboard + delete QS user)\n\ 5. If Cognito deletion fails with an error:\n - Do NOT delete from database to maintain data\ \ consistency\n - Raise HTTP 500 error\n\nArgs:\n user_cognito_id: The Cognito user ID to\ \ delete\n\nReturns:\n Success response with deletion details\n\nRaises:\n HTTPException:\ \ If Cognito deletion fails due to error or user not found anywhere" operationId: delete_user_api_v1_user_delete__user_cognito_id__delete security: - HTTPBearer: [] parameters: - name: user_cognito_id in: path required: true schema: type: string title: User Cognito Id responses: '200': description: User deleted successfully content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/user/update: put: tags: - Users summary: Update User description: "Update user's associated companies and roles.\n\nExpects payload like:\n{\n \"\ user_cognito_id\": \"3314b812-d061-7062-b980-5acc06868d34\",\n \"associated_companies\": [\n\ \ {\n \"parent_id\": \"Covatic US\",\n \"parent_type\": \"company\"\ ,\n \"is_default\": false,\n \"permissions\": [\"insights\", \"advertising\"\ ]\n },\n {\n \"parent_id\": \"Covatic\",\n \"parent_type\"\ : \"company\",\n \"is_default\": true,\n \"permissions\": [\"insights\"\ , \"advertising\"]\n }\n ],\n \"roles\": [\"admin\"]\n}" operationId: update_user_api_v1_user_update_put requestBody: content: application/json: schema: $ref: '#/components/schemas/UpdateUserRequestModel' required: true responses: '200': description: User updated successfully content: application/json: schema: $ref: '#/components/schemas/models__profile__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/v1/company/add: post: tags: - Company summary: Onboard Company operationId: onboard_company_api_v1_company_add_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: required: true content: application/json: schema: $ref: '#/components/schemas/Company' responses: '200': description: Company added content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/company/{id}: get: tags: - Company summary: Get Company Data operationId: get_company_data_api_v1_company__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: Company data retrieved content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' put: tags: - Company summary: Update Company Data description: 'Update a company by ID with the provided data. Only the fields provided in the request body will be updated.' operationId: update_company_data_api_v1_company__id__put 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: Company Update responses: '200': description: Company updated content: application/json: schema: $ref: '#/components/schemas/models__common__Response' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' delete: tags: - Company summary: Delete Company operationId: delete_company_api_v1_company__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: Company deleted from the database content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/qa-debug/audience: post: tags: - QA and Debug summary: Debug Audience operationId: debug_audience_api_v1_qa_debug_audience_post requestBody: content: application/json: schema: $ref: '#/components/schemas/QARequest' required: true responses: '200': description: Audience data retrieved content: application/json: schema: title: Response Debug Audience Api V1 Qa Debug Audience Post '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: - HTTPBearer: [] /api/v1/chat-gpt/completions: post: tags: - ChatGPT summary: Streaming chat completion proxy description: Proxies an OpenAI Chat Completions request on behalf of the caller and streams the response back as Server-Sent Events in the exact format OpenAI uses. operationId: chat_completions_api_v1_chat_gpt_completions_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 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ChatCompletionRequest' responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: AdEngine: type: string enum: - google_ad_manager - adswizz title: AdEngine description: Ad engine enumeration - different ad serving platforms AddSuggestionItem: properties: audience_code: type: string title: Audience Code name: type: string title: Name reach: type: number minimum: 0.0 title: Reach performance: anyOf: - $ref: '#/components/schemas/PerformanceRating' - type: 'null' reason: anyOf: - type: string - type: 'null' title: Reason suggested_by: anyOf: - type: string - type: 'null' title: Suggested By type: object required: - audience_code - name - reach title: AddSuggestionItem description: Single suggestion item to add AddSuggestionsRequest: properties: suggestions: items: $ref: '#/components/schemas/AddSuggestionItem' type: array maxItems: 20 minItems: 1 title: Suggestions type: object required: - suggestions title: AddSuggestionsRequest description: Request body for adding suggestions AudienceCodeFormat: type: string enum: - numeric_6 - alphanumeric_3 title: AudienceCodeFormat description: Audience code format enumeration AudienceRemovalRequest: properties: reason: anyOf: - type: string - type: 'null' title: Reason description: Optional reason for removal type: object title: AudienceRemovalRequest description: Request body for removing an audience BulkAddAudienceItem: properties: audience_code: type: string title: Audience Code description: Audience code name: type: string title: Name description: Audience display name reason: anyOf: - type: string - type: 'null' title: Reason description: Reason for adding this audience type: object required: - audience_code - name title: BulkAddAudienceItem description: Single audience item for bulk add BulkAddAudiencesRequest: properties: audiences: items: $ref: '#/components/schemas/BulkAddAudienceItem' type: array maxItems: 50 minItems: 1 title: Audiences type: object required: - audiences title: BulkAddAudiencesRequest description: Request body for bulk adding audiences to a smart campaign CampaignCreateRequest: properties: name: type: string maxLength: 255 minLength: 3 title: Name description: Campaign name description: anyOf: - type: string - type: 'null' title: Description description: Optional campaign description tags: items: type: string type: array title: Tags description: Array of tag names type: $ref: '#/components/schemas/CampaignType' description: Campaign type orderId: anyOf: - type: string maxLength: 100 - type: 'null' title: Orderid description: Client-provided order ID (optional) advertiserName: anyOf: - type: string maxLength: 255 - type: 'null' title: Advertisername description: Advertiser name (optional) startDate: anyOf: - type: string - type: 'null' title: Startdate description: Campaign start date (YYYY-MM-DD), defaults to current date if not provided endDate: anyOf: - type: string - type: 'null' title: Enddate description: Campaign end date (YYYY-MM-DD), defaults to one month from start date if not provided platforms: items: type: string type: array title: Platforms description: Platforms (empty means all platforms) status: $ref: '#/components/schemas/CampaignStatus' description: Campaign status default: Draft outcomes: items: $ref: '#/components/schemas/CampaignOutcome' type: array title: Outcomes description: List of campaign outcomes outcomePixels: items: $ref: '#/components/schemas/OutcomePixel' type: array title: Outcomepixels description: List of outcome pixels with tracking codes simple_campaign: anyOf: - $ref: '#/components/schemas/SimpleCampaign' - type: 'null' description: Simple campaign configuration (required for Simple campaigns) smart_campaign: anyOf: - $ref: '#/components/schemas/SmartCampaign' - type: 'null' description: Smart campaign configuration (required for Smart campaigns) createdBy: anyOf: - type: string - type: 'null' title: Createdby description: User email of campaign creator (optional, will use JWT sub if not provided) type: object required: - name - type title: CampaignCreateRequest description: Request model for creating a campaign CampaignOutcome: type: string enum: - click_through - view - purchase - form_fill - sign_up - add_to_cart - page_view - download - video_view - custom title: CampaignOutcome description: Campaign outcome enumeration - trackable outcomes/events for attribution campaigns CampaignStatus: type: string enum: - Live - Draft - Completed title: CampaignStatus description: Campaign status enumeration CampaignStatusUpdateRequest: properties: status: $ref: '#/components/schemas/CampaignStatus' description: New campaign status type: object required: - status title: CampaignStatusUpdateRequest description: Request model for updating campaign status only CampaignType: type: string enum: - Attribution - Smart - Notification - Simple title: CampaignType description: Campaign type enumeration CampaignUpdateRequest: properties: name: anyOf: - type: string maxLength: 255 minLength: 3 - type: 'null' title: Name description: Campaign name description: anyOf: - type: string - type: 'null' title: Description tags: anyOf: - items: type: string type: array - type: 'null' title: Tags type: anyOf: - $ref: '#/components/schemas/CampaignType' - type: 'null' orderId: anyOf: - type: string maxLength: 100 - type: 'null' title: Orderid description: Client-provided order ID advertiserName: anyOf: - type: string maxLength: 255 - type: 'null' title: Advertisername description: Advertiser name (optional) startDate: anyOf: - type: string - type: 'null' title: Startdate endDate: anyOf: - type: string - type: 'null' title: Enddate platforms: anyOf: - items: type: string type: array - type: 'null' title: Platforms status: anyOf: - $ref: '#/components/schemas/CampaignStatus' - type: 'null' outcomes: anyOf: - items: $ref: '#/components/schemas/CampaignOutcome' type: array - type: 'null' title: Outcomes outcomePixels: anyOf: - items: $ref: '#/components/schemas/OutcomePixel' type: array - type: 'null' title: Outcomepixels simple_campaign: anyOf: - $ref: '#/components/schemas/SimpleCampaign' - type: 'null' smart_campaign: anyOf: - $ref: '#/components/schemas/SmartCampaign' - type: 'null' type: object title: CampaignUpdateRequest description: Request model for updating a campaign (partial update) ChatCompletionRequest: properties: model: type: string title: Model default: gpt-3.5-turbo stream: type: boolean title: Stream default: true messages: items: $ref: '#/components/schemas/routes__chat_gpt__ChatMessage' type: array title: Messages type: object required: - messages title: ChatCompletionRequest ChatRequest: properties: message: type: string maxLength: 2000 title: Message description: User message conversation_history: items: $ref: '#/components/schemas/routes__ai_audience_agent__ChatMessage' type: array title: Conversation History description: Previous conversation messages. Pass empty list for first message. model: anyOf: - type: string - type: 'null' title: Model description: 'Model to use: ''haiku'' (default), ''sonnet'', or ''opus''' default: haiku additionalProperties: false type: object required: - message title: ChatRequest examples: - conversation_history: [] message: I want to target affluent homeowners who are interested in luxury travel ChatResponse: properties: status_code: type: integer title: Status Code response_type: type: string title: Response Type description: type: string title: Description data: $ref: '#/components/schemas/ChatResponseData' type: object required: - status_code - response_type - description - data title: ChatResponse ChatResponseData: properties: response: type: string title: Response description: Claude's text response conversation_history: items: additionalProperties: true type: object type: array title: Conversation History description: Updated conversation history to pass back suggested_audience: anyOf: - $ref: '#/components/schemas/SuggestedAudience' - type: 'null' description: Present when Claude has generated and tested an audience type: object required: - response - conversation_history title: ChatResponseData Client: properties: client_id: type: string title: Client Id example: 5eb7cf5a86d9755df3a6c593 client_name: type: string title: Client Name platform: type: string title: Platform location: anyOf: - type: string - type: 'null' title: Location country: type: string title: Country sec_type: type: string title: Sec Type bucket_name: type: string title: Bucket Name code_name: type: string title: Code Name cluster_reference: type: string title: Cluster Reference restricted_access: type: boolean title: Restricted Access type: object required: - client_id - client_name - platform - country - sec_type - bucket_name - code_name - cluster_reference - restricted_access title: Client Company: properties: _id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Id description: MongoDB document ObjectID revision_id: anyOf: - type: string format: uuid - type: 'null' title: Revision Id hidden: true company_name: type: string minLength: 1 title: Company Name description: Company name must not be empty. company_permissions: items: type: string type: array title: Company Permissions qs_dashboard: additionalProperties: type: string type: object title: Qs Dashboard default: {} sub_companies: items: $ref: '#/components/schemas/SubCompany' type: array title: Sub Companies audience_code_format: anyOf: - $ref: '#/components/schemas/AudienceCodeFormat' - type: 'null' description: Format for generating audience codes. Defaults to 6-digit numeric. default: numeric_6 type: object required: - company_name - company_permissions - sub_companies title: Company example: audience_code_format: numeric_6 company_name: Octave company_permissions: - insights - advertising sub_companies: - clients: - client_id: '123' client_name: Bauer UK Client 1 country: UK platform: Web sub_company_name: Bauer UK sub_company_permissions: - insights - notifications - clients: - client_id: '789' client_name: News UK Client 1 sub_company_name: News UK sub_company_permissions: - insights - notifications CompanyAccess: properties: parent_type: type: string title: Parent Type parent_id: type: string title: Parent Id is_default: anyOf: - type: boolean - type: 'null' title: Is Default default: false permissions: items: type: string type: array title: Permissions type: object required: - parent_type - parent_id - permissions title: CompanyAccess CompanyCreateUsersRequest: properties: parent_id: type: string title: Parent Id parent_type: type: string title: Parent Type type: object required: - parent_id - parent_type title: CompanyCreateUsersRequest CompanyRequest: properties: parent_id: type: string title: Parent Id parent_type: type: string title: Parent Type type: object required: - parent_id - parent_type title: CompanyRequest CreateCompanyUsersRequest: properties: emails: items: type: string format: email type: array title: Emails company: $ref: '#/components/schemas/CompanyCreateUsersRequest' type: object required: - emails - company title: CreateCompanyUsersRequest CreateUsersWithRolesRequest: properties: emails: items: type: string format: email type: array title: Emails roles: items: type: string type: array title: Roles associated_companies: items: $ref: '#/components/schemas/CompanyAccess' type: array title: Associated Companies company: $ref: '#/components/schemas/CompanyCreateUsersRequest' type: object required: - emails - roles - associated_companies - company title: CreateUsersWithRolesRequest EventTraitCreate: properties: smart_match: anyOf: - type: string maxLength: 500 - type: 'null' title: Smart Match description: Smart match description (max 500 characters) keywords: items: type: string type: array title: Keywords default: [] url: items: type: string type: array title: Url default: [] media_properties: items: type: string type: array title: Media Properties default: [] media_properties_display_names: items: type: string type: array title: Media Properties Display Names default: [] frequency: anyOf: - $ref: '#/components/schemas/Frequency' - type: 'null' event_types: anyOf: - $ref: '#/components/schemas/EventTypes' - type: 'null' type: object title: EventTraitCreate EventTraitUpdate: properties: smart_match: anyOf: - type: string maxLength: 500 - type: 'null' title: Smart Match description: Smart match description (max 500 characters) keywords: anyOf: - items: type: string type: array - type: 'null' title: Keywords url: anyOf: - items: type: string type: array - type: 'null' title: Url media_properties: anyOf: - items: type: string type: array - type: 'null' title: Media Properties media_properties_display_names: anyOf: - items: type: string type: array - type: 'null' title: Media Properties Display Names frequency: anyOf: - $ref: '#/components/schemas/Frequency' - type: 'null' event_types: anyOf: - $ref: '#/components/schemas/EventTypes' - type: 'null' type: object title: EventTraitUpdate EventTypes: properties: audioContent: type: boolean title: Audiocontent default: false videoContent: type: boolean title: Videocontent default: false pageView: type: boolean title: Pageview default: false customEvent: type: boolean title: Customevent default: false type: object title: EventTypes Flags: properties: released: type: boolean title: Released deleted: type: boolean title: Deleted type: object required: - released - deleted title: Flags Frequency: properties: count: type: integer title: Count time: type: integer title: Time period: type: string title: Period type: object required: - count - time - period title: Frequency HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError Location: properties: _id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Id description: MongoDB document ObjectID revision_id: anyOf: - type: string format: uuid - type: 'null' title: Revision Id hidden: true name: type: string title: Name postcode: type: string title: Postcode country: type: string title: Country type: object required: - name - postcode - country title: Location example: name: North East, England postcode: UKC MediaPropertyOptions: properties: _id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Id description: MongoDB document ObjectID revision_id: anyOf: - type: string format: uuid - type: 'null' title: Revision Id hidden: true domains: items: type: string type: array maxItems: 110 title: Domains platform: items: type: string type: array title: Platform display_name: type: string maxLength: 200 title: Display Name parent_id: type: string title: Parent Id created_at: type: string format: date-time title: Created At updated_at: type: string format: date-time title: Updated At type: object required: - display_name - parent_id title: MediaPropertyOptions example: display_name: talkSPORT - Web domains: - talksport.com - iframe.talksport.com parent_id: News UK platform: - web MediaPropertyOptionsCreate: properties: domains: items: type: string type: array maxItems: 110 minItems: 1 title: Domains platform: items: type: string type: array minItems: 1 title: Platform display_name: type: string maxLength: 200 title: Display Name type: object required: - domains - platform - display_name title: MediaPropertyOptionsCreate MediaPropertyOptionsUpdate: properties: domains: anyOf: - items: type: string type: array maxItems: 110 minItems: 1 - type: 'null' title: Domains platform: anyOf: - items: type: string type: array minItems: 1 - type: 'null' title: Platform display_name: anyOf: - type: string maxLength: 200 - type: 'null' title: Display Name type: object title: MediaPropertyOptionsUpdate Metadata: properties: name: type: string title: Name update_every: type: integer title: Update Every expires: anyOf: - type: string format: date-time - type: 'null' title: Expires cvcql_version: type: string title: Cvcql Version flags: anyOf: - $ref: '#/components/schemas/Flags' - type: 'null' annotations: anyOf: - additionalProperties: true type: object - type: 'null' title: Annotations tags: anyOf: - items: type: string type: array - type: 'null' title: Tags client_id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Client Id profile_version: type: integer title: Profile Version type: object required: - update_every - cvcql_version - profile_version title: Metadata NestedTraits: properties: nested_traits: items: additionalProperties: true type: object type: array title: Nested Traits exclusions: items: additionalProperties: true type: object type: array title: Exclusions locations: items: additionalProperties: true type: object type: array title: Locations platforms: items: additionalProperties: true type: object type: array title: Platforms type: object title: NestedTraits examples: - exclusions: - source: covatic trait: Contextual|Connectivity|Vauxhall driver trait_code: REL660824 locations: - name: London, England postcode: UKI - name: South East, England postcode: UKJ nested_traits: - traits: - source: acorn trait: CHANNEL PREFERENCE|Get info/marketing from car dealership or manufacturer|Email trait_code: PROCHANNEL PREFERENCE|Get info/marketing from car dealership or manufacturer|Email - operator: AND traits: - source: acorn trait: POPULATION (16+)|Ethnicity|Black trait_code: PROPOPULATION (16+)|Ethnicity|Black - operator: OR traits: - source: covatic trait: Contextual|Activity|Drivers trait_code: REL2054 - source: covatic trait: Contextual|Activity|Commuters trait_code: REL2051 platforms: - name: Web - name: Mobile NoteCreateRequest: properties: title: type: string maxLength: 255 minLength: 1 title: Title description: Note title content: type: string minLength: 1 title: Content description: Note content entity_type: $ref: '#/components/schemas/NoteEntityType' description: Type of entity (audience/campaign) entity_id: type: string title: Entity Id description: Entity identifier (audience_code or campaign _id) type: object required: - title - content - entity_type - entity_id title: NoteCreateRequest description: Request model for creating a note NoteEntityType: type: string enum: - audience - campaign title: NoteEntityType description: Entity type for notes - can be attached to audiences or campaigns NoteUpdateRequest: properties: title: anyOf: - type: string maxLength: 255 minLength: 1 - type: 'null' title: Title description: Note title content: anyOf: - type: string minLength: 1 - type: 'null' title: Content description: Note content type: object title: NoteUpdateRequest description: Request model for updating a note (partial update) OutcomePixel: properties: outcome: $ref: '#/components/schemas/CampaignOutcome' description: Campaign outcome type pixels: items: $ref: '#/components/schemas/Pixel' type: array title: Pixels description: List of pixels for different ad engines type: object required: - outcome title: OutcomePixel description: Outcome with associated pixels Page_Any_: properties: items: items: {} type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[Any] Page_Company_: properties: items: items: $ref: '#/components/schemas/Company' type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[Company] Page_Location_: properties: items: items: $ref: '#/components/schemas/Location' type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[Location] Page_MediaPropertyOptions_: properties: items: items: $ref: '#/components/schemas/MediaPropertyOptions' type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[MediaPropertyOptions] Page_Platform_: properties: items: items: $ref: '#/components/schemas/Platform' type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[Platform] Page_Tag_: properties: items: items: $ref: '#/components/schemas/Tag' type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[Tag] Page_str_: properties: items: items: type: string type: array title: Items total: type: integer minimum: 0.0 title: Total page: type: integer minimum: 1.0 title: Page size: type: integer minimum: 1.0 title: Size pages: type: integer minimum: 0.0 title: Pages type: object required: - items - total - page - size - pages title: Page[str] PerformanceRating: type: string enum: - Excellent - Good - Average - Poor - Deleted title: PerformanceRating description: Performance rating enumeration for audience performance tracking PerformanceUpdate: properties: audience_code: type: string title: Audience Code performance: $ref: '#/components/schemas/PerformanceRating' type: object required: - audience_code - performance title: PerformanceUpdate description: Single performance update Pixel: properties: outcome: $ref: '#/components/schemas/CampaignOutcome' description: Campaign outcome type engine: $ref: '#/components/schemas/AdEngine' description: Ad serving platform code: type: string title: Code description: Pixel tracking code customEventName: anyOf: - type: string - type: 'null' title: Customeventname description: Custom event name (required when outcome is 'custom') type: object required: - outcome - engine - code title: Pixel description: Individual pixel tracking code for an ad engine Platform: properties: _id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Id description: MongoDB document ObjectID revision_id: anyOf: - type: string format: uuid - type: 'null' title: Revision Id hidden: true name: type: string title: Name type: object required: - name title: Platform example: name: Mobile QARequest: properties: parent_id: type: string title: Parent Id parent_type: type: string title: Parent Type audience_code: type: string title: Audience Code type: object required: - parent_id - parent_type - audience_code title: QARequest QSInput: properties: id_token: type: string title: Id Token user_name: type: string title: User Name q_bar: type: boolean title: Q Bar type: object required: - id_token - user_name - q_bar title: QSInput RecommendationCadence: type: string enum: - daily - weekly title: RecommendationCadence description: Controls how often the AI generates audience suggestions for Smart Campaigns RetargetingTraitCreate: properties: campaign_name: type: string maxLength: 30 title: Campaign Name description: Campaign name (max 30 characters) campaign_id: type: string title: Campaign Id description: Campaign ID type: object required: - campaign_name - campaign_id title: RetargetingTraitCreate RetargetingTraitUpdate: properties: campaign_name: anyOf: - type: string maxLength: 30 - type: 'null' title: Campaign Name description: Campaign name (max 30 characters) campaign_id: anyOf: - type: string - type: 'null' title: Campaign Id description: Campaign ID type: object title: RetargetingTraitUpdate SharedProfile: properties: metadata: $ref: '#/components/schemas/Metadata' nested_query: anyOf: - additionalProperties: true type: object - type: 'null' title: Nested Query query: anyOf: - additionalProperties: true type: object - type: 'null' title: Query type: object required: - metadata title: SharedProfile example: metadata: annotations: ad_campaign_estimator: created_by: test@covatic.com estimated_duration: 4 estimated_reach: 308000 insights/display-name: Audience builder version 2.0 record 1 insights/last-updated: '2020-11-01T14:15:57.253Z' cvcql_version: 0.1.0 expires: '2200-12-31T00:00:00' flags: deleted: false released: true profile_version: 1 tags: [] update_every: 7 query: exclusions: - source: covatic trait: Contextual|Connectivity|Vauxhall driver trait_code: REL660824 locations: - id: 64edd22c91e2cc2d5867f515 name: West Midlands, England - id: 64edd22c91e2cc2d5867f516 name: East of England - id: 64edd22c91e2cc2d5867f517 name: London, England platforms: - id: 64e707e43f77650a53a84e3d name: Smart Speaker - id: 64e707e43f77650a53a84e3b name: Mobile - id: 64e707e43f77650a53a84e3c name: Browser query: - traits: - source: acorn trait: HOUSING|House Type|Detached house trait_code: PROHOUSING|House Type|Detached house - operator: AND traits: - source: covatic trait: Contextual|Connectivity|Audi driver trait_code: REL522705 - source: covatic trait: Contextual|Connectivity|Toyota driver trait_code: REL113563 - operator: AND traits: - source: acorn trait: 'HOUSING|House Size|Number of Beds : 3' trait_code: 'PROHOUSING|House Size|Number of Beds : 3' - source: acorn trait: 'HOUSING|House Size|Number of Beds : 4' trait_code: 'PROHOUSING|House Size|Number of Beds : 4' SimpleCampaign: properties: estimated_duration: type: number minimum: 0.0 title: Estimated Duration description: Duration in days (can be 0 or greater) estimated_reach: type: number minimum: 0.0 title: Estimated Reach description: Combined reach from all audiences (can be 0 or greater) exclusions: items: {} type: array title: Exclusions description: Combined exclusions from all selected audiences locations: items: {} type: array title: Locations description: Combined locations from all selected audiences nested_traits: items: {} type: array title: Nested Traits description: Combined traits from all selected audiences audiences: items: $ref: '#/components/schemas/SimpleCampaignAudience' type: array title: Audiences description: Array of audience details type: object required: - estimated_duration - estimated_reach title: SimpleCampaign description: Simple campaign configuration with audience data SimpleCampaignAudience: properties: audience_code: type: string title: Audience Code description: Audience code name: type: string title: Name description: Audience name reach: type: number minimum: 0.0 title: Reach description: Audience reach (can be 0 or greater) type: object required: - audience_code - name - reach title: SimpleCampaignAudience description: Audience information for simple campaign SmartCampaign: properties: estimated_duration: type: number minimum: 0.0 title: Estimated Duration description: Duration in days estimated_reach: type: number minimum: 0.0 title: Estimated Reach description: Combined reach from all audiences exclusions: items: {} type: array title: Exclusions description: Combined exclusions from all selected audiences locations: items: {} type: array title: Locations description: Combined locations from all selected audiences nested_traits: items: {} type: array title: Nested Traits description: Combined traits from all selected audiences audiences: items: $ref: '#/components/schemas/SmartCampaignAudience' type: array title: Audiences description: Array of audience details with performance metrics suggestions: items: $ref: '#/components/schemas/SmartCampaignSuggestion' type: array title: Suggestions description: Array of suggested audiences from data team recommendation_cadence: $ref: '#/components/schemas/RecommendationCadence' description: How often the AI generates audience suggestions (daily or weekly) default: daily type: object required: - estimated_duration - estimated_reach title: SmartCampaign description: Smart campaign configuration with performance tracking and suggestions SmartCampaignAudience: properties: audience_code: type: string title: Audience Code description: Audience code name: type: string title: Name description: Audience name reach: type: number minimum: 0.0 title: Reach description: Audience reach performance: anyOf: - $ref: '#/components/schemas/PerformanceRating' - type: 'null' description: 'Performance rating: Excellent, Good, Average, or Poor' type: object required: - audience_code - name - reach title: SmartCampaignAudience description: Audience information for smart campaign with performance tracking SmartCampaignSuggestion: properties: audience_code: type: string title: Audience Code description: Suggested audience code (unique identifier) name: type: string title: Name description: Suggested audience name reach: type: number minimum: 0.0 title: Reach description: Estimated audience reach performance: anyOf: - $ref: '#/components/schemas/PerformanceRating' - type: 'null' description: 'Expected performance rating: Excellent, Good, Average, or Poor' reason: anyOf: - type: string - type: 'null' title: Reason description: Reason why this audience is suggested (from data team) status: $ref: '#/components/schemas/SuggestionStatus' description: Current status of the suggestion default: pending suggested_at: type: string format: date-time title: Suggested At description: When this suggestion was created suggested_by: anyOf: - type: string - type: 'null' title: Suggested By description: Data team member who suggested this audience type: object required: - audience_code - name - reach title: SmartCampaignSuggestion description: Suggested audience for smart campaign SubCompany: properties: sub_company_name: type: string title: Sub Company Name clients: items: $ref: '#/components/schemas/Client' type: array title: Clients sub_company_permissions: items: type: string type: array title: Sub Company Permissions type: object required: - sub_company_name - clients - sub_company_permissions title: SubCompany SuggestedAudience: properties: nested_traits: items: additionalProperties: true type: object type: array title: Nested Traits description: The nested traits structure four_week_reach: type: integer title: Four Week Reach description: Estimated 4-week reach percent_of_total: type: number title: Percent Of Total description: Percentage of total audience type: object required: - nested_traits - four_week_reach - percent_of_total title: SuggestedAudience SuggestionDismissalRequest: properties: reason: anyOf: - type: string - type: 'null' title: Reason description: Optional reason for dismissal type: object title: SuggestionDismissalRequest description: Request body for dismissing a suggestion SuggestionStatus: type: string enum: - pending - accepted - dismissed title: SuggestionStatus description: Suggestion status enumeration Tag: properties: _id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Id description: MongoDB document ObjectID revision_id: anyOf: - type: string format: uuid - type: 'null' title: Revision Id hidden: true title: type: string title: Title parent_id: anyOf: - type: string - type: 'null' title: Parent Id created_at: anyOf: - type: string format: date-time - type: 'null' title: Created At updated_at: anyOf: - type: string format: date-time - type: 'null' title: Updated At type: object required: - title title: Tag example: client_id: 5db1c6f588976c89fcb6bd70 title: Family UpdateMetadata: properties: name: anyOf: - type: string - type: 'null' title: Name update_every: type: integer title: Update Every expires: anyOf: - type: string format: date-time - type: 'null' title: Expires cvcql_version: type: string title: Cvcql Version flags: anyOf: - $ref: '#/components/schemas/Flags' - type: 'null' annotations: anyOf: - additionalProperties: true type: object - type: 'null' title: Annotations tags: anyOf: - items: type: string type: array - type: 'null' title: Tags client_id: anyOf: - type: string example: 5eb7cf5a86d9755df3a6c593 - type: 'null' title: Client Id profile_version: type: integer title: Profile Version type: object required: - update_every - cvcql_version - profile_version title: UpdateMetadata UpdatePerformanceRequest: properties: performance_updates: items: $ref: '#/components/schemas/PerformanceUpdate' type: array minItems: 1 title: Performance Updates type: object required: - performance_updates title: UpdatePerformanceRequest description: Request body for updating performance UpdateProfile: properties: metadata: $ref: '#/components/schemas/UpdateMetadata' nested_query: anyOf: - additionalProperties: true type: object - type: 'null' title: Nested Query query: anyOf: - additionalProperties: true type: object - type: 'null' title: Query type: object required: - metadata title: UpdateProfile example: metadata: annotations: ad_campaign_estimator: created_by: test@covatic.com estimated_duration: 4 estimated_reach: 308000 insights/display-name: Audience builder version 2.0 record 1 insights/last-updated: '2020-11-01T14:15:57.253Z' cvcql_version: 0.1.0 expires: '2200-12-31T00:00:00' flags: deleted: false released: true name: Audience builder version 2.0 record 1 profile_version: 1 tags: [] update_every: 7 query: exclusions: - source: covatic trait: Contextual|Connectivity|Vauxhall driver trait_code: REL660824 locations: - id: 64edd22c91e2cc2d5867f515 name: West Midlands, England - id: 64edd22c91e2cc2d5867f516 name: East of England - id: 64edd22c91e2cc2d5867f517 name: London, England platforms: - id: 64e707e43f77650a53a84e3d name: Smart Speaker - id: 64e707e43f77650a53a84e3b name: Mobile - id: 64e707e43f77650a53a84e3c name: Browser query: - traits: - source: acorn trait: HOUSING|House Type|Detached house trait_code: PROHOUSING|House Type|Detached house - operator: AND traits: - source: covatic trait: Contextual|Connectivity|Audi driver trait_code: REL522705 - source: covatic trait: Contextual|Connectivity|Toyota driver trait_code: REL113563 - operator: AND traits: - source: acorn trait: 'HOUSING|House Size|Number of Beds : 3' trait_code: 'PROHOUSING|House Size|Number of Beds : 3' - source: acorn trait: 'HOUSING|House Size|Number of Beds : 4' trait_code: 'PROHOUSING|House Size|Number of Beds : 4' UpdateUserRequestModel: properties: user_cognito_id: type: string title: User Cognito Id associated_companies: items: $ref: '#/components/schemas/CompanyAccess' type: array title: Associated Companies roles: items: type: string type: array title: Roles type: object required: - user_cognito_id - associated_companies - roles title: UpdateUserRequestModel UserEmailRequestModel: properties: email: type: string format: email title: Email type: object required: - email title: UserEmailRequestModel ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type input: title: Input ctx: type: object title: Context type: object required: - loc - msg - type title: ValidationError models__common__Response: properties: status_code: type: integer title: Status Code response_type: type: string title: Response Type description: type: string title: Description data: anyOf: - {} - type: 'null' title: Data type: object required: - status_code - response_type - description - data title: Response example: data: Sample data description: Operation successful response_type: success status_code: 200 models__profile__Response: properties: status_code: type: integer title: Status Code response_type: type: string title: Response Type description: type: string title: Description data: anyOf: - {} - type: 'null' title: Data type: object required: - status_code - response_type - description - data title: Response example: data: [] description: Operation successful response_type: success status_code: 200 models__trait__Response: properties: status_code: type: integer title: Status Code response_type: type: string title: Response Type description: type: string title: Description data: anyOf: - {} - type: 'null' title: Data type: object required: - status_code - response_type - description - data title: Response example: data: Sample data description: Operation successful response_type: success status_code: 200 routes__ai_audience_agent__ChatMessage: properties: role: type: string title: Role description: 'Message role: ''user'' or ''assistant''' content: title: Content description: Message content type: object required: - role - content title: ChatMessage routes__chat_gpt__ChatMessage: properties: role: type: string title: Role content: type: string title: Content type: object required: - role - content title: ChatMessage securitySchemes: HTTPBearer: type: http scheme: bearer