openapi: 3.1.0
info:
  title: Vanda Analytics Timeseries API
  description: High-performance time series API with Auth0
  version: 1.0.0
paths:
  /series/securities/count:
    get:
      tags:
        - Series
      summary: Get Securities Count
      description: |-
        Get total count of available securities with optional filters.

        Args:
            sector: Optional sector filter
            exchange: Optional exchange filter
            is_active: Optional active status filter
            industry: Optional industry filter
            asset_type: Optional asset type filter
            user: Authenticated user
            db: Database session
            
        Returns:
            Total count and metadata
      operationId: get_securities_count_series_securities_count_get
      security:
        - HTTPBearer: []
      parameters:
        - name: sector
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by sector
            title: Sector
          description: Filter by sector
        - name: exchange
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exchange
            title: Exchange
          description: Filter by exchange
        - name: is_active
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: Filter by active status
            title: Is Active
          description: Filter by active status
        - name: industry
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by industry
            title: Industry
          description: Filter by industry
        - name: asset_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by asset type
            title: Asset Type
          description: Filter by asset type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/securities/search:
    get:
      tags:
        - Series
      summary: Search Securities
      description: >-
        Search for securities by ticker, name, FIGI, vanda_id, sector, or other
        fields.


        Optimized for autocomplete with prefix matching.


        Args:
            q: Search query string
            limit: Maximum number of results to return
            is_active: Optional active status filter (None/undefined returns all, True returns active only, False returns inactive only) 
            sector: Optional sector filter
            exchange: Optional exchange filter
            industry: Optional industry filter
            asset_type: Optional asset type filter
            user: Authenticated user
            db: Database session
            
        Returns:
            List of matching securities with basic information
      operationId: search_securities_series_securities_search_get
      security:
        - HTTPBearer: []
      parameters:
        - name: q
          in: query
          required: true
          schema:
            type: string
            minLength: 1
            description: >-
              Search query for multiple fields like ticker, name, FIGI,
              vanda_id, sector, industry, and exchange
            title: Q
          description: >-
            Search query for multiple fields like ticker, name, FIGI, vanda_id,
            sector, industry, and exchange
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Maximum results to return
            default: 20
            title: Limit
          description: Maximum results to return
        - name: is_active
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: Filter by active status (None = all securities)
            title: Is Active
          description: Filter by active status (None = all securities)
        - name: sector
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by sector
            title: Sector
          description: Filter by sector
        - name: exchange
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by exchange
            title: Exchange
          description: Filter by exchange
        - name: industry
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by industry
            title: Industry
          description: Filter by industry
        - name: asset_type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by asset type
            title: Asset Type
          description: Filter by asset type
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/sectors:
    get:
      tags:
        - Series
      summary: Get Sectors
      description: |-
        Get list of all available sectors from gold_sec_master.

        Args:
            is_active: Optional active status filter (None/undefined returns all, True returns active only, False returns inactive only)
            user: Authenticated user
            db: Database session
            
        Returns:
            List of sectors with security counts
      operationId: get_sectors_series_sectors_get
      security:
        - HTTPBearer: []
      parameters:
        - name: is_active
          in: query
          required: false
          schema:
            anyOf:
              - type: boolean
              - type: 'null'
            description: Filter by active status (None = all securities)
            title: Is Active
          description: Filter by active status (None = all securities)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SectorInfo'
                title: Response Get Sectors Series Sectors Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/securities/{ticker}/summary:
    get:
      tags:
        - Series
      summary: Get Security Summary
      description: >-
        Get executive summary for a security with key metrics and trend
        analysis.


        Args:
            ticker: Security ticker symbol
            interval: Time interval for calculations
            user: Authenticated user
            db: Database session
            
        Returns:
            Executive summary with metrics
      operationId: get_security_summary_series_securities__ticker__summary_get
      security:
        - HTTPBearer: []
      parameters:
        - name: ticker
          in: path
          required: true
          schema:
            type: string
            title: Ticker
        - name: interval
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/IntervalEnum'
            description: Time interval for metrics
            default: 1d
          description: Time interval for metrics
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SecuritySummary'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/timeseries:
    get:
      tags:
        - Series
      summary: Get Timeseries
      description: |-
        Main timeseries endpoint for retrieving market flow data.
        Supports multiple identifier types and flexible date ranges.

        Args:
            Various query parameters for data selection
            user: Authenticated user
            db: Database session

        Returns:
            TimeseriesResponse with requested data
      operationId: get_timeseries_series_timeseries_get
      security:
        - HTTPBearer: []
      parameters:
        - name: vanda_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Vanda ID (VNDA-TICKER)
            title: Vanda Id
          description: Vanda ID (VNDA-TICKER)
        - name: symbol
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Stock ticker symbol
            title: Symbol
          description: Stock ticker symbol
        - name: figi
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: FIGI identifier
            title: Figi
          description: FIGI identifier
        - name: isin
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: ISIN identifier
            title: Isin
          description: ISIN identifier
        - name: interval
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/IntervalEnum'
            description: Time interval
            default: 1d
          description: Time interval
        - name: start_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Start date
            title: Start Date
          description: Start date
        - name: end_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: End date
            title: End Date
          description: End date
        - name: date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Specific date
            title: Date
          description: Specific date
        - name: fields
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/FieldEnum'
              - type: 'null'
            description: Fields to retrieve
            title: Fields
          description: Fields to retrieve
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 10000
            minimum: 1
            description: Maximum records
            default: 2000
            title: Limit
          description: Maximum records
        - name: page
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: Page number
            default: 1
            title: Page
          description: Page number
        - name: order
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/OrderEnum'
            description: Sort order
            default: desc
          description: Sort order
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TimeseriesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/timeseries/latest:
    get:
      tags:
        - Series
      summary: Get Latest Timeseries
      description: |-
        Get latest data point for multiple identifiers.
        Optimized for dashboard tiles and summary views.

        Args:
            identifiers: List of vanda_ids or tickers
            interval: Time interval
            fields: Optional field filter
            user: Authenticated user
            db: Database session

        Returns:
            Dictionary mapping identifiers to latest data
      operationId: get_latest_timeseries_series_timeseries_latest_get
      security:
        - HTTPBearer: []
      parameters:
        - name: identifiers
          in: query
          required: true
          schema:
            type: array
            items:
              type: string
            description: List of identifiers
            title: Identifiers
          description: List of identifiers
        - name: interval
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/IntervalEnum'
            description: Time interval
            default: 1d
          description: Time interval
        - name: fields
          in: query
          required: false
          schema:
            anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/FieldEnum'
              - type: 'null'
            description: Fields to retrieve
            title: Fields
          description: Fields to retrieve
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                title: Response Get Latest Timeseries Series Timeseries Latest Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/timeseries/leaderboard:
    get:
      tags:
        - Series
      summary: Get Leaderboard
      description: |-
        Get leaderboard of top movers ranked by specified metric.

        Args:
            interval: Time interval
            metric: Ranking metric (net_turnover, total_turnover, ris)
            limit: Number of top movers
            date: Optional specific date
            sector: Optional sector filter
            user: Authenticated user
            db: Database session

        Returns:
            LeaderboardResponse with top movers
      operationId: get_leaderboard_series_timeseries_leaderboard_get
      security:
        - HTTPBearer: []
      parameters:
        - name: interval
          in: query
          required: false
          schema:
            $ref: '#/components/schemas/IntervalEnum'
            description: Time interval
            default: 1d
          description: Time interval
        - name: metric
          in: query
          required: false
          schema:
            type: string
            description: Metric to rank by
            default: net_turnover
            title: Metric
          description: Metric to rank by
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 100
            minimum: 1
            description: Number of results
            default: 20
            title: Limit
          description: Number of results
        - name: date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: Specific date
            title: Date
          description: Specific date
        - name: sector
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter by sector
            title: Sector
          description: Filter by sector
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LeaderboardResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/timeseries/list:
    get:
      tags:
        - Series
      summary: List Available Series
      description: |-
        List available timeseries identifiers.
        Provides searchable list of securities with data.

        Args:
            user: Authenticated user
            db: Database session

        Returns:
            List of available identifiers
      operationId: list_available_series_series_timeseries_list_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
        - HTTPBearer: []
  /series/debug-token:
    get:
      tags:
        - Series
      summary: Debug Token
      description: |-
        Inspect decoded JWT token claims and computed permissions.

        Args:
            user: Authenticated user token data

        Returns:
            Dict containing token claims and access flags
      operationId: debug_token_series_debug_token_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
        - HTTPBearer: []
  /series/ticker:
    get:
      tags:
        - Series
      summary: Get Series
      description: |-
        Retrieve time series data with RBAC enforcement and user-aware caching.

        Args:
            interval: timestamp interval
            ticker: Stock symbol
            field: Column name to retrieve
            user: Authenticated user token data
            db: Database session

        Returns:
            List of TimeseriesDataPointOut with date and value
      operationId: get_series_series_ticker_get
      security:
        - HTTPBearer: []
      parameters:
        - name: interval
          in: query
          required: true
          schema:
            type: string
            description: Timestamp interval (10min, 30min, 1h, 3h, 1d)
            title: Interval
          description: Timestamp interval (10min, 30min, 1h, 3h, 1d)
        - name: ticker
          in: query
          required: true
          schema:
            type: string
            description: Stock ticker symbol
            title: Ticker
          description: Stock ticker symbol
        - name: field
          in: query
          required: true
          schema:
            type: string
            description: >-
              Field name (px, buy_turnover, sell_turnover, net_turnover,
              total_turnover)
            title: Field
          description: >-
            Field name (px, buy_turnover, sell_turnover, net_turnover,
            total_turnover)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TimeseriesDataPointOut'
                title: Response Get Series Series Ticker Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/cache/invalidate:
    delete:
      tags:
        - Series
      summary: Invalidate My Cache
      description: |-
        Invalidate all cache entries for current user.

        Args:
            user: Authenticated user token data

        Returns:
            Dict with invalidation status and count
      operationId: invalidate_my_cache_series_cache_invalidate_delete
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
        - HTTPBearer: []
  /series/me:
    get:
      tags:
        - Series
      summary: Get Current User Info
      description: |-
        Get current user's Auth0 profile and access capabilities.

        Args:
            user: Authenticated user token data

        Returns:
            Dict with user identity, entitlement, and permissions
      operationId: get_current_user_info_series_me_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      security:
        - HTTPBearer: []
  /series/marketdata:
    get:
      tags:
        - Series
      summary: Ticker Data
      description: |-
        Batch endpoint for multiple tickers and fields.

        Args:
            user: Authenticated user
            db: Database session
            interval: Time interval
            ticker: List of tickers
            field: List of fields
            figi: Optional FIGI filter
            isin: Optional ISIN filter

        Returns:
            List of TickerDataOut
      operationId: ticker_data_series_marketdata_get
      security:
        - HTTPBearer: []
      parameters:
        - name: interval
          in: query
          required: true
          schema:
            type: string
            description: Timestamp interval (10min, 30min, 1h, 3h, 1d)
            title: Interval
          description: Timestamp interval (10min, 30min, 1h, 3h, 1d)
        - name: ticker
          in: query
          required: true
          schema:
            type: array
            items:
              type: string
            description: Stock ticker symbols
            title: Ticker
          description: Stock ticker symbols
        - name: field
          in: query
          required: true
          schema:
            type: array
            items:
              type: string
            description: >-
              Field names (price, buy_turnover, sell_turnover, net_turnover,
              total_turnover)
            title: Field
          description: >-
            Field names (price, buy_turnover, sell_turnover, net_turnover,
            total_turnover)
        - name: figi
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: FIGI identifier
            title: Figi
          description: FIGI identifier
        - name: isin
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: ISIN identifier
            title: Isin
          description: ISIN identifier
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TickerDataOut'
                title: Response Ticker Data Series Marketdata Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /series/health:
    get:
      tags:
        - Utility
        - Utility
      summary: Health check endpoint
      operationId: health_check_series_health_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
  /series/test/token:
    post:
      tags:
        - Testing
        - Testing
      summary: Get Test Access Token
      description: |-
        Generate access token for testing protected endpoints.
            Available in local and development environments only.
      operationId: get_test_token_series_test_token_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TokenRequest'
        required: true
      responses:
        '200':
          description: Token generated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TokenResponse'
        '401':
          description: Invalid credentials or Auth0 not configured
        '403':
          description: Endpoint disabled in staging/production
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '503':
          description: Auth0 unavailable
