> ## Documentation Index
> Fetch the complete documentation index at: https://tbd-6fc993ce-hypeship-changelog-august-13.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Stream telemetry events via SSE

> Streams browser telemetry events as a server-sent events (SSE) stream. The stream closes when the browser session terminates. Each event frame includes an id: field containing a monotonically increasing sequence number; pass it as Last-Event-ID on reconnect to resume without gaps. The event: field is never set; all frames carry JSON in the data: field. A keepalive comment frame is sent every 15 seconds when no events arrive. Returns 404 if the browser session does not exist. If telemetry was not enabled on the session, the stream opens but no events are delivered. Fresh connections only see new events; pass replay=all to start from the oldest retained event instead.




## OpenAPI

````yaml https://api.onkernel.com/spec.json get /browsers/{id}/telemetry/stream
openapi: 3.1.0
info:
  description: Developer tools and cloud infrastructure for AI agents to use web browsers
  title: Kernel API
  version: 0.1.0
servers:
  - description: API Server
    url: https://api.onkernel.com
security:
  - bearerAuth: []
tags:
  - description: Create and manage browser sessions.
    name: Browsers
  - description: Control mouse, keyboard, and screen on the browser instance.
    name: Browser Computer Controls
  - description: Execute Playwright code against the browser instance.
    name: Browser Playwright
  - description: Read, write, and manage files on the browser instance.
    name: Browser Filesystem
  - description: Execute and manage processes on the browser instance.
    name: Browser Processes
  - description: Record and manage browser session video replays.
    name: Browser Replays
  - description: Stream logs from the browser instance.
    name: Browser Logs
  - description: Stream live telemetry events from a browser session.
    name: Browser Telemetry
  - description: Create, list, retrieve, and delete browser profiles.
    name: Profiles
  - description: Create and manage proxy configurations for routing browser traffic.
    name: Proxies
  - description: Create, list, retrieve, and delete browser extensions.
    name: Extensions
  - description: Create and manage browser pools for acquiring and releasing browsers.
    name: Browser Pools
  - description: Inspect the identity and authorization context for the current request.
    name: Authentication
  - description: >-
      Create and manage auth connections for automated credential capture and
      login.
    name: Managed Auth
  - description: Create and manage credentials for authentication.
    name: Credentials
  - description: Configure external credential providers like 1Password.
    name: Credential Providers
  - description: List applications and versions.
    name: Apps
  - description: Create and manage app deployments and stream deployment events.
    name: Deployments
  - description: Invoke actions and stream or query invocation status and events.
    name: Invocations
  - description: Read and manage organization-level limits.
    name: Organization
  - description: |
      Create and manage projects for resource isolation within an organization.
      When projects are disabled for the organization, project operations return
      `404` with code `projects_disabled`.
    name: Projects
  - description: Create and manage API keys for organization and project-scoped access.
    name: API Keys
  - description: Read audit log records for the authenticated organization.
    name: Audit Logs
  - description: Resolve browser and proxy recommendations for bot-protected sites.
    name: Site Configs
paths:
  /browsers/{id}/telemetry/stream:
    get:
      tags:
        - Browser Telemetry
      summary: Stream telemetry events via SSE
      description: >
        Streams browser telemetry events as a server-sent events (SSE) stream.
        The stream closes when the browser session terminates. Each event frame
        includes an id: field containing a monotonically increasing sequence
        number; pass it as Last-Event-ID on reconnect to resume without gaps.
        The event: field is never set; all frames carry JSON in the data: field.
        A keepalive comment frame is sent every 15 seconds when no events
        arrive. Returns 404 if the browser session does not exist. If telemetry
        was not enabled on the session, the stream opens but no events are
        delivered. Fresh connections only see new events; pass replay=all to
        start from the oldest retained event instead.
      operationId: streamBrowserTelemetry
      parameters:
        - description: Browser session ID
          in: path
          name: id
          required: true
          schema:
            type: string
        - description: >-
            Last event sequence number for SSE reconnection (sent by SSE clients
            on reconnect). Takes precedence over replay when both are present,
            so reconnect resumes instead of re-replaying.
          in: header
          name: Last-Event-ID
          schema:
            type: string
        - description: >-
            Pass `all` to start from the oldest retained event instead of only
            new events; any other value is treated as from-now. The buffer is
            bounded, so the first event id may be greater than 1 if older events
            were evicted.
          in: query
          name: replay
          schema:
            type: string
      responses:
        '200':
          content:
            text/event-stream:
              schema:
                $ref: '#/components/schemas/BrowserTelemetryEventEnvelope'
          description: SSE stream of telemetry events
          headers:
            X-SSE-Content-Type:
              description: Media type of SSE data events (always application/json).
              schema:
                const: application/json
                type: string
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalError'
      security:
        - bearerAuth: []
components:
  schemas:
    BrowserTelemetryEventEnvelope:
      additionalProperties: false
      description: >
        Envelope wrapping a browser telemetry event with its monotonic sequence
        number. Each SSE data: frame carries one envelope as JSON. The seq value
        is also emitted as the SSE id: field so clients can pass it as
        Last-Event-ID on reconnect.
      properties:
        event:
          $ref: '#/components/schemas/BrowserTelemetryEvent'
        seq:
          description: >
            Process-monotonic sequence number assigned by the browser VM. Pass
            as Last-Event-ID on reconnect to resume without gaps. Gaps in
            received seq values indicate dropped events.
          format: int64
          minimum: 1
          type: integer
      required:
        - seq
        - event
      type: object
    BrowserTelemetryEvent:
      description: >
        Union type representing any browser telemetry event. Discriminated on
        `type`. Each event's `category` determines when it is captured. The CDP
        collector-health events (monitor_disconnected, monitor_reconnected,
        monitor_reconnect_failed, monitor_init_failed) use the `monitor`
        category, which is not user-configurable: it flows automatically
        whenever any CDP category (console, network, page, interaction) is
        captured, and is silent otherwise. monitor_screenshot uses the opt-in
        `screenshot` category. All other event types are controlled by their
        per-category enable/disable flags.
      discriminator:
        mapping:
          api_call:
            $ref: '#/components/schemas/BrowserApiCallEvent'
          captcha_solve_result:
            $ref: '#/components/schemas/BrowserCaptchaSolveResultEvent'
          cdp_connect:
            $ref: '#/components/schemas/BrowserCdpConnectEvent'
          cdp_disconnect:
            $ref: '#/components/schemas/BrowserCdpDisconnectEvent'
          console_error:
            $ref: '#/components/schemas/BrowserConsoleErrorEvent'
          console_log:
            $ref: '#/components/schemas/BrowserConsoleLogEvent'
          interaction_click:
            $ref: '#/components/schemas/BrowserInteractionClickEvent'
          interaction_key:
            $ref: '#/components/schemas/BrowserInteractionKeyEvent'
          interaction_scroll_settled:
            $ref: '#/components/schemas/BrowserInteractionScrollSettledEvent'
          live_view_connect:
            $ref: '#/components/schemas/BrowserLiveViewConnectEvent'
          live_view_disconnect:
            $ref: '#/components/schemas/BrowserLiveViewDisconnectEvent'
          monitor_disconnected:
            $ref: '#/components/schemas/BrowserMonitorDisconnectedEvent'
          monitor_init_failed:
            $ref: '#/components/schemas/BrowserMonitorInitFailedEvent'
          monitor_reconnect_failed:
            $ref: '#/components/schemas/BrowserMonitorReconnectFailedEvent'
          monitor_reconnected:
            $ref: '#/components/schemas/BrowserMonitorReconnectedEvent'
          monitor_screenshot:
            $ref: '#/components/schemas/BrowserMonitorScreenshotEvent'
          network_idle:
            $ref: '#/components/schemas/BrowserNetworkIdleEvent'
          network_loading_failed:
            $ref: '#/components/schemas/BrowserNetworkLoadingFailedEvent'
          network_request:
            $ref: '#/components/schemas/BrowserNetworkRequestEvent'
          network_response:
            $ref: '#/components/schemas/BrowserNetworkResponseEvent'
          page_dom_content_loaded:
            $ref: '#/components/schemas/BrowserPageDomContentLoadedEvent'
          page_layout_settled:
            $ref: '#/components/schemas/BrowserPageLayoutSettledEvent'
          page_layout_shift:
            $ref: '#/components/schemas/BrowserPageLayoutShiftEvent'
          page_lcp:
            $ref: '#/components/schemas/BrowserPageLcpEvent'
          page_load:
            $ref: '#/components/schemas/BrowserPageLoadEvent'
          page_navigation:
            $ref: '#/components/schemas/BrowserPageNavigationEvent'
          page_navigation_settled:
            $ref: '#/components/schemas/BrowserPageNavigationSettledEvent'
          page_tab_opened:
            $ref: '#/components/schemas/BrowserPageTabOpenedEvent'
          service_crashed:
            $ref: '#/components/schemas/BrowserServiceCrashedEvent'
          system_oom_kill:
            $ref: '#/components/schemas/BrowserSystemOomKillEvent'
        propertyName: type
      oneOf:
        - $ref: '#/components/schemas/BrowserConsoleLogEvent'
        - $ref: '#/components/schemas/BrowserConsoleErrorEvent'
        - $ref: '#/components/schemas/BrowserNetworkRequestEvent'
        - $ref: '#/components/schemas/BrowserNetworkResponseEvent'
        - $ref: '#/components/schemas/BrowserNetworkLoadingFailedEvent'
        - $ref: '#/components/schemas/BrowserNetworkIdleEvent'
        - $ref: '#/components/schemas/BrowserPageNavigationEvent'
        - $ref: '#/components/schemas/BrowserPageDomContentLoadedEvent'
        - $ref: '#/components/schemas/BrowserPageLoadEvent'
        - $ref: '#/components/schemas/BrowserPageTabOpenedEvent'
        - $ref: '#/components/schemas/BrowserPageLayoutShiftEvent'
        - $ref: '#/components/schemas/BrowserPageLcpEvent'
        - $ref: '#/components/schemas/BrowserPageLayoutSettledEvent'
        - $ref: '#/components/schemas/BrowserPageNavigationSettledEvent'
        - $ref: '#/components/schemas/BrowserInteractionClickEvent'
        - $ref: '#/components/schemas/BrowserInteractionKeyEvent'
        - $ref: '#/components/schemas/BrowserInteractionScrollSettledEvent'
        - $ref: '#/components/schemas/BrowserMonitorScreenshotEvent'
        - $ref: '#/components/schemas/BrowserMonitorDisconnectedEvent'
        - $ref: '#/components/schemas/BrowserMonitorReconnectedEvent'
        - $ref: '#/components/schemas/BrowserMonitorReconnectFailedEvent'
        - $ref: '#/components/schemas/BrowserMonitorInitFailedEvent'
        - $ref: '#/components/schemas/BrowserApiCallEvent'
        - $ref: '#/components/schemas/BrowserCdpConnectEvent'
        - $ref: '#/components/schemas/BrowserCdpDisconnectEvent'
        - $ref: '#/components/schemas/BrowserLiveViewConnectEvent'
        - $ref: '#/components/schemas/BrowserLiveViewDisconnectEvent'
        - $ref: '#/components/schemas/BrowserCaptchaSolveResultEvent'
        - $ref: '#/components/schemas/BrowserSystemOomKillEvent'
        - $ref: '#/components/schemas/BrowserServiceCrashedEvent'
    Error:
      properties:
        code:
          description: Application-specific error code (machine-readable)
          example: bad_request
          type: string
        details:
          description: Additional error details (for multiple errors)
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type: array
        inner_error:
          $ref: '#/components/schemas/ErrorDetail'
        message:
          description: Human-readable error description for debugging
          example: 'Missing required field: app_name'
          type: string
      required:
        - code
        - message
      type: object
    BrowserApiCallEvent:
      description: An agent-driven HTTP call handled by the in-VM API server.
      properties:
        category:
          const: control
          type: string
        data:
          additionalProperties: false
          properties:
            duration_ms:
              description: Wall-clock duration of the handler in milliseconds.
              type: number
            operation_id:
              description: >-
                OpenAPI operationId of the matched route (e.g. processExec,
                takeScreenshot).
              type: string
            request_id:
              description: Per-request identifier from the in-VM API request middleware.
              type: string
            status:
              description: HTTP response status code.
              type: integer
          required:
            - request_id
            - operation_id
            - status
            - duration_ms
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: api_call
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserCaptchaSolveResultEvent:
      description: A captcha solve attempt reached a terminal outcome.
      properties:
        category:
          const: captcha
          type: string
        data:
          additionalProperties: false
          properties:
            captcha_type:
              description: >-
                Captcha vendor family. Provider-specific task names are
                normalized into this set; anything not covered is reported as
                other.
              enum:
                - hcaptcha
                - recaptcha_v2
                - recaptcha_v3
                - turnstile
                - geetest
                - other
              type: string
              x-go-type: string
            duration_ms:
              description: Wall-clock duration from solve start to terminal outcome.
              type: number
            error_code:
              description: >-
                Solver-specific error code on failure (e.g.
                ERROR_CAPTCHA_UNSOLVABLE). Absent on success.
              type: string
            status:
              description: >-
                Terminal outcome. success: solver returned a usable solution.
                failure: solver returned an error (see error_code). timeout:
                solver did not return within the caller's wait budget.
                abandoned: caller cancelled or the page navigated away
                mid-solve.
              enum:
                - success
                - failure
                - timeout
                - abandoned
              type: string
              x-go-type: string
            task_id:
              description: >-
                Solver-assigned identifier. Opaque, useful for support
                cross-references.
              type: string
            website_host:
              description: Host of the page where the captcha was solved.
              type: string
            website_path:
              description: >-
                Path of the page where the captcha was solved. Query string
                excluded.
              type: string
          required:
            - captcha_type
            - status
            - duration_ms
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: captcha_solve_result
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserCdpConnectEvent:
      description: >-
        An external client (e.g. customer SDK, Playwright, Puppeteer) connected
        to the CDP WebSocket proxy on this VM.
      properties:
        category:
          const: connection
          type: string
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: cdp_connect
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserCdpDisconnectEvent:
      description: >-
        An external client disconnected from the CDP WebSocket proxy on this VM.
        Pair with the immediately preceding cdp_connect on the same stream.
      properties:
        category:
          const: connection
          type: string
        data:
          additionalProperties: false
          properties:
            duration_ms:
              description: Wall-clock duration of the connection in milliseconds.
              type: number
            message_count:
              description: >-
                Number of CDP messages relayed across the connection in either
                direction.
              type: integer
            reason:
              description: >-
                Why the connection ended. client_close: the client initiated the
                close. upstream_changed: Chromium restarted mid-session and the
                proxy tore down so the client could reconnect against the new
                upstream. upstream_error: upstream dial or message pump errored.
                context_cancelled: the request context was cancelled (typically
                server shutdown).
              enum:
                - client_close
                - upstream_changed
                - upstream_error
                - context_cancelled
              type: string
              x-go-type: string
          required:
            - duration_ms
            - message_count
            - reason
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: cdp_disconnect
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserConsoleErrorEvent:
      description: >
        A browser console error or uncaught JavaScript exception event. Emitted
        from two distinct CDP sources with different data shapes.
        Runtime.consoleAPICalled (console.error calls) produces level, text,
        args, and stack_trace. Runtime.exceptionThrown (uncaught exceptions)
        produces text, line, column, source_url, and stack_trace. Fields not
        applicable to the source are absent.
      properties:
        category:
          const: console
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                args:
                  description: >-
                    All console arguments coerced to strings. Present only when
                    sourced from Runtime.consoleAPICalled.
                  items:
                    type: string
                  type: array
                column:
                  description: >-
                    Column number in the script where the exception was thrown.
                    Present only when sourced from Runtime.exceptionThrown.
                  type: integer
                level:
                  description: >-
                    CDP console type value, always "error". Present only when
                    sourced from Runtime.consoleAPICalled.
                  type: string
                line:
                  description: >-
                    Line number in the script where the exception was thrown.
                    Present only when sourced from Runtime.exceptionThrown.
                  type: integer
                source_url:
                  description: >-
                    URL of the script file that threw the exception. Present
                    only when sourced from Runtime.exceptionThrown.
                  type: string
                stack_trace:
                  $ref: '#/components/schemas/BrowserCallStack'
                text:
                  description: >
                    Human-readable error text, as the browser console would
                    display it. For console.error() calls, the first argument
                    coerced to a string. For uncaught exceptions, the prefix and
                    error message, e.g. "Uncaught Error: boom" or "Uncaught (in
                    promise) TypeError: x is not a function".
                  type: string
              required:
                - text
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: console_error
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: console_error
      type: object
    BrowserConsoleLogEvent:
      description: >-
        A browser console log event (console.log, console.info, console.warn,
        etc.).
      properties:
        category:
          const: console
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                args:
                  description: All console arguments coerced to strings.
                  items:
                    type: string
                  type: array
                level:
                  description: >-
                    CDP Runtime.consoleAPICalled type, passed through unfiltered
                    from Chrome. error is routed to console_error events
                    instead; all other CDP console types appear here. See CDP
                    spec for the full enum.
                  type: string
                stack_trace:
                  $ref: '#/components/schemas/BrowserCallStack'
                text:
                  description: First console argument coerced to string.
                  type: string
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: console_log
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: console_log
      type: object
    BrowserInteractionClickEvent:
      description: A browser user click event captured via injected page script.
      properties:
        category:
          const: interaction
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                selector:
                  description: CSS selector path to the clicked element.
                  type: string
                tag:
                  description: >-
                    HTML tag name of the clicked element in uppercase (e.g.
                    BUTTON, A, DIV).
                  type: string
                text:
                  description: Visible text content of the clicked element, trimmed.
                  type: string
                'true':
                  description: Viewport y-coordinate of the click in CSS pixels.
                  type: integer
                x:
                  description: Viewport x-coordinate of the click in CSS pixels.
                  type: integer
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: interaction_click
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: interaction_click
      type: object
    BrowserInteractionKeyEvent:
      description: A browser keyboard event captured via injected page script.
      properties:
        category:
          const: interaction
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                key:
                  description: Key value from the KeyboardEvent (e.g. Enter, Backspace, a).
                  type: string
                selector:
                  description: >-
                    CSS selector path to the element that had focus when the key
                    was pressed.
                  type: string
                tag:
                  description: >-
                    HTML tag name of the focused element in uppercase (e.g.
                    INPUT, TEXTAREA, DIV).
                  type: string
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: interaction_key
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: interaction_key
      type: object
    BrowserInteractionScrollSettledEvent:
      description: >-
        A browser scroll settled event emitted after scroll position stops
        changing, captured via injected page script.
      properties:
        category:
          const: interaction
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                from_x:
                  description: >-
                    Scroll x-position at the start of the scroll gesture in CSS
                    pixels.
                  type: integer
                from_y:
                  description: >-
                    Scroll y-position at the start of the scroll gesture in CSS
                    pixels.
                  type: integer
                target_selector:
                  description: CSS selector path to the scrolled element.
                  type: string
                to_x:
                  description: >-
                    Final scroll x-position after the gesture settled in CSS
                    pixels.
                  type: integer
                to_y:
                  description: >-
                    Final scroll y-position after the gesture settled in CSS
                    pixels.
                  type: integer
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: interaction_scroll_settled
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: interaction_scroll_settled
      type: object
    BrowserLiveViewConnectEvent:
      description: >-
        A live view client connected to the headful browser's WebRTC server.
        Headful only; not emitted for headless images.
      properties:
        category:
          const: connection
          type: string
        data:
          additionalProperties: false
          properties:
            session_id:
              description: >-
                Live view session identifier. Stable across reconnects, so a
                transient network blip can emit two events with the same
                session_id.
              type: string
          required:
            - session_id
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: live_view_connect
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserLiveViewDisconnectEvent:
      description: >-
        A live view client disconnected from the headful browser's WebRTC
        server. Pair with live_view_connect by session_id.
      properties:
        category:
          const: connection
          type: string
        data:
          additionalProperties: false
          properties:
            duration_ms:
              description: Wall-clock duration of the connection in milliseconds.
              type: number
            session_id:
              description: >-
                Live view session identifier; matches the corresponding
                live_view_connect event.
              type: string
          required:
            - session_id
            - duration_ms
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: live_view_disconnect
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserMonitorDisconnectedEvent:
      description: >-
        The CDP connection to Chrome was lost. Telemetry events may be dropped
        until monitor_reconnected arrives. Treat any in-progress computed state
        (network_idle, page_layout_settled) as unreliable until then.
      properties:
        category:
          const: monitor
          type: string
        data:
          additionalProperties: false
          properties:
            reason:
              description: >-
                Reason for the disconnection. chrome_restarted: Chrome process
                restarted.
              enum:
                - chrome_restarted
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: monitor_disconnected
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: monitor_disconnected
      type: object
    BrowserMonitorInitFailedEvent:
      description: The CDP session could not be initialized.
      properties:
        category:
          const: monitor
          type: string
        data:
          additionalProperties: false
          properties:
            step:
              description: >-
                The CDP method or initialization step that failed (e.g.
                Target.setAutoAttach).
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: monitor_init_failed
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: monitor_init_failed
      type: object
    BrowserMonitorReconnectFailedEvent:
      description: >-
        The CDP connection to Chrome could not be re-established after
        exhausting all reconnection attempts. No further telemetry events will
        arrive on this session.
      properties:
        category:
          const: monitor
          type: string
        data:
          additionalProperties: false
          properties:
            reason:
              description: >-
                Reason for the reconnection failure. reconnect_exhausted: all
                retry attempts were used up without successfully restoring the
                CDP connection.
              enum:
                - reconnect_exhausted
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: monitor_reconnect_failed
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: monitor_reconnect_failed
      type: object
    BrowserMonitorReconnectedEvent:
      description: >-
        The CDP connection to Chrome was successfully re-established after a
        disconnection. Events emitted during the gap are lost. Computed state is
        reset, so navigation and network tracking restart fresh from this point.
      properties:
        category:
          const: monitor
          type: string
        data:
          additionalProperties: false
          properties:
            reconnect_duration_ms:
              description: >-
                Wall-clock time in milliseconds taken to reconnect after the
                disconnection.
              format: int64
              type: integer
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: monitor_reconnected
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: monitor_reconnected
      type: object
    BrowserMonitorScreenshotEvent:
      description: A periodic screenshot of the browser viewport.
      properties:
        category:
          const: screenshot
          type: string
        data:
          additionalProperties: false
          properties:
            png:
              contentEncoding: base64
              description: Base64-encoded PNG screenshot of the browser viewport.
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: monitor_screenshot
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: monitor_screenshot
      type: object
    BrowserNetworkIdleEvent:
      description: >-
        A browser network idle event emitted after a 500ms quiet period with no
        in-flight HTTP requests.
      properties:
        category:
          const: network
          type: string
        data:
          $ref: '#/components/schemas/BrowserEventContext'
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: network_idle
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: network_idle
      type: object
    BrowserNetworkLoadingFailedEvent:
      description: >-
        A browser network loading failed event. If the request was already in
        flight when CDP attached (no prior network_request was emitted for it),
        url, frame_id, loader_id, and resource_type are absent;
        BrowserEventContext is partially populated in that case.
      properties:
        category:
          const: network
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                canceled:
                  description: >-
                    True if the request was canceled by the browser or page
                    script.
                  type: boolean
                error_text:
                  description: >-
                    Network error description (e.g.
                    net::ERR_CONNECTION_REFUSED).
                  type: string
                request_id:
                  description: >-
                    CDP request identifier matching the originating
                    network_request event.
                  type: string
                resource_type:
                  description: >-
                    CDP Network.ResourceType for the request, passed through
                    as-is from Chrome. Known values include Document, Fetch,
                    XHR, Script, Stylesheet, Image, Media, Font, TextTrack,
                    EventSource, WebSocket, Manifest, Prefetch, Other, and more.
                  type: string
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: network_loading_failed
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: network_loading_failed
      type: object
    BrowserNetworkRequestEvent:
      description: A browser network request sent event.
      properties:
        category:
          const: network
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                document_url:
                  description: URL of the document that initiated the request.
                  type: string
                headers:
                  $ref: '#/components/schemas/BrowserHttpHeaders'
                  description: Request headers.
                initiator_type:
                  description: >-
                    CDP Initiator.type indicating what caused the request,
                    passed through as-is from Chrome. Known values include
                    script, parser, preload, and other.
                  type: string
                is_redirect:
                  description: True if this request is the result of a redirect.
                  type: boolean
                method:
                  description: HTTP method as sent on the wire (e.g. GET, POST).
                  type: string
                post_data:
                  description: Request body for POST/PUT requests, if available.
                  type: string
                redirect_url:
                  description: >-
                    Original URL before the redirect, present when is_redirect
                    is true.
                  type: string
                request_id:
                  description: CDP request identifier, unique within the session.
                  type: string
                resource_type:
                  description: >-
                    CDP Network.ResourceType for the request, passed through
                    as-is from Chrome. Known values include Document, Fetch,
                    XHR, Script, Stylesheet, Image, Media, Font, TextTrack,
                    EventSource, WebSocket, Manifest, Prefetch, Other, and more.
                  type: string
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: network_request
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: network_request
      type: object
    BrowserNetworkResponseEvent:
      description: >-
        A browser network response received event. Fired after the response body
        is fully received, not when headers arrive.
      properties:
        category:
          const: network
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                body:
                  description: Truncated response body, present only for text MIME types.
                  type: string
                headers:
                  $ref: '#/components/schemas/BrowserHttpHeaders'
                  description: Response headers.
                method:
                  description: HTTP method of the original request.
                  type: string
                mime_type:
                  description: >-
                    MIME type of the response (e.g. text/html,
                    application/json).
                  type: string
                request_id:
                  description: >-
                    CDP request identifier matching the originating
                    network_request event.
                  type: string
                resource_type:
                  description: >-
                    CDP Network.ResourceType for the request, passed through
                    as-is from Chrome. Known values include Document, Fetch,
                    XHR, Script, Stylesheet, Image, Media, Font, TextTrack,
                    EventSource, WebSocket, Manifest, Prefetch, Other, and more.
                  type: string
                status:
                  description: HTTP response status code.
                  type: integer
                status_text:
                  description: HTTP response status text (e.g. OK, Not Found).
                  type: string
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: network_response
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: network_response
      type: object
    BrowserPageDomContentLoadedEvent:
      description: A browser DOMContentLoaded event (CDP Page.domContentEventFired).
      properties:
        category:
          const: page
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                cdp_timestamp:
                  description: >-
                    Chrome monotonic clock value in seconds at which
                    DOMContentLoaded fired, relative to browser process start
                    (not Unix epoch). Use ts for wall-clock time.
                  type: number
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_dom_content_loaded
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_dom_content_loaded
      type: object
    BrowserPageLayoutSettledEvent:
      description: >-
        A browser layout settled event emitted 1 second after page load with no
        intervening layout shifts, indicating visual stability. Each layout
        shift resets the 1-second timer.
      properties:
        category:
          const: page
          type: string
        data:
          $ref: '#/components/schemas/BrowserEventContext'
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_layout_settled
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_layout_settled
      type: object
    BrowserPageLayoutShiftEvent:
      description: >-
        A browser cumulative layout shift (CLS) event from the Performance
        Timeline API.
      properties:
        category:
          const: page
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                duration:
                  description: >-
                    Duration of the layout shift entry in milliseconds (always 0
                    for layout shifts per spec).
                  type: number
                layout_shift_details:
                  additionalProperties: false
                  description: >-
                    PerformanceLayoutShift attributes from the Performance
                    Timeline entry.
                  properties:
                    had_recent_input:
                      description: >-
                        True if the layout shift was preceded by user input
                        within 500ms, excluding it from CLS.
                      type: boolean
                    value:
                      description: Layout shift score for this entry (contribution to CLS).
                      type: number
                  type: object
                source_frame_id:
                  description: >-
                    CDP frame identifier of the frame where the layout shift
                    occurred.
                  type: string
                time:
                  description: >-
                    Performance Timeline timestamp of the layout shift in
                    milliseconds.
                  type: number
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_layout_shift
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_layout_shift
      type: object
    BrowserPageLcpEvent:
      description: >-
        A browser Largest Contentful Paint (LCP) event from the Performance
        Timeline API.
      properties:
        category:
          const: page
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                lcp_details:
                  additionalProperties: false
                  description: >-
                    LargestContentfulPaint attributes from the Performance
                    Timeline entry.
                  properties:
                    element_id:
                      description: id attribute of the LCP element, if present.
                      type: string
                    load_time:
                      description: Load time of the LCP element in milliseconds.
                      type: number
                    node_id:
                      description: CDP DOM node identifier of the LCP element.
                      type: integer
                    render_time:
                      description: >-
                        Render time of the LCP element in milliseconds; 0 for
                        cross-origin images without Timing-Allow-Origin.
                      type: number
                    size:
                      description: Visible area of the LCP element in pixels squared.
                      type: number
                    url:
                      description: URL of the LCP element for image or video elements.
                      type: string
                  type: object
                source_frame_id:
                  description: >-
                    CDP frame identifier of the frame where the LCP element was
                    rendered.
                  type: string
                time:
                  description: >-
                    Performance Timeline timestamp of the LCP entry in
                    milliseconds.
                  type: number
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_lcp
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_lcp
      type: object
    BrowserPageLoadEvent:
      description: A browser page load event (CDP Page.loadEventFired).
      properties:
        category:
          const: page
          type: string
        data:
          allOf:
            - $ref: '#/components/schemas/BrowserEventContext'
            - properties:
                cdp_timestamp:
                  description: >-
                    Chrome monotonic clock value in seconds at which the load
                    event fired, relative to browser process start (not Unix
                    epoch). Use ts for wall-clock time.
                  type: number
              type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_load
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_load
      type: object
    BrowserPageNavigationEvent:
      description: >-
        A browser page navigation started event (CDP Page.frameNavigated).
        Carries nav context fields inline but not nav_seq, as this event resets
        the navigation epoch.
      properties:
        category:
          const: page
          type: string
        data:
          additionalProperties: false
          properties:
            frame_id:
              description: CDP frame identifier of the navigated frame.
              type: string
            loader_id:
              description: New CDP document loader identifier assigned for this navigation.
              type: string
            parent_frame_id:
              description: >-
                Parent frame identifier for subframe navigations; absent for
                top-level navigations.
              type: string
            session_id:
              description: CDP session identifier.
              type: string
            target_id:
              description: Browser target identifier.
              type: string
            target_type:
              $ref: '#/components/schemas/BrowserTargetType'
            url:
              description: URL navigated to.
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_navigation
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_navigation
      type: object
    BrowserPageNavigationSettledEvent:
      description: >-
        Emitted when page_dom_content_loaded and page_layout_settled have both
        fired for the same navigation, indicating the page is loaded and
        visually stable. Independent of network_idle; a single pending request
        does not block it.
      properties:
        category:
          const: page
          type: string
        data:
          $ref: '#/components/schemas/BrowserEventContext'
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_navigation_settled
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_navigation_settled
      type: object
    BrowserPageTabOpenedEvent:
      description: >-
        A new browser tab or target was opened (CDP Target.attachedToTarget for
        page targets). Fires before a CDP session is attached to the new target,
        so session_id, frame_id, loader_id, and nav_seq are absent; this event
        does not compose BrowserEventContext. Consumers reading context fields
        generically should treat it as a special case.
      properties:
        category:
          const: page
          type: string
        data:
          additionalProperties: false
          properties:
            opener_id:
              description: Target identifier of the tab that opened this one, if any.
              type: string
            target_id:
              description: CDP target identifier for the newly opened tab.
              type: string
            target_type:
              $ref: '#/components/schemas/BrowserTargetType'
            title:
              description: Initial page title of the new tab.
              type: string
            url:
              description: Initial URL of the new tab.
              type: string
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: page_tab_opened
          type: string
      required:
        - ts
        - type
        - category
        - source
      title: page_tab_opened
      type: object
    BrowserServiceCrashedEvent:
      description: >-
        A managed service exited unexpectedly. Intentional stops do not produce
        this event; only unexpected exits and terminal restart-give-up
        transitions do.
      properties:
        category:
          const: system
          type: string
        data:
          additionalProperties: false
          properties:
            phase:
              description: >-
                Lifecycle phase the crash occurred in. startup: the process died
                before reaching a healthy running state. running: a previously
                healthy process died unexpectedly. gave_up: the process manager
                exhausted its restart attempts and stopped trying.
              enum:
                - startup
                - running
                - gave_up
              type: string
              x-go-type: string
            pid:
              description: >-
                PID of the crashed process. Absent when the process manager gave
                up after exhausting restart attempts.
              type: integer
            service_name:
              description: >-
                Program name of the crashed service (e.g. chromium, mutter,
                kernel-images-api).
              type: string
          required:
            - service_name
            - phase
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: service_crashed
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    BrowserSystemOomKillEvent:
      description: >-
        The Linux kernel OOM-killer terminated a process inside the VM. Fires
        for any process killed by the kernel due to memory exhaustion, including
        Chrome renderer subprocesses that are not supervised.
      properties:
        category:
          const: system
          type: string
        data:
          additionalProperties: false
          properties:
            constraint:
              description: >-
                Why the kernel decided to OOM-kill. none means global memory
                exhaustion; memcg means a cgroup memory limit was hit; cpuset /
                memory_policy are NUMA/policy-driven kills. Absent on kernels
                older than 5.0.
              enum:
                - none
                - memcg
                - cpuset
                - memory_policy
              type: string
              x-go-type: string
            mem_free_kb:
              description: >-
                Free system memory in KiB at the time of the kill. Assumes a 4
                KiB page size. Does not include reclaimable caches. Absent if
                the kernel did not emit a parseable Mem-Info section.
              type: integer
            mem_total_kb:
              description: >-
                Total system memory in KiB at the time of the kill. Assumes a 4
                KiB page size. Absent if the kernel did not emit a parseable
                Mem-Info section.
              type: integer
            pid:
              description: PID of the killed process.
              type: integer
            process_name:
              description: >-
                Comm of the killed process as reported by the kernel (max 15
                chars, truncated by the kernel).
              type: string
            rss_kb:
              description: >-
                Resident set size of the killed process in KiB (sum of anon-rss,
                file-rss, and shmem-rss).
              type: integer
            top_tasks:
              description: >-
                Top processes by resident-set-size at the moment of the kill,
                sorted descending. Empty if the kernel did not emit the Tasks
                state table. Capped at 5 entries.
              items:
                additionalProperties: false
                properties:
                  name:
                    description: >-
                      Comm of the process (max 15 chars, truncated by the
                      kernel).
                    type: string
                  pid:
                    description: PID of the process.
                    type: integer
                  rss_kb:
                    description: Resident set size in KiB at the moment of the kill.
                    type: integer
                required:
                  - pid
                  - name
                  - rss_kb
                type: object
              maxItems: 5
              type: array
            trigger_pid:
              description: >-
                PID of the triggering process. Absent if the kernel did not emit
                the standard header line.
              type: integer
            trigger_process_name:
              description: >-
                Comm of the process whose allocation request caused the kernel
                to invoke the OOM-killer. Often the same as process_name but can
                differ. Max 15 chars.
              type: string
          required:
            - process_name
            - pid
            - rss_kb
          type: object
        source:
          $ref: '#/components/schemas/BrowserEventSource'
        truncated:
          description: True if the data field was truncated due to size limits.
          type: boolean
        ts:
          description: Event timestamp in Unix microseconds.
          format: int64
          type: integer
        type:
          const: system_oom_kill
          type: string
      required:
        - ts
        - type
        - category
        - source
      type: object
    ErrorDetail:
      properties:
        code:
          description: Lower-level error code providing more specific detail
          example: invalid_input
          type: string
        message:
          description: Further detail about the error
          example: Provided version string is not semver compliant
          type: string
      type: object
    BrowserEventSource:
      description: Provenance metadata identifying which producer emitted the event.
      properties:
        event:
          description: >-
            Producer-specific event name (e.g. Runtime.consoleAPICalled for
            CDP-sourced console events, Runtime.exceptionThrown for uncaught
            exceptions).
          type: string
        kind:
          description: >-
            Event producer. cdp: Chrome DevTools Protocol events from the
            browser. kernel_api: Kernel API server. extension: injected Chrome
            extension. local_process: system process running alongside the
            browser.
          enum:
            - cdp
            - kernel_api
            - extension
            - local_process
          type: string
        metadata:
          additionalProperties:
            type: string
          description: Producer-specific context (e.g. CDP target/session/frame IDs).
          type: object
      required:
        - kind
      type: object
    BrowserEventContext:
      description: >-
        Browser event context stamped by the browser monitor onto all
        CDP-sourced events. Identifies the target, frame, and navigation epoch
        in which the event occurred.
      properties:
        frame_id:
          description: CDP frame identifier within the target.
          type: string
        loader_id:
          description: CDP document loader identifier, reset on each navigation.
          type: string
        nav_seq:
          description: >-
            Monotonically increasing navigation sequence number, incremented on
            each top-level navigation within the target.
          format: int64
          type: integer
        session_id:
          description: CDP session identifier for the target connection.
          type: string
        target_id:
          description: Browser target identifier (stable across navigations within a tab).
          type: string
        target_type:
          $ref: '#/components/schemas/BrowserTargetType'
        url:
          description: >-
            URL relevant to this event — page URL for navigation and page
            events, request URL for network events.
          type: string
      type: object
    BrowserCallStack:
      description: >-
        CDP Runtime.StackTrace representing the JavaScript call stack at the
        time of an event. Fields use CDP naming conventions rather than
        snake_case to match the Chrome DevTools Protocol wire format.
      properties:
        callFrames:
          description: Ordered list of call frames, outermost first.
          items:
            properties:
              columnNumber:
                description: Zero-based column number within the line.
                type: integer
              functionName:
                description: >-
                  JavaScript function name, or empty string for anonymous
                  functions.
                type: string
              lineNumber:
                description: Zero-based line number within the script.
                type: integer
              scriptId:
                description: CDP script identifier.
                type: string
              url:
                description: URL or name of the script file.
                type: string
            required:
              - functionName
              - scriptId
              - url
              - lineNumber
              - columnNumber
            type: object
          type: array
        description:
          description: Optional label for the stack trace (e.g. async cause).
          type: string
        parent:
          $ref: '#/components/schemas/BrowserCallStack'
          description: Parent stack trace for async stacks.
      required:
        - callFrames
      type: object
    BrowserHttpHeaders:
      additionalProperties: true
      description: >-
        HTTP headers map forwarded as-is from CDP without normalization. Values
        are typically strings but may be any JSON type.
      type: object
    BrowserTargetType:
      description: CDP target type of the page that produced the event.
      enum:
        - page
        - background_page
        - service_worker
        - shared_worker
        - other
      type: string
  responses:
    Unauthorized:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Unauthorized – missing or invalid authorization token
    Forbidden:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Forbidden – insufficient permissions or plan
    NotFound:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Resource not found
    InternalError:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      description: Internal Server Error
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````