info:
  title: HALO Analytics API
  version: 0.1.0
paths:
  /api/v1/accounts/{account_id}/conversations:
    get:
      tags:
      - conversations
      summary: Get Conversations
      description: "Fetch conversations for a given account and filter criteria.\n\
        \nArgs:\n    account_id (UUID): The ID of the account.\n    start_date (datetime):\
        \ The start date for filtering conversations.\n    end_date (datetime): The\
        \ end date for filtering conversations.\n    profile_id (Optional[int]): The\
        \ profile ID to filter conversations.\n    limit (int): Number of conversations\
        \ to return.\n    pagination_cursor (Optional[str]): Cursor for pagination.\n\
        \nReturns:\n    ConversationsResponse: The retrieved conversations."
      operationId: get_conversations_api_v1_accounts__account_id__conversations_get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: start_date
        in: query
        required: true
        schema:
          type: string
          format: date-time
          description: Start date for filtering conversations (ISO 8601 format, UTC
            timezone expected, e.g., 2025-01-01T00:00:00Z)
          title: Start Date
        description: Start date for filtering conversations (ISO 8601 format, UTC
          timezone expected, e.g., 2025-01-01T00:00:00Z)
      - name: end_date
        in: query
        required: true
        schema:
          type: string
          format: date-time
          description: End date for filtering conversations (ISO 8601 format, UTC
            timezone expected, e.g., 2025-01-31T23:59:59Z)
          title: End Date
        description: End date for filtering conversations (ISO 8601 format, UTC timezone
          expected, e.g., 2025-01-31T23:59:59Z)
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 1000
          minimum: 1
          description: Number of conversations to return (max 1000, ignored if cursor
            provided)
          default: 1000
          title: Limit
        description: Number of conversations to return (max 1000, ignored if cursor
          provided)
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Cursor for pagination
          title: Cursor
        description: Cursor for pagination
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with conversations data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_FilteredConversationData_'
        '400':
          description: Bad request - invalid parameters or cursor
          content:
            application/json:
              example:
                detail: bad request; validation error
        '404':
          description: Account not found
          content:
            application/json:
              example:
                detail: Account with ID not found
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                detail: An error occurred while fetching conversations
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/{account_id}/conversations/{conversation_id}:
    get:
      tags:
      - conversations
      summary: Get Conversation
      description: "Fetch a specific conversation by its ID.\n\nArgs:\n    account_id\
        \ (UUID): The ID of the account.\n    conversation_id (UUID): The ID of the\
        \ conversation.\n    view (ViewType): The view type - standard (default) or\
        \ detailed.\n\nReturns:\n    ConversationResponse: The conversation details\
        \ wrapped in envelope structure."
      operationId: get_conversation_api_v1_accounts__account_id__conversations__conversation_id__get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: conversation_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
          title: Conversation Id
      - name: view
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/ViewType'
          description: 'View type: standard or detailed'
          default: standard
        description: 'View type: standard or detailed'
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with conversation details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_Union_FilteredConversationData__DetailedConversationData__'
        '404':
          description: Account or conversation not found
          content:
            application/json:
              example:
                detail: Account with ID not found
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                detail: An error occurred while fetching the conversation
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/{account_id}/profiles:
    get:
      tags:
      - resources
      summary: Get Profiles
      operationId: get_profiles_api_v1_accounts__account_id__profiles_get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with profile data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_Profile_'
        '400':
          description: Bad request - missing or invalid account ID
          content:
            application/json:
              example:
                detail: Account ID is required
        '404':
          description: Account not found
          content:
            application/json:
              example:
                detail: Account not found
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                detail: An error occurred while fetching profile IDs
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/{account_id}/agents:
    get:
      tags:
      - resources
      summary: Get Agents
      operationId: get_agents_api_v1_accounts__account_id__agents_get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with agent data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_Agent_'
        '400':
          description: Bad request - missing or invalid account ID
          content:
            application/json:
              example:
                detail: Account ID is required
        '404':
          description: Account not found
          content:
            application/json:
              example:
                detail: Account not found
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                detail: An error occurred while fetching profile IDs
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/{account_id}/tools:
    get:
      tags:
      - resources
      summary: Get Tools
      operationId: get_tools_api_v1_accounts__account_id__tools_get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with tool data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_Tool_'
        '400':
          description: Bad request - missing or invalid account ID
          content:
            application/json:
              example:
                detail: Account ID is required
        '404':
          description: Account not found
          content:
            application/json:
              example:
                detail: Account not found
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                detail: An error occurred while fetching profile IDs
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /api/v1/accounts/{account_id}/metrics:
    get:
      tags:
      - metrics
      summary: Get Metrics
      description: "Fetch metrics for a given account and filter criteria.\n\nArgs:\n\
        \    account_id (UUID): The ID of the account.\n    start_date (datetime):\
        \ The start date for filtering metrics.\n    end_date (datetime): The end\
        \ date for filtering metrics.\n    profile_id (Optional[int]): The profile\
        \ ID to filter metrics.\nReturns:\n    MetricsResponse: The calculated metrics\
        \ for the account."
      operationId: get_metrics_api_v1_accounts__account_id__metrics_get
      parameters:
      - name: account_id
        in: path
        required: true
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Account Id
      - name: start_date
        in: query
        required: true
        schema:
          type: string
          format: date-time
          description: Start date for metrics calculation (ISO 8601 format, UTC timezone
            expected, e.g., 2025-01-01T00:00:00Z)
          title: Start Date
        description: Start date for metrics calculation (ISO 8601 format, UTC timezone
          expected, e.g., 2025-01-01T00:00:00Z)
      - name: end_date
        in: query
        required: true
        schema:
          type: string
          format: date-time
          description: End date for metrics calculation (ISO 8601 format, UTC timezone
            expected, e.g., 2025-01-31T23:59:59Z)
          title: End Date
        description: End date for metrics calculation (ISO 8601 format, UTC timezone
          expected, e.g., 2025-01-31T23:59:59Z)
      - name: profile_id
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
          - type: 'null'
          title: Profile Id
      - name: X-CM-PRODUCTTOKEN
        in: header
        description: Product token for authentication
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response with metrics data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Envelope_MetricsData_'
        '422':
          description: Validation error - invalid request parameters
          content:
            application/json:
              example:
                type: about:blank
                title: Validation Error
                status: 422
                detail: Invalid request parameters
                instance: /api/v1/accounts/12345678-1234-5678-1234-567812345678/metrics
                timestamp: '2025-01-08T10:00:00Z'
                errors:
                  start_date:
                    message: Invalid datetime format
                    type: value_error
        '404':
          description: Account not found
          content:
            application/json:
              example:
                type: about:blank
                title: Resource Not Found
                status: 404
                detail: Account with ID '12345678-1234-5678-1234-567812345678' not
                  found
                instance: /api/v1/accounts/12345678-1234-5678-1234-567812345678/metrics
                timestamp: '2025-01-08T10:00:00Z'
        '500':
          description: Internal server error
          content:
            application/json:
              example:
                type: about:blank
                title: Internal Server Error
                status: 500
                detail: An unexpected error occurred while fetching metrics
                instance: /api/v1/accounts/12345678-1234-5678-1234-567812345678/metrics
                timestamp: '2025-01-08T10:00:00Z'
components:
  schemas:
    Agent:
      properties:
        id:
          type: integer
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
      - id
      - name
      title: Agent
    AgentResult:
      properties:
        agent_id:
          anyOf:
          - type: integer
          - type: 'null'
          title: Agent Id
        agent_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Agent Name
        handover_reasoning:
          anyOf:
          - type: string
          - type: 'null'
          title: Handover Reasoning
        tool_uses:
          anyOf:
          - items:
              $ref: '#/components/schemas/ToolUsage'
            type: array
          - type: 'null'
          title: Tool Uses
      type: object
      title: AgentResult
    DetailedConversationData:
      properties:
        conversation:
          $ref: '#/components/schemas/FilteredConversation'
        items:
          items:
            $ref: '#/components/schemas/FilteredConversationItemWithMeta'
          type: array
          title: Items
      type: object
      required:
      - conversation
      - items
      title: DetailedConversationData
      description: Filtered model representing complete conversation data with items
        renamed
    Envelope_Agent_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Agent'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[Agent]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Envelope_FilteredConversationData_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/FilteredConversationData'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[FilteredConversationData]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Envelope_MetricsData_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/MetricsData'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[MetricsData]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Envelope_Profile_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Profile'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[Profile]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Envelope_Tool_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/Tool'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[Tool]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Envelope_Union_FilteredConversationData__DetailedConversationData__:
      properties:
        data:
          items:
            anyOf:
            - $ref: '#/components/schemas/FilteredConversationData'
            - $ref: '#/components/schemas/DetailedConversationData'
          type: array
          title: Data
          description: List of resources
        meta:
          $ref: '#/components/schemas/Metadata'
          description: Metadata including total count
        pagination:
          $ref: '#/components/schemas/Pagination'
          description: Pagination information
      type: object
      required:
      - data
      - meta
      - pagination
      title: Envelope[Union[FilteredConversationData, DetailedConversationData]]
      example:
        data: []
        meta:
          total_count: 1234
        pagination:
          has_next: true
          has_previous: false
          next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
          page_size: 10
    Environment:
      type: string
      enum:
      - cms
      - staging
      - live
      title: Environment
    FilteredConversation:
      properties:
        id:
          type: integer
          title: Id
        profile_id:
          type: integer
          title: Profile Id
        conversation_id:
          type: string
          format: uuid
          title: Conversation Id
        most_common_language:
          anyOf:
          - type: string
          - type: 'null'
          title: Most Common Language
        most_common_origin:
          anyOf:
          - type: string
          - type: 'null'
          title: Most Common Origin
        most_common_channel:
          anyOf:
          - type: string
          - type: 'null'
          title: Most Common Channel
        most_common_product:
          anyOf:
          - type: string
          - type: 'null'
          title: Most Common Product
        num_unmatched_items:
          anyOf:
          - type: integer
          - type: 'null'
          title: Num Unmatched Items
        num_matched_items:
          anyOf:
          - type: integer
          - type: 'null'
          title: Num Matched Items
        recognition_rate:
          anyOf:
          - type: number
          - type: 'null'
          title: Recognition Rate
        visited_agent_ids:
          anyOf:
          - items:
              anyOf:
              - type: integer
              - type: 'null'
            type: array
          - type: 'null'
          title: Visited Agent Ids
        visited_tool_ids:
          anyOf:
          - items:
              anyOf:
              - type: integer
              - type: 'null'
            type: array
          - type: 'null'
          title: Visited Tool Ids
        started:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Started
        ended:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Ended
        created:
          type: string
          format: date-time
          title: Created
        environment:
          anyOf:
          - type: string
          - type: 'null'
          title: Environment
      type: object
      required:
      - id
      - profile_id
      - conversation_id
      - created
      title: FilteredConversation
    FilteredConversationData:
      properties:
        conversation:
          $ref: '#/components/schemas/FilteredConversation'
        items:
          items:
            $ref: '#/components/schemas/FilteredConversationItem'
          type: array
          title: Items
      type: object
      required:
      - conversation
      - items
      title: FilteredConversationData
      description: Filtered model representing complete conversation data with items
        renamed
    FilteredConversationItem:
      properties:
        id:
          type: integer
          title: Id
        interaction_id:
          type: string
          format: uuid
          title: Interaction Id
        role:
          anyOf:
          - type: string
          - type: 'null'
          title: Role
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        text_content:
          anyOf:
          - type: string
          - type: 'null'
          title: Text Content
        match:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Match
        language:
          anyOf:
          - type: string
          - type: 'null'
          title: Language
        created:
          type: string
          format: date-time
          title: Created
      type: object
      required:
      - id
      - interaction_id
      - created
      title: FilteredConversationItem
    FilteredConversationItemMeta:
      properties:
        id:
          type: integer
          title: Id
        origin:
          anyOf:
          - {}
          - type: 'null'
          title: Origin
        used_knowledge:
          anyOf:
          - {}
          - type: 'null'
          title: Used Knowledge
        used_feedback:
          anyOf:
          - {}
          - type: 'null'
          title: Used Feedback
        reasoning:
          anyOf:
          - type: string
          - type: 'null'
          title: Reasoning
        feedback_reasoning:
          anyOf:
          - type: string
          - type: 'null'
          title: Feedback Reasoning
        agent_activity:
          anyOf:
          - items:
              $ref: '#/components/schemas/AgentResult'
            type: array
          - type: 'null'
          title: Agent Activity
        contexts:
          anyOf:
          - {}
          - type: 'null'
          title: Contexts
        match:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Match
        language:
          anyOf:
          - type: string
          - type: 'null'
          title: Language
        created:
          type: string
          format: date-time
          title: Created
      type: object
      required:
      - id
      - created
      title: FilteredConversationItemMeta
    FilteredConversationItemWithMeta:
      properties:
        item:
          $ref: '#/components/schemas/FilteredConversationItem'
        meta:
          anyOf:
          - $ref: '#/components/schemas/FilteredConversationItemMeta'
          - type: 'null'
      type: object
      required:
      - item
      title: FilteredConversationItemWithMeta
      description: Filtered model representing a conversation item paired with its
        metadata
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    Metadata:
      properties:
        total_count:
          type: integer
          minimum: 0.0
          title: Total Count
          description: Total number of items available
      type: object
      required:
      - total_count
      title: Metadata
      description: 'Metadata container for API responses.

        Contains information like total count and other meta information.'
      example:
        total_count: 1234
    MetricsData:
      properties:
        total_conversations_count:
          type: integer
          title: Total Conversations Count
        total_average_conversation_duration_seconds:
          type: integer
          title: Total Average Conversation Duration Seconds
        total_average_interactions_per_conversation:
          type: number
          title: Total Average Interactions Per Conversation
        average_recognition_rate:
          anyOf:
          - type: number
          - type: 'null'
          title: Average Recognition Rate
        product_metrics:
          anyOf:
          - items:
              $ref: '#/components/schemas/ProductMetrics'
            type: array
          - type: 'null'
          title: Product Metrics
      type: object
      required:
      - total_conversations_count
      - total_average_conversation_duration_seconds
      - total_average_interactions_per_conversation
      title: MetricsData
      description: Individual metrics data object that will be wrapped in envelope
    Pagination:
      properties:
        page_size:
          type: integer
          minimum: 0.0
          title: Page Size
          description: Number of items in the current page
        has_next:
          type: boolean
          title: Has Next
          description: Whether there are more items available after this page
        has_previous:
          type: boolean
          title: Has Previous
          description: Whether there are items available before this page
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
          description: Cursor token for the next page (cursor-based pagination)
        previous_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Previous Cursor
          description: Cursor token for the previous page (cursor-based pagination)
      type: object
      required:
      - page_size
      - has_next
      - has_previous
      title: Pagination
      description: Pagination information for API responses without total_count.
      example:
        has_next: true
        has_previous: false
        next_cursor: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...
        page_size: 10
    ProductMetrics:
      properties:
        product:
          type: string
          title: Product
        conversations_count:
          type: integer
          title: Conversations Count
        average_conversation_duration_seconds:
          type: integer
          title: Average Conversation Duration Seconds
        average_interactions_per_conversation:
          type: number
          title: Average Interactions Per Conversation
        average_recognition_rate:
          anyOf:
          - type: number
          - type: 'null'
          title: Average Recognition Rate
      type: object
      required:
      - product
      - conversations_count
      - average_conversation_duration_seconds
      - average_interactions_per_conversation
      title: ProductMetrics
    Profile:
      properties:
        id:
          type: integer
          title: Id
        name:
          type: string
          title: Name
      type: object
      required:
      - id
      - name
      title: Profile
    Tool:
      properties:
        id:
          type: integer
          title: Id
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
      type: object
      required:
      - id
      - name
      - description
      title: Tool
    ToolUsage:
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        tool_id:
          anyOf:
          - type: integer
          - type: 'null'
          title: Tool Id
        arguments:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Arguments
        started:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Started
        finished:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Finished
      type: object
      title: ToolUsage
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ViewType:
      type: string
      enum:
      - standard
      - detailed
      title: ViewType