components:
  schemas:
    FieldEnum:
      type: string
      enum:
        - px
        - px_chg
        - buy_turnover
        - sell_turnover
        - net_turnover
        - total_turnover
      title: FieldEnum
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    IntervalEnum:
      type: string
      enum:
        - 10min
        - 30min
        - 1h
        - 3h
        - 1d
        - 1w
        - 1m
        - 1y
      title: IntervalEnum
    LeaderboardEntry:
      properties:
        rank:
          type: integer
          title: Rank
        vanda_id:
          type: string
          title: Vanda Id
        ticker:
          type: string
          title: Ticker
        px:
          type: number
          title: Px
          default: 0
        px_chg:
          type: number
          title: Px Chg
          default: 0
        net_turnover:
          type: number
          title: Net Turnover
        total_turnover:
          type: number
          title: Total Turnover
        sector:
          anyOf:
            - type: string
            - type: 'null'
          title: Sector
      type: object
      required:
        - rank
        - vanda_id
        - ticker
        - net_turnover
        - total_turnover
      title: LeaderboardEntry
      description: Single leaderboard entry for top movers.
    LeaderboardResponse:
      properties:
        status:
          type: string
          title: Status
        interval:
          type: string
          title: Interval
        timestamp:
          type: string
          format: date-time
          title: Timestamp
        results:
          items:
            $ref: '#/components/schemas/LeaderboardEntry'
          type: array
          title: Results
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
      type: object
      required:
        - status
        - interval
        - timestamp
        - results
        - metadata
      title: LeaderboardResponse
      description: Leaderboard API response format.
    OrderEnum:
      type: string
      enum:
        - asc
        - desc
      title: OrderEnum
    SectorInfo:
      properties:
        sector:
          type: string
          title: Sector
        security_count:
          type: integer
          title: Security Count
      type: object
      required:
        - sector
        - security_count
      title: SectorInfo
      description: Sector information.
    SecuritySummary:
      properties:
        ticker:
          type: string
          title: Ticker
        name:
          type: string
          title: Name
        sector:
          anyOf:
            - type: string
            - type: 'null'
          title: Sector
        flow_status:
          type: string
          title: Flow Status
        buy_sell_ratio:
          type: number
          title: Buy Sell Ratio
        trend_direction:
          type: string
          title: Trend Direction
        total_turnover:
          type: number
          title: Total Turnover
        total_turnover_change:
          type: number
          title: Total Turnover Change
        net_flow:
          type: number
          title: Net Flow
        net_flow_change:
          type: number
          title: Net Flow Change
        buy_flow:
          type: number
          title: Buy Flow
        buy_flow_change:
          type: number
          title: Buy Flow Change
        sell_flow:
          type: number
          title: Sell Flow
        sell_flow_change:
          type: number
          title: Sell Flow Change
        latest_price:
          type: number
          title: Latest Price
        price_change:
          type: number
          title: Price Change
      type: object
      required:
        - ticker
        - name
        - flow_status
        - buy_sell_ratio
        - trend_direction
        - total_turnover
        - total_turnover_change
        - net_flow
        - net_flow_change
        - buy_flow
        - buy_flow_change
        - sell_flow
        - sell_flow_change
        - latest_price
        - price_change
      title: SecuritySummary
      description: Executive summary for a security.
    TickerDataOut:
      properties:
        ticker:
          type: string
          title: Ticker
        field:
          type: string
          title: Field
        data:
          items:
            $ref: '#/components/schemas/TimeseriesDataPointOut'
          type: array
          title: Data
      type: object
      required:
        - ticker
        - field
        - data
      title: TickerDataOut
      description: Ticker data response model.
    TimeseriesDataPoint:
      properties:
        ts:
          type: string
          format: date-time
          title: Ts
        vanda_id:
          type: string
          title: Vanda Id
        sector:
          anyOf:
            - type: string
            - type: 'null'
          title: Sector
        buy_turnover:
          anyOf:
            - type: number
            - type: 'null'
          title: Buy Turnover
        sell_turnover:
          anyOf:
            - type: number
            - type: 'null'
          title: Sell Turnover
        net_turnover:
          anyOf:
            - type: number
            - type: 'null'
          title: Net Turnover
        total_turnover:
          anyOf:
            - type: number
            - type: 'null'
          title: Total Turnover
        px:
          anyOf:
            - type: number
            - type: 'null'
          title: Px
        px_chg:
          anyOf:
            - type: number
            - type: 'null'
          title: Px Chg
        z_score:
          anyOf:
            - type: number
            - type: 'null'
          title: Z Score
        momentum:
          anyOf:
            - type: number
            - type: 'null'
          title: Momentum
        ris:
          anyOf:
            - type: number
            - type: 'null'
          title: Ris
        rank:
          anyOf:
            - type: integer
            - type: 'null'
          title: Rank
      type: object
      required:
        - ts
        - vanda_id
      title: TimeseriesDataPoint
      description: Single timeseries data point with optional analytics.
    TimeseriesDataPointOut:
      properties:
        date:
          type: string
          format: date
          title: Date
        value:
          type: number
          title: Value
      type: object
      required:
        - date
        - value
      title: TimeseriesDataPointOut
      description: 'Legacy output format to be removed. # JA Todo'
    TimeseriesResponse:
      properties:
        status:
          type: string
          title: Status
        results:
          items:
            $ref: '#/components/schemas/TimeseriesDataPoint'
          type: array
          title: Results
        metadata:
          additionalProperties: true
          type: object
          title: Metadata
      type: object
      required:
        - status
        - results
        - metadata
      title: TimeseriesResponse
      description: Standard timeseries API response format.
    TokenRequest:
      properties:
        email:
          type: string
          format: email
          title: Email
          description: User email address
        password:
          type: string
          minLength: 8
          title: Password
          description: User password
      type: object
      required:
        - email
        - password
      title: TokenRequest
      example:
        email: basic@test.com
        password: Test1234!
    TokenResponse:
      properties:
        access_token:
          type: string
          title: Access Token
          description: JWT access token for API authentication
        token_type:
          type: string
          title: Token Type
          description: Token type
          default: Bearer
        expires_in:
          type: integer
          title: Expires In
          description: Token expiration in seconds
        scope:
          anyOf:
            - type: string
            - type: 'null'
          title: Scope
          description: Granted scopes
      type: object
      required:
        - access_token
        - expires_in
      title: TokenResponse
    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
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer
