openapi: 3.1.0
info:
  title: External API
  version: 07923ec5a7d4db7188f198c6acd10aa4ec2c3c2f
servers:
  - url: https://api.tryprofound.com
    description: Production Server
paths:
  /v1/org:
    get:
      tags:
        - Organization
      summary: List organizations
      description: >-
        Return every organization the caller's API key grants access to. Use
        this to discover organization IDs before calling endpoints that accept
        an `organization_id` filter.
      operationId: list_organizations_v1_org_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/Organization'
                type: array
                title: Response List Organizations V1 Org Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/org/regions:
    get:
      tags:
        - Organization
      summary: Get Regions
      description: Get the organization regions.
      operationId: get_regions_v1_org_regions_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  format: uuid
              - type: 'null'
            description: >-
              Restrict results to one or more organizations the caller belongs
              to. Repeat the parameter to target multiple orgs (e.g.
              `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
              data from every organization the caller has access to.
            title: Organization Ids
          description: >-
            Restrict results to one or more organizations the caller belongs to.
            Repeat the parameter to target multiple orgs (e.g.
            `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
            data from every organization the caller has access to.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NamedResource'
                title: Response Get Regions V1 Org Regions Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/models:
    get:
      tags:
        - Organization
      summary: Get Models
      description: Get the organization models.
      operationId: get_models_v1_org_models_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  $ref: '#/components/schemas/NamedResource'
                type: array
                title: Response Get Models V1 Org Models Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/org/domains:
    get:
      tags:
        - Organization
      summary: Get Domains
      description: Get the organization domains.
      operationId: get_domains_v1_org_domains_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  format: uuid
              - type: 'null'
            description: >-
              Restrict results to one or more organizations the caller belongs
              to. Repeat the parameter to target multiple orgs (e.g.
              `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
              data from every organization the caller has access to.
            title: Organization Ids
          description: >-
            Restrict results to one or more organizations the caller belongs to.
            Repeat the parameter to target multiple orgs (e.g.
            `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
            data from every organization the caller has access to.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DomainWithOrganization'
                title: Response Get Domains V1 Org Domains Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/assets:
    get:
      tags:
        - Organization
      summary: Get Assets
      description: >-
        Get the organization assets, one row per (asset, organization) pair.


        An asset's category can belong to multiple organizations; one asset row
        is

        emitted per owning org so no association is silently dropped.
      operationId: get_assets_v1_org_assets_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  format: uuid
              - type: 'null'
            description: >-
              Restrict results to one or more organizations the caller belongs
              to. Repeat the parameter to target multiple orgs (e.g.
              `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
              data from every organization the caller has access to.
            title: Organization Ids
          description: >-
            Restrict results to one or more organizations the caller belongs to.
            Repeat the parameter to target multiple orgs (e.g.
            `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
            data from every organization the caller has access to.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationAssetsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/personas:
    get:
      tags:
        - Organization
      summary: Get Personas
      description: |-
        Get the organization personas, one row per (persona, organization) pair.

        Same (item, org) fan-out as ``get_assets``: a persona's category can be
        owned by multiple orgs, and each owning org gets its own row so no
        association is silently dropped.
      operationId: get_personas_v1_org_personas_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  format: uuid
              - type: 'null'
            description: >-
              Restrict results to one or more organizations the caller belongs
              to. Repeat the parameter to target multiple orgs (e.g.
              `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
              data from every organization the caller has access to.
            title: Organization Ids
          description: >-
            Restrict results to one or more organizations the caller belongs to.
            Repeat the parameter to target multiple orgs (e.g.
            `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
            data from every organization the caller has access to.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationPersonasWithCategoryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Categories
      description: >-
        Get the organization categories, one row per (category, organization)
        pair.
      operationId: get_categories_v1_org_categories_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_ids
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
                  format: uuid
              - type: 'null'
            description: >-
              Restrict results to one or more organizations the caller belongs
              to. Repeat the parameter to target multiple orgs (e.g.
              `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
              data from every organization the caller has access to.
            title: Organization Ids
          description: >-
            Restrict results to one or more organizations the caller belongs to.
            Repeat the parameter to target multiple orgs (e.g.
            `?organization_ids=<id1>&organization_ids=<id2>`). Omit to return
            data from every organization the caller has access to.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CategoryWithOrganization'
                title: Response Get Categories V1 Org Categories Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/topics:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Topics
      description: Get the topics for a specific category.
      operationId: get_category_topics_v1_org_categories__category_id__topics_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Topic'
                title: >-
                  Response Get Category Topics V1 Org Categories  Category Id 
                  Topics Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/tags:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Tags
      description: Get the tags for a specific category.
      operationId: get_category_tags_v1_org_categories__category_id__tags_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Tag'
                title: >-
                  Response Get Category Tags V1 Org Categories  Category Id 
                  Tags Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/regions:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Regions
      description: Get the regions for a specific category.
      operationId: get_category_regions_v1_org_categories__category_id__regions_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/NamedResource'
                title: >-
                  Response Get Category Regions V1 Org Categories  Category Id 
                  Regions Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/citation-categories:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Citation Categories
      description: >-
        Get the citation categories for a category: the built-in buckets plus
        any custom categories.
      operationId: >-
        get_category_citation_categories_v1_org_categories__category_id__citation_categories_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CitationCategoriesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/citation-tags:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Citation Tags
      description: Get the custom citation tags defined for a category.
      operationId: >-
        get_category_citation_tags_v1_org_categories__category_id__citation_tags_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CitationTagsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v1/org/categories/{category_id}/prompts:
    get:
      tags:
        - Organization
        - Categories
      summary: List prompts
      description: >-
        Retrieve prompts in a category with optional filtering by type, topic,
        tag, region, platform, or persona. Supports cursor-based pagination.
      operationId: get_category_prompts_v1_org_categories__category_id__prompts_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 10000
            exclusiveMinimum: 0
            description: Maximum number of prompts to return.
            default: 10000
            title: Limit
          description: Maximum number of prompts to return.
        - name: cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Pagination cursor from a previous response.
            title: Cursor
          description: Pagination cursor from a previous response.
        - name: order_by
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/PromptOrderBy'
            description: Field used to order prompts.
            default: created_at
          description: Field used to order prompts.
        - name: order_dir
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/OrderByDirection'
            description: Sort direction for the selected order field.
            default: desc
          description: Sort direction for the selected order field.
        - name: analysis_type
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/AnalysisType'
            description: Filter by analysis type (visibility, sentiment, accuracy).
            default: []
            title: Analysis Type
          description: Filter by analysis type (visibility, sentiment, accuracy).
        - name: prompt_type
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/PromptType'
            description: Deprecated. Use analysis_type instead.
            deprecated: true
            default: []
            title: Prompt Type
          description: Deprecated. Use analysis_type instead.
          deprecated: true
        - name: status
          in: query
          required: false
          schema:
            type: array
            items:
              enum:
                - active
                - disabled
              type: string
            description: Filter by prompt status. Defaults to `active` only.
            default:
              - active
            title: Status
          description: Filter by prompt status. Defaults to `active` only.
        - name: topic_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            description: Filter by topic IDs.
            default: []
            title: Topic Id
          description: Filter by topic IDs.
        - name: tag_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            description: Filter by tag IDs.
            default: []
            title: Tag Id
          description: Filter by tag IDs.
        - name: region_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            description: Filter by region IDs.
            default: []
            title: Region Id
          description: Filter by region IDs.
        - name: platform_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            description: Filter by platform IDs.
            default: []
            title: Platform Id
          description: Filter by platform IDs.
        - name: persona_id
          in: query
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
            description: Filter by persona IDs.
            default: []
            title: Persona Id
          description: Filter by persona IDs.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryPromptsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    post:
      tags:
        - Organization
        - Categories
      summary: Create prompts
      description: >-
        Create one or more prompts in a category. Topics and tags are
        auto-created if referenced by name and not yet existing. Use dry_run to
        preview without persisting.
      operationId: create_category_prompts_v1_org_categories__category_id__prompts_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePromptsBody'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePromptsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    patch:
      tags:
        - Organization
        - Categories
      summary: Update prompts
      description: >-
        Update one or more existing prompts. Only provided fields are changed.
        Dimension fields (regions, platforms, personas, tags) replace the full
        set when provided. Use dry_run to preview without persisting.
      operationId: update_category_prompts_v1_org_categories__category_id__prompts_patch
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePromptsBody'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatePromptsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/prompts/status:
    patch:
      tags:
        - Organization
        - Categories
      summary: Update prompt status
      description: >-
        Bulk-update the status of one or more prompts. Prompts already in the
        target status are skipped. Use dry_run to preview without persisting.


        Status options:

        - 'active': Prompts will run daily.

        - 'disabled': Prompts will not run moving forward, but historical data
        is preserved.

        - 'deleted': Prompts are deleted along with historical data
      operationId: >-
        update_category_prompt_status_v1_org_categories__category_id__prompts_status_patch
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdatePromptStatusBody'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdatePromptStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/assets:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Assets
      operationId: get_category_assets_v1_org_categories__category_id__assets_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CategoryAsset'
                title: >-
                  Response Get Category Assets V1 Org Categories  Category Id 
                  Assets Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/org/categories/{category_id}/personas:
    get:
      tags:
        - Organization
        - Categories
      summary: Get Category Personas
      operationId: get_category_personas_v1_org_categories__category_id__personas_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Category Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CategoryPersonasResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/prompts/answers:
    post:
      tags:
        - Prompts
      summary: Get Answers
      operationId: get_answers_v1_prompts_answers_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswersQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswersResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/citations:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Citations
      description: >-
        Get citations for a given category.


        The ``mentioned`` filter supports ``is true`` and ``is false``. It uses
        the

        latest page analysis available at or before ``end_date``; pages without
        an

        analysis by then are excluded from both values. ``citation_share`` keeps
        all

        otherwise eligible citations in its denominator when this filter is
        used.
      operationId: query_citations_v1_reports_citations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CitationsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CitationsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/citations/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Citations
      description: >-
        Stream citations with the same filter semantics as the non-streaming
        route.
      operationId: stream_citations_v1_reports_citations_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StreamCitationsQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits a `summary` event first, then one
            `row` event per streamed row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - properties:
                      query:
                        additionalProperties: true
                        type: object
                        title: Query
                        description: The normalized query used to build the stream.
                      total_rows:
                        type: integer
                        title: Total Rows
                        description: >-
                          Total number of rows available before pagination is
                          applied.
                    type: object
                    required:
                      - query
                      - total_rows
                    title: SSESummaryEventData
                  - additionalProperties: true
                    type: object
                    description: A streamed citations report row payload.
              examples:
                summary:
                  summary: Initial summary event payload
                  value:
                    query:
                      category_id: 12345678-1234-5678-1234-567812345678
                      metrics:
                        - count
                      dimensions:
                        - model
                    total_rows: 2
                row:
                  summary: Streamed row event payload
                  value:
                    model:
                      id: 11111111-1111-1111-1111-111111111111
                      name: GPT-4
                    count: 42
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/visibility:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Visibility
      description: Query visibility report.
      operationId: query_visibility_v1_reports_visibility_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisibilityQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/visibility/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Visibility
      operationId: stream_visibility_v1_reports_visibility_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StreamVisibilityQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits a `summary` event first, then one
            `row` event per streamed row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - properties:
                      query:
                        additionalProperties: true
                        type: object
                        title: Query
                        description: The normalized query used to build the stream.
                      total_rows:
                        type: integer
                        title: Total Rows
                        description: >-
                          Total number of rows available before pagination is
                          applied.
                    type: object
                    required:
                      - query
                      - total_rows
                    title: SSESummaryEventData
                  - additionalProperties: true
                    type: object
                    description: A streamed visibility report row payload.
              examples:
                summary:
                  summary: Initial summary event payload
                  value:
                    query:
                      category_id: 12345678-1234-5678-1234-567812345678
                      metrics:
                        - count
                      dimensions:
                        - model
                    total_rows: 2
                row:
                  summary: Streamed row event payload
                  value:
                    asset:
                      id: 11111111-1111-1111-1111-111111111111
                      name: Brand A
                    mentions_count: 7
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/sentiment:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Sentiment
      description: Get citations for a given category.
      operationId: query_sentiment_v1_reports_sentiment_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SentimentQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/sentiment/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Sentiment
      operationId: stream_sentiment_v1_reports_sentiment_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StreamSentimentQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits a `summary` event first, then one
            `row` event per streamed row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - properties:
                      query:
                        additionalProperties: true
                        type: object
                        title: Query
                        description: The normalized query used to build the stream.
                      total_rows:
                        type: integer
                        title: Total Rows
                        description: >-
                          Total number of rows available before pagination is
                          applied.
                    type: object
                    required:
                      - query
                      - total_rows
                    title: SSESummaryEventData
                  - additionalProperties: true
                    type: object
                    description: A streamed sentiment report row payload.
              examples:
                summary:
                  summary: Initial summary event payload
                  value:
                    query:
                      category_id: 12345678-1234-5678-1234-567812345678
                      metrics:
                        - count
                      dimensions:
                        - model
                    total_rows: 2
                row:
                  summary: Streamed row event payload
                  value:
                    theme: price
                    occurrences: 12
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/sentiment-v2:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Sentiment V2
      operationId: query_sentiment_v2_v1_reports_sentiment_v2_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SentimentV2ReportQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SentimentV2ReportResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/web-search-results:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Web Search Results
      description: Get web search results for a given category.
      operationId: query_web_search_results_v1_reports_web_search_results_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebSearchResultsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebSearchResultsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/web-search-results/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Web Search Results
      operationId: stream_web_search_results_v1_reports_web_search_results_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StreamWebSearchResultsQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits a `summary` event first, then one
            `row` event per streamed row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - properties:
                      query:
                        additionalProperties: true
                        type: object
                        title: Query
                        description: The normalized query used to build the stream.
                      total_rows:
                        type: integer
                        title: Total Rows
                        description: >-
                          Total number of rows available before pagination is
                          applied.
                    type: object
                    required:
                      - query
                      - total_rows
                    title: SSESummaryEventData
                  - additionalProperties: true
                    type: object
                    description: A streamed web-search-results report row payload.
              examples:
                summary:
                  summary: Initial summary event payload
                  value:
                    query:
                      category_id: 12345678-1234-5678-1234-567812345678
                      metrics:
                        - count
                      dimensions:
                        - model
                    total_rows: 2
                row:
                  summary: Streamed row event payload
                  value:
                    model:
                      id: 11111111-1111-1111-1111-111111111111
                      name: GPT-4
                    count: 42
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/referrals:
    post:
      tags:
        - Reports
        - Human Referrals
      summary: Get Referrals Report V1
      description: >-
        Get referral traffic report from the daily aggregated materialized view.


        This endpoint queries pre-aggregated daily referral data, making it
        efficient

        for large date ranges and high-traffic sites.
      operationId: get_referrals_report_v1_v1_reports_referrals_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReferralsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/bots:
    post:
      tags:
        - Reports
        - Bot Traffic Reports
      summary: Get Bots Report V1
      description: |-
        Get bot traffic report from the daily aggregated materialized view.

        This endpoint queries pre-aggregated daily bot data, making it efficient
        for large date ranges and high-traffic sites.

        Metrics:
        - count: unique bot visits
        - citations: unique citation events
        - indexing: unique indexing events
        - training: unique training events
        - last_visit: most recent visit timestamp
      operationId: get_bots_report_v1_v1_reports_bots_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BotsReportQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/content/{asset_id}/optimization:
    get:
      tags:
        - Content
        - beta
        - Content optimization
      summary: Optimization List
      operationId: optimization_list_v1_content__asset_id__optimization_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: asset_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Asset Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 50000
            exclusiveMinimum: 0
            description: Maximum number of results to return
            default: 10000
            title: Limit
          description: Maximum number of results to return
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            description: Offset for pagination
            default: 0
            title: Offset
          description: Offset for pagination
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentOptimizationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/content/{asset_id}/optimization/{content_id}:
    get:
      tags:
        - Content
        - beta
        - Content optimization
      summary: Optimization Analysis
      operationId: >-
        optimization_analysis_v1_content__asset_id__optimization__content_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: asset_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Asset Id
        - name: content_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Content Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContentOptimizationAnalysisResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/knowledge-bases:
    get:
      tags:
        - Knowledge bases
      summary: List Knowledge Bases
      description: List knowledge bases accessible to the API key.
      operationId: list_knowledge_bases_v1_knowledge_bases_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListKnowledgeBasesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/knowledge-bases/{knowledge_base_id}/search:
    post:
      tags:
        - Knowledge bases
      summary: Search Knowledge Base
      description: Search a knowledge base and return matching snippets or pages.
      operationId: search_knowledge_base_v1_knowledge_bases__knowledge_base_id__search_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchKnowledgeBaseRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KnowledgeBaseSearchResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/knowledge-bases/{knowledge_base_id}/documents:
    post:
      tags:
        - Knowledge bases
      summary: Add Document
      description: >-
        Add a document to a knowledge base using JSON text or multipart file
        upload.
      operationId: add_document_v1_knowledge_bases__knowledge_base_id__documents_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentOperationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                name:
                  description: Unique document name.
                  minLength: 1
                  title: Name
                  type: string
                text:
                  description: Text content to add to the document.
                  minLength: 1
                  title: Text
                  type: string
                folder:
                  anyOf:
                    - minLength: 1
                      type: string
                    - type: 'null'
                  description: Folder path to add the document under.
                  title: Folder
              required:
                - name
                - text
              title: AddDocumentRequest
              type: object
          multipart/form-data:
            schema:
              type: object
              required:
                - name
                - file
              properties:
                name:
                  type: string
                  description: Document name or path.
                folder:
                  type: string
                  description: Folder path containing the document.
                file:
                  type: string
                  format: binary
                  description: Document file to upload.
      x-codeSamples: []
    put:
      tags:
        - Knowledge bases
      summary: Update Document
      description: >-
        Overwrite a knowledge base document using JSON text or multipart file
        upload.
      operationId: update_document_v1_knowledge_bases__knowledge_base_id__documents_put
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentOperationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              additionalProperties: false
              properties:
                name:
                  description: Document name or path to update.
                  minLength: 1
                  title: Name
                  type: string
                text:
                  description: Replacement text content for the document.
                  minLength: 1
                  title: Text
                  type: string
                folder:
                  anyOf:
                    - minLength: 1
                      type: string
                    - type: 'null'
                  description: Folder path containing the document.
                  title: Folder
              required:
                - name
                - text
              title: UpdateDocumentRequest
              type: object
          multipart/form-data:
            schema:
              type: object
              required:
                - name
                - file
              properties:
                name:
                  type: string
                  description: Document name or path.
                folder:
                  type: string
                  description: Folder path containing the document.
                file:
                  type: string
                  format: binary
                  description: Document file to upload.
      x-codeSamples: []
    delete:
      tags:
        - Knowledge bases
      summary: Delete Document
      description: Delete an existing document from a knowledge base.
      operationId: delete_document_v1_knowledge_bases__knowledge_base_id__documents_delete
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteDocumentRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentOperationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/knowledge-bases/{knowledge_base_id}/folders:
    post:
      tags:
        - Knowledge bases
      summary: Add Folder
      description: Create an empty folder at the requested knowledge base path.
      operationId: add_folder_v1_knowledge_bases__knowledge_base_id__folders_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddFolderRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FolderOperationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    delete:
      tags:
        - Knowledge bases
      summary: Delete Folder
      description: >-
        Delete a folder. With recursive=false, non-empty folders return 409 and
        no contents are deleted.
      operationId: delete_folder_v1_knowledge_bases__knowledge_base_id__folders_delete
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: knowledge_base_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique knowledge base ID.
            title: Knowledge Base Id
          description: Unique knowledge base ID.
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteFolderRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FolderOperationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/integrations:
    get:
      tags:
        - Integrations
      summary: List Integrations
      description: >-
        List the organization's connected integrations.


        Returns every connected integration by default, each with its lifecycle

        `status`; pass `status_filter` to narrow to one status (e.g.
        `needs_reauth`).

        Each row's `integration_id` is the value a hub-backed node needs bound
        to it.
      operationId: list_integrations_v1_integrations_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
        - name: provider
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to a single connector/provider id, e.g. `google_drive`.
            title: Provider
          description: Filter to a single connector/provider id, e.g. `google_drive`.
        - name: status_filter
          in: query
          required: false
          schema:
            anyOf:
              - enum:
                  - active
                  - pending
                  - needs_reauth
                  - revoking
                  - revoked
                type: string
              - type: 'null'
            description: Filter to one lifecycle status. Omitted returns all statuses.
            title: Status Filter
          description: Filter to one lifecycle status. Omitted returns all statuses.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IntegrationsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/documents:
    get:
      tags:
        - Documents
      summary: List documents
      description: >-
        List documents visible to your organization, newest-modified-first.


        Documents are ordered by last-modified time, most recent first, with no
        other

        sort option. This is a walk over a live, mutable collection: a document
        created

        or modified while you are paging can shift which page it lands on, so a
        single

        walk may show it to you twice or, rarely, skip it.


        This response never includes a total count. Upstream counts totals
        before

        applying your organization's access filter, so a total, or treating a
        short

        page as the last one, would misreport what you can actually see. Keep

        following `pagination.next_cursor` until it comes back null — that, and
        not

        a short or even an empty page, is the end of the walk. A page whose rows
        the

        access filter removed entirely is empty while later pages still hold

        documents, so the last page of a walk may legitimately be an empty one.
      operationId: list_documents_v1_documents_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: >-
              ID of the organization whose documents to list. Required. The
              caller must be a member of this organization.
            title: Organization Id
          description: >-
            ID of the organization whose documents to list. Required. The caller
            must be a member of this organization.
        - name: q
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter to documents whose name contains this text,
              case-insensitively. Matches only the document's name, never its
              content — a query that finds nothing does not mean the topic is
              unwritten, only that no title mentions it. Blank or omitted
              returns every document. Ignored when sent alongside `next_cursor`,
              which carries the filter the walk started with. Matching is
              name-only as of this release; broader matching may follow if
              upstream changes how it indexes the name column.
            title: Q
          description: >-
            Filter to documents whose name contains this text,
            case-insensitively. Matches only the document's name, never its
            content — a query that finds nothing does not mean the topic is
            unwritten, only that no title mentions it. Blank or omitted returns
            every document. Ignored when sent alongside `next_cursor`, which
            carries the filter the walk started with. Matching is name-only as
            of this release; broader matching may follow if upstream changes how
            it indexes the name column.
        - name: sort
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Documents are always ordered newest-modified-first (`updated_at
              DESC`, then `created_at DESC`, then `id DESC`); there is no
              parameter that changes this. `recency` is the only accepted value,
              and passing it is a no-op that names the guarantee rather than
              altering it — any other value is rejected outright rather than
              silently ignored. Ordering is never re-applied to a returned page
              either: that would only be consistent within the page, not across
              a paginated walk.
            title: Sort
          description: >-
            Documents are always ordered newest-modified-first (`updated_at
            DESC`, then `created_at DESC`, then `id DESC`); there is no
            parameter that changes this. `recency` is the only accepted value,
            and passing it is a no-op that names the guarantee rather than
            altering it — any other value is rejected outright rather than
            silently ignored. Ordering is never re-applied to a returned page
            either: that would only be consistent within the page, not across a
            paginated walk.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 50
            exclusiveMinimum: 0
            default: 20
            title: Limit
        - name: next_cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Next Cursor
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDocumentsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    post:
      tags:
        - Documents
      summary: Create a document
      description: >-
        Create a Profound document with markdown content.


        `organization_id` is required and you must be a member of it. You choose
        the

        document's `id`, and creation is idempotent on it: repeating the request
        returns

        the existing document rather than creating a second one.


        New documents are visible only to their creator; share them from the
        Profound app,

        or open one with the `url` in the response.


        A `201` response does not confirm that a new document was created: it is
        also

        returned when `id` already existed, in which case the existing document
        comes

        back unchanged. Upstream gives no signal to tell the two apart, so this
        endpoint

        does not claim to either — it is safe to retry with the same `id` either
        way.
      operationId: create_document_v1_documents_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDocumentRequest'
              description: The document to create.
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateDocumentResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/documents/{document_id}:
    get:
      tags:
        - Documents
      summary: Read a document
      description: >-
        Read a document: its metadata, its default tab's body, its other tabs,
        its comments, and its version hash.


        You can read any document you have access to in the Profound app,
        including ones

        created there rather than through this API.


        By default this is a preview: the body is truncated to save your
        context, and the

        version hash is withheld so a preview alone can never be used to replace
        a document

        blindly. Pass `preview=false` when you intend to write.
      operationId: read_document_v1_documents__document_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: document_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: ID of the document.
            title: Document Id
          description: ID of the document.
        - name: organization_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: >-
              ID of the organization that owns the document. Required — Profound
              API keys are user-scoped, so the owning organization must be named
              explicitly. The caller must be a member of this organization.
            title: Organization Id
          description: >-
            ID of the organization that owns the document. Required — Profound
            API keys are user-scoped, so the owning organization must be named
            explicitly. The caller must be a member of this organization.
        - name: include_tabs
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Include the document's other tabs. On by default — a tab body is
              part of the document, not an aside. Off, `additional_tabs` is
              omitted from the response rather than returned as an empty list.
            default: true
            title: Include Tabs
          description: >-
            Include the document's other tabs. On by default — a tab body is
            part of the document, not an aside. Off, `additional_tabs` is
            omitted from the response rather than returned as an empty list.
        - name: include_comments
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Include the document's review comments, each mapped to `{content,
              context}`. On by default — a comment is part of the document's
              review state, not an aside. Turn it off to skip the comment-thread
              walk upstream; off, `comments` is omitted from the response rather
              than returned as an empty list.
            default: true
            title: Include Comments
          description: >-
            Include the document's review comments, each mapped to `{content,
            context}`. On by default — a comment is part of the document's
            review state, not an aside. Turn it off to skip the comment-thread
            walk upstream; off, `comments` is omitted from the response rather
            than returned as an empty list.
        - name: preview
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Bound every body in the response — `content_markdown` and each
              tab's — and set `content_truncated` if any was cut. On by default.
              Upstream has no partial-read of its own — every read is a full
              round trip through the collaborative editor — so this saves your
              context, not upstream cost. A preview read also omits
              `version_hash`, on purpose: a hash returned next to a body you
              have not fully seen invites replacing content you never read. Pass
              `preview=false` before you intend to write, to get the whole body,
              `content_truncated: false`, and the hash.
            default: true
            title: Preview
          description: >-
            Bound every body in the response — `content_markdown` and each tab's
            — and set `content_truncated` if any was cut. On by default.
            Upstream has no partial-read of its own — every read is a full round
            trip through the collaborative editor — so this saves your context,
            not upstream cost. A preview read also omits `version_hash`, on
            purpose: a hash returned next to a body you have not fully seen
            invites replacing content you never read. Pass `preview=false`
            before you intend to write, to get the whole body,
            `content_truncated: false`, and the hash.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReadDocumentResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    patch:
      tags:
        - Documents
      summary: Rename or reshare a document
      description: >-
        Rename a document, change who can see it, or both in one call.


        Renaming sets a permanent lock on the title, and changing visibility can
        silently

        change who has access — see the `name` and `visibility` field
        descriptions for what

        each one does before you use it.


        Renaming needs edit access; changing visibility is creator-only, and
        upstream

        enforces it. You can act on a document this API created, or one you
        created

        yourself in the Profound app — not one merely shared with you.
      operationId: patch_document_v1_documents__document_id__patch
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: document_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: ID of the document.
            title: Document Id
          description: ID of the document.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateDocumentRequest'
              description: The fields to change.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Document'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    delete:
      tags:
        - Documents
      summary: Delete a document
      description: >-
        Delete a document created through this integration.


        Only documents created through this integration can be deleted here. A
        document

        created in the Profound app can never be deleted through this route,
        even by the

        person who owns it — creation provenance is stamped once, at creation,
        and is never

        backfilled onto documents made another way.


        The delete is soft: the row is marked deleted at the storage layer
        rather than

        destroyed. There is no restore through this API, or any other — treat a
        delete as

        final even though the data itself is not gone.


        A 404 means the document is not visible to you at all. It covers three
        cases the

        response does not distinguish, on purpose: the document never existed,
        it was

        already deleted by an earlier call to this same route, or it exists but
        your

        credential resolves no role on it. Deleting the same document twice
        returns 404 on

        the second call, not a second 204.


        A 403 means the opposite: the document is visible to you but not
        deletable here,

        and the message says which rule refused — it was not created through
        this

        integration, or you are not its creator. Deleting is creator-only, so
        edit access

        is not enough to remove a document out from under its owner.
      operationId: delete_document_v1_documents__document_id__delete
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: document_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: ID of the document.
            title: Document Id
          description: ID of the document.
        - name: organization_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: >-
              ID of the organization that owns the document. You must be a
              member of it.
            title: Organization Id
          description: >-
            ID of the organization that owns the document. You must be a member
            of it.
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/documents/{document_id}/content:
    post:
      tags:
        - Documents
      summary: Replace a document's content
      description: >-
        Overwrite a document's entire body with new markdown, replacing what it
        held before.


        This is a whole-body replace, not a patch: send the complete new text
        every time. An

        empty `content_markdown` is valid and clears the document.


        Two destructive side effects apply on every call, regardless of what you
        send:


        - The document collapses to its default tab. Every non-default tab is
        deleted, and
          the comments map is cleared for **all** tabs, including the default one — a
          document with a live comment thread on any tab loses it.
        - `skip_title_sync` defaults to `false`, matching the Profound app: the
        title follows
          the new content's first heading, so a replace silently renames the document unless
          the heading matches the current title or `skip_title_sync` is set.

        There is no compare-and-swap: this call does not accept a precondition,
        and nothing

        stops two concurrent replaces from silently overwriting each other
        last-writer-wins.

        Upstream's own `version_hash` documentation says as much — the token is
        "still a

        change detector rather than a precondition: a caller must not treat a
        matching token

        as licence to overwrite blindly, because it names the room at a moment
        cortex

        observed and not the moment its own write lands." Sending a
        `working_version_hash`

        (or any spelling of it) is rejected with a `400` naming this rather than
        accepted

        and silently discarded, which is what happens on the upstream route this
        wraps.


        You can replace a document this API created, or one you created yourself
        directly —

        not merely one shared with you.
      operationId: replace_document_content_v1_documents__document_id__content_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: document_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: ID of the document.
            title: Document Id
          description: ID of the document.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReplaceDocumentContentRequest'
              description: The content to write.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReplaceDocumentContentResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/ads/openai-ads/ad-account/insights:
    get:
      tags:
        - OpenAI Ads
      summary: Get Account Insights
      description: >-
        Get ad account insights for the organization's OpenAI Ads partner brand.


        `aggregation_level=campaign` returns one row per campaign (with
        `campaign_id`

        / `campaign_name` and all metrics), so every campaign's insights come
        back in

        a single call; `time_granularity=daily` gives per-day rows (e.g. daily
        spend).
      operationId: get_account_insights_v1_ads_openai_ads_ad_account_insights_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization scope for API keys that can access multiple
              organizations.
            title: Organization Id
          description: >-
            Organization scope for API keys that can access multiple
            organizations.
        - name: aggregation_level
          in: query
          required: false
          schema:
            anyOf:
              - enum:
                  - ad_account
                  - campaign
                  - ad_group
                  - ad
                type: string
              - type: 'null'
            description: >-
              Row entity for the insights breakdown. `campaign` returns one row
              per campaign.
            title: Aggregation Level
          description: >-
            Row entity for the insights breakdown. `campaign` returns one row
            per campaign.
        - name: time_granularity
          in: query
          required: false
          schema:
            anyOf:
              - enum:
                  - hourly
                  - daily
                  - monthly
                  - none
                type: string
              - type: 'null'
            description: >-
              Time bucket for the rows; `none` or omitted returns totals over
              the whole range.
            title: Time Granularity
          description: >-
            Time bucket for the rows; `none` or omitted returns totals over the
            whole range.
        - name: time_ranges[]
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  type: string
              - type: 'null'
            description: >-
              Time ranges as JSON objects, e.g. `{"type": "date_range", "since":
              "2026-07-01", "until": "2026-07-18"}`.
            title: Time Ranges[]
          description: >-
            Time ranges as JSON objects, e.g. `{"type": "date_range", "since":
            "2026-07-01", "until": "2026-07-18"}`.
        - name: limit
          in: query
          required: false
          schema:
            anyOf:
              - type: integer
                maximum: 2000
                minimum: 1
              - type: 'null'
            description: Maximum rows to return.
            title: Limit
          description: Maximum rows to return.
        - name: after
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Return items after this ID (forward pagination).
            title: After
          description: Return items after this ID (forward pagination).
        - name: before
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Return items before this ID (backward pagination).
            title: Before
          description: Return items before this ID (backward pagination).
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InsightsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects:
    get:
      tags:
        - Projects
      summary: List Projects
      operationId: list_projects_v1_projects_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: 'Comma-separated project statuses: suggested, tracked, retired.'
            title: Status
          description: 'Comma-separated project statuses: suggested, tracked, retired.'
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 200
            minimum: 1
            default: 100
            title: Limit
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
            title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    post:
      tags:
        - Projects
      summary: Create Project
      operationId: create_project_v1_projects_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectGenerationResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/generations:
    get:
      tags:
        - Projects
      summary: List Project Generations
      operationId: list_project_generations_v1_projects_generations_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
        - name: status
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Comma-separated generation statuses: queued, running, completed,
              failed.
            title: Status
          description: >-
            Comma-separated generation statuses: queued, running, completed,
            failed.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 200
            minimum: 1
            default: 100
            title: Limit
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
            title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectGenerationsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/generations/{run_id}:
    get:
      tags:
        - Projects
      summary: Get Project Generation Status
      operationId: get_project_generation_status_v1_projects_generations__run_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project generation run ID.
            title: Run Id
          description: Unique project generation run ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectGenerationStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}:
    get:
      tags:
        - Projects
      summary: Get Project
      operationId: get_project_v1_projects__project_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    delete:
      tags:
        - Projects
      summary: Delete Project
      operationId: delete_project_v1_projects__project_id__delete
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/status:
    get:
      tags:
        - Projects
      summary: Get Project Status
      operationId: get_project_status_v1_projects__project_id__status_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/archive:
    post:
      tags:
        - Projects
      summary: Archive Project
      operationId: archive_project_v1_projects__project_id__archive_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/ArchiveProjectRequest'
                - type: 'null'
              title: Body
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/unarchive:
    post:
      tags:
        - Projects
      summary: Unarchive Project
      operationId: unarchive_project_v1_projects__project_id__unarchive_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/tasks:
    get:
      tags:
        - Projects
      summary: List Project Tasks
      operationId: list_project_tasks_v1_projects__project_id__tasks_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListProjectTasksResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    post:
      tags:
        - Projects
      summary: Create Project Task
      operationId: create_project_task_v1_projects__project_id__tasks_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateProjectTaskRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectTaskResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/tasks/{task_id}:
    get:
      tags:
        - Projects
      summary: Get Project Task
      operationId: get_project_task_v1_projects__project_id__tasks__task_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project task ID.
            title: Task Id
          description: Unique project task ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectTaskDetailResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    patch:
      tags:
        - Projects
      summary: Update Project Task
      operationId: update_project_task_v1_projects__project_id__tasks__task_id__patch
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project task ID.
            title: Task Id
          description: Unique project task ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectTaskRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectTaskResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    delete:
      tags:
        - Projects
      summary: Delete Project Task
      operationId: delete_project_task_v1_projects__project_id__tasks__task_id__delete
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project task ID.
            title: Task Id
          description: Unique project task ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      responses:
        '204':
          description: Successful Response
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/projects/{project_id}/tasks/{task_id}/status:
    post:
      tags:
        - Projects
      summary: Update Project Task Status
      operationId: >-
        update_project_task_status_v1_projects__project_id__tasks__task_id__status_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project ID.
            title: Project Id
          description: Unique project ID.
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: Unique project task ID.
            title: Task Id
          description: Unique project task ID.
        - name: category_id
          in: query
          required: true
          schema:
            type: string
            format: uuid
            description: Category that owns the project.
            title: Category Id
          description: Category that owns the project.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateProjectTaskStatusRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectTaskStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/reports/query-fanouts:
    post:
      tags:
        - Reports
      summary: Query Fanouts
      operationId: query_fanouts_v1_reports_query_fanouts_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFanoutsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/shopping/visibility:
    post:
      tags:
        - Reports
      summary: Shopping Visibility
      operationId: shopping_visibility_v1_reports_shopping_visibility_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingVisibilityQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/item-visibility:
    post:
      tags:
        - Reports
      summary: Shopping Item Visibility
      operationId: shopping_item_visibility_v1_reports_shopping_item_visibility_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingItemVisibilityQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/merchant-distribution:
    post:
      tags:
        - Reports
      summary: Shopping Merchant Distribution
      operationId: >-
        shopping_merchant_distribution_v1_reports_shopping_merchant_distribution_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantDistributionQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/merchant-visibility-by-brand:
    post:
      tags:
        - Reports
      summary: Shopping Merchant Visibility By Brand
      operationId: >-
        shopping_merchant_visibility_by_brand_v1_reports_shopping_merchant_visibility_by_brand_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantVisibilityByBrandQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/merchant-by-items:
    post:
      tags:
        - Reports
      summary: Shopping Merchant By Items
      operationId: shopping_merchant_by_items_v1_reports_shopping_merchant_by_items_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantByItemsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/all-items-with-merchants:
    post:
      tags:
        - Reports
      summary: Shopping All Items With Merchants
      operationId: >-
        shopping_all_items_with_merchants_v1_reports_shopping_all_items_with_merchants_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingAllItemsWithMerchantsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/trigger-rate:
    post:
      tags:
        - Reports
      summary: Shopping Trigger Rate
      operationId: shopping_trigger_rate_v1_reports_shopping_trigger_rate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingTriggerRateQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/triggered-prompts:
    post:
      tags:
        - Reports
      summary: Shopping Triggered Prompts
      operationId: shopping_triggered_prompts_v1_reports_shopping_triggered_prompts_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingTriggeredPromptsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/triggered-topics:
    post:
      tags:
        - Reports
      summary: Shopping Triggered Topics
      operationId: shopping_triggered_topics_v1_reports_shopping_triggered_topics_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingTriggeredTopicsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/merchant-share:
    post:
      tags:
        - Reports
      summary: Shopping Merchant Share
      operationId: shopping_merchant_share_v1_reports_shopping_merchant_share_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantShareQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/product-merchant-urls:
    post:
      tags:
        - Reports
      summary: Shopping Product Merchant Urls
      operationId: >-
        shopping_product_merchant_urls_v1_reports_shopping_product_merchant_urls_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingProductMerchantUrlsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/reports/shopping/executions:
    post:
      tags:
        - Reports
      summary: Shopping Executions
      operationId: shopping_executions_v1_reports_shopping_executions_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingExecutionsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingRowsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
  /v1/agents:
    get:
      tags:
        - Agents
      summary: List agents
      description: >-
        List agents available to your organization.


        Agent status reflects whether an agent has ever been published.
        `published`

        agents have a live published version. `draft` agents have not been

        published yet.
      operationId: list_agents_v1_agents_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: statuses
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/ListAgentsStatusFilter'
              - type: 'null'
            description: >-
              Optional status filter. Use `published` to list agents that have a
              live published version, or `draft` to list agents that have not
              been published yet. Defaults to `published`.
            title: Statuses
          description: >-
            Optional status filter. Use `published` to list agents that have a
            live published version, or `draft` to list agents that have not been
            published yet. Defaults to `published`.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            exclusiveMinimum: 0
            default: 100
            title: Limit
        - name: next_cursor
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Next Cursor
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListAgentsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    post:
      tags:
        - Agents
      summary: Create an agent
      description: >-
        Create a new draft agent owned by the given organization.


        `organization_id` is required and you must be a member of it. The agent
        is created

        as a `draft`; publish it with `POST /v1/agents/{agent_id}/publish` once
        its graph

        is ready.
      operationId: create_agent_v1_agents_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAgentRequest'
              description: The agent to create.
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/{agent_id}/publish:
    post:
      tags:
        - Agents
      summary: Publish an agent
      description: >-
        Publish an agent's latest draft as its live published version.


        You must be a member of the agent's organization. Publishing promotes
        the current

        draft graph to a new published version. A draft that cannot produce its
        declared

        input/output contract is rejected with `422` and is not published.
      operationId: publish_agent_v1_agents__agent_id__publish_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent to publish.
            title: Agent Id
          description: The ID of the agent to publish.
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/node-types:
    get:
      tags:
        - Agents
      summary: List node types
      description: >-
        List the node types available for building agents.


        The set is deterministic and does not depend on the caller, so the
        response

        is safe to cache across sessions. Integration-dependent and
        dynamic-schema

        node types are intentionally excluded in v1.
      operationId: list_node_types_v1_agents_node_types_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListNodeTypesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/agents/node-types/{node_type}/schema:
    get:
      tags:
        - Agents
      summary: Get a node type schema
      description: >-
        Retrieve the JSON schema for a single node type.


        The `schema` field is an opaque JSON Schema for the node's
        configuration.

        Use `schema_version` as a cache key — it bumps whenever the schema
        changes.
      operationId: get_node_type_schema_v1_agents_node_types__node_type__schema_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: node_type
          in: path
          required: true
          schema:
            type: string
            description: The node type to fetch the schema for, e.g. `llm`.
            title: Node Type
          description: The node type to fetch the schema for, e.g. `llm`.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NodeSchemaResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/{agent_id}:
    get:
      tags:
        - Agents
      summary: Get an agent
      description: >-
        Retrieve an agent and its schema details.


        Agents can have both a live published version and a draft version with
        newer

        unpublished changes. Use the `version` parameter to choose which state
        to return.
      operationId: get_agent_v1_agents__agent_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent to retrieve.
            title: Agent Id
          description: The ID of the agent to retrieve.
        - name: version
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/AgentVersion'
            description: >-
              Version of the agent to retrieve. Use `published` for the live
              version, or `draft` for the latest unpublished changes for the
              same agent. Defaults to `published`.
            default: published
          description: >-
            Version of the agent to retrieve. Use `published` for the live
            version, or `draft` for the latest unpublished changes for the same
            agent. Defaults to `published`.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentDetail'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
    patch:
      tags:
        - Agents
      summary: Update an agent
      description: >-
        Update an agent's draft graph in place.


        You must be a member of the agent's organization. The agent's draft is
        replaced with the

        supplied graph and re-validated, so you can iterate one draft — create,
        then update per

        fix — instead of creating a new agent on every change. The response
        carries the updated

        `validation`; publish with `POST /v1/agents/{agent_id}/publish` once
        `validation.valid`.
      operationId: update_agent_v1_agents__agent_id__patch
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent to update.
            title: Agent Id
          description: The ID of the agent to update.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateAgentRequest'
              description: The new draft graph for the agent.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentDetail'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/{agent_id}/graph:
    get:
      tags:
        - Agents
      summary: Get an agent's graph
      description: >-
        Retrieve an agent's full workflow graph (`{nodes, edges}`).


        The graph is returned verbatim in the canonical dialect — the same shape
        `POST /v1/agents`

        and `PATCH /v1/agents/{agent_id}` accept — so a known-good agent can be
        read back, copied,

        and edited. Tool-backed nodes appear in their lowered `tool` form rather
        than the friendly

        v1 node types. A `draft` is visible only to its creator; the `published`
        version is visible

        across its organization.
      operationId: get_agent_graph_v1_agents__agent_id__graph_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent whose graph to retrieve.
            title: Agent Id
          description: The ID of the agent whose graph to retrieve.
        - name: version
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/AgentVersion'
            description: >-
              Version of the agent whose graph to retrieve. Use `published` for
              the live version, or `draft` for the latest unpublished changes.
              Defaults to `published`.
            default: published
          description: >-
            Version of the agent whose graph to retrieve. Use `published` for
            the live version, or `draft` for the latest unpublished changes.
            Defaults to `published`.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentGraph'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/{agent_id}/runs:
    post:
      tags:
        - Agents
      summary: Run an agent
      description: >-
        Start a new run for an agent.


        Runs always execute the agent's live published version, so the agent
        must be

        published first with `POST /v1/agents/{agent_id}/publish`. Unpublished
        drafts

        cannot be run.
      operationId: run_agent_v1_agents__agent_id__runs_post
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent to run.
            title: Agent Id
          description: The ID of the agent to run.
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - $ref: '#/components/schemas/RunAgentRequest'
                - type: 'null'
              description: Inputs to send to the agent run.
              title: Request
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptedAgentRun'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/agents/{agent_id}/runs/{run_id}:
    get:
      tags:
        - Agents
      summary: Get an agent run
      description: Retrieve the current status and result details for an agent run.
      operationId: get_agent_run_v1_agents__agent_id__runs__run_id__get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: agent_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the agent that owns the run.
            title: Agent Id
          description: The ID of the agent that owns the run.
        - name: run_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            description: The ID of the run to retrieve.
            title: Run Id
          description: The ID of the run to retrieve.
        - name: verbose
          in: query
          required: false
          schema:
            type: boolean
            description: Include each step's raw `outputs` payload in the execution trace.
            default: false
            title: Verbose
          description: Include each step's raw `outputs` payload in the execution trace.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentRun'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples: []
  /v1/reports/accuracy/overview:
    post:
      tags:
        - Reports
      summary: Accuracy Overview
      operationId: accuracy_overview_v1_reports_accuracy_overview_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccuracyOverviewQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccuracyOverviewResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/breakdown:
    post:
      tags:
        - Reports
      summary: Accuracy Breakdown
      operationId: accuracy_breakdown_v1_reports_accuracy_breakdown_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccuracyBreakdownQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccuracyBreakdownResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/citation-analysis:
    post:
      tags:
        - Reports
      summary: Accuracy Citation Analysis
      operationId: accuracy_citation_analysis_v1_reports_accuracy_citation_analysis_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccuracyCitationAnalysisQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccuracyCitationAnalysisResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/topic-ids:
    post:
      tags:
        - Reports
      summary: Accuracy Topic Ids
      operationId: accuracy_topic_ids_v1_reports_accuracy_topic_ids_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccuracyTopicIdsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                items:
                  type: string
                type: array
                title: Response Accuracy Topic Ids V1 Reports Accuracy Topic Ids Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/inaccurate-themes:
    post:
      tags:
        - Reports
      summary: Accuracy Inaccurate Themes
      operationId: accuracy_inaccurate_themes_v1_reports_accuracy_inaccurate_themes_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InaccurateThemesQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InaccurateThemesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/inaccurate-clusters:
    post:
      tags:
        - Reports
      summary: Accuracy Inaccurate Clusters
      operationId: >-
        accuracy_inaccurate_clusters_v1_reports_accuracy_inaccurate_clusters_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InaccurateClustersQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InaccurateClustersResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/inaccuracy-drivers:
    post:
      tags:
        - Reports
      summary: Accuracy Inaccuracy Drivers
      operationId: accuracy_inaccuracy_drivers_v1_reports_accuracy_inaccuracy_drivers_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InaccuracyDriversQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InaccuracyDriversResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/top-inaccurate-claims:
    post:
      tags:
        - Reports
      summary: Accuracy Top Inaccurate Claims
      operationId: >-
        accuracy_top_inaccurate_claims_v1_reports_accuracy_top_inaccurate_claims_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TopInaccurateClaimsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TopInaccurateClaimsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/claim-breakdown:
    post:
      tags:
        - Reports
      summary: Accuracy Claim Breakdown
      operationId: accuracy_claim_breakdown_v1_reports_accuracy_claim_breakdown_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimBreakdownQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimBreakdownResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/claim-citations:
    post:
      tags:
        - Reports
      summary: Accuracy Claim Citations
      operationId: accuracy_claim_citations_v1_reports_accuracy_claim_citations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClaimCitationsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClaimCitationsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/cluster-example-runs:
    post:
      tags:
        - Reports
      summary: Accuracy Cluster Example Runs
      operationId: >-
        accuracy_cluster_example_runs_v1_reports_accuracy_cluster_example_runs_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterExampleRunsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterExampleRunsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/cluster-verification-pairs:
    post:
      tags:
        - Reports
      summary: Accuracy Cluster Verification Pairs
      operationId: >-
        accuracy_cluster_verification_pairs_v1_reports_accuracy_cluster_verification_pairs_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ClusterVerificationPairsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ClusterVerificationPairsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v1/reports/accuracy/factcheck-setup-status:
    post:
      tags:
        - Reports
      summary: Accuracy Factcheck Setup Status
      operationId: >-
        accuracy_factcheck_setup_status_v1_reports_accuracy_factcheck_setup_status_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FactCheckSetupStatusQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactCheckSetupStatusResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/referrals:
    post:
      tags:
        - Reports
        - Human Referrals
      summary: Get Referrals Report V2
      description: >-
        Get referral traffic report from the hourly aggregated materialized view
        (UTC-based).


        Supports date_interval="hour", calendar intervals through "year",
        "quarter", and "relative_week".

        When `view_id` is provided, the query is scoped to that domain segment's
        hosts and paths.
      operationId: get_referrals_report_v2_v2_reports_referrals_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReferralsQueryV2'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/bots:
    post:
      tags:
        - Reports
        - Bot Traffic Reports
      summary: Get Bots Report V2
      description: >-
        Get bot traffic report from the hourly aggregated materialized view
        (UTC-based).


        Supports date_interval="hour", calendar intervals through "year",
        "quarter", and "relative_week".

        When `view_id` is provided, the query is scoped to that domain segment's
        hosts and paths.


        Metrics:

        - count: unique bot visits

        - citations: unique citation events (ai_assistant bot type)

        - indexing: unique indexing events (index bot type)

        - training: unique training events (ai_training bot type)

        - last_visit: most recent visit timestamp


        Dimensions:

        - date, path, bot_name, bot_provider, bot_type
      operationId: get_bots_report_v2_v2_reports_bots_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BotsReportQueryV2'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/domain-segments:
    get:
      tags:
        - Agent Analytics Domain Segments
      summary: List Domain Segments
      description: >-
        List domain segments visible to the caller for a workspace.


        Returns the id and name of every domain segment the caller can access,
        so a

        customer can discover a `view_id` to pass into agent analytics report
        queries.
      operationId: list_domain_segments_v2_domain_segments_get
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      parameters:
        - name: organization_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: uuid
              - type: 'null'
            description: >-
              Organization UUID to list segments for. Required when the caller
              belongs to multiple organizations.
            title: Organization Id
          description: >-
            Organization UUID to list segments for. Required when the caller
            belongs to multiple organizations.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/DomainSegmentListItem'
                title: Response List Domain Segments V2 Domain Segments Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /v2/reports/visibility:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Visibility V2
      operationId: query_visibility_v2_v2_reports_visibility_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisibilityV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VisibilityV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/visibility/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Visibility V2
      operationId: stream_visibility_v2_v2_reports_visibility_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VisibilityV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/VisibilityV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/VisibilityRow'
                    description: '`result` event payload — one visibility row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/citations:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Citations V2
      operationId: query_citations_v2_v2_reports_citations_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CitationsV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CitationsV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/citations/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Citations V2
      operationId: stream_citations_v2_v2_reports_citations_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CitationsV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/CitationsV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/CitationRow'
                    description: '`result` event payload — one citation row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/sentiment:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Sentiment V2
      operationId: query_sentiment_v2_v2_reports_sentiment_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SentimentV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SentimentV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/sentiment/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Sentiment V2
      operationId: stream_sentiment_v2_v2_reports_sentiment_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SentimentV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SentimentV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/SentimentRow'
                    description: '`result` event payload — one sentiment row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/query-fanouts:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Fanouts V2
      operationId: query_fanouts_v2_v2_reports_query_fanouts_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFanoutsV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryFanoutsV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/query-fanouts/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Query Fanouts V2
      operationId: stream_query_fanouts_v2_v2_reports_query_fanouts_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryFanoutsV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/QueryFanoutsV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/QueryFanoutRow'
                    description: '`result` event payload — one query-fanout row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/factcheck:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Scores
      operationId: query_scores_v2_reports_factcheck_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FactcheckScoresQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactcheckScoresResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/factcheck/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Scores
      operationId: stream_scores_v2_reports_factcheck_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FactcheckScoresQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/FactcheckScoresInfo'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/FactcheckScoreRow'
                    description: '`result` event payload — one accuracy score row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/factcheck/claims:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Claims
      operationId: query_claims_v2_reports_factcheck_claims_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FactcheckClaimsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FactcheckClaimsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/factcheck/claims/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Claims
      operationId: stream_claims_v2_reports_factcheck_claims_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FactcheckClaimsQuery'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/FactcheckClaimsInfo'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/FactcheckClaimsRow'
                    description: '`result` event payload — one inaccurate claim.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/social/youtube/channels:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Youtube Channels
      description: >-
        Rank the YouTube channels cited in a category, or the video categories
        they publish in.
      operationId: query_youtube_channels_v2_reports_social_youtube_channels_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YoutubeChannelsQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YoutubeChannelsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/social/youtube/videos:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Youtube Videos
      description: Rank cited YouTube videos, for one channel or across all of them.
      operationId: query_youtube_videos_v2_reports_social_youtube_videos_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YoutubeVideosQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YoutubeVideosResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/social/youtube/summary:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Youtube Summary
      description: >-
        Report how much of youtube.com the channel and video rankings account
        for.
      operationId: query_youtube_summary_v2_reports_social_youtube_summary_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/YoutubeSummaryQuery'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/YoutubeSummaryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/prompts/answers:
    post:
      tags:
        - Prompts
      summary: Query Answers V2
      operationId: query_answers_v2_v2_prompts_answers_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswersV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AnswersV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/prompts/answers/stream:
    post:
      tags:
        - Prompts
      summary: Stream Answers V2
      operationId: stream_answers_v2_v2_prompts_answers_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AnswersV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/AnswersV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/AnswerRow'
                    description: '`result` event payload — one answer row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/brands:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Shopping Brands V2
      operationId: query_shopping_brands_v2_v2_reports_shopping_brands_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingBrandsV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingBrandsV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/brands/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Shopping Brands V2
      operationId: stream_shopping_brands_v2_v2_reports_shopping_brands_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingBrandsV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ShoppingBrandsV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/ShoppingBrandRow'
                    description: '`result` event payload — one visibility row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/products:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Shopping Products V2
      operationId: query_shopping_products_v2_v2_reports_shopping_products_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingProductsV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingProductsV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/products/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Shopping Products V2
      operationId: stream_shopping_products_v2_v2_reports_shopping_products_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingProductsV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ShoppingProductsV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/ShoppingProductRow'
                    description: '`result` event payload — one product row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/merchants:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Shopping Merchants V2
      operationId: query_shopping_merchants_v2_v2_reports_shopping_merchants_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantsV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingMerchantsV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/merchants/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Shopping Merchants V2
      operationId: stream_shopping_merchants_v2_v2_reports_shopping_merchants_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingMerchantsV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ShoppingMerchantsV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/ShoppingMerchantRow'
                    description: '`result` event payload — one merchant row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/trigger-rate:
    post:
      tags:
        - Reports
        - Reports
      summary: Query Shopping Trigger Rate V2
      operationId: query_shopping_trigger_rate_v2_v2_reports_shopping_trigger_rate_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingTriggerRateV2Query'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ShoppingTriggerRateV2Response'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
  /v2/reports/shopping/trigger-rate/stream:
    post:
      tags:
        - Reports
        - Reports
      summary: Stream Shopping Trigger Rate V2
      operationId: >-
        stream_shopping_trigger_rate_v2_v2_reports_shopping_trigger_rate_stream_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ShoppingTriggerRateV2Query'
        required: true
      responses:
        '200':
          description: >-
            Server-sent events stream. Emits one `summary` event (the report
            `info` block) first, then one `result` event per row.
          content:
            text/event-stream:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ShoppingTriggerRateV2Info'
                    description: '`summary` event payload (the report `info` block).'
                  - $ref: '#/components/schemas/ShoppingTriggerRateRow'
                    description: '`result` event payload — one trigger row.'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - APIKeyHeader: []
        - BearerAuth: []
      x-codeSamples: []
components:
  schemas:
    AEOScore:
      properties:
        target_zone:
          $ref: '#/components/schemas/AEOScoreTargetZone'
        value:
          type: number
          title: Value
      type: object
      required:
        - target_zone
        - value
      title: AEOScore
    AEOScoreTargetZone:
      properties:
        low:
          type: number
          title: Low
        high:
          type: number
          title: High
      type: object
      required:
        - low
        - high
      title: AEOScoreTargetZone
    AcceptedAgentRun:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Unique ID for the accepted run.
        agent_id:
          type: string
          format: uuid
          title: Agent Id
          description: Unique ID of the agent for this run.
        status:
          $ref: '#/components/schemas/AgentRunStatus'
          description: Initial status of the accepted run.
        started_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Started At
          description: When the run started, if execution began immediately.
      additionalProperties: false
      type: object
      required:
        - id
        - agent_id
        - status
      title: AcceptedAgentRun
      description: Run details returned after a run request is accepted.
    AccuracyBreakdownQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        breakdown_by:
          type: string
          enum:
            - citation
            - platform
            - topic
            - prompt
            - tag
            - region
            - persona
            - theme
          title: Breakdown By
          default: citation
        group_by:
          anyOf:
            - items:
                type: string
                enum:
                  - platform
                  - topic
                  - prompt
                  - tag
                  - region
                  - persona
                  - theme
                  - date
              type: array
            - type: 'null'
          title: Group By
        date_bucket:
          anyOf:
            - type: string
            - type: 'null'
          title: Date Bucket
        limit:
          type: integer
          minimum: 1
          title: Limit
          default: 10
        offset:
          type: integer
          minimum: 0
          title: Offset
          default: 0
        search_query:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Query
        sort_by:
          type: string
          enum:
            - citationShare
            - accuracy
          title: Sort By
          default: citationShare
        sort_order:
          type: string
          enum:
            - asc
            - desc
          title: Sort Order
          default: desc
        pagination:
          anyOf:
            - $ref: '#/components/schemas/AccuracyPagination'
            - type: 'null'
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: AccuracyBreakdownQuery
    AccuracyBreakdownResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/AccuracyBreakdownRow'
          type: array
          title: Data
        totalCount:
          type: integer
          title: Totalcount
      type: object
      required:
        - data
        - totalCount
      title: AccuracyBreakdownResponse
    AccuracyBreakdownRow:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        groupIds:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Groupids
        groupNames:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Groupnames
        share:
          type: number
          title: Share
        shareChange:
          anyOf:
            - type: number
            - type: 'null'
          title: Sharechange
        responseAccuracy:
          type: number
          title: Responseaccuracy
        accuracyChange:
          anyOf:
            - type: number
            - type: 'null'
          title: Accuracychange
        accurateCount:
          type: integer
          title: Accuratecount
          default: 0
        inaccurateCount:
          type: integer
          title: Inaccuratecount
        inaccurateCountChange:
          anyOf:
            - type: integer
            - type: 'null'
          title: Inaccuratecountchange
        promptCount:
          anyOf:
            - type: integer
            - type: 'null'
          title: Promptcount
        citationCategory:
          anyOf:
            - type: string
            - type: 'null'
          title: Citationcategory
        hasScore:
          type: boolean
          title: Hasscore
          default: true
      type: object
      required:
        - id
        - name
        - share
        - responseAccuracy
        - inaccurateCount
      title: AccuracyBreakdownRow
    AccuracyCitationAnalysisQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        clean_href:
          type: string
          title: Clean Href
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
      type: object
      required:
        - category_id
        - clean_href
        - start_date
        - end_date
      title: AccuracyCitationAnalysisQuery
    AccuracyCitationAnalysisResponse:
      properties:
        href:
          type: string
          title: Href
        domain:
          type: string
          title: Domain
        pageTitle:
          type: string
          title: Pagetitle
        markdownContent:
          type: string
          title: Markdowncontent
        claims:
          items:
            $ref: '#/components/schemas/AccuracyCitationClaim'
          type: array
          title: Claims
      type: object
      required:
        - href
        - domain
        - pageTitle
        - markdownContent
      title: AccuracyCitationAnalysisResponse
    AccuracyCitationClaim:
      properties:
        claimId:
          type: string
          title: Claimid
        claim:
          type: string
          title: Claim
        attributeId:
          type: string
          title: Attributeid
        attribute:
          type: string
          title: Attribute
        neutralThemeId:
          type: string
          title: Neutralthemeid
        neutralTheme:
          type: string
          title: Neutraltheme
        snippet:
          type: string
          title: Snippet
        polarity:
          type: string
          enum:
            - positive
            - negative
          title: Polarity
          default: negative
        kbPath:
          type: string
          title: Kbpath
          default: ''
        kbSnippet:
          type: string
          title: Kbsnippet
          default: ''
        reasoning:
          type: string
          title: Reasoning
          default: ''
        evidence:
          items:
            $ref: '#/components/schemas/AccuracyCitationEvidence'
          type: array
          title: Evidence
      type: object
      required:
        - claimId
        - claim
        - attributeId
        - attribute
        - neutralThemeId
        - neutralTheme
        - snippet
      title: AccuracyCitationClaim
      description: >-
        A single inaccurate claim mapped to a cluster, surfaced on a cited page.


        ``attribute`` carries the cluster's canonical claim so the drawer can
        group

        claims the same way it groups sentiment attributes.


        ``reasoning`` and ``evidence`` mirror the cluster's FactCheck verdict:
        the

        "why it's inaccurate" explanation plus the refuting knowledge-base
        snippets

        surfaced in the Claim Analysis drawer. ``kb_path``/``kb_snippet`` are
        retained

        as the cluster's single representative snippet for backward
        compatibility.
    AccuracyCitationEvidence:
      properties:
        kbName:
          type: string
          title: Kbname
          default: ''
        kbPath:
          type: string
          title: Kbpath
          default: ''
        kbSnippet:
          type: string
          title: Kbsnippet
          default: ''
      type: object
      title: AccuracyCitationEvidence
      description: >-
        A single knowledge-base ground-truth snippet that refutes a claim's
        cluster.


        ``kb_name`` is the official knowledge base name; ``kb_path`` is the
        document

        path within that knowledge base. ``kb_name`` is populated by the
        external API

        layer (which can reach the knowledge-base service) and defaults to
        ``""``

        elsewhere.
    AccuracyOverviewQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        date_bucket:
          anyOf:
            - type: string
            - type: 'null'
          title: Date Bucket
        group_by:
          type: string
          enum:
            - period
            - theme
          title: Group By
          default: period
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: AccuracyOverviewQuery
    AccuracyOverviewResponse:
      properties:
        trendByPeriod:
          items:
            $ref: '#/components/schemas/AccuracyTrendPoint'
          type: array
          title: Trendbyperiod
        overallAccuracy:
          type: number
          title: Overallaccuracy
        accuracyChange:
          anyOf:
            - type: number
            - type: 'null'
          title: Accuracychange
        scoreBreakdown:
          items:
            $ref: '#/components/schemas/AccuracyScoreBreakdown'
          type: array
          title: Scorebreakdown
        themeTrend:
          anyOf:
            - items:
                $ref: '#/components/schemas/AccuracyThemeTrendSeries'
              type: array
            - type: 'null'
          title: Themetrend
        availableSeries:
          anyOf:
            - items:
                $ref: '#/components/schemas/AccuracyTrendSeriesMeta'
              type: array
            - type: 'null'
          title: Availableseries
      type: object
      required:
        - trendByPeriod
        - overallAccuracy
        - scoreBreakdown
      title: AccuracyOverviewResponse
    AccuracyPagination:
      properties:
        dimension:
          type: string
          const: group
          title: Dimension
          default: group
        metric:
          type: string
          enum:
            - accuracy
            - inaccurate_claims
          title: Metric
          default: accuracy
        mode:
          type: string
          enum:
            - current
            - delta
          title: Mode
          default: current
        direction:
          anyOf:
            - type: string
              enum:
                - asc
                - desc
            - type: 'null'
          title: Direction
      additionalProperties: false
      type: object
      title: AccuracyPagination
      description: Canonical grouped pagination plan for Accuracy Breakdown rows.
    AccuracyScoreBreakdown:
      properties:
        status:
          type: string
          title: Status
        count:
          type: integer
          title: Count
        share:
          type: number
          title: Share
        countChange:
          anyOf:
            - type: integer
            - type: 'null'
          title: Countchange
        shareChange:
          anyOf:
            - type: number
            - type: 'null'
          title: Sharechange
      type: object
      required:
        - status
        - count
        - share
      title: AccuracyScoreBreakdown
    AccuracyThemeTrendPoint:
      properties:
        date:
          type: string
          title: Date
        total:
          type: integer
          title: Total
        accurate:
          type: integer
          title: Accurate
        ratio:
          type: number
          title: Ratio
      type: object
      required:
        - date
        - total
        - accurate
        - ratio
      title: AccuracyThemeTrendPoint
    AccuracyThemeTrendSeries:
      properties:
        id:
          type: string
          title: Id
        label:
          type: string
          title: Label
        data:
          items:
            $ref: '#/components/schemas/AccuracyThemeTrendPoint'
          type: array
          title: Data
      type: object
      required:
        - id
        - label
        - data
      title: AccuracyThemeTrendSeries
    AccuracyTopicIdsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: AccuracyTopicIdsQuery
    AccuracyTrendPoint:
      properties:
        date:
          type: string
          title: Date
        total:
          type: integer
          title: Total
        accurate:
          type: integer
          title: Accurate
        verified:
          type: integer
          title: Verified
          default: 0
        ratio:
          type: number
          title: Ratio
        prevPeriodData:
          anyOf:
            - $ref: '#/components/schemas/AccuracyTrendPoint'
            - type: 'null'
      type: object
      required:
        - date
        - total
        - accurate
        - ratio
      title: AccuracyTrendPoint
    AccuracyTrendSeriesMeta:
      properties:
        id:
          type: string
          title: Id
        label:
          type: string
          title: Label
        total:
          type: integer
          title: Total
      type: object
      required:
        - id
        - label
        - total
      title: AccuracyTrendSeriesMeta
    AddFolderRequest:
      properties:
        path:
          type: string
          minLength: 1
          title: Path
          description: Folder path to create.
      additionalProperties: false
      type: object
      required:
        - path
      title: AddFolderRequest
    AdditionalTab:
      properties:
        title:
          type: string
          title: Title
          description: >-
            The tab's title as authored. Not unique within a document, and a
            placeholder when the tab was never titled.
        content_markdown:
          type: string
          title: Content Markdown
          description: This tab's body as markdown.
      type: object
      required:
        - title
        - content_markdown
      title: AdditionalTab
      description: One of a document's tabs beyond the default one.
    Agent:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Unique ID for the agent.
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: Unique ID of the organization that owns the agent.
        name:
          type: string
          title: Name
          description: Display name of the agent.
        status:
          $ref: '#/components/schemas/AgentStatus'
          description: Current status of the agent.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the agent was created.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Short description of the agent, if provided.
      additionalProperties: false
      type: object
      required:
        - id
        - organization_id
        - name
        - status
        - created_at
      title: Agent
      description: Summary information for an agent.
    AgentDetail:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Unique ID for the agent.
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: Unique ID of the organization that owns the agent.
        name:
          type: string
          title: Name
          description: Display name of the agent.
        status:
          $ref: '#/components/schemas/AgentStatus'
          description: Current status of the agent.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the agent was created.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Short description of the agent, if provided.
        schema:
          anyOf:
            - $ref: '#/components/schemas/AgentSchema'
            - type: 'null'
          description: >-
            Input and output schemas for this agent. Omitted while the agent's
            graph cannot be previewed (e.g. an empty or structurally-invalid
            draft); check `validation` to see what needs fixing.
        validation:
          anyOf:
            - $ref: '#/components/schemas/AgentValidation'
            - type: 'null'
          description: >-
            Validation report for the agent's graph, when available. Use
            `validation.valid` to check the agent is publishable.
      additionalProperties: false
      type: object
      required:
        - id
        - organization_id
        - name
        - status
        - created_at
      title: AgentDetail
      description: Detailed information for an agent.
    AgentGraph:
      properties:
        agent_id:
          type: string
          format: uuid
          title: Agent Id
          description: Unique ID of the agent the graph belongs to.
        version:
          $ref: '#/components/schemas/AgentVersion'
          description: Which version of the agent this graph is — `published` or `draft`.
        graph:
          additionalProperties: true
          type: object
          title: Graph
          description: >-
            Workflow graph (`{nodes, edges}`) in the canonical dialect — the
            same shape `create` and `update` accept. Treat it as an opaque
            object: it is returned verbatim, so tool-backed nodes appear in
            their lowered `tool` form rather than the friendly v1 node types.
            Read it back to copy and edit a known-good agent.
      additionalProperties: false
      type: object
      required:
        - agent_id
        - version
        - graph
      title: AgentGraph
      description: An agent version's workflow graph in the canonical dialect.
    AgentRun:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Unique ID for the run.
        agent_id:
          type: string
          format: uuid
          title: Agent Id
          description: Unique ID of the agent for this run.
        status:
          $ref: '#/components/schemas/AgentRunStatus'
          description: Current status of the run.
        started_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Started At
          description: When the run started, if it has started.
        finished_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Finished At
          description: When the run finished, if it has completed.
        error:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Error
          description: >-
            Error details, when the run fails and error information is
            available.
        outputs:
          additionalProperties: true
          type: object
          title: Outputs
          description: >-
            Output values returned by the run, keyed by variable ID. This object
            conforms to `schema.output` from the agent detail response and is
            empty when no outputs are available.
        steps:
          anyOf:
            - items:
                $ref: '#/components/schemas/AgentRunStep'
              type: array
            - type: 'null'
          title: Steps
          description: >-
            Ordered step-by-step execution trace — one entry per node that ran,
            in execution order. Always present once the run has executed a node;
            per-node `outputs` inside each step are included only when the
            request asks for `verbose`.
      additionalProperties: false
      type: object
      required:
        - id
        - agent_id
        - status
      title: AgentRun
      description: Status and result details for an agent run.
    AgentRunStatus:
      type: string
      enum:
        - queued
        - running
        - succeeded
        - failed
        - cancelled
        - skipped
        - unknown
      title: AgentRunStatus
      description: Current execution status for an agent run.
    AgentRunStep:
      properties:
        node_id:
          type: string
          title: Node Id
          description: ID of the node that ran, within its agent graph.
        node_type:
          type: string
          title: Node Type
          description: Kind of node, e.g. "profound_visibility", "llm", "conditional".
        title:
          type: string
          title: Title
          description: Human-readable title of the node.
        status:
          type: string
          title: Status
          description: Terminal status of this node execution.
        elapsed_time:
          anyOf:
            - type: number
            - type: 'null'
          title: Elapsed Time
          description: Wall-clock seconds the node took, if recorded.
        finished_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Finished At
          description: When the node finished, if it has.
        error_message:
          anyOf:
            - type: string
            - type: 'null'
          title: Error Message
          description: Failure detail for this node, when it failed.
        outputs:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Outputs
          description: >-
            Raw output payload this node produced. Included only when the
            request asks for `verbose`.
      additionalProperties: false
      type: object
      required:
        - node_id
        - node_type
        - title
        - status
      title: AgentRunStep
      description: >-
        One executed node in a run's step trace, in execution order.


        The lightweight fields always ship; ``outputs`` is populated only when
        the

        run-retrieve request asks for ``verbose``.
    AgentSchema:
      properties:
        input:
          additionalProperties: true
          type: object
          title: Input
          description: >-
            JSON Schema for the agent's `inputs` object. Use the top-level
            property keys as input field names when starting a run.
        output:
          additionalProperties: true
          type: object
          title: Output
          description: >-
            JSON Schema for the `outputs` object returned by `GET
            /v1/agents/{agent_id}/runs/{run_id}`.
      additionalProperties: false
      type: object
      required:
        - input
        - output
      title: AgentSchema
      description: Schema metadata for an agent.
    AgentStatus:
      type: string
      enum:
        - draft
        - published
        - unknown
      title: AgentStatus
      description: Current availability status for an agent.
    AgentValidation:
      properties:
        valid:
          type: boolean
          title: Valid
          description: Whether the agent's graph is valid and ready to publish.
        issues:
          items:
            $ref: '#/components/schemas/AgentValidationIssue'
          type: array
          title: Issues
          description: >-
            Problems found while validating the graph. Empty when `valid` is
            true.
      additionalProperties: false
      type: object
      required:
        - valid
      title: AgentValidation
      description: >-
        Result of validating an agent's graph.


        Mirrors the report computed on every read, so callers can confirm a
        draft

        is publishable before calling publish.
    AgentValidationIssue:
      properties:
        code:
          type: string
          title: Code
          description: Stable machine-readable identifier for the kind of issue.
        message:
          type: string
          title: Message
          description: Human-readable description of the issue.
        node_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Node Id
          description: ID of the node the issue applies to, if node-specific.
        node_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Node Title
          description: Display title of the affected node, if available.
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
          description: Name of the offending field on the node, if field-specific.
        field_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Field Title
          description: Display title of the affected field, if available.
        violation:
          anyOf:
            - type: string
            - type: 'null'
          title: Violation
          description: The specific constraint that was violated, if available.
      additionalProperties: false
      type: object
      required:
        - code
        - message
      title: AgentValidationIssue
      description: A single problem found while validating an agent's graph.
    AgentVersion:
      type: string
      enum:
        - published
        - draft
      title: AgentVersion
      description: Version selector for retrieving a specific agent.
    AnalysisBreakdown:
      properties:
        title:
          type: string
          title: Title
        weight:
          type: number
          title: Weight
        score:
          type: number
          title: Score
      type: object
      required:
        - title
        - weight
        - score
      title: AnalysisBreakdown
    AnalysisInputs:
      properties:
        topic:
          anyOf:
            - $ref: '#/components/schemas/TopicInput'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/PromptInput'
            - type: 'null'
        top_citations:
          items:
            type: string
          type: array
          title: Top Citations
        user:
          $ref: '#/components/schemas/UserInput'
      type: object
      required:
        - topic
        - prompt
        - top_citations
        - user
      title: AnalysisInputs
    AnalysisSummary:
      properties:
        breakdown:
          items:
            $ref: '#/components/schemas/AnalysisBreakdown'
          type: array
          title: Breakdown
      type: object
      required:
        - breakdown
      title: AnalysisSummary
    AnalysisType:
      type: string
      enum:
        - visibility
        - sentiment
        - sentiment_v2
        - accuracy
      title: AnalysisType
    AnalysisTypeFilter:
      properties:
        field:
          type: string
          const: analysis_type
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - visibility
                - sentiment
                - sentiment_v2
                - accuracy
            - items:
                type: string
                enum:
                  - visibility
                  - sentiment
                  - sentiment_v2
                  - accuracy
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: AnalysisTypeFilter
      description: Filter by analysis type (visibility, sentiment, or accuracy).
    AnswerRow:
      properties:
        run_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Run Id
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic
        topic_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic Id
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
        persona:
          anyOf:
            - type: string
            - type: 'null'
          title: Persona
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
        prompt_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Id
        response:
          anyOf:
            - type: string
            - type: 'null'
          title: Response
        mentions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mentions
        citations:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citations
        citation_details:
          anyOf:
            - items:
                $ref: '#/components/schemas/ExecutionCitationDetail'
              type: array
            - type: 'null'
          title: Citation Details
          description: >-
            Citation metadata. `positions` identify citation locations in the
            answer text. Each `groups` entry represents a rendered citation
            pill, including single-source pills; `group_position` is the
            source's position within that pill.
        search_queries:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Search Queries
        analysis_types:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Analysis Types
        sentiment_claims:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Sentiment Claims
      additionalProperties: true
      type: object
      title: AnswerRow
      description: >-
        One answer row. Present fields depend on `include`; `model` is an `{id,
        name}` reference.
    AnswersQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
        end_date:
          type: string
          format: date-time
          title: End Date
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: >-
            Pagination parameters for the results. Default is 10,000 rows with
            no offset.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/AnalysisTypeFilter'
              - $ref: '#/components/schemas/PromptTypeFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/AssetIdFilter'
              - $ref: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
            discriminator:
              propertyName: field
              mapping:
                analysis_type: '#/components/schemas/AnalysisTypeFilter'
                asset_id: '#/components/schemas/AssetIdFilter'
                asset_name: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                prompt_type: '#/components/schemas/PromptTypeFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
          description: List of filters to apply to the answers report.
        include:
          $ref: '#/components/schemas/EnabledFieldsResponse'
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: AnswersQuery
      description: Body for the answers endpoint.
    AnswersRawData:
      properties:
        run_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Run Id
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
        prompt_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Prompt Id
        mentions:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Mentions
        analysis_types:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Analysis Types
        prompt_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Type
        response:
          anyOf:
            - type: string
            - type: 'null'
          title: Response
        citations:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citations
        citation_details:
          anyOf:
            - items:
                $ref: '#/components/schemas/CitationDetail'
              type: array
            - type: 'null'
          title: Citation Details
        web_search_results:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Web Search Results
        search_triggered:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Search Triggered
        themes:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Themes
        sentiment_themes:
          anyOf:
            - items:
                $ref: '#/components/schemas/SentimentTheme'
              type: array
            - type: 'null'
          title: Sentiment Themes
          description: Uses legacy sentiment data.
        search_queries:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Search Queries
        topic:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic
        topic_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Topic Id
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
        model_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Model Id
        asset:
          anyOf:
            - type: string
            - type: 'null'
          title: Asset
        asset_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Asset Id
        tags:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Tags
        persona:
          anyOf:
            - type: string
            - type: 'null'
          title: Persona
      type: object
      title: AnswersRawData
      description: Raw data for the answers endpoint.
    AnswersResponse:
      properties:
        info:
          $ref: '#/components/schemas/AnswersResponseInfo'
        data:
          items:
            $ref: '#/components/schemas/AnswersRawData'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: AnswersResponse
      description: Response for the answers endpoint.
    AnswersResponseInfo:
      properties:
        total_rows:
          type: integer
          title: Total Rows
      type: object
      required:
        - total_rows
      title: AnswersResponseInfo
    AnswersV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        include:
          items:
            type: string
          type: array
          title: Include
          description: Row fields returned (echoes `include`, or all fields when omitted).
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - include
      title: AnswersV2Info
    AnswersV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        include:
          anyOf:
            - items:
                type: string
                enum:
                  - run_id
                  - date
                  - model
                  - topic
                  - topic_id
                  - persona
                  - region
                  - tags
                  - prompt
                  - prompt_id
                  - response
                  - mentions
                  - citations
                  - citation_details
                  - search_queries
                  - analysis_types
                  - sentiment_claims
              type: array
            - type: 'null'
          title: Include
          description: >-
            Which row fields to return: `run_id`, `date`, `model`, `topic`,
            `topic_id`, `region`, `persona`, `tags`, `prompt`, `prompt_id`,
            `response`, `mentions`, `citations`, `citation_details`,
            `search_queries`, `analysis_types`, `sentiment_claims`. Omit for all
            fields except `citation_details`, which must be requested explicitly
            because it is expensive.
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: >-
            and/or/not tree over `model`, `topic`, `region`, `persona`,
            `prompt`, `tag`, `analysis_type` (visibility/sentiment/factcheck);
            plus top-level `and` leaves `domain` or `page` (`is` one value, or
            `in` a list). Substring-search the prompt with `{"field": "prompt",
            "op": "contains", "value": "…"}`.
        limit:
          anyOf:
            - type: integer
              maximum: 200
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 200.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: AnswersV2Query
    AnswersV2Response:
      properties:
        info:
          $ref: '#/components/schemas/AnswersV2Info'
        data:
          items:
            $ref: '#/components/schemas/AnswerRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: AnswersV2Response
    ArchiveProjectRequest:
      properties:
        reason:
          anyOf:
            - type: string
              maxLength: 500
              minLength: 1
            - type: 'null'
          title: Reason
      additionalProperties: false
      type: object
      title: ArchiveProjectRequest
    AssetIdFilter:
      properties:
        field:
          type: string
          const: asset_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: AssetIdFilter
    AssetRef:
      properties:
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        owned:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Owned
          description: Whether the asset is owned by the category.
      type: object
      title: AssetRef
    BotNameFilter:
      properties:
        field:
          type: string
          const: bot_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: BotNameFilter
      description: >-
        Filter by bot name (user agent). Values come from analytics data and
        should

        not be enum-constrained because web-v2 may send newly cataloged
        user-agent names.
    BotProviderFilter:
      properties:
        field:
          type: string
          const: bot_provider
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - openai
                - anthropic
                - chatgpt
                - deepseek
                - google
                - microsoft
                - perplexity
                - apple
                - bytedance
                - amazon
                - meta
                - duckduckgo
                - you
                - you.com
                - xai
                - grok
                - gemini
                - mistral
                - huawei
                - yandex
                - baidu
                - yahoo
                - commoncrawl
                - openclaw
            - items:
                type: string
                enum:
                  - openai
                  - anthropic
                  - chatgpt
                  - deepseek
                  - google
                  - microsoft
                  - perplexity
                  - apple
                  - bytedance
                  - amazon
                  - meta
                  - duckduckgo
                  - you
                  - you.com
                  - xai
                  - grok
                  - gemini
                  - mistral
                  - huawei
                  - yandex
                  - baidu
                  - yahoo
                  - commoncrawl
                  - openclaw
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: BotProviderFilter
      description: Filter by bot provider
    BotTypeFilter:
      properties:
        field:
          type: string
          const: bot_type
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - ai_assistant
                - ai_training
                - index
                - ai_agent
            - items:
                type: string
                enum:
                  - ai_assistant
                  - ai_training
                  - index
                  - ai_agent
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: BotTypeFilter
      description: Filter by bot_type column (v2 hourly table only)
    BotsReportQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - host
              - path
              - bot_name
              - bot_provider
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - count
              - citations
              - indexing
              - training
              - last_visit
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        domain:
          type: string
          title: Domain
          description: Domain to query logs for.
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for logs. Accepts: YYYY-MM-DD, YYYY-MM-DD HH:MM,
            YYYY-MM-DD HH:MM:SS, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for logs. Accepts same formats as start_date. Defaults to
            now if omitted.
        organization_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Organization Id
        metric_filters:
          items:
            $ref: '#/components/schemas/NumericMetricFilter'
          type: array
          title: Metric Filters
          description: Numeric filters applied after report metrics are calculated.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/BotNameFilter'
              - $ref: '#/components/schemas/BotProviderFilter'
            discriminator:
              propertyName: field
              mapping:
                bot_name: '#/components/schemas/BotNameFilter'
                bot_provider: '#/components/schemas/BotProviderFilter'
                path: '#/components/schemas/PathFilter'
          type: array
          title: Filters
          description: Filters for bots report.
      type: object
      required:
        - metrics
        - domain
        - start_date
      title: BotsReportQuery
    BotsReportQueryV2:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - hour
              - host
              - path
              - bot_name
              - bot_provider
              - bot_type
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            anyOf:
              - type: string
                enum:
                  - count
                  - citations
                  - indexing
                  - training
                  - last_visit
              - type: string
                const: agents
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          propertyNames:
            enum:
              - date
              - hour
              - host
              - path
              - count
              - citations
              - indexing
              - training
              - agents
              - last_visit
              - bot_type
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        domain:
          type: string
          title: Domain
          description: Domain to query logs for.
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for logs. Accepts: YYYY-MM-DD, YYYY-MM-DD HH:MM,
            YYYY-MM-DD HH:MM:SS, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date in UTC. Accepts same formats as start_date. Defaults to now
            UTC if omitted.
        organization_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Organization Id
        timezone:
          type: string
          title: Timezone
          description: IANA timezone name for date bucketing and filter boundaries.
          default: UTC
        view_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: View Id
          description: >-
            Domain segment UUID used to scope the query to a configured subset
            of hosts and paths.
        metric_filters:
          items:
            $ref: '#/components/schemas/NumericMetricFilter'
          type: array
          title: Metric Filters
          description: Numeric filters applied after report metrics are calculated.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/BotNameFilter'
              - $ref: '#/components/schemas/BotProviderFilter'
              - $ref: '#/components/schemas/BotTypeFilter'
            discriminator:
              propertyName: field
              mapping:
                bot_name: '#/components/schemas/BotNameFilter'
                bot_provider: '#/components/schemas/BotProviderFilter'
                bot_type: '#/components/schemas/BotTypeFilter'
                path: '#/components/schemas/PathFilter'
          type: array
          title: Filters
          description: Filters for bots report.
        domain_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Domain Id
          description: Domain UUID used for tag lookups.
        tags:
          items:
            type: string
          type: array
          title: Tags
      type: object
      required:
        - metrics
        - domain
        - start_date
      title: BotsReportQueryV2
    BrandNameFilter:
      properties:
        field:
          type: string
          const: brand_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: BrandNameFilter
    Category:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        internal_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Internal Name
      type: object
      required:
        - id
        - name
      title: Category
    CategoryAsset:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        website:
          type: string
          title: Website
        alternate_domains:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Alternate Domains
        is_owned:
          type: boolean
          title: Is Owned
        created_at:
          type: string
          format: date-time
          title: Created At
        logo_url:
          type: string
          title: Logo Url
      type: object
      required:
        - id
        - name
        - website
        - is_owned
        - created_at
        - logo_url
      title: CategoryAsset
    CategoryAssetWithCategory:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        website:
          type: string
          title: Website
        alternate_domains:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Alternate Domains
        is_owned:
          type: boolean
          title: Is Owned
        created_at:
          type: string
          format: date-time
          title: Created At
        logo_url:
          type: string
          title: Logo Url
        category:
          $ref: '#/components/schemas/Category'
        organization:
          $ref: '#/components/schemas/Organization'
      type: object
      required:
        - id
        - name
        - website
        - is_owned
        - created_at
        - logo_url
        - category
        - organization
      title: CategoryAssetWithCategory
    CategoryPersona:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        persona:
          $ref: '#/components/schemas/PersonaProfile'
      type: object
      required:
        - id
        - name
        - persona
      title: CategoryPersona
    CategoryPersonasResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/CategoryPersona'
          type: array
          title: Data
      type: object
      required:
        - data
      title: CategoryPersonasResponse
    CategoryPromptsResponse:
      properties:
        info:
          $ref: '#/components/schemas/PaginationInfo'
        data:
          items:
            $ref: '#/components/schemas/Prompt'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: CategoryPromptsResponse
    CategoryWithOrganization:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        internal_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Internal Name
        organization:
          $ref: '#/components/schemas/Organization'
      type: object
      required:
        - id
        - name
        - organization
      title: CategoryWithOrganization
      description: A category annotated with the organization that owns it.
    CitationCategoriesResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/CitationCategory'
          type: array
          title: Data
      type: object
      required:
        - data
      title: CitationCategoriesResponse
    CitationCategory:
      properties:
        value:
          type: string
          title: Value
          description: Value to pass to the v2 citations `citation_category` filter.
        name:
          type: string
          title: Name
          description: Display name.
      type: object
      required:
        - value
        - name
      title: CitationCategory
    CitationCategoryFilter:
      properties:
        field:
          type: string
          const: citation_category
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: CitationCategoryFilter
      description: Filter by citation category
    CitationDetail:
      properties:
        url:
          type: string
          title: Url
        clean_url:
          type: string
          title: Clean Url
        title:
          type: string
          title: Title
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
        hostname:
          type: string
          title: Hostname
        path:
          type: string
          title: Path
        first_cited_at:
          anyOf:
            - type: string
            - type: 'null'
          title: First Cited At
        positions:
          items:
            type: integer
          type: array
          title: Positions
        groups:
          anyOf:
            - items:
                $ref: '#/components/schemas/CitationDetailGroup'
              type: array
            - type: 'null'
          title: Groups
        citation_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation Category
      type: object
      required:
        - url
        - clean_url
        - title
        - hostname
        - path
      title: CitationDetail
    CitationDetailGroup:
      properties:
        group_id:
          type: integer
          title: Group Id
        group_position:
          type: integer
          title: Group Position
      type: object
      required:
        - group_id
        - group_position
      title: CitationDetailGroup
    CitationRow:
      properties:
        domain:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain
        page:
          anyOf:
            - type: string
            - type: 'null'
          title: Page
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Count
        citation_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Citation Share
        first_cited_at:
          anyOf:
            - type: string
            - type: 'null'
          title: First Cited At
          description: Pages only.
      additionalProperties: true
      type: object
      title: CitationRow
      description: >-
        One (source x group) row. Each row carries `domain` or `page`; group
        dims/metrics vary.
    CitationScoreRef:
      properties:
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
        citation_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation Category
      type: object
      title: CitationScoreRef
    CitationTag:
      properties:
        value:
          type: string
          title: Value
          description: Value to pass to the v2 citations `citation_tag` filter.
        name:
          type: string
          title: Name
          description: Display name.
      type: object
      required:
        - value
        - name
      title: CitationTag
    CitationTagsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/CitationTag'
          type: array
          title: Data
      type: object
      required:
        - data
      title: CitationTagsResponse
    CitationsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - hostname
              - path
              - date
              - region
              - topic
              - topic_id
              - model
              - tag
              - prompt
              - prompt_id
              - url
              - root_domain
              - persona
              - citation_category
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - count
              - citation_share
              - share_of_voice
              - first_cited_at
          type: array
          title: Metrics
          description: >-
            Metrics to include. `share_of_voice` is deprecated, use
            `citation_share` instead.
          deprecated_values:
            share_of_voice: Use citation_share instead
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: |2-

                Custom ordering of the report results.

                The order is a record of key-value pairs where:
                - `key` is the field to order by, which can be a metric or dimension
                - `value` is the direction of the order, either `asc` for ascending or `desc` for descending.

                When not specified, the default order is the first metric in the query descending.
                        
          default: {}
          examples:
            - date: asc
            - count: desc
              date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/HostnameFilter'
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/UrlFilter'
              - $ref: '#/components/schemas/RootDomainFilter'
              - $ref: '#/components/schemas/AnalysisTypeFilter'
              - $ref: '#/components/schemas/PromptTypeFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/CitationCategoryFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/MentionedFilter'
            discriminator:
              propertyName: field
              mapping:
                analysis_type: '#/components/schemas/AnalysisTypeFilter'
                citation_category: '#/components/schemas/CitationCategoryFilter'
                hostname: '#/components/schemas/HostnameFilter'
                mentioned: '#/components/schemas/MentionedFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                path: '#/components/schemas/PathFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                prompt_type: '#/components/schemas/PromptTypeFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                root_domain: '#/components/schemas/RootDomainFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
                url: '#/components/schemas/UrlFilter'
          type: array
          title: Filters
          description: List of filters to apply to the citations report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: CitationsQuery
    CitationsResponse:
      properties:
        info:
          $ref: '#/components/schemas/Info'
        data:
          items:
            $ref: '#/components/schemas/CitationsResult'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: CitationsResponse
      examples:
        - data:
            - dimensions:
                - example.com
                - /some/path
                - '2023-10-01'
              metrics:
                - 10
                - 0.05
          info:
            query:
              date_interval: day
              dimensions:
                - hostname
                - path
                - date
              filters:
                - field: hostname
                  operator: is
                  value: example.com
              metrics:
                - count
                - citation_share
            total_rows: 200
    CitationsResult:
      properties:
        metrics:
          items:
            anyOf:
              - type: integer
              - type: number
              - type: string
              - type: 'null'
          type: array
          title: Metrics
        dimensions:
          items:
            anyOf:
              - type: string
              - type: string
                format: uuid
          type: array
          title: Dimensions
      type: object
      required:
        - metrics
        - dimensions
      title: CitationsResult
    CitationsV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        scope:
          type: string
          title: Scope
          description: 'Citation scope: `all` or `owned`.'
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Metrics returned per row.
        analysis_types:
          items:
            type: string
          type: array
          title: Analysis Types
          description: Analysis types the citations were drawn from.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - scope
        - metrics
        - analysis_types
      title: CitationsV2Info
    CitationsV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        entity:
          type: string
          enum:
            - domain
            - page
            - citation_category
          title: Entity
          description: >-
            What each row represents: `domain` (default), `page`, or
            `citation_category`. Legacy: `group_by: ["page"]` (with `entity`
            omitted) is still accepted and is equivalent to `entity: "page"`.
            `citation_category` uses the dashboard split view: a citation counts
            under both its page-level and domain-level category, so category
            shares can sum to more than 100%.
          default: domain
        group_by:
          items:
            type: string
            enum:
              - page
              - date
              - model
              - topic
              - region
              - persona
              - prompt
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - count
                  - citation_share
                  - rank
                  - first_cited_at
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        scope:
          type: string
          enum:
            - all
            - owned
          title: Scope
          description: >-
            `all` (every cited domain) or `owned` (only your owned domains).
            Applies to `entity=domain`.
          default: all
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: >-
            `citation_category` filters on a cited URL's single category;
            `citation_tag` filters on the custom citation tags a URL carries (a
            URL can carry several). List the category's tags with `GET
            /v1/org/categories/{category_id}/citation-tags`.
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: CitationsV2Query
    CitationsV2Response:
      properties:
        info:
          $ref: '#/components/schemas/CitationsV2Info'
        data:
          items:
            $ref: '#/components/schemas/CitationRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: CitationsV2Response
    ClaimBreakdownQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        cluster_id:
          type: string
          format: uuid
          title: Cluster Id
      type: object
      required:
        - start_date
        - end_date
        - category_id
        - cluster_id
      title: ClaimBreakdownQuery
    ClaimBreakdownResponse:
      properties:
        platform:
          items:
            $ref: '#/components/schemas/ClaimBreakdownRow'
          type: array
          title: Platform
        prompt:
          items:
            $ref: '#/components/schemas/ClaimPromptBreakdownRow'
          type: array
          title: Prompt
      type: object
      required:
        - platform
        - prompt
      title: ClaimBreakdownResponse
    ClaimBreakdownRow:
      properties:
        id:
          type: string
          title: Id
        label:
          type: string
          title: Label
        responseCount:
          type: integer
          title: Responsecount
        totalResponseCount:
          type: integer
          title: Totalresponsecount
        responseShare:
          type: number
          title: Responseshare
        responseShareDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Responsesharedelta
        prevResponseCount:
          type: integer
          title: Prevresponsecount
        prevTotalResponseCount:
          type: integer
          title: Prevtotalresponsecount
      type: object
      required:
        - id
        - label
        - responseCount
        - totalResponseCount
        - responseShare
        - prevResponseCount
        - prevTotalResponseCount
      title: ClaimBreakdownRow
    ClaimCitationRow:
      properties:
        href:
          type: string
          title: Href
        hostname:
          type: string
          title: Hostname
        path:
          type: string
          title: Path
        citationCategory:
          type: string
          title: Citationcategory
        domainCategory:
          type: string
          title: Domaincategory
        snippet:
          type: string
          title: Snippet
        citationCount:
          type: number
          title: Citationcount
        citationShare:
          type: number
          title: Citationshare
        citationShareDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Citationsharedelta
      type: object
      required:
        - href
        - hostname
        - path
        - citationCategory
        - domainCategory
        - snippet
        - citationCount
        - citationShare
      title: ClaimCitationRow
    ClaimCitationSource:
      properties:
        href:
          anyOf:
            - type: string
            - type: 'null'
          title: Href
        hostname:
          anyOf:
            - type: string
            - type: 'null'
          title: Hostname
        citation_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation Category
        domain_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Domain Category
        snippet:
          anyOf:
            - type: string
            - type: 'null'
          title: Snippet
        citation_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Citation Share
      type: object
      title: ClaimCitationSource
    ClaimCitationsQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        cluster_id:
          type: string
          format: uuid
          title: Cluster Id
        limit:
          type: integer
          minimum: 1
          title: Limit
          default: 10
        offset:
          type: integer
          minimum: 0
          title: Offset
          default: 0
        search_query:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Query
        sort_order:
          type: string
          enum:
            - asc
            - desc
          title: Sort Order
          default: desc
      type: object
      required:
        - start_date
        - end_date
        - category_id
        - cluster_id
      title: ClaimCitationsQuery
    ClaimCitationsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ClaimCitationRow'
          type: array
          title: Data
        totalCount:
          type: integer
          title: Totalcount
      type: object
      required:
        - data
        - totalCount
      title: ClaimCitationsResponse
    ClaimEvidence:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
        kb_path:
          anyOf:
            - type: string
            - type: 'null'
          title: Kb Path
        kb_snippet:
          anyOf:
            - type: string
            - type: 'null'
          title: Kb Snippet
        source_updated_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Updated At
      type: object
      title: ClaimEvidence
    ClaimModelOccurrence:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
          description: >-
            Only populated for entries in `models`; omitted from grouped-section
            `model`.
      type: object
      title: ClaimModelOccurrence
    ClaimPromptBreakdownRow:
      properties:
        id:
          type: string
          title: Id
        label:
          type: string
          title: Label
        responseCount:
          type: integer
          title: Responsecount
        totalResponseCount:
          type: integer
          title: Totalresponsecount
        responseShare:
          type: number
          title: Responseshare
        responseShareDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Responsesharedelta
        prevResponseCount:
          type: integer
          title: Prevresponsecount
        prevTotalResponseCount:
          type: integer
          title: Prevtotalresponsecount
        promptId:
          type: string
          title: Promptid
        promptText:
          type: string
          title: Prompttext
        topicId:
          type: string
          title: Topicid
        hasCurrent:
          type: boolean
          title: Hascurrent
      type: object
      required:
        - id
        - label
        - responseCount
        - totalResponseCount
        - responseShare
        - prevResponseCount
        - prevTotalResponseCount
        - promptId
        - promptText
        - topicId
        - hasCurrent
      title: ClaimPromptBreakdownRow
    ClusterExampleRun:
      properties:
        runId:
          type: string
          title: Runid
        claim:
          type: string
          title: Claim
        responseSnippet:
          type: string
          title: Responsesnippet
        modelId:
          type: string
          title: Modelid
        regionId:
          type: string
          title: Regionid
        createdAt:
          type: string
          title: Createdat
      type: object
      required:
        - runId
        - claim
        - responseSnippet
        - modelId
        - regionId
        - createdAt
      title: ClusterExampleRun
    ClusterExampleRunsQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        cluster_id:
          type: string
          format: uuid
          title: Cluster Id
        limit:
          type: integer
          minimum: 1
          title: Limit
          default: 20
        offset:
          type: integer
          minimum: 0
          title: Offset
          default: 0
      type: object
      required:
        - start_date
        - end_date
        - category_id
        - cluster_id
      title: ClusterExampleRunsQuery
    ClusterExampleRunsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ClusterExampleRun'
          type: array
          title: Data
        totalCount:
          type: integer
          title: Totalcount
      type: object
      required:
        - data
        - totalCount
      title: ClusterExampleRunsResponse
    ClusterModelShare:
      properties:
        modelId:
          type: string
          title: Modelid
        occurrence:
          type: number
          title: Occurrence
      type: object
      required:
        - modelId
        - occurrence
      title: ClusterModelShare
    ClusterVerificationPair:
      properties:
        pairId:
          type: string
          title: Pairid
        snippetIdx:
          type: integer
          title: Snippetidx
        kbPath:
          type: string
          title: Kbpath
        quote:
          type: string
          title: Quote
        reasoning:
          type: string
          title: Reasoning
        sourceUpdatedAt:
          anyOf:
            - type: string
            - type: 'null'
          title: Sourceupdatedat
      type: object
      required:
        - pairId
        - snippetIdx
        - kbPath
        - quote
        - reasoning
      title: ClusterVerificationPair
    ClusterVerificationPairsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        cluster_id:
          type: string
          format: uuid
          title: Cluster Id
      type: object
      required:
        - category_id
        - cluster_id
      title: ClusterVerificationPairsQuery
    ClusterVerificationPairsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ClusterVerificationPair'
          type: array
          title: Data
        clusterReasoning:
          anyOf:
            - type: string
            - type: 'null'
          title: Clusterreasoning
      type: object
      required:
        - data
      title: ClusterVerificationPairsResponse
    Comment:
      properties:
        content:
          type: string
          title: Content
          description: The comment's text.
        context:
          anyOf:
            - type: string
            - type: 'null'
          title: Context
          description: >-
            Text the comment was left on. `null` for a comment on no specific
            text, never an empty string.
      type: object
      required:
        - content
      title: Comment
      description: >-
        One review comment, mapped from upstream's open, unvalidated shape into
        a closed contract.


        Upstream's own comment schema — `body`, `quoted_text`, `author`,
        `replies`, `resolved` — is

        documented as not a closed contract. Only `body` and `quoted_text` are
        mapped through, as

        `content` and `context`; commenter identity, reply threads and
        resolution state are dropped

        here, not relayed.
    ContentAnalysis:
      properties:
        content:
          $ref: '#/components/schemas/DocumentContent'
        aeo_content_score:
          anyOf:
            - $ref: '#/components/schemas/AEOScore'
            - type: 'null'
        analysis:
          $ref: '#/components/schemas/AnalysisSummary'
        recommendations:
          items:
            $ref: '#/components/schemas/Recommendation'
          type: array
          title: Recommendations
        inputs:
          $ref: '#/components/schemas/AnalysisInputs'
      type: object
      required:
        - content
        - aeo_content_score
        - analysis
        - recommendations
        - inputs
      title: ContentAnalysis
    ContentFormat:
      type: string
      enum:
        - markdown
        - html
      title: ContentFormat
    ContentOptimization:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        title:
          type: string
          title: Title
        created_at:
          type: string
          format: date-time
          title: Created At
        extracted_input:
          anyOf:
            - type: string
            - type: 'null'
          title: Extracted Input
        type:
          $ref: '#/components/schemas/ContentType'
        status:
          type: string
          title: Status
      type: object
      required:
        - id
        - title
        - created_at
        - extracted_input
        - type
        - status
      title: ContentOptimization
    ContentOptimizationAnalysisResponse:
      properties:
        data:
          $ref: '#/components/schemas/ContentAnalysis'
      type: object
      required:
        - data
      title: ContentOptimizationAnalysisResponse
    ContentOptimizationResponse:
      properties:
        info:
          $ref: '#/components/schemas/ContentOptimizationResponseInfo'
        data:
          items:
            $ref: '#/components/schemas/ContentOptimization'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ContentOptimizationResponse
    ContentOptimizationResponseInfo:
      properties:
        total_rows:
          type: integer
          title: Total Rows
        query:
          $ref: '#/components/schemas/OptimizationQuery'
      type: object
      required:
        - total_rows
        - query
      title: ContentOptimizationResponseInfo
    ContentType:
      type: string
      enum:
        - file
        - text
        - url
      title: ContentType
    CreateAgentRequest:
      properties:
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: >-
            ID of the organization that will own the agent. Required — Profound
            API keys are user-scoped, so the owning organization must be chosen
            explicitly. The caller must be a member of this organization.
        name:
          type: string
          minLength: 1
          title: Name
          description: Display name for the agent. Must be non-empty.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Short description of the agent.
        graph:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Graph
          description: >-
            Initial workflow graph for the agent's draft version. Optional — an
            agent can be created empty and have its graph filled in later.
      additionalProperties: false
      type: object
      required:
        - organization_id
        - name
      title: CreateAgentRequest
      description: Request body for creating a draft agent.
    CreateDocumentRequest:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: >-
            ID for the new document, chosen by you. Creation is idempotent on
            this ID: repeating a request with the same ID returns the existing
            document instead of creating a second one, so a retry after a
            network error is safe.
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: >-
            ID of the organization that will own the document. Required —
            Profound API keys are user-scoped, so the owning organization must
            be chosen explicitly. The caller must be a member of this
            organization.
        name:
          type: string
          minLength: 1
          title: Name
          description: Title for the document. Must be non-empty.
        content_markdown:
          type: string
          minLength: 1
          title: Content Markdown
          description: >-
            Initial document body as markdown. Must be non-empty. Rendered into
            the collaborative editor, so the result is real editable content,
            not a stored blob.
      additionalProperties: false
      type: object
      required:
        - id
        - organization_id
        - name
        - content_markdown
      title: CreateDocumentRequest
      description: Request body for creating a document with markdown content.
    CreateDocumentResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The document's ID.
        name:
          type: string
          title: Name
          description: The document's title.
        url:
          type: string
          title: Url
          description: Link to open the document in the Profound app.
        visibility:
          type: string
          enum:
            - invited_only
            - organization
          title: Visibility
          description: General access scope. New documents are `invited_only`.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the document was created.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: >-
            When the document was last modified. Seeding the initial content
            counts, so a freshly created document is normally modified a moment
            after it was created.
        owner_user_id:
          type: string
          format: uuid
          title: Owner User Id
          description: ID of the document's owner.
        owner_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner Email
          description: >-
            Email of the document's owner. `null` when the owning profile has
            been deleted or could not be resolved.
        author_type:
          type: string
          enum:
            - user
            - agent
          title: Author Type
          description: >-
            Whether the document's owner is a person (`user`) or an agent
            (`agent`).
        app_delegate:
          anyOf:
            - type: string
            - type: 'null'
          title: App Delegate
          description: >-
            Which integration created the document, derived server-side from the
            credential that authenticated the write. `null` for documents
            created outside any integration. An open-ended value, not a fixed
            set — known values today include `external-api` and
            `context-manager`, and more are added as new integrations ship.
        category_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Category Name
          description: >-
            Name of the brand category set on the document, if any. Paired with
            `company_name`; writable only on create.
        company_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Name
          description: >-
            Name of the brand/company set on the document, if any. Paired with
            `category_name`; writable only on create.
        version_hash:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Hash
          description: >-
            Opaque token that changes whenever the document's content changes.
            `null` when this call found an existing document with the same id
            (idempotent create) rather than creating one, or when the token
            could not be minted. Bare hex, up to 128 characters, with no fixed
            prefix — treat it as opaque and do not parse it. It detects change;
            it is not a precondition, and a matching token is not licence to
            overwrite blindly.
      type: object
      required:
        - id
        - name
        - url
        - visibility
        - created_at
        - updated_at
        - owner_user_id
        - owner_email
        - author_type
        - app_delegate
        - category_name
        - company_name
        - version_hash
      title: CreateDocumentResponse
      description: >-
        The document that was created, plus the change-detection token minted
        for this write.
    CreateProjectRequest:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        title:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
            - type: 'null'
          title: Title
        project_name:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
            - type: 'null'
          title: Project Name
        focus:
          anyOf:
            - type: string
              maxLength: 2000
              minLength: 1
            - type: 'null'
          title: Focus
        topics:
          items:
            type: string
            minLength: 1
          type: array
          maxItems: 6
          title: Topics
        attachments:
          items:
            $ref: '#/components/schemas/ProjectAttachment'
          type: array
          maxItems: 3
          title: Attachments
        generation_context:
          anyOf:
            - $ref: '#/components/schemas/ProjectGenerationContext'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - category_id
      title: CreateProjectRequest
    CreateProjectTaskRequest:
      properties:
        title:
          type: string
          maxLength: 240
          minLength: 1
          title: Title
        summary:
          anyOf:
            - type: string
              maxLength: 2000
              minLength: 1
            - type: 'null'
          title: Summary
        brief:
          anyOf:
            - type: string
              maxLength: 8000
              minLength: 1
            - type: 'null'
          title: Brief
        type:
          anyOf:
            - type: string
              maxLength: 80
              minLength: 1
            - type: 'null'
          title: Type
        topic:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
            - type: 'null'
          title: Topic
        impact:
          anyOf:
            - type: integer
              maximum: 5
              minimum: 1
            - type: 'null'
          title: Impact
        reference_url:
          anyOf:
            - type: string
              maxLength: 2048
              minLength: 1
            - type: 'null'
          title: Reference Url
        reference_label:
          anyOf:
            - type: string
              maxLength: 240
              minLength: 1
            - type: 'null'
          title: Reference Label
        position:
          anyOf:
            - type: integer
            - type: 'null'
          title: Position
      additionalProperties: false
      type: object
      required:
        - title
      title: CreateProjectTaskRequest
    CreatePromptInput:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: >-
            Optional client-generated UUID for the prompt. When provided,
            creation is idempotent: retrying a request with the same id will not
            create a duplicate prompt. Omit to have the server generate one
            (non-idempotent).
        prompt:
          type: string
          minLength: 1
          title: Prompt
          description: The prompt text to be sent to AI platforms.
        topic:
          $ref: '#/components/schemas/IdOrName'
          description: Topic to assign. A new topic is created if the name doesn't exist.
        language:
          type: string
          title: Language
          description: Language code (e.g. 'en-US')
        tags:
          items:
            $ref: '#/components/schemas/IdOrName'
          type: array
          title: Tags
          description: Tags to assign. New tags are created if names don't exist.
          default: []
        regions:
          items:
            $ref: '#/components/schemas/IdOrName'
          type: array
          minItems: 1
          title: Regions
          description: Regions where the prompt will be collected.
        platforms:
          items:
            $ref: '#/components/schemas/IdOrName'
          type: array
          minItems: 1
          title: Platforms
          description: AI platforms where the prompt will be collected.
        personas:
          items:
            $ref: '#/components/schemas/IdOrName'
          type: array
          title: Personas
          description: Personas to use when collecting. Omit for default (no persona).
          default: []
        analysis_types:
          anyOf:
            - items:
                type: string
                enum:
                  - visibility
                  - sentiment
                  - sentiment_v2
                  - accuracy
              type: array
            - type: 'null'
          title: Analysis Types
          description: >-
            Analysis types: 'visibility', 'sentiment', 'accuracy'. Defaults to
            ['visibility'].
        prompt_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Type
          description: Deprecated. Use analysis_types instead. 'Visibility' or 'Sentiment'.
          deprecated: true
        asset:
          anyOf:
            - $ref: '#/components/schemas/IdOrName'
            - type: 'null'
          description: Required for Sentiment prompts. The brand asset to evaluate.
      type: object
      required:
        - prompt
        - topic
        - language
        - regions
        - platforms
      title: CreatePromptInput
      description: A single prompt to create within a category.
    CreatePromptsBody:
      properties:
        prompts:
          items:
            $ref: '#/components/schemas/CreatePromptInput'
          type: array
          title: Prompts
          description: List of prompts to create.
        dry_run:
          type: boolean
          title: Dry Run
          description: When true, validate and preview changes without persisting them.
          default: false
      type: object
      required:
        - prompts
      title: CreatePromptsBody
    CreatePromptsResponse:
      properties:
        dry_run:
          type: boolean
          title: Dry Run
          description: Whether this was a dry run (no changes persisted).
        created:
          type: integer
          title: Created
          description: Number of prompts created.
          default: 0
        topics_created:
          type: integer
          title: Topics Created
          description: Number of new topics created.
          default: 0
        tags_created:
          type: integer
          title: Tags Created
          description: Number of new tags created.
          default: 0
        prompts:
          items:
            $ref: '#/components/schemas/PromptPreview'
          type: array
          title: Prompts
          description: List of created (or previewed) prompts with resolved references.
          default: []
      type: object
      required:
        - dry_run
      title: CreatePromptsResponse
      description: Response from creating prompts.
    CursorPagination:
      properties:
        limit:
          type: integer
          maximum: 50000
          exclusiveMinimum: 0
          title: Limit
          description: >-
            Maximum number of results to return. Default is 10,000, maximum is
            50,000.
          default: 10000
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Token for the next page, if more results are available.
      additionalProperties: false
      type: object
      title: CursorPagination
      description: Cursor-based pagination metadata.
    DeleteDocumentRequest:
      properties:
        name:
          type: string
          minLength: 1
          title: Name
          description: Document path to delete.
      additionalProperties: false
      type: object
      required:
        - name
      title: DeleteDocumentRequest
    DeleteFolderRequest:
      properties:
        path:
          type: string
          minLength: 1
          title: Path
          description: Folder path to delete.
        recursive:
          type: boolean
          title: Recursive
          description: >-
            When false, only empty folders are deleted and non-empty folders
            return a conflict. When true, the folder and all contents are
            deleted.
          default: false
      additionalProperties: false
      type: object
      required:
        - path
      title: DeleteFolderRequest
    DimensionRef:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      type: object
      title: DimensionRef
      description: An ``{id, name}`` reference for a grouped dimension value.
    Document:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The document's ID.
        name:
          type: string
          title: Name
          description: The document's title.
        url:
          type: string
          title: Url
          description: Link to open the document in the Profound app.
        visibility:
          type: string
          enum:
            - invited_only
            - organization
          title: Visibility
          description: General access scope. New documents are `invited_only`.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the document was created.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: >-
            When the document was last modified. Seeding the initial content
            counts, so a freshly created document is normally modified a moment
            after it was created.
        owner_user_id:
          type: string
          format: uuid
          title: Owner User Id
          description: ID of the document's owner.
        owner_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner Email
          description: >-
            Email of the document's owner. `null` when the owning profile has
            been deleted or could not be resolved.
        author_type:
          type: string
          enum:
            - user
            - agent
          title: Author Type
          description: >-
            Whether the document's owner is a person (`user`) or an agent
            (`agent`).
        app_delegate:
          anyOf:
            - type: string
            - type: 'null'
          title: App Delegate
          description: >-
            Which integration created the document, derived server-side from the
            credential that authenticated the write. `null` for documents
            created outside any integration. An open-ended value, not a fixed
            set — known values today include `external-api` and
            `context-manager`, and more are added as new integrations ship.
        category_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Category Name
          description: >-
            Name of the brand category set on the document, if any. Paired with
            `company_name`; writable only on create.
        company_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Name
          description: >-
            Name of the brand/company set on the document, if any. Paired with
            `category_name`; writable only on create.
      type: object
      required:
        - id
        - name
        - url
        - visibility
        - created_at
        - updated_at
        - owner_user_id
        - owner_email
        - author_type
        - app_delegate
        - category_name
        - company_name
      title: Document
      description: A Profound document.
    DocumentContent:
      properties:
        format:
          $ref: '#/components/schemas/ContentFormat'
        value:
          type: string
          title: Value
      type: object
      required:
        - format
        - value
      title: DocumentContent
    DocumentOperationResponse:
      properties:
        message:
          type: string
          title: Message
          description: Operation result message.
        name:
          type: string
          title: Name
          description: Document name.
        path:
          type: string
          title: Path
          description: Document path.
        folder:
          anyOf:
            - type: string
            - type: 'null'
          title: Folder
          description: Document folder path.
      additionalProperties: false
      type: object
      required:
        - message
        - name
        - path
      title: DocumentOperationResponse
    DomainSegmentListItem:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
        - id
        - name
      title: DomainSegmentListItem
    DomainWithOrganization:
      properties:
        created_at:
          type: string
          format: date-time
          title: Created At
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
        organization:
          $ref: '#/components/schemas/Organization'
      type: object
      required:
        - created_at
        - id
        - name
        - organization
      title: DomainWithOrganization
      description: A domain paired with the organization edge it belongs to.
    EnabledFieldsResponse:
      properties:
        run_id:
          type: boolean
          title: Run Id
          default: false
        created_at:
          type: boolean
          title: Created At
          default: true
        prompt:
          type: boolean
          title: Prompt
          default: true
        prompt_id:
          type: boolean
          title: Prompt Id
          default: false
        mentions:
          type: boolean
          title: Mentions
          default: true
        analysis_types:
          type: boolean
          title: Analysis Types
          default: false
        prompt_type:
          type: boolean
          title: Prompt Type
          default: true
          deprecated: true
        response:
          type: boolean
          title: Response
          default: true
        citations:
          type: boolean
          title: Citations
          default: true
        citation_details:
          type: boolean
          title: Citation Details
          default: false
        web_search_results:
          type: boolean
          title: Web Search Results
          default: false
        search_triggered:
          type: boolean
          title: Search Triggered
          default: false
        themes:
          type: boolean
          title: Themes
          description: Use 'sentiment_themes' instead
          default: true
          deprecated: true
        sentiment_themes:
          type: boolean
          title: Sentiment Themes
          description: Uses legacy sentiment data.
          default: false
        topic:
          type: boolean
          title: Topic
          default: true
        topic_id:
          type: boolean
          title: Topic Id
          default: false
        region:
          type: boolean
          title: Region
          default: true
        model:
          type: boolean
          title: Model
          default: true
        model_id:
          type: boolean
          title: Model Id
          default: true
        asset:
          type: boolean
          title: Asset
          default: true
        asset_id:
          type: boolean
          title: Asset Id
          default: false
        tags:
          type: boolean
          title: Tags
          default: false
        search_queries:
          type: boolean
          title: Search Queries
          default: false
        persona:
          type: boolean
          title: Persona
          default: false
      type: object
      title: EnabledFieldsResponse
    EntityFilterClause:
      properties:
        op:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Op
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      additionalProperties: false
      type: object
      required:
        - op
        - value
      title: EntityFilterClause
      description: Select/exclude the entity, applied outside the data `filter` tree.
    ExecutionCitationDetail:
      properties:
        url:
          type: string
          title: Url
        clean_url:
          type: string
          title: Clean Url
        title:
          type: string
          title: Title
        text:
          anyOf:
            - type: string
            - type: 'null'
          title: Text
        hostname:
          type: string
          title: Hostname
        path:
          type: string
          title: Path
        positions:
          items:
            type: integer
          type: array
          title: Positions
        groups:
          anyOf:
            - items:
                $ref: '#/components/schemas/CitationDetailGroup'
              type: array
            - type: 'null'
          title: Groups
        first_cited_at:
          anyOf:
            - type: string
            - type: 'null'
          title: First Cited At
        citation_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Citation Category
      type: object
      required:
        - url
        - clean_url
        - title
        - hostname
        - path
      title: ExecutionCitationDetail
    FactCheckSetupStatusQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
      type: object
      required:
        - category_id
      title: FactCheckSetupStatusQuery
    FactCheckSetupStatusResponse:
      properties:
        activeAccuracyPromptCount:
          type: integer
          title: Activeaccuracypromptcount
        hasVerificationData:
          type: boolean
          title: Hasverificationdata
        isSetupComplete:
          type: boolean
          title: Issetupcomplete
        setupCreatedAt:
          anyOf:
            - type: string
            - type: 'null'
          title: Setupcreatedat
        setupKnowledgeBaseId:
          anyOf:
            - type: string
            - type: 'null'
          title: Setupknowledgebaseid
      type: object
      required:
        - activeAccuracyPromptCount
        - hasVerificationData
        - isSetupComplete
      title: FactCheckSetupStatusResponse
    FactcheckClaim:
      properties:
        cluster_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Cluster Id
        claim:
          anyOf:
            - type: string
            - type: 'null'
          title: Claim
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
        theme:
          anyOf:
            - type: string
            - type: 'null'
          title: Theme
        reasoning:
          anyOf:
            - type: string
            - type: 'null'
          title: Reasoning
        models:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimModelOccurrence'
              type: array
            - type: 'null'
          title: Models
        evidence:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimEvidence'
              type: array
            - type: 'null'
          title: Evidence
        citation_sources:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimCitationSource'
              type: array
            - type: 'null'
          title: Citation Sources
      additionalProperties: true
      type: object
      title: FactcheckClaim
      description: >-
        One inaccurate claim.
        `theme`/`reasoning`/`models`/`evidence`/`citation_sources` follow
        `include`.
    FactcheckClaimsInfo:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        group_by:
          items:
            type: string
          type: array
          title: Group By
          description: Dimension the claims are sectioned by (empty → one flat list).
        include:
          items:
            type: string
          type: array
          title: Include
          description: Per-claim detail fields requested.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - group_by
      title: FactcheckClaimsInfo
    FactcheckClaimsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - model
              - region
              - persona
              - prompt
              - topic
              - tag
              - theme
          type: array
          maxItems: 1
          title: Group By
          description: >-
            Optional single dim to section the claims (e.g. per model). Empty →
            one flat claim list.
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: Scope which responses count (see Filtering).
        include:
          anyOf:
            - items:
                type: string
                enum:
                  - theme
                  - reasoning
                  - models
                  - evidence
                  - citation_sources
              type: array
            - type: 'null'
          title: Include
          description: Optional per-claim detail fields to add to each claim (see options).
        limit:
          anyOf:
            - type: integer
              maximum: 100
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Claims (or sections) per page; default 25.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: 'Stream only: cap entries returned.'
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: FactcheckClaimsQuery
      description: >-
        The inaccurate claims — flat + paginated, or `group_by` one dim to
        section them (all claims per section).
    FactcheckClaimsResponse:
      properties:
        info:
          $ref: '#/components/schemas/FactcheckClaimsInfo'
        data:
          items:
            $ref: '#/components/schemas/FactcheckClaimsRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: FactcheckClaimsResponse
    FactcheckClaimsRow:
      properties:
        cluster_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Cluster Id
        claim:
          anyOf:
            - type: string
            - type: 'null'
          title: Claim
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
        reasoning:
          anyOf:
            - type: string
            - type: 'null'
          title: Reasoning
        models:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimModelOccurrence'
              type: array
            - type: 'null'
          title: Models
        evidence:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimEvidence'
              type: array
            - type: 'null'
          title: Evidence
        citation_sources:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClaimCitationSource'
              type: array
            - type: 'null'
          title: Citation Sources
        model:
          anyOf:
            - $ref: '#/components/schemas/ClaimModelOccurrence'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        tag:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        theme:
          anyOf:
            - type: string
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
          title: Theme
          description: >-
            Claim theme (string), or an `{id, name}` ref when sectioning by
            `theme`.
        accuracy:
          anyOf:
            - type: number
            - type: 'null'
          title: Accuracy
        accurate:
          anyOf:
            - type: integer
            - type: 'null'
          title: Accurate
        inaccurate:
          anyOf:
            - type: integer
            - type: 'null'
          title: Inaccurate
        total_claims:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Claims
        claims:
          anyOf:
            - items:
                $ref: '#/components/schemas/FactcheckClaim'
              type: array
            - type: 'null'
          title: Claims
      additionalProperties: true
      type: object
      title: FactcheckClaimsRow
      description: >-
        A flat claim, or (with `group_by`) a section: a dimension + accuracy
        rollup + its `claims`.


        Present fields depend on `group_by`/`include`.
    FactcheckScoreRow:
      properties:
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        tag:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        theme:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        citation:
          anyOf:
            - $ref: '#/components/schemas/CitationScoreRef'
            - type: 'null'
        accuracy:
          anyOf:
            - type: number
            - type: 'null'
          title: Accuracy
        accurate:
          anyOf:
            - type: integer
            - type: 'null'
          title: Accurate
        inaccurate:
          anyOf:
            - type: integer
            - type: 'null'
          title: Inaccurate
      additionalProperties: true
      type: object
      title: FactcheckScoreRow
      description: >-
        An accuracy score row: the headline (no dims), a daily point, or a
        per-dimension breakdown.
    FactcheckScoresInfo:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        group_by:
          items:
            type: string
          type: array
          title: Group By
          description: Dimensions the scores are sliced by (empty → headline).
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - group_by
      title: FactcheckScoresInfo
    FactcheckScoresQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - model
              - region
              - persona
              - prompt
              - topic
              - tag
              - citation
              - theme
          type: array
          maxItems: 2
          title: Group By
          description: >-
            Up to two dimensions to slice by; empty returns the headline score.
            `citation` must be alone.
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: Scope which responses count (see Filtering).
        limit:
          anyOf:
            - type: integer
              maximum: 100
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Rows per page; default 100.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: 'Stream only: cap rows returned.'
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: FactcheckScoresQuery
      description: >-
        Accuracy scores. `group_by` picks the slice (one or two dimensions);
        empty → the headline score.
    FactcheckScoresResponse:
      properties:
        info:
          $ref: '#/components/schemas/FactcheckScoresInfo'
        data:
          items:
            $ref: '#/components/schemas/FactcheckScoreRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: FactcheckScoresResponse
    FieldDiff:
      properties:
        old:
          title: Old
          description: Previous value.
        new:
          title: New
          description: New value.
      type: object
      title: FieldDiff
      description: Shows the old and new value for a changed field.
    FilterNode:
      properties:
        and:
          anyOf:
            - items:
                $ref: '#/components/schemas/FilterNode'
              type: array
            - type: 'null'
          title: And
        or:
          anyOf:
            - items:
                $ref: '#/components/schemas/FilterNode'
              type: array
            - type: 'null'
          title: Or
        not:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        field:
          anyOf:
            - type: string
            - type: 'null'
          title: Field
        op:
          anyOf:
            - type: string
            - type: 'null'
          title: Op
        value:
          title: Value
      additionalProperties: false
      type: object
      title: FilterNode
      description: A leaf (`field`/`op`/`value`) or an `and`/`or`/`not` group.
    FolderOperationResponse:
      properties:
        message:
          type: string
          title: Message
          description: Operation result message.
        path:
          type: string
          title: Path
          description: Folder path.
      additionalProperties: false
      type: object
      required:
        - message
        - path
      title: FolderOperationResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    HostnameFilter:
      properties:
        field:
          type: string
          const: hostname
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: HostnameFilter
      description: Filter by hostname
    IdOrName:
      properties:
        id:
          anyOf:
            - type: string
            - type: 'null'
          title: Id
          description: UUID of the resource.
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
          description: Display name of the resource.
      type: object
      title: IdOrName
      description: |-
        Reference by id, name, or both. Plain strings work too:
        UUIDs become id lookups, other strings become name lookups.
    InaccuracyDriverRow:
      properties:
        rowId:
          type: string
          title: Rowid
        clusterId:
          type: string
          title: Clusterid
        canonicalClaim:
          type: string
          title: Canonicalclaim
        snippet:
          type: string
          title: Snippet
        snippetClaimId:
          type: string
          title: Snippetclaimid
        claimOccurrence:
          type: number
          title: Claimoccurrence
        claimOccurrenceDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Claimoccurrencedelta
        href:
          type: string
          title: Href
        citationCategory:
          type: string
          title: Citationcategory
        domainCategory:
          type: string
          title: Domaincategory
        citationCount:
          type: integer
          title: Citationcount
      type: object
      required:
        - rowId
        - clusterId
        - canonicalClaim
        - snippet
        - snippetClaimId
        - claimOccurrence
        - href
        - citationCategory
        - domainCategory
        - citationCount
      title: InaccuracyDriverRow
      description: A top inaccurate claim paired with one of its most-cited pages.
    InaccuracyDriversQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        limit:
          type: integer
          maximum: 50
          minimum: 1
          title: Limit
          default: 5
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: InaccuracyDriversQuery
    InaccuracyDriversResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/InaccuracyDriverRow'
          type: array
          title: Data
      type: object
      required:
        - data
      title: InaccuracyDriversResponse
    InaccurateClusterRow:
      properties:
        clusterId:
          type: string
          title: Clusterid
        canonicalClaim:
          type: string
          title: Canonicalclaim
        neutralTheme:
          type: string
          title: Neutraltheme
          default: ''
        description:
          type: string
          title: Description
          default: ''
        kbPath:
          type: string
          title: Kbpath
        kbSnippet:
          type: string
          title: Kbsnippet
        reasoning:
          type: string
          title: Reasoning
        claimCount:
          type: integer
          title: Claimcount
        responseCount:
          type: integer
          title: Responsecount
        totalResponseCount:
          type: integer
          title: Totalresponsecount
        responseShare:
          type: number
          title: Responseshare
        responseShareDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Responsesharedelta
        citationHostnames:
          items:
            type: string
          type: array
          title: Citationhostnames
        models:
          anyOf:
            - items:
                $ref: '#/components/schemas/ClusterModelShare'
              type: array
            - type: 'null'
          title: Models
      type: object
      required:
        - clusterId
        - canonicalClaim
        - kbPath
        - kbSnippet
        - reasoning
        - claimCount
        - responseCount
        - totalResponseCount
        - responseShare
        - citationHostnames
      title: InaccurateClusterRow
    InaccurateClustersQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        theme_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Theme Id
        limit:
          type: integer
          maximum: 10000
          minimum: 1
          title: Limit
          default: 5000
        offset:
          type: integer
          minimum: 0
          title: Offset
          default: 0
        search_query:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Query
        include_models:
          type: boolean
          title: Include Models
          default: false
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: InaccurateClustersQuery
    InaccurateClustersResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/InaccurateClusterRow'
          type: array
          title: Data
        totalCount:
          type: integer
          title: Totalcount
      type: object
      required:
        - data
        - totalCount
      title: InaccurateClustersResponse
    InaccurateThemeRow:
      properties:
        themeId:
          type: string
          title: Themeid
        neutralTheme:
          type: string
          title: Neutraltheme
        description:
          type: string
          title: Description
          default: ''
        inaccurateClaimCount:
          type: integer
          title: Inaccurateclaimcount
        inaccurateClusterCount:
          type: integer
          title: Inaccurateclustercount
        totalClaimCount:
          type: integer
          title: Totalclaimcount
        totalClusterCount:
          type: integer
          title: Totalclustercount
        responseCount:
          type: integer
          title: Responsecount
        totalResponseCount:
          type: integer
          title: Totalresponsecount
        responseShare:
          type: number
          title: Responseshare
        responseShareDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Responsesharedelta
      type: object
      required:
        - themeId
        - neutralTheme
        - inaccurateClaimCount
        - inaccurateClusterCount
        - totalClaimCount
        - totalClusterCount
        - responseCount
        - totalResponseCount
        - responseShare
      title: InaccurateThemeRow
    InaccurateThemesQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        limit:
          type: integer
          minimum: 1
          title: Limit
          default: 10
        offset:
          type: integer
          minimum: 0
          title: Offset
          default: 0
        sort_by:
          type: string
          const: response_share
          title: Sort By
          default: response_share
        sort_order:
          type: string
          enum:
            - asc
            - desc
          title: Sort Order
          default: desc
        search_query:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Query
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: InaccurateThemesQuery
    InaccurateThemesResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/InaccurateThemeRow'
          type: array
          title: Data
        totalCount:
          type: integer
          title: Totalcount
      type: object
      required:
        - data
        - totalCount
      title: InaccurateThemesResponse
    Info:
      properties:
        total_rows:
          type: integer
          title: Total Rows
        query:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Query
      type: object
      required:
        - total_rows
      title: Info
      description: Base model for report information.
    InsightRow:
      properties:
        id:
          type: string
          title: Id
          description: Row ID.
        start_time:
          anyOf:
            - type: integer
            - type: 'null'
          title: Start Time
          description: Bucket start (unix seconds).
        end_time:
          anyOf:
            - type: integer
            - type: 'null'
          title: End Time
          description: Bucket end (unix seconds).
        readable_time:
          anyOf:
            - type: string
            - type: 'null'
          title: Readable Time
          description: Human-readable time bucket.
        timezone:
          anyOf:
            - type: string
            - type: 'null'
          title: Timezone
          description: Timezone of the time bucket.
        campaign_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Campaign Id
          description: Campaign ID for campaign-level rows.
        campaign_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Campaign Name
          description: Campaign name for campaign-level rows.
        ad_group_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Ad Group Id
          description: Ad group ID for ad_group-level rows.
        ad_group_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Ad Group Name
          description: Ad group name for ad_group-level rows.
        ad_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Ad Id
          description: Ad ID for ad-level rows.
        ad_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Ad Name
          description: Ad name for ad-level rows.
        impressions:
          anyOf:
            - type: integer
            - type: 'null'
          title: Impressions
          description: Impressions.
        clicks:
          anyOf:
            - type: integer
            - type: 'null'
          title: Clicks
          description: Clicks.
        spend:
          anyOf:
            - type: number
            - type: 'null'
          title: Spend
          description: Spend in the ad account's currency units.
        ctr:
          anyOf:
            - type: number
            - type: 'null'
          title: Ctr
          description: Click-through rate.
        cpc:
          anyOf:
            - type: number
            - type: 'null'
          title: Cpc
          description: Cost per click.
        cpm:
          anyOf:
            - type: number
            - type: 'null'
          title: Cpm
          description: Cost per thousand impressions.
      type: object
      required:
        - id
      title: InsightRow
      description: >-
        One insights row; the entity it describes follows `aggregation_level`.


        Time bounds are present when a `time_granularity` is requested (one row
        per

        time bucket); the entity id/name fields (`campaign_*`, `ad_group_*`,
        `ad_*`)

        are present when rows are broken down by that entity.
    InsightsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/InsightRow'
          type: array
          title: Data
          description: Insight rows.
        count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Count
          description: Total row count, when reported upstream.
        first_id:
          anyOf:
            - type: string
            - type: 'null'
          title: First Id
          description: ID of the first item; pass as `before` to page back.
        last_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Last Id
          description: ID of the last item; pass as `after` to page forward.
        has_more:
          type: boolean
          title: Has More
          description: Whether more items are available.
          default: false
      additionalProperties: false
      type: object
      required:
        - data
      title: InsightsResponse
      description: Cursor-paginated insights, mirroring the OpenAI Ads insights envelope.
    Integration:
      properties:
        id:
          type: string
          title: Id
          description: Installation id to bind to a hub-backed node's `integration_id`.
        provider:
          type: string
          title: Provider
          description: Canonical connector id, matching node contracts.
          examples:
            - google_drive
        label:
          type: string
          title: Label
          description: Human-readable account label for the connection.
        account:
          anyOf:
            - type: string
            - type: 'null'
          title: Account
          description: >-
            Connected account identity as the provider reports it, e.g. the
            Google account email or the WordPress site URL. This is what tells
            two connections of the same provider apart; `label` often repeats
            across them. Null when the provider reports no identity.
          examples:
            - alice@acme.com
        status:
          type: string
          title: Status
          description: Connection lifecycle status.
          examples:
            - active
            - needs_reauth
        level:
          type: string
          enum:
            - org
            - user
          title: Level
          description: 'Installation scope: shared across the org, or user-owned.'
      additionalProperties: false
      type: object
      required:
        - id
        - provider
        - label
        - account
        - status
        - level
      title: Integration
      description: One connected integration installation visible to the caller.
    IntegrationsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Integration'
          type: array
          title: Data
          description: Connected integrations.
      additionalProperties: false
      type: object
      required:
        - data
      title: IntegrationsResponse
      description: Connected integrations visible to the caller's org/user context.
    KnowledgeBaseItem:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: Unique knowledge base ID.
        name:
          type: string
          title: Name
          description: Knowledge base name.
        slug:
          anyOf:
            - type: string
            - type: 'null'
          title: Slug
          description: Knowledge base slug.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Knowledge base description.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: Creation timestamp.
      additionalProperties: false
      type: object
      required:
        - id
        - name
        - created_at
      title: KnowledgeBaseItem
    KnowledgeBaseSearchResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/KnowledgeBaseSearchResult'
          type: array
          title: Data
          description: Knowledge base search results.
        pagination:
          $ref: '#/components/schemas/CursorPagination'
          description: Pagination metadata.
      additionalProperties: false
      type: object
      required:
        - data
      title: KnowledgeBaseSearchResponse
    KnowledgeBaseSearchResult:
      properties:
        id:
          type: string
          title: Id
          description: Document or chunk path.
        score:
          type: number
          title: Score
          description: Relevance score.
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
          description: Result metadata, including folder path.
        content:
          type: string
          title: Content
          description: Matched content.
      additionalProperties: false
      type: object
      required:
        - id
        - score
        - metadata
        - content
      title: KnowledgeBaseSearchResult
    ListAgentsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Agent'
          type: array
          title: Data
          description: Agents returned for this page.
        pagination:
          $ref: '#/components/schemas/CursorPagination'
          description: Cursor pagination details for this response.
      additionalProperties: false
      type: object
      required:
        - data
      title: ListAgentsResponse
      description: Paginated list of agents.
    ListAgentsStatusFilter:
      type: string
      enum:
        - published
        - draft
      title: ListAgentsStatusFilter
      description: Statuses you can use to filter the list agents response.
    ListDocumentsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Document'
          type: array
          title: Data
          description: Documents on this page.
        pagination:
          $ref: '#/components/schemas/CursorPagination'
          description: Pagination state for fetching the next page.
      additionalProperties: false
      type: object
      required:
        - data
        - pagination
      title: ListDocumentsResponse
      description: A page of documents.
    ListKnowledgeBasesResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/KnowledgeBaseItem'
          type: array
          title: Data
          description: Knowledge bases accessible to the API key.
        pagination:
          $ref: '#/components/schemas/CursorPagination'
          description: Pagination metadata.
      additionalProperties: false
      type: object
      required:
        - data
      title: ListKnowledgeBasesResponse
    ListNodeTypesResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/NodeTypeSummary'
          type: array
          title: Data
          description: Allowlisted node types, returned as thin summaries.
      additionalProperties: false
      type: object
      required:
        - data
      title: ListNodeTypesResponse
      description: List of node types available to v1 agent authors.
    ListProjectGenerationsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProjectGenerationStatus'
          type: array
          title: Data
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
      type: object
      required:
        - data
      title: ListProjectGenerationsResponse
    ListProjectTasksResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProjectTask'
          type: array
          title: Data
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
      type: object
      required:
        - data
      title: ListProjectTasksResponse
    ListProjectsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/ProjectListItem'
          type: array
          title: Data
        pagination:
          $ref: '#/components/schemas/Pagination'
      additionalProperties: false
      type: object
      required:
        - data
      title: ListProjectsResponse
    LiveGeneration:
      properties:
        run_id:
          type: string
          format: uuid
          title: Run Id
        status:
          type: string
          enum:
            - queued
            - running
            - completed
            - failed
          title: Status
        started_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Started At
        finished_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Finished At
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
      additionalProperties: false
      type: object
      required:
        - run_id
        - status
      title: LiveGeneration
    MentionedFilter:
      properties:
        field:
          type: string
          const: mentioned
          title: Field
        operator:
          type: string
          const: is
          title: Operator
        value:
          anyOf:
            - type: boolean
            - items:
                type: boolean
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: MentionedFilter
      description: Filter citation pages by whether they mention an owned category asset.
    MerchantNameFilter:
      properties:
        field:
          type: string
          const: merchant_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: MerchantNameFilter
    ModelIdFilter:
      properties:
        field:
          anyOf:
            - type: string
              const: model_id
            - type: string
              const: model
              deprecated: true
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: ModelIdFilter
      description: Filter by AI model/platform UUID.
    NamedResource:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
        - id
        - name
      title: NamedResource
      description: Generic id+name reference used across domain boundaries.
    NamedResourceDiffList:
      properties:
        added:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Added
          description: Resources that were added.
          default: []
        removed:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Removed
          description: Resources that were removed.
          default: []
      type: object
      title: NamedResourceDiffList
      description: Shows which resources were added or removed.
    NodeSchemaResponse:
      properties:
        node_type:
          type: string
          title: Node Type
          description: Stable identifier for the node type, e.g. `llm`.
        schema:
          additionalProperties: true
          type: object
          title: Schema
          description: >-
            Opaque JSON Schema for the node's configuration. Treat this as an
            arbitrary object; its internal shape can change between
            `schema_version` bumps.
        schema_version:
          type: string
          title: Schema Version
          description: >-
            Opaque version string for the node schema. Bumps whenever the
            underlying schema changes, so it can be used as a client-side cache
            key.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Short description of what the node type does, if provided.
        examples:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Examples
          description: >-
            Worked example configurations for the node type, in the canonical
            graph dialect. Curated authoring guidance, versioned by
            `docs_version` (NOT `schema_version`): they illustrate a valid shape
            at curation time but are a starting point, not the contract — they
            may lag the validator. The authoritative contract is `schema`, and
            the only authoritative check that a graph is valid is publishing it
            (or the agent-validation endpoint). Do not parse `examples` as the
            schema.
        documentation:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Documentation
          description: >-
            Opaque, human-oriented authoring guidance for the node type —
            purpose, constraints, enum values, and variable-flow notes that the
            machine `schema` does not always express (e.g. a conditional's
            else-branch rule, or an iteration's sub-graph shape). Treat as an
            arbitrary object; use `docs_version` as its cache key.
        docs_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Docs Version
          description: >-
            Opaque version string for `documentation`/`examples`, independent of
            `schema_version`. Bumps when the authoring guidance changes even if
            the underlying machine `schema` did not. When it trails the live
            `schema_version`, treat `documentation`/`examples` as guidance that
            may be stale and validate against the live `schema`.
      additionalProperties: false
      type: object
      required:
        - node_type
        - schema
        - schema_version
      title: NodeSchemaResponse
      description: JSON schema for a single node type.
    NodeTypeSummary:
      properties:
        node_type:
          type: string
          title: Node Type
          description: Stable identifier for the node type, e.g. `llm`.
        display_name:
          type: string
          title: Display Name
          description: Human-readable name for the node type.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: Short description of what the node type does, if provided.
      additionalProperties: false
      type: object
      required:
        - node_type
        - display_name
      title: NodeTypeSummary
      description: Thin summary for a node type available to v1 agent authors.
    NumericMetricFilter:
      properties:
        field:
          type: string
          title: Field
        operator:
          type: string
          enum:
            - '>'
            - '>='
            - <
            - <=
            - '='
            - '=='
            - '!='
          title: Operator
        value:
          anyOf:
            - type: integer
            - type: number
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: NumericMetricFilter
    OptimizationQuery:
      properties:
        asset_id:
          type: string
          format: uuid
          title: Asset Id
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: >-
            Pagination parameters for the results. Default is 10,000 rows with
            no offset.
      type: object
      required:
        - asset_id
      title: OptimizationQuery
    OrderByDirection:
      type: string
      enum:
        - asc
        - desc
      title: OrderByDirection
    Organization:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          anyOf:
            - type: string
            - type: 'null'
          title: Name
      type: object
      required:
        - id
        - name
      title: Organization
    OrganizationAssetsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/CategoryAssetWithCategory'
          type: array
          title: Data
      type: object
      required:
        - data
      title: OrganizationAssetsResponse
    OrganizationPersonasWithCategory:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        persona:
          $ref: '#/components/schemas/PersonaProfile'
        category:
          $ref: '#/components/schemas/Category'
        organization:
          $ref: '#/components/schemas/Organization'
      type: object
      required:
        - id
        - name
        - persona
        - category
        - organization
      title: OrganizationPersonasWithCategory
    OrganizationPersonasWithCategoryResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/OrganizationPersonasWithCategory'
          type: array
          title: Data
      type: object
      required:
        - data
      title: OrganizationPersonasWithCategoryResponse
    Pagination:
      properties:
        limit:
          type: integer
          maximum: 50000
          exclusiveMinimum: 0
          title: Limit
          description: >-
            Maximum number of results to return. Default is 10,000, maximum is
            50,000.
          default: 10000
        offset:
          type: integer
          minimum: 0
          title: Offset
          description: Offset for the results. Used for pagination.
          default: 0
      type: object
      title: Pagination
      description: Offset-based pagination parameters.
    PaginationInfo:
      properties:
        total_rows:
          type: integer
          title: Total Rows
        limit:
          type: integer
          title: Limit
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
      type: object
      required:
        - total_rows
        - limit
        - next_cursor
      title: PaginationInfo
    PathFilter:
      properties:
        field:
          type: string
          const: path
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: PathFilter
      description: Filter by request path
    PersonaIdFilter:
      properties:
        field:
          type: string
          const: persona_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: PersonaIdFilter
      description: Filter by persona UUID.
    PersonaProfile:
      properties:
        behavior:
          $ref: '#/components/schemas/PersonaProfileBehavior'
        employment:
          $ref: '#/components/schemas/PersonaProfileEmployment'
        demographics:
          $ref: '#/components/schemas/PersonaProfileDemographics'
      type: object
      required:
        - behavior
        - employment
        - demographics
      title: PersonaProfile
    PersonaProfileBehavior:
      properties:
        painPoints:
          anyOf:
            - type: string
            - type: 'null'
          title: Painpoints
        motivations:
          anyOf:
            - type: string
            - type: 'null'
          title: Motivations
      type: object
      title: PersonaProfileBehavior
    PersonaProfileDemographics:
      properties:
        ageRange:
          items:
            type: string
          type: array
          title: Agerange
      type: object
      title: PersonaProfileDemographics
    PersonaProfileEmployment:
      properties:
        industry:
          items:
            type: string
          type: array
          title: Industry
        jobTitle:
          items:
            type: string
          type: array
          title: Jobtitle
        companySize:
          items:
            type: string
          type: array
          title: Companysize
        roleSeniority:
          items:
            type: string
          type: array
          title: Roleseniority
      type: object
      title: PersonaProfileEmployment
    ProductNameFilter:
      properties:
        field:
          type: string
          const: product_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: ProductNameFilter
    Project:
      properties:
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        origin_run_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Origin Run Id
        initiated_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Initiated By User Id
        title:
          type: string
          title: Title
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        why:
          anyOf:
            - type: string
            - type: 'null'
          title: Why
        topics:
          items:
            type: string
          type: array
          title: Topics
        prompts:
          items:
            type: string
          type: array
          title: Prompts
        measurement:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Measurement
        source_kind:
          type: string
          enum:
            - generate
            - adhoc
          title: Source Kind
          default: adhoc
        source_prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Prompt
        status:
          type: string
          enum:
            - suggested
            - tracked
            - retired
          title: Status
          default: tracked
        task_count:
          type: integer
          minimum: 0
          title: Task Count
          default: 0
        new_task_count:
          type: integer
          minimum: 0
          title: New Task Count
          default: 0
        retired_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Retired At
        retired_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Retired Reason
        latest_version_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Latest Version Id
        version_count:
          type: integer
          minimum: 0
          title: Version Count
          default: 0
        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
        live_generation:
          anyOf:
            - $ref: '#/components/schemas/LiveGeneration'
            - type: 'null'
      additionalProperties: false
      type: object
      required:
        - project_id
        - category_id
        - title
      title: Project
    ProjectAttachment:
      properties:
        id:
          type: string
          minLength: 1
          title: Id
        name:
          type: string
          maxLength: 255
          minLength: 1
          title: Name
        mime_type:
          type: string
          minLength: 1
          title: Mime Type
        size_bytes:
          type: integer
          maximum: 10485760
          exclusiveMinimum: 0
          title: Size Bytes
        data_base64:
          type: string
          maxLength: 13981016
          minLength: 1
          title: Data Base64
      additionalProperties: false
      type: object
      required:
        - id
        - name
        - mime_type
        - size_bytes
        - data_base64
      title: ProjectAttachment
    ProjectDetail:
      properties:
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        origin_run_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Origin Run Id
        initiated_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Initiated By User Id
        title:
          type: string
          title: Title
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        why:
          anyOf:
            - type: string
            - type: 'null'
          title: Why
        topics:
          items:
            type: string
          type: array
          title: Topics
        prompts:
          items:
            type: string
          type: array
          title: Prompts
        measurement:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Measurement
        source_kind:
          type: string
          enum:
            - generate
            - adhoc
          title: Source Kind
          default: adhoc
        source_prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Source Prompt
        status:
          type: string
          enum:
            - suggested
            - tracked
            - retired
          title: Status
          default: tracked
        task_count:
          type: integer
          minimum: 0
          title: Task Count
          default: 0
        new_task_count:
          type: integer
          minimum: 0
          title: New Task Count
          default: 0
        retired_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Retired At
        retired_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Retired Reason
        latest_version_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Latest Version Id
        version_count:
          type: integer
          minimum: 0
          title: Version Count
          default: 0
        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
        live_generation:
          anyOf:
            - $ref: '#/components/schemas/LiveGeneration'
            - type: 'null'
        tasks:
          items:
            $ref: '#/components/schemas/ProjectTask'
          type: array
          title: Tasks
      additionalProperties: false
      type: object
      required:
        - project_id
        - category_id
        - title
      title: ProjectDetail
    ProjectDetailResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectDetail'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectDetailResponse
    ProjectGeneration:
      properties:
        project_id:
          type: string
          format: uuid
          title: Project Id
        run_id:
          type: string
          format: uuid
          title: Run Id
        status:
          type: string
          enum:
            - queued
            - running
          title: Status
          default: queued
      additionalProperties: false
      type: object
      required:
        - project_id
        - run_id
      title: ProjectGeneration
    ProjectGenerationContext:
      properties:
        dateRange:
          anyOf:
            - $ref: '#/components/schemas/ProjectGenerationDateRange'
            - type: 'null'
        platforms:
          items:
            $ref: '#/components/schemas/ProjectGenerationContextItem'
          type: array
          maxItems: 20
          title: Platforms
        projectCategories:
          items:
            type: string
            enum:
              - creative
              - earned
              - publish
              - refresh
              - social
          type: array
          maxItems: 5
          title: Projectcategories
        regions:
          items:
            $ref: '#/components/schemas/ProjectGenerationContextItem'
          type: array
          maxItems: 50
          title: Regions
        tags:
          items:
            $ref: '#/components/schemas/ProjectGenerationContextItem'
          type: array
          maxItems: 100
          title: Tags
      additionalProperties: false
      type: object
      title: ProjectGenerationContext
    ProjectGenerationContextItem:
      properties:
        id:
          type: string
          maxLength: 200
          minLength: 1
          title: Id
        name:
          type: string
          maxLength: 200
          minLength: 1
          title: Name
        slug:
          anyOf:
            - type: string
              maxLength: 200
            - type: 'null'
          title: Slug
      additionalProperties: false
      type: object
      required:
        - id
        - name
      title: ProjectGenerationContextItem
    ProjectGenerationDateRange:
      properties:
        endDate:
          anyOf:
            - type: string
              maxLength: 40
            - type: 'null'
          title: Enddate
        label:
          type: string
          maxLength: 80
          minLength: 1
          title: Label
        mode:
          anyOf:
            - type: string
              enum:
                - custom
                - relative
            - type: 'null'
          title: Mode
        preset:
          type: string
          maxLength: 80
          minLength: 1
          title: Preset
        startDate:
          anyOf:
            - type: string
              maxLength: 40
            - type: 'null'
          title: Startdate
      additionalProperties: false
      type: object
      required:
        - label
        - preset
      title: ProjectGenerationDateRange
    ProjectGenerationResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectGeneration'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectGenerationResponse
    ProjectGenerationStatus:
      properties:
        run_id:
          type: string
          format: uuid
          title: Run Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        mode:
          type: string
          enum:
            - generate
            - adhoc
          title: Mode
        focus_prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Focus Prompt
        status:
          type: string
          enum:
            - queued
            - running
            - completed
            - failed
          title: Status
        started_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Started At
        finished_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Finished At
        error:
          anyOf:
            - type: string
            - type: 'null'
          title: Error
      additionalProperties: false
      type: object
      required:
        - run_id
        - category_id
        - mode
        - status
      title: ProjectGenerationStatus
    ProjectGenerationStatusResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectGenerationStatus'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectGenerationStatusResponse
    ProjectListItem:
      properties:
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        status:
          type: string
          enum:
            - suggested
            - tracked
            - retired
          title: Status
          default: suggested
        title:
          type: string
          title: Title
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        initiated_by_user_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Initiated By User Id
        topics:
          items:
            type: string
          type: array
          title: Topics
        updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Updated At
        task_types:
          items:
            type: string
          type: array
          title: Task Types
        task_count:
          type: integer
          minimum: 0
          title: Task Count
          default: 0
        new_task_count:
          type: integer
          minimum: 0
          title: New Task Count
          default: 0
        retired_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Retired At
        retired_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Retired Reason
        live_generation:
          anyOf:
            - $ref: '#/components/schemas/LiveGeneration'
            - type: 'null'
      type: object
      required:
        - project_id
        - category_id
        - title
      title: ProjectListItem
    ProjectResponse:
      properties:
        data:
          $ref: '#/components/schemas/Project'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectResponse
    ProjectStatusPayload:
      properties:
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        status:
          type: string
          enum:
            - suggested
            - tracked
            - retired
          title: Status
        live_generation:
          anyOf:
            - $ref: '#/components/schemas/LiveGeneration'
            - type: 'null'
        updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Updated At
      additionalProperties: false
      type: object
      required:
        - project_id
        - category_id
        - status
      title: ProjectStatusPayload
    ProjectStatusResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectStatusPayload'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectStatusResponse
    ProjectTask:
      properties:
        task_id:
          type: string
          format: uuid
          title: Task Id
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
        title:
          type: string
          title: Title
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        brief:
          anyOf:
            - type: string
            - type: 'null'
          title: Brief
        topic:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic
        impact:
          anyOf:
            - type: integer
              maximum: 5
              minimum: 1
            - type: 'null'
          title: Impact
        reference_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Reference Url
        reference_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Reference Label
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - done
            - abandoned
          title: Status
          default: not_started
        status_changed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Status Changed At
        is_new:
          type: boolean
          title: Is New
          default: true
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
      additionalProperties: false
      type: object
      required:
        - task_id
        - project_id
        - category_id
        - title
      title: ProjectTask
    ProjectTaskDetail:
      properties:
        task_id:
          type: string
          format: uuid
          title: Task Id
        project_id:
          type: string
          format: uuid
          title: Project Id
        category_id:
          type: string
          format: uuid
          title: Category Id
        type:
          anyOf:
            - type: string
            - type: 'null'
          title: Type
        title:
          type: string
          title: Title
        summary:
          anyOf:
            - type: string
            - type: 'null'
          title: Summary
        brief:
          anyOf:
            - type: string
            - type: 'null'
          title: Brief
        topic:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic
        impact:
          anyOf:
            - type: integer
              maximum: 5
              minimum: 1
            - type: 'null'
          title: Impact
        reference_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Reference Url
        reference_label:
          anyOf:
            - type: string
            - type: 'null'
          title: Reference Label
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - done
            - abandoned
          title: Status
          default: not_started
        status_changed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Status Changed At
        is_new:
          type: boolean
          title: Is New
          default: true
        created_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Created At
        project_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Project Title
      additionalProperties: false
      type: object
      required:
        - task_id
        - project_id
        - category_id
        - title
      title: ProjectTaskDetail
    ProjectTaskDetailResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectTaskDetail'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectTaskDetailResponse
    ProjectTaskResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectTask'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectTaskResponse
    ProjectTaskStatusPayload:
      properties:
        task_id:
          type: string
          format: uuid
          title: Task Id
        project_id:
          type: string
          format: uuid
          title: Project Id
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - done
            - abandoned
          title: Status
        changed_at:
          type: string
          format: date-time
          title: Changed At
        changed_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Changed By
        note:
          anyOf:
            - type: string
            - type: 'null'
          title: Note
      additionalProperties: false
      type: object
      required:
        - task_id
        - project_id
        - status
        - changed_at
      title: ProjectTaskStatusPayload
    ProjectTaskStatusResponse:
      properties:
        data:
          $ref: '#/components/schemas/ProjectTaskStatusPayload'
      additionalProperties: false
      type: object
      required:
        - data
      title: ProjectTaskStatusResponse
    Prompt:
      properties:
        id:
          type: string
          title: Id
        analysis_types:
          items:
            type: string
            enum:
              - visibility
              - sentiment
              - sentiment_v2
              - accuracy
          type: array
          title: Analysis Types
          default: []
        prompt_type:
          type: string
          title: Prompt Type
          default: ''
          deprecated: true
        prompt:
          type: string
          title: Prompt
        language:
          type: string
          title: Language
        status:
          type: string
          enum:
            - active
            - disabled
          title: Status
        topic:
          $ref: '#/components/schemas/NamedResource'
        tags:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Tags
          default: []
        regions:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Regions
        platforms:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Platforms
        personas:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Personas
          default: []
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
      type: object
      required:
        - id
        - prompt
        - language
        - status
        - topic
        - regions
        - platforms
        - created_at
        - updated_at
      title: Prompt
    PromptFilter:
      properties:
        field:
          type: string
          const: prompt
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: PromptFilter
      description: Filter by prompt text
    PromptIdFilter:
      properties:
        field:
          type: string
          const: prompt_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: PromptIdFilter
      description: Filter by prompt UUID.
    PromptInput:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
        - id
        - name
      title: PromptInput
    PromptOrderBy:
      type: string
      enum:
        - created_at
        - prompt
      title: PromptOrderBy
    PromptPreview:
      properties:
        id:
          type: string
          title: Id
          description: Generated prompt ID.
        prompt:
          type: string
          title: Prompt
          description: The prompt text.
        topic:
          $ref: '#/components/schemas/NamedResource'
          description: Resolved topic.
        language:
          type: string
          title: Language
          description: Language code.
        tags:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Tags
          description: Resolved tags.
          default: []
        regions:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Regions
          description: Resolved regions.
          default: []
        platforms:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Platforms
          description: Resolved platforms.
          default: []
        personas:
          items:
            $ref: '#/components/schemas/NamedResource'
          type: array
          title: Personas
          description: Resolved personas.
          default: []
        analysis_types:
          items:
            type: string
            enum:
              - visibility
              - sentiment
              - sentiment_v2
              - accuracy
          type: array
          title: Analysis Types
          description: Analysis types assigned to this prompt.
          default: []
        asset:
          anyOf:
            - $ref: '#/components/schemas/NamedResource'
            - type: 'null'
          description: Resolved asset, if applicable.
      type: object
      required:
        - id
        - prompt
        - topic
        - language
      title: PromptPreview
      description: Preview of a prompt that was (or would be) created.
    PromptType:
      type: string
      enum:
        - visibility
        - sentiment
      title: PromptType
    PromptTypeFilter:
      properties:
        field:
          type: string
          const: prompt_type
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - visibility
                - sentiment
            - items:
                type: string
                enum:
                  - visibility
                  - sentiment
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: PromptTypeFilter
      description: |-
        Filter by prompt type (visibility or sentiment).

        .. deprecated::
            Use :class:`AnalysisTypeFilter` instead. ``prompt_type`` is normalised
            to ``analysis_type`` at parse time.
    PromptUpdatePreview:
      properties:
        id:
          type: string
          title: Id
          description: ID of the updated prompt.
        prompt:
          anyOf:
            - $ref: '#/components/schemas/FieldDiff'
            - type: 'null'
          description: Prompt text diff.
        topic:
          anyOf:
            - $ref: '#/components/schemas/FieldDiff'
            - type: 'null'
          description: Topic diff.
        language:
          anyOf:
            - $ref: '#/components/schemas/FieldDiff'
            - type: 'null'
          description: Language diff.
        tags:
          anyOf:
            - $ref: '#/components/schemas/NamedResourceDiffList'
            - type: 'null'
          description: Tags added and removed.
        regions:
          anyOf:
            - $ref: '#/components/schemas/NamedResourceDiffList'
            - type: 'null'
          description: Regions added and removed.
        platforms:
          anyOf:
            - $ref: '#/components/schemas/NamedResourceDiffList'
            - type: 'null'
          description: Platforms added and removed.
        personas:
          anyOf:
            - $ref: '#/components/schemas/NamedResourceDiffList'
            - type: 'null'
          description: Personas added and removed.
        analysis_types:
          anyOf:
            - $ref: '#/components/schemas/FieldDiff'
            - type: 'null'
          description: Analysis types diff.
        asset:
          anyOf:
            - $ref: '#/components/schemas/FieldDiff'
            - type: 'null'
          description: Asset diff.
      type: object
      required:
        - id
      title: PromptUpdatePreview
      description: >-
        Preview of changes applied (or to be applied) to a single prompt. Only
        changed fields are included.
    QueryFanoutRow:
      properties:
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - type: string
            - type: 'null'
          title: Model
        region:
          anyOf:
            - type: string
            - type: 'null'
          title: Region
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
        query:
          anyOf:
            - type: string
            - type: 'null'
          title: Query
        total_fanouts:
          anyOf:
            - type: number
            - type: 'null'
          title: Total Fanouts
        fanouts_per_execution:
          anyOf:
            - type: number
            - type: 'null'
          title: Fanouts Per Execution
        share:
          anyOf:
            - type: number
            - type: 'null'
          title: Share
        query_variations:
          anyOf:
            - type: integer
            - type: 'null'
          title: Query Variations
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
      additionalProperties: true
      type: object
      title: QueryFanoutRow
      description: >-
        One row. Group dimensions are plain values (not `{id, name}`); metrics
        present depend on `metrics`.
    QueryFanoutsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - prompt
              - query
              - model
              - region
              - date
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - fanouts_per_execution
              - total_fanouts
              - share
              - query_variations
          type: array
          minItems: 1
          title: Metrics
          description: Metrics to return for each row.
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          propertyNames:
            enum:
              - fanouts_per_execution
              - total_fanouts
              - share
              - query_variations
              - date
          type: object
          title: Order By
          description: >-
            Custom ordering. Keys must be a requested metric or the ``date``
            dimension. Values are ``asc`` or ``desc``. Defaults to first metric
            descending.
          default: {}
          examples:
            - fanouts_per_execution: desc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/AnalysisTypeFilter'
              - $ref: '#/components/schemas/PromptTypeFilter'
            discriminator:
              propertyName: field
              mapping:
                analysis_type: '#/components/schemas/AnalysisTypeFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                prompt_type: '#/components/schemas/PromptTypeFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
          description: Filters to apply to the query fanout report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: QueryFanoutsQuery
    QueryFanoutsV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Fanout metrics returned per row.
        coverage_note:
          type: string
          title: Coverage Note
          description: Caveat about which runs the fanout metrics cover.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - metrics
        - coverage_note
      title: QueryFanoutsV2Info
    QueryFanoutsV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - model
              - region
              - prompt
              - query
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - fanouts_per_execution
                  - total_fanouts
                  - share
                  - query_variations
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        sort:
          anyOf:
            - $ref: >-
                #/components/schemas/app__routes__v2__answer_engine_insights__reports__query_fanouts__SortSpec
            - type: 'null'
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: QueryFanoutsV2Query
    QueryFanoutsV2Response:
      properties:
        info:
          $ref: '#/components/schemas/QueryFanoutsV2Info'
        data:
          items:
            $ref: '#/components/schemas/QueryFanoutRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: QueryFanoutsV2Response
    ReadDocumentResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The document's ID.
        name:
          type: string
          title: Name
          description: The document's title.
        url:
          type: string
          title: Url
          description: Link to open the document in the Profound app.
        visibility:
          type: string
          enum:
            - invited_only
            - organization
          title: Visibility
          description: General access scope. New documents are `invited_only`.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the document was created.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: >-
            When the document was last modified. Seeding the initial content
            counts, so a freshly created document is normally modified a moment
            after it was created.
        owner_user_id:
          type: string
          format: uuid
          title: Owner User Id
          description: ID of the document's owner.
        owner_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner Email
          description: >-
            Email of the document's owner. `null` when the owning profile has
            been deleted or could not be resolved.
        author_type:
          type: string
          enum:
            - user
            - agent
          title: Author Type
          description: >-
            Whether the document's owner is a person (`user`) or an agent
            (`agent`).
        app_delegate:
          anyOf:
            - type: string
            - type: 'null'
          title: App Delegate
          description: >-
            Which integration created the document, derived server-side from the
            credential that authenticated the write. `null` for documents
            created outside any integration. An open-ended value, not a fixed
            set — known values today include `external-api` and
            `context-manager`, and more are added as new integrations ship.
        category_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Category Name
          description: >-
            Name of the brand category set on the document, if any. Paired with
            `company_name`; writable only on create.
        company_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Name
          description: >-
            Name of the brand/company set on the document, if any. Paired with
            `category_name`; writable only on create.
        content_markdown:
          type: string
          title: Content Markdown
          description: >-
            The default tab's body as markdown. Empty string for a document with
            no content — never absent, so you can read it without a presence
            check.
        additional_tabs:
          anyOf:
            - items:
                $ref: '#/components/schemas/AdditionalTab'
              type: array
            - type: 'null'
          title: Additional Tabs
          description: >-
            Every tab beyond the default one, in document order, each as
            `{title, content_markdown}`. Upstream allows up to twenty. Omitted
            from the response entirely when `include_tabs=false`; an empty list
            is a real answer meaning this document has no other tabs, and the
            two are never confused. Tabs are readable through this API but not
            writable: create cannot make one, and replacing this document's
            content does not preserve them.
        comments:
          anyOf:
            - items:
                $ref: '#/components/schemas/Comment'
              type: array
            - type: 'null'
          title: Comments
          description: >-
            Review comments left on the document, each mapped to `{content,
            context}` — the comment's text and, if any, the text it was left on.
            Omitted from the response entirely when `include_comments=false`; an
            empty list is a real answer meaning this document has no comments.
            Mapped from upstream's own open, unvalidated shape — commenter
            identity, reply threads and resolution state are dropped, never
            relayed. A comment whose shape this mapping cannot read is dropped
            from the list rather than failing the read, so this list can be
            shorter than the document's real thread count.
        version_hash:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Hash
          description: >-
            Opaque token that changes whenever the document's content changes,
            sampled before this body was read — so it names this body or an
            older state, never a newer one. `null` when the collaboration
            service could not be asked for it; the read itself still succeeded,
            only the token is missing. Bare hex, up to 128 characters, with no
            fixed prefix — treat it as opaque and do not parse it. It detects
            change; it is not a precondition, and a matching token is not
            licence to overwrite blindly. Omitted entirely — not `null` — on a
            `preview=true` read: a hash next to a body you have not fully seen
            invites replacing content you never read. Ask for `preview=false`
            before you intend to write.
        content_truncated:
          type: boolean
          title: Content Truncated
          description: >-
            Whether any body in this response was cut short — `content_markdown`
            or any tab's. `true` only on a `preview=true` read where one of them
            exceeded the preview length; a short document, or a `preview=false`
            read, always gets `false` and every body whole. It does not say
            which one was cut. Preview truncation saves your context, not
            upstream cost — the full round trip through the collaborative editor
            happens either way.
          default: false
      type: object
      required:
        - id
        - name
        - url
        - visibility
        - created_at
        - updated_at
        - owner_user_id
        - owner_email
        - author_type
        - app_delegate
        - category_name
        - company_name
        - content_markdown
      title: ReadDocumentResponse
      description: >-
        A document's metadata, its default tab's body, its other tabs, its
        comments, and the

        change-detection token for it.
    Recommendation:
      properties:
        title:
          type: string
          title: Title
        status:
          $ref: '#/components/schemas/RecommendationStatus'
        impact:
          anyOf:
            - $ref: '#/components/schemas/RecommendationImpact'
            - type: 'null'
        suggestion:
          $ref: '#/components/schemas/RecommendationSuggestion'
      type: object
      required:
        - title
        - status
        - impact
        - suggestion
      title: Recommendation
    RecommendationImpact:
      properties:
        section:
          type: string
          title: Section
        score:
          type: number
          title: Score
      type: object
      required:
        - section
        - score
      title: RecommendationImpact
    RecommendationStatus:
      type: string
      enum:
        - done
        - pending
      title: RecommendationStatus
    RecommendationSuggestion:
      properties:
        text:
          type: string
          title: Text
        rationale:
          type: string
          title: Rationale
      type: object
      required:
        - text
        - rationale
      title: RecommendationSuggestion
    ReferralSourceFilter:
      properties:
        field:
          type: string
          const: referral_source
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: ReferralSourceFilter
      description: >-
        Filter by referral source. Values are not enum-constrained so the
        platform's shared

        provider filter can pass through IDs that have bot data but no referral
        data.
    ReferralTypeFilter:
      properties:
        field:
          type: string
          const: referral_type
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - internal
                - referer
                - utm
                - none
            - items:
                type: string
                enum:
                  - internal
                  - referer
                  - utm
                  - none
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: ReferralTypeFilter
      description: Filter by referral type
    ReferralsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - host
              - path
              - referral_source
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - visits
              - last_visit
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          propertyNames:
            enum:
              - date
              - host
              - path
              - referral_source
              - visits
              - last_visit
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        domain:
          type: string
          title: Domain
          description: Domain to query logs for.
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for logs. Accepts: YYYY-MM-DD, YYYY-MM-DD HH:MM,
            YYYY-MM-DD HH:MM:SS, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for logs. Accepts same formats as start_date. Defaults to
            now if omitted.
        organization_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Organization Id
        metric_filters:
          items:
            $ref: '#/components/schemas/NumericMetricFilter'
          type: array
          title: Metric Filters
          description: Numeric filters applied after report metrics are calculated.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/ReferralSourceFilter'
            discriminator:
              propertyName: field
              mapping:
                path: '#/components/schemas/PathFilter'
                referral_source: '#/components/schemas/ReferralSourceFilter'
          type: array
          title: Filters
          description: Filters for referrals report.
      type: object
      required:
        - metrics
        - domain
        - start_date
      title: ReferralsQuery
    ReferralsQueryV2:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - hour
              - host
              - path
              - referral_source
              - referral_type
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - visits
              - last_visit
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          propertyNames:
            enum:
              - date
              - hour
              - host
              - path
              - referral_source
              - visits
              - last_visit
              - referral_type
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        domain:
          type: string
          title: Domain
          description: Domain to query logs for.
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for logs. Accepts: YYYY-MM-DD, YYYY-MM-DD HH:MM,
            YYYY-MM-DD HH:MM:SS, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date in UTC. Accepts same formats as start_date. Defaults to now
            UTC if omitted.
        organization_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Organization Id
        timezone:
          type: string
          title: Timezone
          description: IANA timezone name for date bucketing and filter boundaries.
          default: UTC
        view_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: View Id
          description: >-
            Domain segment UUID used to scope the query to a configured subset
            of hosts and paths.
        metric_filters:
          items:
            $ref: '#/components/schemas/NumericMetricFilter'
          type: array
          title: Metric Filters
          description: Numeric filters applied after report metrics are calculated.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/ReferralSourceFilter'
              - $ref: '#/components/schemas/ReferralTypeFilter'
            discriminator:
              propertyName: field
              mapping:
                path: '#/components/schemas/PathFilter'
                referral_source: '#/components/schemas/ReferralSourceFilter'
                referral_type: '#/components/schemas/ReferralTypeFilter'
          type: array
          title: Filters
          description: Filters for referrals report.
      type: object
      required:
        - metrics
        - domain
        - start_date
      title: ReferralsQueryV2
    RegionIdFilter:
      properties:
        field:
          anyOf:
            - type: string
              const: region_id
            - type: string
              const: region
              deprecated: true
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: RegionIdFilter
      description: Filter by region UUID.
    RegionNameFilter:
      properties:
        field:
          type: string
          const: region_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: RegionNameFilter
      description: Filter by region name.
    ReplaceDocumentContentRequest:
      properties:
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: >-
            ID of the organization that owns the document. Required — Profound
            API keys are user-scoped, so the owning organization must be chosen
            explicitly. The caller must be a member of this organization.
        content_markdown:
          type: string
          title: Content Markdown
          description: >-
            New markdown body for the document, replacing everything it held
            before. An empty string is valid and clears the document — nothing
            else warns you before that happens, so treat sending one as
            deliberate. Whole-body replace only: send the complete new text, not
            just the part that changed. Capped at 1,000,000 bytes; the upstream
            router separately caps the entire request at 2 MiB, so a body near
            this cap can still be refused in transit rather than by this field.
        skip_title_sync:
          type: boolean
          title: Skip Title Sync
          description: >-
            Off by default, matching the Profound app: the document's title
            follows the new content's first heading, so a replace silently
            renames the document whenever that heading differs from the current
            title. Set true to keep the current title regardless of what the new
            content's first heading says.
          default: false
      additionalProperties: false
      type: object
      required:
        - organization_id
        - content_markdown
      title: ReplaceDocumentContentRequest
      description: Request body for replacing a document's entire content.
    ReplaceDocumentContentResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
          description: The document's ID.
        name:
          type: string
          title: Name
          description: The document's title.
        url:
          type: string
          title: Url
          description: Link to open the document in the Profound app.
        visibility:
          type: string
          enum:
            - invited_only
            - organization
          title: Visibility
          description: General access scope. New documents are `invited_only`.
        created_at:
          type: string
          format: date-time
          title: Created At
          description: When the document was created.
        updated_at:
          type: string
          format: date-time
          title: Updated At
          description: >-
            When the document was last modified. Seeding the initial content
            counts, so a freshly created document is normally modified a moment
            after it was created.
        owner_user_id:
          type: string
          format: uuid
          title: Owner User Id
          description: ID of the document's owner.
        owner_email:
          anyOf:
            - type: string
            - type: 'null'
          title: Owner Email
          description: >-
            Email of the document's owner. `null` when the owning profile has
            been deleted or could not be resolved.
        author_type:
          type: string
          enum:
            - user
            - agent
          title: Author Type
          description: >-
            Whether the document's owner is a person (`user`) or an agent
            (`agent`).
        app_delegate:
          anyOf:
            - type: string
            - type: 'null'
          title: App Delegate
          description: >-
            Which integration created the document, derived server-side from the
            credential that authenticated the write. `null` for documents
            created outside any integration. An open-ended value, not a fixed
            set — known values today include `external-api` and
            `context-manager`, and more are added as new integrations ship.
        category_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Category Name
          description: >-
            Name of the brand category set on the document, if any. Paired with
            `company_name`; writable only on create.
        company_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Company Name
          description: >-
            Name of the brand/company set on the document, if any. Paired with
            `category_name`; writable only on create.
        version_hash:
          anyOf:
            - type: string
            - type: 'null'
          title: Version Hash
          description: >-
            Opaque token that changes whenever the document's
            collaborative-editing snapshot changes — a digest over that
            snapshot, not over the markdown. It moves on a comment reply,
            because a comment changes the snapshot, and it does not move on a
            rename, because metadata sits outside the snapshot. Bare hex, up to
            128 characters, with no fixed prefix — treat it as opaque and do not
            parse it. `null` when no token could be minted; never omitted. It is
            a change detector, not a precondition: a caller must not treat a
            matching token as licence to overwrite blindly, because it names the
            room at a moment cortex observed and not the moment its own write
            lands.
        content_chars:
          type: integer
          title: Content Chars
          description: >-
            Character count of the markdown that landed — 0 when this call
            cleared the document. The only confirmation of how much was written,
            on the most destructive operation this surface exposes.
      type: object
      required:
        - id
        - name
        - url
        - visibility
        - created_at
        - updated_at
        - owner_user_id
        - owner_email
        - author_type
        - app_delegate
        - category_name
        - company_name
        - version_hash
        - content_chars
      title: ReplaceDocumentContentResponse
      description: >-
        The document after its content was replaced, plus the change-detection
        token and how much landed.
    Response:
      properties:
        info:
          $ref: '#/components/schemas/Info'
        data:
          items:
            $ref: '#/components/schemas/Result'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: Response
      description: Base response model for reports.
    Result:
      properties:
        metrics:
          items:
            anyOf:
              - type: integer
              - type: number
              - type: string
          type: array
          title: Metrics
        dimensions:
          items:
            anyOf:
              - type: string
              - type: string
                format: uuid
          type: array
          title: Dimensions
      type: object
      required:
        - metrics
        - dimensions
      title: Result
      description: Base model for report results.
    RootDomainFilter:
      properties:
        field:
          type: string
          const: root_domain
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: RootDomainFilter
      description: Filter by root domain
    RunAgentRequest:
      properties:
        inputs:
          additionalProperties: true
          type: object
          title: Inputs
          description: >-
            Input values for the run. Keys should match the property names
            defined in `schema.input`. Omit the request body when the agent does
            not require inputs.
      additionalProperties: false
      type: object
      title: RunAgentRequest
      description: Request body for starting an agent run.
    SearchKnowledgeBaseFilters:
      properties:
        tags:
          anyOf:
            - items:
                type: string
                minLength: 1
              type: array
              minItems: 1
            - type: 'null'
          title: Tags
          description: >-
            Optional tags to match. Documents with any matching tag are
            included.
        folders:
          anyOf:
            - items:
                type: string
                minLength: 1
              type: array
              maxItems: 1
              minItems: 1
            - type: 'null'
          title: Folders
          description: >-
            Optional folder paths to search within. Currently limited to one
            folder.
      additionalProperties: false
      type: object
      title: SearchKnowledgeBaseFilters
    SearchKnowledgeBaseRequest:
      properties:
        query:
          type: string
          minLength: 1
          title: Query
          description: Search query.
        top_k:
          type: integer
          maximum: 100
          minimum: 1
          title: Top K
          description: Maximum number of results to return.
        return_full_page:
          type: boolean
          title: Return Full Page
          description: Return full page content instead of snippets.
          default: false
        filters:
          anyOf:
            - $ref: '#/components/schemas/SearchKnowledgeBaseFilters'
            - type: 'null'
          description: Optional search filters.
      additionalProperties: false
      type: object
      required:
        - query
        - top_k
      title: SearchKnowledgeBaseRequest
    SearchQueryFilter:
      properties:
        field:
          type: string
          const: search_query
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SearchQueryFilter
      description: Filter by web-search query string.
    SentimentMetrics:
      properties:
        positive_sentiment:
          anyOf:
            - type: number
            - type: 'null'
          title: Positive Sentiment
        negative_sentiment:
          anyOf:
            - type: number
            - type: 'null'
          title: Negative Sentiment
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
      additionalProperties: true
      type: object
      title: SentimentMetrics
    SentimentPeriodScores:
      properties:
        current:
          anyOf:
            - $ref: '#/components/schemas/SentimentScores'
            - type: 'null'
        previous:
          anyOf:
            - $ref: '#/components/schemas/SentimentScores'
            - type: 'null'
      type: object
      title: SentimentPeriodScores
    SentimentQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - theme
              - date
              - region
              - topic
              - topic_id
              - model
              - asset_id
              - asset_name
              - tag
              - prompt
              - prompt_id
              - sentiment_type
              - persona
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - positive
              - negative
              - occurrences
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/AssetIdFilter'
              - $ref: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
              - $ref: '#/components/schemas/ThemeFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_id: '#/components/schemas/AssetIdFilter'
                asset_name: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                theme: '#/components/schemas/ThemeFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
          type: array
          title: Filters
          description: List of filters to apply to the sentiment report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: SentimentQuery
    SentimentRow:
      properties:
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        tag:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        theme:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        claim:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        run:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        competitor:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        positive_sentiment:
          anyOf:
            - type: number
            - type: 'null'
          title: Positive Sentiment
        negative_sentiment:
          anyOf:
            - type: number
            - type: 'null'
          title: Negative Sentiment
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
        previous:
          anyOf:
            - $ref: '#/components/schemas/SentimentMetrics'
            - type: 'null'
          description: Comparison-window metrics (when requested).
        prev_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Prev Date
        cited_websites:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Cited Websites
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
      additionalProperties: true
      type: object
      title: SentimentRow
      description: >-
        One group-combination row. Group dims and metrics present depend on
        `group_by`/`metrics`.
    SentimentScores:
      properties:
        positive_sentiment:
          type: number
          title: Positive Sentiment
        negative_sentiment:
          type: number
          title: Negative Sentiment
        assessment_count:
          type: integer
          title: Assessment Count
        occurrence:
          anyOf:
            - type: number
            - type: 'null'
          title: Occurrence
        response_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Response Count
        total_response_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Response Count
      type: object
      required:
        - positive_sentiment
        - negative_sentiment
        - assessment_count
      title: SentimentScores
    SentimentTheme:
      properties:
        type:
          anyOf:
            - type: string
              const: positive
            - type: string
              const: negative
          title: Type
        name:
          type: string
          title: Name
      type: object
      required:
        - type
        - name
      title: SentimentTheme
    SentimentV2ClaimFilter:
      properties:
        field:
          type: string
          const: claim
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2ClaimFilter
    SentimentV2ClaimIdFilter:
      properties:
        field:
          type: string
          const: claim_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2ClaimIdFilter
    SentimentV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        asset:
          type: string
          title: Asset
          description: The analyzed brand name.
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Sentiment metrics returned per row.
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
          description: Comparison-window start (when requested).
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
          description: Comparison-window end (when requested).
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - asset
        - metrics
      title: SentimentV2Info
    SentimentV2ModelIdFilter:
      properties:
        field:
          type: string
          const: model_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2ModelIdFilter
    SentimentV2PersonaIdFilter:
      properties:
        field:
          type: string
          const: persona_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2PersonaIdFilter
    SentimentV2PromptIdFilter:
      properties:
        field:
          type: string
          const: prompt_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2PromptIdFilter
    SentimentV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        asset:
          type: string
          title: Asset
          description: The brand name to analyze (sentiment is extracted on name, not id).
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
          description: YYYY-MM-DD, ET, inclusive (with end).
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
          description: YYYY-MM-DD, ET, inclusive (with start).
        group_by:
          items:
            type: string
            enum:
              - date
              - model
              - topic
              - region
              - prompt
              - persona
              - tag
              - theme
              - claim
              - run
              - competitor
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - positive_sentiment
                  - negative_sentiment
                  - occurrence
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        sort:
          $ref: >-
            #/components/schemas/app__routes__v2__answer_engine_insights__reports__sentiment__SortSpec
        include_cited_websites:
          type: boolean
          title: Include Cited Websites
          description: >-
            Return cited websites per row (only when grouping by
            `theme`/`claim`).
          default: false
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - asset
        - start_date
        - end_date
      title: SentimentV2Query
    SentimentV2RegionIdFilter:
      properties:
        field:
          type: string
          const: region_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2RegionIdFilter
    SentimentV2ReportDataPoint:
      properties:
        scores:
          $ref: '#/components/schemas/SentimentPeriodScores'
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        prev_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Prev Date
        group_ids:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Group Ids
        group_names:
          anyOf:
            - additionalProperties:
                type: string
              type: object
            - type: 'null'
          title: Group Names
        group_metadata:
          anyOf:
            - $ref: '#/components/schemas/SentimentV2ReportGroupMetadata'
            - type: 'null'
        cited_website_hrefs:
          items:
            type: string
          type: array
          title: Cited Website Hrefs
        total_count:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Count
      type: object
      required:
        - scores
      title: SentimentV2ReportDataPoint
    SentimentV2ReportGroupMetadata:
      properties:
        theme:
          anyOf:
            - type: string
            - type: 'null'
          title: Theme
        claim:
          anyOf:
            - type: string
            - type: 'null'
          title: Claim
        sentiment:
          anyOf:
            - type: string
              enum:
                - positive
                - negative
            - type: 'null'
          title: Sentiment
        prompt_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Id
        prompt_text:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Text
        topic_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Topic Id
        run_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Run Id
        created_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Created At
        model_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Model Id
        region_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Region Id
        persona_id:
          anyOf:
            - type: string
            - type: 'null'
          title: Persona Id
        asset_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Asset Name
        child_count_total:
          anyOf:
            - type: integer
            - type: 'null'
          title: Child Count Total
        child_count_matching:
          anyOf:
            - type: integer
            - type: 'null'
          title: Child Count Matching
        parent_matches_search:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Parent Matches Search
        child_matches_search:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Child Matches Search
      type: object
      title: SentimentV2ReportGroupMetadata
    SentimentV2ReportInfo:
      properties:
        query:
          additionalProperties: true
          type: object
          title: Query
        total_rows:
          type: integer
          title: Total Rows
      type: object
      required:
        - query
        - total_rows
      title: SentimentV2ReportInfo
    SentimentV2ReportQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        asset_name:
          type: string
          title: Asset Name
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
          description: Start of the previous period for delta computation.
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
          description: End of the previous period for delta computation.
        date_bucket:
          type: string
          enum:
            - day
            - week
            - month
          title: Date Bucket
          description: Date bucket for the report. Only used when dimensions includes date.
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - topic
              - region
              - model
              - prompt
              - persona
              - tag
              - theme
              - claim
              - run
              - asset_name
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
        metrics:
          items:
            type: string
            enum:
              - sentiment
              - occurrence
          type: array
          title: Metrics
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/SentimentV2ModelIdFilter'
              - $ref: '#/components/schemas/SentimentV2RegionIdFilter'
              - $ref: '#/components/schemas/SentimentV2TopicIdFilter'
              - $ref: '#/components/schemas/SentimentV2PromptIdFilter'
              - $ref: '#/components/schemas/SentimentV2PersonaIdFilter'
              - $ref: '#/components/schemas/SentimentV2TagIdFilter'
              - $ref: '#/components/schemas/SentimentV2RunIdFilter'
              - $ref: '#/components/schemas/SentimentV2ThemeFilter'
              - $ref: '#/components/schemas/SentimentV2ClaimFilter'
              - $ref: '#/components/schemas/SentimentV2ThemeIdFilter'
              - $ref: '#/components/schemas/SentimentV2ClaimIdFilter'
              - $ref: '#/components/schemas/SentimentV2SentimentFilter'
            discriminator:
              propertyName: field
              mapping:
                claim: '#/components/schemas/SentimentV2ClaimFilter'
                claim_id: '#/components/schemas/SentimentV2ClaimIdFilter'
                model_id: '#/components/schemas/SentimentV2ModelIdFilter'
                persona_id: '#/components/schemas/SentimentV2PersonaIdFilter'
                prompt_id: '#/components/schemas/SentimentV2PromptIdFilter'
                region_id: '#/components/schemas/SentimentV2RegionIdFilter'
                run_id: '#/components/schemas/SentimentV2RunIdFilter'
                sentiment: '#/components/schemas/SentimentV2SentimentFilter'
                tag_id: '#/components/schemas/SentimentV2TagIdFilter'
                theme: '#/components/schemas/SentimentV2ThemeFilter'
                theme_id: '#/components/schemas/SentimentV2ThemeIdFilter'
                topic_id: '#/components/schemas/SentimentV2TopicIdFilter'
          type: array
          title: Filters
          description: List of filters to apply to the sentiment-v2 report.
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          propertyNames:
            enum:
              - sentiment
              - occurrence
              - assessment_count
              - positive_sentiment
              - negative_sentiment
              - date
              - topic
              - region
              - model
              - prompt
              - persona
              - tag
              - theme
              - claim
              - run
              - asset_name
          type: object
          title: Order By
          description: >-
            Custom ordering of report results. Dimension keys must also be
            present in dimensions. The sentiment metric orders by
            positive_sentiment.
          examples:
            - occurrence: desc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
      additionalProperties: false
      type: object
      required:
        - category_id
        - asset_name
        - start_date
        - end_date
        - metrics
      title: SentimentV2ReportQuery
    SentimentV2ReportResponse:
      properties:
        info:
          $ref: '#/components/schemas/SentimentV2ReportInfo'
        data:
          items:
            $ref: '#/components/schemas/SentimentV2ReportDataPoint'
          type: array
          title: Data
      type: object
      required:
        - info
      title: SentimentV2ReportResponse
    SentimentV2Response:
      properties:
        info:
          $ref: '#/components/schemas/SentimentV2Info'
        data:
          items:
            $ref: '#/components/schemas/SentimentRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: SentimentV2Response
    SentimentV2RunIdFilter:
      properties:
        field:
          type: string
          const: run_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2RunIdFilter
    SentimentV2SentimentFilter:
      properties:
        field:
          type: string
          const: sentiment
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              enum:
                - positive
                - negative
            - items:
                type: string
                enum:
                  - positive
                  - negative
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2SentimentFilter
    SentimentV2TagIdFilter:
      properties:
        field:
          type: string
          const: tag_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2TagIdFilter
    SentimentV2ThemeFilter:
      properties:
        field:
          type: string
          const: theme
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2ThemeFilter
    SentimentV2ThemeIdFilter:
      properties:
        field:
          type: string
          const: theme_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2ThemeIdFilter
    SentimentV2TopicIdFilter:
      properties:
        field:
          type: string
          const: topic_id
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: SentimentV2TopicIdFilter
    ShoppingAllItemsWithMerchantsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - product_name
              - brand_name
              - product_url
              - product_image_urls
              - product_price
              - merchant_names
              - merchant_prices
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - visibility_score
              - share_of_voice
              - average_position
              - visibility_rank
              - product_rating
              - product_num_reviews
              - total_count
          type: array
          title: Metrics
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
        include_items:
          items:
            type: string
          type: array
          title: Include Items
        search_item:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Item
        merchant_filter_type:
          type: string
          enum:
            - any
            - all
          title: Merchant Filter Type
          default: any
        rank_by:
          type: string
          enum:
            - visibility
            - average_position
            - name
          title: Rank By
          default: visibility
        sort_order:
          type: string
          enum:
            - asc
            - desc
          title: Sort Order
          default: desc
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingAllItemsWithMerchantsQuery
    ShoppingBrandRow:
      properties:
        asset:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Asset
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
          description: Asset visibility rank as a top-level field (ungrouped only).
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        visibility_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Visibility Score
        average_position:
          anyOf:
            - type: number
            - type: 'null'
          title: Average Position
        visibility_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Visibility Rank
          description: Asset visibility rank (present on grouped rows).
      additionalProperties: true
      type: object
      title: ShoppingBrandRow
      description: >-
        One (asset x group) row. Group dims/metrics present depend on
        `group_by`/`metrics`.
    ShoppingBrandsV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: Total assets matching the query before pagination.
        count:
          type: integer
          title: Count
          description: >-
            Number of assets on this page. When grouped by `date`, `data` holds
            one row per asset x bucket, so `len(data)` can exceed `count`.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        scope:
          type: string
          title: Scope
          description: 'Asset scope: `all`, `owned`, or `custom` when `assets` was given.'
        assets:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
            - type: 'null'
          title: Assets
          description: Echoed `assets` selection; when set it overrides `scope`.
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Metrics returned per row.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - scope
        - metrics
      title: ShoppingBrandsV2Info
    ShoppingBrandsV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - topic
              - region
              - prompt
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - visibility_score
                  - average_position
                  - visibility_rank
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        scope:
          type: string
          enum:
            - owned
            - all
          title: Scope
          default: owned
        assets:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
            - type: 'null'
          title: Assets
          description: Restrict to these asset names (a name or list). Overrides `scope`.
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size for scope=all; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              maximum: 50000
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingBrandsV2Query
    ShoppingBrandsV2Response:
      properties:
        info:
          $ref: '#/components/schemas/ShoppingBrandsV2Info'
        data:
          items:
            $ref: '#/components/schemas/ShoppingBrandRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ShoppingBrandsV2Response
    ShoppingExecutionsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        analysis_types:
          items:
            type: string
            enum:
              - visibility
              - sentiment
              - sentiment_v2
              - accuracy
          type: array
          title: Analysis Types
        analysis_filter_type:
          type: string
          enum:
            - any
            - all
          title: Analysis Filter Type
          default: any
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingExecutionsQuery
    ShoppingItemVisibilityQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - product_key
              - product_name
              - brand_name
              - date
              - topic_id
              - prompt_id
              - prompt
              - product_url
              - product_image_urls
              - product_price
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - visibility_score
              - share_of_voice
              - average_position
              - visibility_rank
              - position1_percentage
              - position2_percentage
              - position3_percentage
              - position_above3_percentage
              - product_rating
              - product_num_reviews
              - total_count
          type: array
          title: Metrics
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
        include_items:
          items:
            type: string
          type: array
          title: Include Items
        search_item:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Item
        merchant_filter_type:
          type: string
          enum:
            - any
            - all
          title: Merchant Filter Type
          default: any
        include_competitors:
          type: boolean
          title: Include Competitors
          default: false
        target_product:
          anyOf:
            - type: string
            - type: 'null'
          title: Target Product
        competitor_limit:
          type: integer
          minimum: 1
          title: Competitor Limit
          default: 5
        include_position_frequency:
          type: boolean
          title: Include Position Frequency
          default: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingItemVisibilityQuery
    ShoppingMerchantByItemsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - merchant_name
              - product_name
              - brand_name
              - product_image_urls
              - product_price
              - merchant_prices
              - has_instant_checkout
              - delivery_options
              - merchant_url
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - merchant_visibility
              - product_visibility
              - product_rank
              - avg_position
              - total_count
          type: array
          title: Metrics
        product_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Product Name
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingMerchantByItemsQuery
    ShoppingMerchantDistributionQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - merchant_name
              - date
              - owned_asset_name
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - offer_count
              - product_count
              - average_rank
              - share_of_offers
              - visibility_rank
              - total_count
          type: array
          title: Metrics
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
        search_merchant:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Merchant
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingMerchantDistributionQuery
    ShoppingMerchantRow:
      properties:
        merchant_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Merchant Name
        merchant_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Merchant Share
        merchant_share_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Merchant Share Rank
        merchant_visibility:
          anyOf:
            - type: number
            - type: 'null'
          title: Merchant Visibility
        merchant_visibility_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Merchant Visibility Rank
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        visibility_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Visibility Rank
        brand_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Brand Name
        brand_share:
          anyOf:
            - type: number
            - type: 'null'
          title: Brand Share
        product:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Product
        product_visibility:
          anyOf:
            - type: number
            - type: 'null'
          title: Product Visibility
        product_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Product Rank
      additionalProperties: true
      type: object
      title: ShoppingMerchantRow
      description: >-
        One merchant row. `brand_name`/`brand_share` appear in the brand-share
        view; `product`/product

        metrics in the top-products view; metrics vary by view.
    ShoppingMerchantShareQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - topic_id
              - prompt_id
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            const: merchant_share
          type: array
          title: Metrics
        target_asset_names:
          items:
            type: string
          type: array
          title: Target Asset Names
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingMerchantShareQuery
    ShoppingMerchantVisibilityByBrandQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - merchant_name
              - brand_name
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - visibility_score
              - share_of_voice
              - average_position
              - visibility_rank
              - total_count
          type: array
          title: Metrics
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
        search_brand:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Brand
        include_brand:
          anyOf:
            - type: string
            - type: 'null'
          title: Include Brand
        include_brand_only:
          type: boolean
          title: Include Brand Only
          default: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingMerchantVisibilityByBrandQuery
    ShoppingMerchantsV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        view:
          type: string
          title: View
          description: '`distribution`, `brand_share`, or `top_products`.'
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Metrics returned per row.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - view
        - metrics
      title: ShoppingMerchantsV2Info
    ShoppingMerchantsV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - brand
              - product
          type: array
          title: Group By
          description: >-
            `[]` = distribution; `[brand]` = brand share within each merchant;
            `[product]` = top products per merchant. `date` (distribution only)
            adds a time series.
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - merchant_share
                  - merchant_share_rank
                  - merchant_visibility
                  - merchant_visibility_rank
                  - visibility_rank
                  - brand_share
                  - product_visibility
                  - product_rank
              type: array
            - type: 'null'
          title: Metrics
          description: Defaults to the chosen view's metrics; must be valid for that view.
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              maximum: 50000
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: 'Stream endpoint only: cap streamed rows.'
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingMerchantsV2Query
    ShoppingMerchantsV2Response:
      properties:
        info:
          $ref: '#/components/schemas/ShoppingMerchantsV2Info'
        data:
          items:
            $ref: '#/components/schemas/ShoppingMerchantRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ShoppingMerchantsV2Response
    ShoppingProductMerchantUrlsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        product_names:
          items:
            type: string
          type: array
          title: Product Names
        start_date:
          type: string
          format: date-time
          title: Start Date
        end_date:
          type: string
          format: date-time
          title: End Date
      type: object
      required:
        - category_id
        - product_names
        - start_date
        - end_date
      title: ShoppingProductMerchantUrlsQuery
    ShoppingProductRow:
      properties:
        product:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Product
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        visibility_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Visibility Score
        average_position:
          anyOf:
            - type: number
            - type: 'null'
          title: Average Position
        visibility_rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Visibility Rank
        position1_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Position1 Percentage
        position2_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Position2 Percentage
        position3_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Position3 Percentage
        position_above3_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Position Above3 Percentage
        product_rating:
          anyOf:
            - type: number
            - type: 'null'
          title: Product Rating
        product_num_reviews:
          anyOf:
            - type: integer
            - type: 'null'
          title: Product Num Reviews
        product_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Product Url
        product_image_urls:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Product Image Urls
        merchants:
          anyOf:
            - items:
                additionalProperties: true
                type: object
              type: array
            - type: 'null'
          title: Merchants
          description: >-
            Per-product merchant offers `{name, price}` (only with
            `include_merchants`).
      additionalProperties: true
      type: object
      title: ShoppingProductRow
      description: >-
        One product row. Merchant fields present only when `include_merchants`
        is true.
    ShoppingProductsV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: Total products matching the query before pagination.
        count:
          type: integer
          title: Count
          description: >-
            Number of products on this page. When grouped by
            `date`/`topic`/`prompt`, `data` holds one row per product x bucket,
            so `len(data)` can exceed `count`.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        include_merchants:
          type: boolean
          title: Include Merchants
          description: Whether merchant offers are included in each row.
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Metrics returned per row.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - include_merchants
        - metrics
      title: ShoppingProductsV2Info
    ShoppingProductsV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - topic
              - prompt
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - visibility_score
                  - average_position
                  - visibility_rank
                  - position1_percentage
                  - position2_percentage
                  - position3_percentage
                  - position_above3_percentage
                  - product_rating
                  - product_num_reviews
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        include_merchants:
          type: boolean
          title: Include Merchants
          description: Include per-product merchant offers (names, prices, urls, images).
          default: false
        target_product:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Target Product
          description: Return this product plus its top competitors (item view only).
        competitor_limit:
          type: integer
          minimum: 1
          title: Competitor Limit
          description: Competitors returned when `target_product` is set.
          default: 5
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              maximum: 50000
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: 'Stream endpoint only: cap streamed rows.'
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingProductsV2Query
    ShoppingProductsV2Response:
      properties:
        info:
          $ref: '#/components/schemas/ShoppingProductsV2Info'
        data:
          items:
            $ref: '#/components/schemas/ShoppingProductRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ShoppingProductsV2Response
    ShoppingRowsResponse:
      properties:
        info:
          $ref: '#/components/schemas/Info'
        data:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ShoppingRowsResponse
    ShoppingTriggerRateQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - date
              - model_id
              - topic_id
              - region_id
              - persona_id
              - prompt_id
              - prompt
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - total_runs
              - shopping_triggered_runs
              - trigger_rate_percentage
          type: array
          title: Metrics
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingTriggerRateQuery
    ShoppingTriggerRateRow:
      properties:
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        total_runs:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Runs
        shopping_triggered_runs:
          anyOf:
            - type: integer
            - type: 'null'
          title: Shopping Triggered Runs
        trigger_rate_percentage:
          anyOf:
            - type: number
            - type: 'null'
          title: Trigger Rate Percentage
      additionalProperties: true
      type: object
      title: ShoppingTriggerRateRow
      description: One trigger-rate row. Group dims present depend on `group_by`.
    ShoppingTriggerRateV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        metrics:
          items:
            type: string
          type: array
          title: Metrics
          description: Metrics returned per row.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - metrics
      title: ShoppingTriggerRateV2Info
    ShoppingTriggerRateV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - topic
              - region
              - persona
              - prompt
          type: array
          title: Group By
          description: Group by `prompt`/`topic` for the per-prompt/-topic trigger rate.
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - total_runs
                  - shopping_triggered_runs
                  - trigger_rate_percentage
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              maximum: 50000
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: 'Stream endpoint only: cap streamed rows.'
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingTriggerRateV2Query
    ShoppingTriggerRateV2Response:
      properties:
        info:
          $ref: '#/components/schemas/ShoppingTriggerRateV2Info'
        data:
          items:
            $ref: '#/components/schemas/ShoppingTriggerRateRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: ShoppingTriggerRateV2Response
    ShoppingTriggeredPromptsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          type: 'null'
          title: Pagination
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingTriggeredPromptsQuery
    ShoppingTriggeredTopicsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          type: 'null'
          title: Pagination
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingTriggeredTopicsQuery
    ShoppingVisibilityQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: Start date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: End date. Accepts YYYY-MM-DD, YYYY-MM-DD HH:MM, or ISO timestamp.
        comparison_start_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Comparison End Date
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          default: day
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/BrandNameFilter'
              - $ref: '#/components/schemas/MerchantNameFilter'
              - $ref: '#/components/schemas/ProductNameFilter'
              - $ref: '#/components/schemas/profound_shopping__api__AssetNameFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: '#/components/schemas/profound_shopping__api__AssetNameFilter'
                brand_name: '#/components/schemas/BrandNameFilter'
                merchant_name: '#/components/schemas/MerchantNameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                product_name: '#/components/schemas/ProductNameFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
          type: array
          title: Filters
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        include_count:
          type: boolean
          title: Include Count
          default: false
        tag_filter_type:
          type: string
          enum:
            - any
            - all
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        dimensions:
          items:
            type: string
            enum:
              - period
              - asset_name
              - date
              - model_id
              - topic_id
              - region_id
              - prompt_id
              - prompt
          type: array
          title: Dimensions
        metrics:
          items:
            type: string
            enum:
              - visibility_score
              - share_of_voice
              - average_position
              - visibility_rank
              - average_position_rank
              - position1_percentage
              - position2_percentage
              - position3_percentage
              - position_above3_percentage
              - total_count
          type: array
          title: Metrics
        owned_asset_names:
          items:
            type: string
          type: array
          title: Owned Asset Names
        search_asset:
          anyOf:
            - type: string
            - type: 'null'
          title: Search Asset
        include_asset:
          anyOf:
            - type: string
            - type: 'null'
          title: Include Asset
        include_asset_only:
          type: boolean
          title: Include Asset Only
          default: false
        include_assets_only:
          items:
            type: string
          type: array
          title: Include Assets Only
        rank_by:
          type: string
          enum:
            - visibility_score
            - average_position
          title: Rank By
          default: visibility_score
        include_position_frequency:
          type: boolean
          title: Include Position Frequency
          default: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: ShoppingVisibilityQuery
    StreamCitationsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - hostname
              - path
              - date
              - region
              - topic
              - topic_id
              - model
              - tag
              - prompt
              - prompt_id
              - url
              - root_domain
              - persona
              - citation_category
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - count
              - citation_share
              - share_of_voice
              - first_cited_at
          type: array
          title: Metrics
          description: >-
            Metrics to include. `share_of_voice` is deprecated, use
            `citation_share` instead.
          deprecated_values:
            share_of_voice: Use citation_share instead
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: |2-

                Custom ordering of the report results.

                The order is a record of key-value pairs where:
                - `key` is the field to order by, which can be a metric or dimension
                - `value` is the direction of the order, either `asc` for ascending or `desc` for descending.

                When not specified, the default order is the first metric in the query descending.
                        
          default: {}
          examples:
            - date: asc
            - count: desc
              date: asc
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/HostnameFilter'
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/UrlFilter'
              - $ref: '#/components/schemas/RootDomainFilter'
              - $ref: '#/components/schemas/AnalysisTypeFilter'
              - $ref: '#/components/schemas/PromptTypeFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/CitationCategoryFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/MentionedFilter'
            discriminator:
              propertyName: field
              mapping:
                analysis_type: '#/components/schemas/AnalysisTypeFilter'
                citation_category: '#/components/schemas/CitationCategoryFilter'
                hostname: '#/components/schemas/HostnameFilter'
                mentioned: '#/components/schemas/MentionedFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                path: '#/components/schemas/PathFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                prompt_type: '#/components/schemas/PromptTypeFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                root_domain: '#/components/schemas/RootDomainFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
                url: '#/components/schemas/UrlFilter'
          type: array
          title: Filters
          description: List of filters to apply to the citations report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: StreamCitationsQuery
    StreamSentimentQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - theme
              - date
              - region
              - topic
              - topic_id
              - model
              - asset_id
              - asset_name
              - tag
              - prompt
              - prompt_id
              - sentiment_type
              - persona
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - positive
              - negative
              - occurrences
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/AssetIdFilter'
              - $ref: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
              - $ref: '#/components/schemas/ThemeFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_id: '#/components/schemas/AssetIdFilter'
                asset_name: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                theme: '#/components/schemas/ThemeFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
          type: array
          title: Filters
          description: List of filters to apply to the sentiment report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: StreamSentimentQuery
    StreamVisibilityQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - region
              - topic
              - topic_id
              - model
              - asset_id
              - asset_name
              - prompt
              - prompt_id
              - tag
              - persona
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - share_of_voice
              - mentions_count
              - visibility_score
              - executions
              - average_position
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
          type: array
          title: Filters
          description: List of filters to apply to the visibility report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: StreamVisibilityQuery
    StreamWebSearchResultsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - hostname
              - path
              - url
              - root_domain
              - date
              - region
              - topic
              - topic_id
              - model
              - tag
              - prompt
              - prompt_id
              - persona
              - search_query
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - count
              - search_share
          type: array
          minItems: 1
          title: Metrics
          description: >-
            Metrics to include. `search_share` is the per-prompt occurrence
            rate.
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: |2-

                Custom ordering of the report results.

                The order is a record of key-value pairs where:
                - `key` is the field to order by, which can be a metric or dimension
                - `value` is the direction of the order, either `asc` for ascending or `desc` for descending.

                When not specified, the default order is the first metric in the query descending.
                        
          default: {}
          examples:
            - date: asc
            - count: desc
              date: asc
        pagination:
          anyOf:
            - $ref: '#/components/schemas/Pagination'
            - type: 'null'
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/HostnameFilter'
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/UrlFilter'
              - $ref: '#/components/schemas/RootDomainFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/SearchQueryFilter'
            discriminator:
              propertyName: field
              mapping:
                hostname: '#/components/schemas/HostnameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                path: '#/components/schemas/PathFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                root_domain: '#/components/schemas/RootDomainFilter'
                search_query: '#/components/schemas/SearchQueryFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                url: '#/components/schemas/UrlFilter'
          type: array
          title: Filters
          description: List of filters to apply to the web search results report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: StreamWebSearchResultsQuery
    Tag:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
        - id
        - name
      title: Tag
    TagIdFilter:
      properties:
        field:
          anyOf:
            - type: string
              const: tag_id
            - type: string
              const: tag
              deprecated: true
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: TagIdFilter
      description: Filter by tag (prompt group) UUID.
    TagNameFilter:
      properties:
        field:
          type: string
          const: tag_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: TagNameFilter
      description: Filter by tag name.
    ThemeFilter:
      properties:
        field:
          type: string
          const: theme
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: ThemeFilter
      description: Filter by theme
    TopInaccurateClaimRow:
      properties:
        clusterId:
          type: string
          title: Clusterid
        canonicalClaim:
          type: string
          title: Canonicalclaim
        claimOccurrence:
          type: number
          title: Claimoccurrence
        claimOccurrenceDelta:
          anyOf:
            - type: number
            - type: 'null'
          title: Claimoccurrencedelta
      type: object
      required:
        - clusterId
        - canonicalClaim
        - claimOccurrence
      title: TopInaccurateClaimRow
    TopInaccurateClaimsQuery:
      properties:
        start_date:
          type: string
          title: Start Date
        end_date:
          type: string
          title: End Date
        comparison_start_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison Start Date
        comparison_end_date:
          anyOf:
            - type: string
            - type: 'null'
          title: Comparison End Date
        category_id:
          type: string
          format: uuid
          title: Category Id
        topic_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Topic Ids
        exclude_topic_ids:
          type: boolean
          title: Exclude Topic Ids
          default: false
        tag_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Tag Ids
        tag_filter_type:
          type: string
          enum:
            - all
            - any
          title: Tag Filter Type
          default: any
        include_no_tag:
          type: boolean
          title: Include No Tag
          default: false
        region_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Region Ids
        platform_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Platform Ids
        persona_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Persona Ids
        include_no_persona:
          type: boolean
          title: Include No Persona
          default: false
        prompt_ids:
          anyOf:
            - items:
                type: string
                format: uuid
              type: array
            - type: 'null'
          title: Prompt Ids
        citation_categories:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Citation Categories
        limit:
          type: integer
          maximum: 50
          minimum: 1
          title: Limit
          default: 5
      type: object
      required:
        - start_date
        - end_date
        - category_id
      title: TopInaccurateClaimsQuery
    TopInaccurateClaimsResponse:
      properties:
        data:
          items:
            $ref: '#/components/schemas/TopInaccurateClaimRow'
          type: array
          title: Data
      type: object
      required:
        - data
      title: TopInaccurateClaimsResponse
    Topic:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        status:
          type: string
          enum:
            - active
            - disabled
          title: Status
      type: object
      required:
        - id
        - name
        - status
      title: Topic
    TopicIdFilter:
      properties:
        field:
          anyOf:
            - type: string
              const: topic_id
            - type: string
              const: topic
              deprecated: true
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
          title: Operator
        value:
          anyOf:
            - type: string
              format: uuid
            - items:
                type: string
                format: uuid
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: TopicIdFilter
      description: Filter by topic UUID.
    TopicInput:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
        - id
        - name
      title: TopicInput
    TopicNameFilter:
      properties:
        field:
          type: string
          const: topic_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: TopicNameFilter
      description: Filter by topic name
    UpdateAgentRequest:
      properties:
        graph:
          additionalProperties: true
          type: object
          title: Graph
          description: >-
            New workflow graph for the agent's draft version. Replaces the
            current draft graph; the agent is iterated in place rather than
            re-created, so its ID is stable. Required — a null graph is rejected
            as a 422 here rather than as a relayed upstream error.
      additionalProperties: false
      type: object
      required:
        - graph
      title: UpdateAgentRequest
      description: Request body for updating a draft agent's graph in place.
    UpdateDocumentRequest:
      properties:
        organization_id:
          type: string
          format: uuid
          title: Organization Id
          description: >-
            ID of the organization that owns the document. Required — Profound
            API keys are user-scoped, so the owning organization must be named
            explicitly. The caller must be a member of this organization.
        name:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          title: Name
          description: >-
            New title for the document. Renaming sets a permanent lock: once a
            document is renamed through this route, its title stops following
            the first heading of its content, for the rest of the document's
            life, and no route can undo the lock. Omit to leave the title as it
            is.
        visibility:
          anyOf:
            - type: string
              enum:
                - invited_only
                - organization
            - type: 'null'
          title: Visibility
          description: >-
            New sharing scope: `invited_only` for only the people invited to the
            document, or `organization` for everyone in the owning organization.
            Only the document's creator can change this; omit to leave sharing
            as it is. Three things worth knowing before you set it:
            `organization` visibility grants view only — there is no value here
            that grants the organization edit access. Setting `invited_only`
            removes the organization's access entirely. And re-asserting
            `organization` on a document whose organization grant is already
            `edit` silently downgrades the whole organization to view — upstream
            replays the access sync whenever this field is sent, and that sync
            always upserts view, even when the value you sent matches the one
            already stored.
      additionalProperties: false
      type: object
      required:
        - organization_id
      title: UpdateDocumentRequest
      description: Request body for renaming or resharing a document.
    UpdateProjectTaskRequest:
      properties:
        title:
          anyOf:
            - type: string
              maxLength: 240
              minLength: 1
            - type: 'null'
          title: Title
        summary:
          anyOf:
            - type: string
              maxLength: 2000
              minLength: 1
            - type: 'null'
          title: Summary
        brief:
          anyOf:
            - type: string
              maxLength: 8000
              minLength: 1
            - type: 'null'
          title: Brief
        type:
          anyOf:
            - type: string
              maxLength: 80
              minLength: 1
            - type: 'null'
          title: Type
        topic:
          anyOf:
            - type: string
              maxLength: 120
              minLength: 1
            - type: 'null'
          title: Topic
        impact:
          anyOf:
            - type: integer
              maximum: 5
              minimum: 1
            - type: 'null'
          title: Impact
        reference_url:
          anyOf:
            - type: string
              maxLength: 2048
              minLength: 1
            - type: 'null'
          title: Reference Url
        reference_label:
          anyOf:
            - type: string
              maxLength: 240
              minLength: 1
            - type: 'null'
          title: Reference Label
      additionalProperties: false
      type: object
      title: UpdateProjectTaskRequest
    UpdateProjectTaskStatusRequest:
      properties:
        status:
          type: string
          enum:
            - not_started
            - in_progress
            - done
            - abandoned
          title: Status
        note:
          anyOf:
            - type: string
              maxLength: 2000
              minLength: 1
            - type: 'null'
          title: Note
      additionalProperties: false
      type: object
      required:
        - status
      title: UpdateProjectTaskStatusRequest
    UpdatePromptInput:
      properties:
        id:
          type: string
          title: Id
          description: ID of the prompt to update.
        prompt:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt
          description: New prompt text.
        topic:
          anyOf:
            - $ref: '#/components/schemas/IdOrName'
            - type: 'null'
          description: New topic. A new topic is created if the name doesn't exist.
        language:
          anyOf:
            - type: string
            - type: 'null'
          title: Language
          description: New language code. Must be enabled for the organization.
        tags:
          anyOf:
            - items:
                $ref: '#/components/schemas/IdOrName'
              type: array
            - type: 'null'
          title: Tags
          description: New tag set. Replaces all existing tags on the prompt.
        regions:
          anyOf:
            - items:
                $ref: '#/components/schemas/IdOrName'
              type: array
            - type: 'null'
          title: Regions
          description: New region set. Replaces all existing regions.
        platforms:
          anyOf:
            - items:
                $ref: '#/components/schemas/IdOrName'
              type: array
            - type: 'null'
          title: Platforms
          description: New platform set. Replaces all existing platforms.
        personas:
          anyOf:
            - items:
                $ref: '#/components/schemas/IdOrName'
              type: array
            - type: 'null'
          title: Personas
          description: New persona set. Replaces all existing personas.
        analysis_types:
          anyOf:
            - items:
                type: string
                enum:
                  - visibility
                  - sentiment
                  - sentiment_v2
                  - accuracy
              type: array
            - type: 'null'
          title: Analysis Types
          description: >-
            New analysis types. Replaces all existing analysis types on the
            prompt.
        prompt_type:
          anyOf:
            - type: string
            - type: 'null'
          title: Prompt Type
          description: Deprecated. Use analysis_types instead.
          deprecated: true
        asset:
          anyOf:
            - $ref: '#/components/schemas/IdOrName'
            - type: 'null'
          description: Asset reference. Required when analysis_types includes 'sentiment'.
      type: object
      required:
        - id
      title: UpdatePromptInput
      description: >-
        Fields to update on an existing prompt. Only provided fields are
        changed; omitted fields are left unchanged.
    UpdatePromptStatusBody:
      properties:
        prompt_ids:
          items:
            type: string
            format: uuid
          type: array
          title: Prompt Ids
          description: IDs of the prompts to update.
        status:
          type: string
          enum:
            - active
            - disabled
            - deleted
          title: Status
          description: 'Target status: ''active'', ''disabled'', or ''deleted''.'
        dry_run:
          type: boolean
          title: Dry Run
          description: When true, validate and preview changes without persisting them.
          default: false
      type: object
      required:
        - prompt_ids
        - status
      title: UpdatePromptStatusBody
    UpdatePromptStatusResponse:
      properties:
        dry_run:
          type: boolean
          title: Dry Run
          description: Whether this was a dry run (no changes persisted).
        updated_prompts:
          type: integer
          title: Updated Prompts
          description: Number of prompts whose status was changed.
          default: 0
      type: object
      required:
        - dry_run
      title: UpdatePromptStatusResponse
      description: Response from updating prompt statuses.
    UpdatePromptsBody:
      properties:
        prompts:
          items:
            $ref: '#/components/schemas/UpdatePromptInput'
          type: array
          title: Prompts
          description: >-
            List of prompt updates. Each entry must include an `id` and at least
            one field to change.
        dry_run:
          type: boolean
          title: Dry Run
          description: When true, validate and preview changes without persisting them.
          default: false
      type: object
      required:
        - prompts
      title: UpdatePromptsBody
    UpdatePromptsResponse:
      properties:
        dry_run:
          type: boolean
          title: Dry Run
          description: Whether this was a dry run (no changes persisted).
        updated:
          type: integer
          title: Updated
          description: Number of prompts that had changes.
          default: 0
        topics_created:
          type: integer
          title: Topics Created
          description: Number of new topics created.
          default: 0
        tags_created:
          type: integer
          title: Tags Created
          description: Number of new tags created.
          default: 0
        prompts:
          items:
            $ref: '#/components/schemas/PromptUpdatePreview'
          type: array
          title: Prompts
          description: List of prompts with their change diffs.
          default: []
      type: object
      required:
        - dry_run
      title: UpdatePromptsResponse
      description: Response from updating prompts.
    UrlFilter:
      properties:
        field:
          type: string
          const: url
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: UrlFilter
      description: Filter by URL
    UserInput:
      properties:
        type:
          $ref: '#/components/schemas/ContentType'
        value:
          type: string
          title: Value
        metadata:
          additionalProperties:
            anyOf:
              - type: integer
              - type: string
          type: object
          title: Metadata
      type: object
      required:
        - type
        - value
        - metadata
      title: UserInput
    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
    VisibilityQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - date
              - region
              - topic
              - topic_id
              - model
              - asset_id
              - asset_name
              - prompt
              - prompt_id
              - tag
              - persona
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - share_of_voice
              - mentions_count
              - visibility_score
              - executions
              - average_position
          type: array
          title: Metrics
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: >-

            Custom ordering of the report results.


            The order is a record of key-value pairs where:

            - key is the field to order by, which can be a metric or dimension

            - value is the direction of the order, either 'asc' for ascending or
            'desc' for descending.


            When not specified, the default order is the first metric in the
            query descending.
                    
          default: {}
          examples:
            - date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/RegionNameFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/TopicNameFilter'
              - $ref: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/TagNameFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
            discriminator:
              propertyName: field
              mapping:
                asset_name: >-
                  #/components/schemas/profound_answer_engine_insights__filters__AssetNameFilter
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                region_name: '#/components/schemas/RegionNameFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                tag_name: '#/components/schemas/TagNameFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                topic_name: '#/components/schemas/TopicNameFilter'
          type: array
          title: Filters
          description: List of filters to apply to the visibility report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: VisibilityQuery
    VisibilityRow:
      properties:
        asset:
          anyOf:
            - $ref: '#/components/schemas/AssetRef'
            - type: 'null'
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
          description: Asset rank (only when not grouped).
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        topic:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        region:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        prompt:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        persona:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
        visibility_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Visibility Score
        share_of_voice:
          anyOf:
            - type: number
            - type: 'null'
          title: Share Of Voice
        average_position:
          anyOf:
            - type: number
            - type: 'null'
          title: Average Position
      additionalProperties: true
      type: object
      title: VisibilityRow
      description: >-
        One (asset x group) row. Group dimensions and metrics present depend on
        `group_by`/`metrics`.
    VisibilityV2Info:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        scope:
          type: string
          title: Scope
          description: 'Asset scope: `all` or `owned`.'
        asset_filter:
          anyOf:
            - additionalProperties: true
              type: object
            - items:
                type: string
              type: array
            - type: string
            - type: 'null'
          title: Asset Filter
          description: Echoed `assets` selection (filter clause, name, or list), or null.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - scope
      title: VisibilityV2Info
    VisibilityV2Query:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        group_by:
          items:
            type: string
            enum:
              - date
              - model
              - topic
              - region
              - prompt
              - persona
          type: array
          title: Group By
        metrics:
          anyOf:
            - items:
                type: string
                enum:
                  - visibility_score
                  - share_of_voice
                  - average_position
              type: array
            - type: 'null'
          title: Metrics
        interval:
          type: string
          enum:
            - day
            - week
            - month
          title: Interval
          default: day
        scope:
          type: string
          enum:
            - owned
            - all
          title: Scope
          default: owned
        assets:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
            - $ref: '#/components/schemas/EntityFilterClause'
            - type: 'null'
          title: Assets
          description: >-
            A name (`is`), a list (`in`), or {op,value} with op
            `is`/`in`/`not_in`.
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
        sort:
          $ref: >-
            #/components/schemas/app__routes__v2__answer_engine_insights__reports__visibility__SortSpec
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        max_results:
          anyOf:
            - type: integer
              exclusiveMinimum: 0
            - type: 'null'
          title: Max Results
          description: >-
            Stream endpoint only: cap the number of streamed rows (default:
            all).
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: VisibilityV2Query
    VisibilityV2Response:
      properties:
        info:
          $ref: '#/components/schemas/VisibilityV2Info'
        data:
          items:
            $ref: '#/components/schemas/VisibilityRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: VisibilityV2Response
    WebSearchResultsQuery:
      properties:
        date_interval:
          type: string
          enum:
            - hour
            - day
            - week
            - month
            - quarter
            - year
            - relative_week
          title: Date Interval
          description: Date interval for the report. (only used with date dimension)
          default: day
        dimensions:
          items:
            type: string
            enum:
              - hostname
              - path
              - url
              - root_domain
              - date
              - region
              - topic
              - topic_id
              - model
              - tag
              - prompt
              - prompt_id
              - persona
              - search_query
          type: array
          title: Dimensions
          description: Dimensions to group the report by.
          default: []
        metrics:
          items:
            type: string
            enum:
              - count
              - search_share
          type: array
          minItems: 1
          title: Metrics
          description: >-
            Metrics to include. `search_share` is the per-prompt occurrence
            rate.
        order_by:
          additionalProperties:
            type: string
            enum:
              - asc
              - desc
          type: object
          title: Order By
          description: |2-

                Custom ordering of the report results.

                The order is a record of key-value pairs where:
                - `key` is the field to order by, which can be a metric or dimension
                - `value` is the direction of the order, either `asc` for ascending or `desc` for descending.

                When not specified, the default order is the first metric in the query descending.
                        
          default: {}
          examples:
            - date: asc
            - count: desc
              date: asc
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination settings for the report results.
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: >-
            Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        end_date:
          type: string
          format: date-time
          title: End Date
          description: >-
            End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD
            HH:MM, or full ISO timestamp.
        filters:
          items:
            oneOf:
              - $ref: '#/components/schemas/HostnameFilter'
              - $ref: '#/components/schemas/PathFilter'
              - $ref: '#/components/schemas/RegionIdFilter'
              - $ref: '#/components/schemas/TopicIdFilter'
              - $ref: '#/components/schemas/ModelIdFilter'
              - $ref: '#/components/schemas/TagIdFilter'
              - $ref: '#/components/schemas/UrlFilter'
              - $ref: '#/components/schemas/RootDomainFilter'
              - $ref: '#/components/schemas/PersonaIdFilter'
              - $ref: '#/components/schemas/PromptFilter'
              - $ref: '#/components/schemas/PromptIdFilter'
              - $ref: '#/components/schemas/SearchQueryFilter'
            discriminator:
              propertyName: field
              mapping:
                hostname: '#/components/schemas/HostnameFilter'
                model: '#/components/schemas/ModelIdFilter'
                model_id: '#/components/schemas/ModelIdFilter'
                path: '#/components/schemas/PathFilter'
                persona_id: '#/components/schemas/PersonaIdFilter'
                prompt: '#/components/schemas/PromptFilter'
                prompt_id: '#/components/schemas/PromptIdFilter'
                region: '#/components/schemas/RegionIdFilter'
                region_id: '#/components/schemas/RegionIdFilter'
                root_domain: '#/components/schemas/RootDomainFilter'
                search_query: '#/components/schemas/SearchQueryFilter'
                tag: '#/components/schemas/TagIdFilter'
                tag_id: '#/components/schemas/TagIdFilter'
                topic: '#/components/schemas/TopicIdFilter'
                topic_id: '#/components/schemas/TopicIdFilter'
                url: '#/components/schemas/UrlFilter'
          type: array
          title: Filters
          description: List of filters to apply to the web search results report.
      type: object
      required:
        - metrics
        - category_id
        - start_date
        - end_date
      title: WebSearchResultsQuery
    WebSearchResultsResponse:
      properties:
        info:
          $ref: '#/components/schemas/Info'
        data:
          items:
            $ref: '#/components/schemas/WebSearchResultsResult'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: WebSearchResultsResponse
      examples:
        - data:
            - dimensions:
                - example.com
                - /some/path
                - '2023-10-01'
              metrics:
                - 10
                - 0.05
          info:
            query:
              date_interval: day
              dimensions:
                - hostname
                - path
                - date
              filters:
                - field: hostname
                  operator: is
                  value: example.com
              metrics:
                - count
                - search_share
            total_rows: 200
    WebSearchResultsResult:
      properties:
        metrics:
          items:
            anyOf:
              - type: integer
              - type: number
              - type: string
          type: array
          title: Metrics
        dimensions:
          items:
            anyOf:
              - type: string
              - type: string
                format: uuid
              - type: 'null'
          type: array
          title: Dimensions
      type: object
      required:
        - metrics
        - dimensions
      title: WebSearchResultsResult
    YoutubeChannelRow:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Channel title when grouped by channel, or the handle when no title
            resolved; category name when grouped by `["video_category"]`; source
            type when grouped by `["source_type"]`.
        handle:
          anyOf:
            - type: string
            - type: 'null'
          title: Handle
          description: >-
            Channel handle without the `@`, and the identifier this API exposes.
            Pass it to /videos as `channel_handle`. Null for the rare channel
            whose handle did not resolve.
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: Openable channel URL. Null for video-category rows.
        rank:
          type: integer
          title: Rank
          description: >-
            Leading channel's 1-based position in the full ranked set,
            continuing across pages; repeated across that channel's cross-tab
            rows rather than numbering rows.
        date:
          anyOf:
            - type: string
            - type: 'null'
          title: Date
          description: Period start. Present when `interval` is set.
        video_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Video Category
          description: >-
            Populated for a secondary video-category slice; with group_by
            `["video_category"]`, the category is returned in `name` instead. An
            unresolved category is returned as an empty string.
        model:
          anyOf:
            - $ref: '#/components/schemas/DimensionRef'
            - type: 'null'
          description: >-
            Answer engine as an object `{id, name}`, present when grouped by
            model. The name matches `info.models`; the id is the model id the
            other reports accept.
        source_type:
          anyOf:
            - type: string
              enum:
                - video
                - short
                - channel
                - playlist
                - other
            - type: 'null'
          title: Source Type
          description: >-
            YouTube source type, present when grouped by source type, including
            as the second dimension of a cross-tab.
        count:
          type: integer
          title: Count
          description: Citations attributed to this row.
        videos:
          type: integer
          title: Videos
          description: Distinct videos of this channel that were cited.
        citation_share:
          type: number
          title: Citation Share
          description: >-
            Share of every YouTube citation in the window (attributed and
            unattributed alike), or the period when `interval` is set,
            regardless of `source_types`. An unnarrowed complete ranking sums to
            slightly less than 1 because unattributed citations cannot appear in
            channel rows; a narrowed ranking sums to its slice's share.
      additionalProperties: true
      type: object
      required:
        - name
        - rank
        - count
        - videos
        - citation_share
      title: YoutubeChannelRow
      description: One channel (or video category) row, optionally sliced.
    YoutubeChannelsInfo:
      properties:
        total_results:
          type: integer
          title: Total Results
          description: >-
            Distinct leading channels matching the window; this can differ from
            the number of rows returned.
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        category_id:
          type: string
          format: uuid
          title: Category Id
          description: Echoed category id this report covers.
        source_types:
          items:
            type: string
            enum:
              - video
              - short
              - channel
              - playlist
              - other
          type: array
          title: Source Types
          description: >-
            Source types this report covers. Derived from the request, not
            returned rows, so a listed type may have no rows.
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
          description: Echoed request cursor; omitted on the first page.
        limit:
          type: integer
          title: Limit
          description: Effective page size in leading channels, not returned rows.
        interval:
          anyOf:
            - type: string
              enum:
                - day
                - week
                - month
            - type: 'null'
          title: Interval
          description: >-
            Effective channel time-series interval, or null when the channel
            report covers the full window.
        group_by:
          items:
            type: string
          type: array
          title: Group By
          description: >-
            Echoed dimensions that define a row. Channel reports echo
            `["channel"]` when group_by is omitted.
      additionalProperties: true
      type: object
      required:
        - total_results
        - count
        - models
        - start_date
        - end_date
        - category_id
        - source_types
        - limit
        - group_by
      title: YoutubeChannelsInfo
      description: >-
        Channel report metadata, including effective paging and grouping
        settings.
    YoutubeChannelsQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: >-
            Advanced filter tree. Prompt-level dimensions are `model`, `topic`,
            `region`, `prompt`, `persona`, `tag`, `analysis_type`. `channel`
            covers both channel cases: `in` with a list of handles selects
            exactly those channels, resolving each handle to its channel so a
            renamed channel is never returned in pieces; `contains` matches a
            channel's title or handle by name. Combine with `and`/`or`/`not` up
            to 3 deep. An exact `channel` selection must be its own `and`
            clause, and a `channel` leaf cannot share an `or` or `not` with a
            prompt-level leaf, because those compile at different stages of the
            query. `domain` and `page` are rejected rather than approximated:
            every row here is one domain, and `page` is not a video id.
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
        source_types:
          anyOf:
            - items:
                type: string
                enum:
                  - video
                  - short
                  - channel
                  - playlist
                  - other
              type: array
            - type: 'null'
          title: Source Types
          description: >-
            Limit results to YouTube source types: `video`, `short`, `channel`,
            `playlist`, or `other`. Omit to include `video`, `short`, `channel`,
            and `playlist`; `other` is excluded because those citations have no
            channel. Requests containing `other` are rejected.
        group_by:
          items:
            type: string
            enum:
              - channel
              - video_category
              - model
              - source_type
          type: array
          title: Group By
          description: >-
            What each row represents. Empty or `["channel"]` ranks channels;
            `["video_category"]` ranks content categories; `["source_type"]`
            ranks source types; `["channel", "video_category"]`, `["channel",
            "source_type"]` and `["channel", "model"]` return cross-tabs — a row
            per channel per category, or per answer engine. `limit` counts
            leading channels in every case, so ten channels across nine engines
            is ten channels and ninety rows.
        interval:
          anyOf:
            - type: string
              enum:
                - day
                - week
                - month
            - type: 'null'
          title: Interval
          description: >-
            Return a time series instead of window totals: one row per entity
            per period, each carrying `date`. `citation_share` is then relative
            to that period, so the series is comparable across periods. Omit for
            window totals.
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: YoutubeChannelsQuery
      description: Channel and category rollups.
    YoutubeChannelsResponse:
      properties:
        info:
          $ref: '#/components/schemas/YoutubeChannelsInfo'
        data:
          items:
            $ref: '#/components/schemas/YoutubeChannelRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: YoutubeChannelsResponse
    YoutubeCoverage:
      properties:
        total_youtube_citations:
          type: integer
          title: Total Youtube Citations
          description: Every YouTube citation in the window.
          default: 0
        attributed_citations:
          type: integer
          title: Attributed Citations
          description: >-
            Citations that resolve to a channel, so can appear in the channel
            and video rankings. NOT the citation_share divisor — that is
            total_youtube_citations, so a complete channel ranking's shares sum
            to slightly less than 1.
          default: 0
        unattributed_citations:
          type: integer
          title: Unattributed Citations
          description: >-
            Citations with no channel: search and feed URLs, deleted sources, or
            not yet resolved.
          default: 0
        citations_video:
          type: integer
          title: Citations Video
          description: Citations pointing at long-form videos.
          default: 0
        citations_short:
          type: integer
          title: Citations Short
          description: Citations pointing at Shorts.
          default: 0
        citations_channel:
          type: integer
          title: Citations Channel
          description: Citations pointing at a channel page rather than a video.
          default: 0
        citations_playlist:
          type: integer
          title: Citations Playlist
          description: Citations pointing at a playlist.
          default: 0
        citations_other:
          type: integer
          title: Citations Other
          description: Search, feed, and homepage URLs. Never attributable.
          default: 0
        distinct_channels:
          type: integer
          title: Distinct Channels
          description: Distinct channels cited.
          default: 0
        distinct_videos:
          type: integer
          title: Distinct Videos
          description: Distinct long-form videos cited.
          default: 0
        distinct_shorts:
          type: integer
          title: Distinct Shorts
          description: Distinct Shorts cited.
          default: 0
      type: object
      title: YoutubeCoverage
      description: How much of youtube.com the rollups can speak for.
    YoutubeSummaryInfo:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        category_id:
          type: string
          format: uuid
          title: Category Id
          description: Echoed category id this report covers.
        source_types:
          items:
            type: string
            enum:
              - video
              - short
              - channel
              - playlist
              - other
          type: array
          title: Source Types
          description: >-
            All five YouTube source types; this endpoint has no source_types
            request field and cannot be narrowed.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - category_id
        - source_types
      title: YoutubeSummaryInfo
      description: Summary report metadata.
    YoutubeSummaryQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: >-
            Advanced filter tree. Prompt-level dimensions are `model`, `topic`,
            `region`, `prompt`, `persona`, `tag`, `analysis_type`. `channel`
            covers both channel cases: `in` with a list of handles selects
            exactly those channels, resolving each handle to its channel so a
            renamed channel is never returned in pieces; `contains` matches a
            channel's title or handle by name. Combine with `and`/`or`/`not` up
            to 3 deep. An exact `channel` selection must be its own `and`
            clause, and a `channel` leaf cannot share an `or` or `not` with a
            prompt-level leaf, because those compile at different stages of the
            query. `domain` and `page` are rejected rather than approximated:
            every row here is one domain, and `page` is not a video id.
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: YoutubeSummaryQuery
      description: One object describing the window.
    YoutubeSummaryResponse:
      properties:
        info:
          $ref: '#/components/schemas/YoutubeSummaryInfo'
        data:
          $ref: '#/components/schemas/YoutubeCoverage'
      type: object
      required:
        - info
        - data
      title: YoutubeSummaryResponse
    YoutubeVideoRow:
      properties:
        video_id:
          type: string
          title: Video Id
          description: YouTube video id, as in the watch URL.
        source_type:
          type: string
          enum:
            - video
            - short
            - channel
            - playlist
            - other
          title: Source Type
          description: >-
            YouTube source type: `video`, `short`, `channel`, `playlist` or
            `other`.
        title:
          anyOf:
            - type: string
            - type: 'null'
          title: Title
          description: Resolved title, or null when unavailable.
        channel_title:
          anyOf:
            - type: string
            - type: 'null'
          title: Channel Title
          description: Publishing channel title, or null when unknown.
        channel_handle:
          anyOf:
            - type: string
            - type: 'null'
          title: Channel Handle
          description: >-
            Handle of the publishing channel; select it with a `channel` filter
            of `in`. Null when unknown.
        url:
          anyOf:
            - type: string
            - type: 'null'
          title: Url
          description: Openable video URL, or null when unavailable.
        channel_url:
          anyOf:
            - type: string
            - type: 'null'
          title: Channel Url
          description: Openable URL for the publishing channel, or null when unknown.
        rank:
          type: integer
          title: Rank
          description: 1-based position in the full ranked set, continuing across pages.
        published_at:
          anyOf:
            - type: string
            - type: 'null'
          title: Published At
          description: Upload date, or null when unknown.
        duration_seconds:
          anyOf:
            - type: integer
            - type: 'null'
          title: Duration Seconds
          description: Length in seconds, or null when unknown.
        video_category:
          anyOf:
            - type: string
            - type: 'null'
          title: Video Category
          description: YouTube content category, or null when unknown.
        count:
          type: integer
          title: Count
          description: Citations attributed to this video.
        citation_share:
          type: number
          title: Citation Share
          description: >-
            Share of every YouTube citation in the window (attributed and
            unattributed alike), regardless of `source_types`. Shares sum to at
            most 1, reaching about 1 only with `attribution="all"` and no
            `source_types` filter; a narrowed ranking sums to its slice's share.
      additionalProperties: true
      type: object
      required:
        - video_id
        - source_type
        - rank
        - count
        - citation_share
      title: YoutubeVideoRow
    YoutubeVideosInfo:
      properties:
        total_results:
          anyOf:
            - type: integer
            - type: 'null'
          title: Total Results
          description: >-
            Total rows matching the query before pagination (null when not
            computed).
        count:
          type: integer
          title: Count
          description: Number of rows returned in `data` for this page.
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Next Cursor
          description: Opaque cursor for the next page; null on the last page.
        models:
          items:
            type: string
          type: array
          title: Models
          description: Display names of the models the report covers.
        start_date:
          type: string
          title: Start Date
          description: Echoed request start date (YYYY-MM-DD, ET).
        end_date:
          type: string
          title: End Date
          description: Echoed request end date (YYYY-MM-DD, ET).
        filter:
          anyOf:
            - additionalProperties: true
              type: object
            - type: 'null'
          title: Filter
          description: Echoed normalized filter tree, or null when no filter was sent.
        category_id:
          type: string
          format: uuid
          title: Category Id
          description: Echoed category id this report covers.
        source_types:
          items:
            type: string
            enum:
              - video
              - short
              - channel
              - playlist
              - other
          type: array
          title: Source Types
          description: >-
            Source types this report covers. Derived from the request, not
            returned rows, so a listed type may have no rows.
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
          description: Echoed request cursor; omitted on the first page.
        limit:
          type: integer
          title: Limit
          description: Effective page size applied to this paged report.
        attribution:
          type: string
          enum:
            - attributed
            - unattributed
            - all
          title: Attribution
          description: Effective video attribution mode.
      additionalProperties: true
      type: object
      required:
        - count
        - models
        - start_date
        - end_date
        - category_id
        - source_types
        - limit
        - attribution
      title: YoutubeVideosInfo
      description: >-
        Video report metadata, including effective paging and attribution
        settings.
    YoutubeVideosQuery:
      properties:
        category_id:
          type: string
          format: uuid
          title: Category Id
        start_date:
          type: string
          title: Start Date
          description: YYYY-MM-DD, ET, inclusive
        end_date:
          type: string
          title: End Date
          description: YYYY-MM-DD, ET, inclusive
        filter:
          anyOf:
            - $ref: '#/components/schemas/FilterNode'
            - type: 'null'
          description: >-
            Advanced filter tree. Prompt-level dimensions are `model`, `topic`,
            `region`, `prompt`, `persona`, `tag`, `analysis_type`. `channel`
            covers both channel cases: `in` with a list of handles selects
            exactly those channels, resolving each handle to its channel so a
            renamed channel is never returned in pieces; `contains` matches a
            channel's title or handle by name. Combine with `and`/`or`/`not` up
            to 3 deep. An exact `channel` selection must be its own `and`
            clause, and a `channel` leaf cannot share an `or` or `not` with a
            prompt-level leaf, because those compile at different stages of the
            query. `domain` and `page` are rejected rather than approximated:
            every row here is one domain, and `page` is not a video id.
        limit:
          anyOf:
            - type: integer
              maximum: 50
              exclusiveMinimum: 0
            - type: 'null'
          title: Limit
          description: Page size; default 10, max 50.
        cursor:
          anyOf:
            - type: string
            - type: 'null'
          title: Cursor
        source_types:
          anyOf:
            - items:
                type: string
                enum:
                  - video
                  - short
                  - channel
                  - playlist
                  - other
              type: array
            - type: 'null'
          title: Source Types
          description: >-
            Limit results to YouTube source types: `video`, `short`, `channel`,
            `playlist`, or `other`. Omit to include `video` and `short` with the
            default `attribution='attributed'`; `unattributed` and `all` widen
            the default to all five source types. Requests containing `other`
            with `attribution='attributed'` are rejected.
        attribution:
          type: string
          enum:
            - attributed
            - unattributed
            - all
          title: Attribution
          description: >-
            Choose attributed citations, unattributed citations, or all
            citations. An unattributed row has no channel: `source_type` is
            `other` for a search or feed URL that names no source, and any other
            type is a source we have no channel for.
          default: attributed
      additionalProperties: false
      type: object
      required:
        - category_id
        - start_date
        - end_date
      title: YoutubeVideosQuery
      description: Cited videos, optionally narrowed to specific channels.
    YoutubeVideosResponse:
      properties:
        info:
          $ref: '#/components/schemas/YoutubeVideosInfo'
        data:
          items:
            $ref: '#/components/schemas/YoutubeVideoRow'
          type: array
          title: Data
      type: object
      required:
        - info
        - data
      title: YoutubeVideosResponse
    app__routes__v2__answer_engine_insights__reports__query_fanouts__SortSpec:
      properties:
        field:
          type: string
          title: Field
        dir:
          type: string
          enum:
            - asc
            - desc
          title: Dir
          default: desc
      additionalProperties: false
      type: object
      required:
        - field
      title: SortSpec
    app__routes__v2__answer_engine_insights__reports__sentiment__SortSpec:
      properties:
        field:
          type: string
          enum:
            - occurrence
            - positive_sentiment
            - negative_sentiment
          title: Field
          default: positive_sentiment
        dir:
          type: string
          enum:
            - asc
            - desc
          title: Dir
          default: desc
      type: object
      title: SortSpec
    app__routes__v2__answer_engine_insights__reports__visibility__SortSpec:
      properties:
        field:
          type: string
          enum:
            - visibility_score
            - share_of_voice
            - average_position
          title: Field
          default: visibility_score
      type: object
      title: SortSpec
    profound_answer_engine_insights__filters__AssetNameFilter:
      properties:
        field:
          type: string
          const: asset_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: AssetNameFilter
      description: Filter by asset name
    profound_shopping__api__AssetNameFilter:
      properties:
        field:
          type: string
          const: asset_name
          title: Field
        operator:
          type: string
          enum:
            - is
            - not_is
            - in
            - not_in
            - contains
            - not_contains
            - matches
            - contains_case_insensitive
            - not_contains_case_insensitive
          title: Operator
        value:
          anyOf:
            - type: string
            - items:
                type: string
              type: array
          title: Value
      type: object
      required:
        - field
        - operator
        - value
      title: AssetNameFilter
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    BearerAuth:
      type: http
      scheme: bearer
