> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devhelm.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List recorded skipped ticks and current plan-disabled intervals



## OpenAPI

````yaml /openapi/monitoring-api.json get /api/v1/runs/skipped
openapi: 3.0.1
info:
  title: DevHelm API
  description: >-
    DevHelm monitoring and incident management API. Create and manage uptime
    monitors, incidents, alert channels, notification policies, and more.
  version: '1.0'
  contact:
    name: DevHelm
    url: https://devhelm.io
    email: support@devhelm.io
servers:
  - url: https://api.devhelm.io
    description: Production
security:
  - BearerAuth: []
tags:
  - name: Alert Channels
    description: Alert channel CRUD and connectivity testing
  - name: Alert Deliveries
    description: 'Delivery audit trail: inspect per-attempt details for alert deliveries'
  - name: API Auth
    description: Identity and quota info for API key authentication
  - name: API Keys
    description: Organization API key management
  - name: Artifacts
    description: Run evidence file content
  - name: Audit Log
    description: Organization audit trail
  - name: Bundles
    description: Upload code for browser and multi-step checks
  - name: Check Results
    description: Query raw check results, uptime statistics, and summary data
  - name: Dashboard
    description: Overview dashboard aggregates
  - name: Definitions
    description: Code-monitor definition catalog and revisions
  - name: Deploy Lock
    description: Mutex for CLI deploy operations
  - name: Device Login
    description: Device-code login that gives the CLI a named, revocable API key
  - name: Device Login
    description: Dashboard approval for CLI device-code logins
  - name: Email Testing
    description: Receive domains, captured mail, and JSON inject
  - name: Entitlements
    description: Plan entitlements and usage limits
  - name: Environments
    description: Variable namespace management for monitors
  - name: Forensics
    description: >-
      Detection engine event-sourced history (policy snapshots, rule
      evaluations, state transitions)
  - name: Heartbeat
    description: Public ping endpoint for heartbeat monitors
  - name: Incident Policies
    description: Manage trigger, confirmation, and recovery rules for monitors
  - name: Incidents
    description: Incident management and lifecycle
  - name: Integrations
    description: Static catalog of supported alert channel integrations
  - name: Invites
    description: Organization invite management
  - name: Maintenance Windows
    description: Schedule alert-suppression windows for monitors
  - name: Members
    description: Organization member management
  - name: Monitor Alert Channels
    description: Manage alert channel mappings for a monitor
  - name: Monitor Assertions
    description: Manage assertions for a monitor
  - name: Monitor Auth
    description: Manage authentication configuration for a monitor
  - name: Monitor definitions
    description: Publish, rollback, and revision history for code monitors
  - name: Monitor History
    description: Scheduled ticks that did not run
  - name: Monitor Runs
    description: Per-monitor code run history and run-now
  - name: Monitor secret requests
    description: Secret keys a monitor requires and how they are fulfilled
  - name: Monitor session
    description: Cached sign-in session for a monitor
  - name: Monitors
    description: Monitor CRUD and lifecycle management
  - name: Notification Dispatches
    description: >-
      Dispatch debugging API: inspect which policies matched an incident and
      track delivery status
  - name: Notification Policies
    description: Org-level notification routing policies with JSONB match rules
  - name: Notifications
    description: In-app notification center
  - name: Organizations
    description: Organization management
  - name: Regions
    description: Public regions
  - name: Resource Groups
    description: Resource group CRUD and member management
  - name: Revisions
    description: Definition revision packages
  - name: Runs
    description: Code-monitor run list, snapshot, cases, events, and cancel
  - name: Secrets
    description: Organization environment secret management
  - name: Service Subscriptions
    description: Manage which services an organization tracks
  - name: Status Data
    description: Public service status catalog, components, uptime, and incident history
  - name: Status Pages
    description: Status page management
  - name: Synthetics metrics
    description: Measured metrics for the BROWSER and MULTI_STEP_API family
  - name: Tags
    description: Org-scoped tag management for monitors
  - name: Vault
    description: Organization vault management (admin-only)
  - name: Webhook Testing
    description: Inboxes that capture inbound HTTP and wait for events
  - name: Webhooks
    description: Webhook endpoint management, event catalog, and delivery history
  - name: Workspaces
    description: Workspace management within an organization
paths:
  /api/v1/runs/skipped:
    get:
      tags:
        - run-list-read-controller
      summary: List recorded skipped ticks and current plan-disabled intervals
      operationId: listSkippedRuns
      parameters:
        - name: params
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/RunSkippedListParams'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CursorPageRunSkippedEntryDto'
        '400':
          description: Bad request — the payload failed validation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized — missing or invalid credentials
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: Payment required — the plan or quota does not allow this
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Forbidden — the actor lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found — the requested resource does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: Conflict — the request collides with current resource state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '410':
          description: Gone — the resource is no longer available
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Too many requests — retry after the window resets
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error — see the message field for details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '502':
          description: Bad gateway — an upstream provider returned an error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service unavailable — try again shortly
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    RunSkippedListParams:
      type: object
      properties:
        from:
          type: string
          description: Inclusive window start; default last 24 hours, clamped to 90 days
          format: date-time
          nullable: true
        to:
          type: string
          description: Inclusive window end; default now
          format: date-time
          nullable: true
        monitorId:
          type: string
          description: Only entries for this monitor
          format: uuid
          nullable: true
        cursor:
          type: string
          description: Opaque cursor returned by this endpoint
          nullable: true
        limit:
          maximum: 100
          minimum: 1
          type: integer
          description: Page size (1–100, default 50)
          format: int32
        environmentId:
          type: string
          description: Current monitor environment; historical ticks retain their snapshot
          format: uuid
          nullable: true
        monitorType:
          type: string
          description: 'Monitor type: BROWSER or MULTI_STEP_API'
          nullable: true
      required:
        - limit
    CursorPageRunSkippedEntryDto:
      required:
        - data
        - hasMore
      type: object
      properties:
        data:
          type: array
          description: Items on this page
          items:
            $ref: '#/components/schemas/RunSkippedEntryDto'
        nextCursor:
          type: string
          description: Opaque cursor for the next page; null when there are no more results
          nullable: true
        hasMore:
          type: boolean
          description: Whether more results exist beyond this page
      description: Cursor-paginated response for time-series and append-only data
    ErrorResponse:
      required:
        - category
        - code
        - message
        - status
        - timestamp
        - retryable
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code (mirrors the response status line)
          format: int32
          example: 404
        code:
          type: string
          description: >-
            Stable machine code for this error, such as NOT_FOUND or
            SYNTHETICS_USAGE_CAPPED
          example: NOT_FOUND
        category:
          $ref: '#/components/schemas/ErrorCategory'
        retryable:
          type: boolean
          description: Whether a later attempt can succeed without changing the request
          example: false
        message:
          type: string
          description: Human-readable error message; safe to surface to end users
          example: Monitor not found
        timestamp:
          type: integer
          description: Server time when the error was produced (epoch milliseconds)
          format: int64
          example: 1737302400000
        requestId:
          type: string
          description: >-
            Opaque per-request id; same value as the X-Request-Id response
            header. Use in support tickets.
          nullable: true
          example: 5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a
        errors:
          type: array
          description: >-
            Structured per-field rejections; populated for validation errors,
            null otherwise
          nullable: true
          items:
            nullable: true
            allOf:
              - $ref: '#/components/schemas/ErrorEntry'
        retryAfterSeconds:
          type: integer
          description: Seconds to wait before retrying a rate limit
          format: int64
          nullable: true
          example: 30
        resource:
          type: string
          description: Meter or resource this limit applies to
          nullable: true
          example: browser_runs
        used:
          type: integer
          description: Amount used in the current period
          format: int64
          nullable: true
          example: 1000
        limit:
          type: integer
          description: Maximum allowed for this period or plan
          format: int64
          nullable: true
          example: 1000
        resetsAt:
          type: string
          description: When this quota window resumes (ISO-8601)
          nullable: true
          example: '2026-11-01T00:00:00Z'
        plan:
          type: string
          description: Plan this refusal was evaluated against
          nullable: true
          example: FREE
        upgradeUrl:
          type: string
          description: Page where an admin can change the plan
          nullable: true
          example: https://app.devhelm.io/settings/billing
        canRaise:
          type: string
          description: Role that can raise this limit
          nullable: true
          example: org admin
        owner:
          type: string
          description: Who owns the resource when a write is refused
          nullable: true
        required:
          type: string
          description: Missing scope, secret key, or other required value
          nullable: true
        have:
          type: integer
          description: Current amount compared with the plan limit
          format: int64
          nullable: true
          example: 10
        reason:
          type: string
          description: 'Why permission was refused: scope or role'
          nullable: true
          example: role
          enum:
            - scope
            - role
        next:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/ErrorNext'
        details:
          type: object
          additionalProperties:
            type: object
            description: >-
              Extra fields for this error, such as a missing secret key and
              environment
            nullable: true
          description: >-
            Extra fields for this error, such as a missing secret key and
            environment
          nullable: true
        expiredAt:
          type: string
          description: When this evidence expired
          format: date-time
          nullable: true
        policy:
          type: string
          description: Retention written when the artifact was saved, such as P7D
          nullable: true
      description: Uniform error envelope returned for every non-2xx response
      example:
        status: 404
        code: NOT_FOUND
        category: not_found
        message: Monitor not found
        timestamp: 1737302400000
        requestId: 5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a
    RunSkippedEntryDto:
      required:
        - from
        - kind
        - missingKeys
        - reason
        - to
      type: object
      properties:
        id:
          type: string
          description: Persisted skipped row identity; absent for a plan-disabled interval
          format: uuid
          nullable: true
        kind:
          type: string
          description: not_run for recorded ticks; plan_disabled for a current plan pause
        monitor:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorDto'
        reason:
          type: string
          description: 'Cause: quota, blocked, spend_cap, or plan_limit'
        region:
          type: string
          description: Region; absent when ticks cover multiple regions
          nullable: true
        from:
          type: string
          description: Beginning of the recorded interval
          format: date-time
        to:
          type: string
          description: End of the interval; current plan pauses end at the query snapshot
          format: date-time
        count:
          type: integer
          description: Recorded ticks in the whole folded row; absent for a plan pause
          format: int64
          nullable: true
        missingKeys:
          type: array
          description: Secret keys recorded as missing
          items:
            type: string
            description: Secret keys recorded as missing
        environment:
          type: string
          description: Environment recorded when ticks were skipped
          nullable: true
      description: Items on this page
    ErrorCategory:
      type: string
      description: Machine class clients use to choose the next action
      enum:
        - validation
        - blocked
        - auth
        - permission
        - ownership
        - plan
        - quota
        - rate_limit
        - conflict
        - confirmation_required
        - not_found
        - gone
        - platform
    ErrorEntry:
      required:
        - code
        - message
      type: object
      properties:
        code:
          minLength: 1
          type: string
          description: >-
            Stable machine-readable code; see ValidationErrorCode for the
            registry
          example: MONITOR_HEARTBEAT_GRACE_EXCEEDS_INTERVAL
        field:
          type: string
          description: >-
            JSON-pointer-like path to the offending field, or null for
            request-wide errors
          nullable: true
          example: config.gracePeriod
        message:
          minLength: 1
          type: string
          description: Human-readable message; safe to surface to end users
      description: One structured validation rejection
    ErrorNext:
      type: object
      properties:
        command:
          type: string
          description: Command that fixes this error
          nullable: true
          example: devhelm account usage
        docs:
          type: string
          description: Documentation page for this error
          nullable: true
          example: https://docs.devhelm.io/errors/SYNTHETICS_USAGE_CAPPED
      description: Command and documentation that fix this error
    MonitorDto:
      required:
        - config
        - createdAt
        - id
        - managedBy
        - name
        - regions
        - type
        - updatedAt
        - organizationId
        - frequencySeconds
        - enabled
        - ownerEnforced
        - muted
      type: object
      properties:
        id:
          type: string
          description: Unique monitor identifier
          format: uuid
        organizationId:
          type: integer
          description: Organization this monitor belongs to
          format: int32
        name:
          minLength: 1
          type: string
          description: Human-readable name for this monitor
        type:
          type: string
          enum:
            - HTTP
            - DNS
            - MCP_SERVER
            - TCP
            - ICMP
            - HEARTBEAT
            - BROWSER
            - MULTI_STEP_API
        config:
          oneOf:
            - $ref: '#/components/schemas/DnsMonitorConfig'
            - $ref: '#/components/schemas/HeartbeatMonitorConfig'
            - $ref: '#/components/schemas/HttpMonitorConfig'
            - $ref: '#/components/schemas/IcmpMonitorConfig'
            - $ref: '#/components/schemas/McpServerMonitorConfig'
            - $ref: '#/components/schemas/ScriptMonitorConfig'
            - $ref: '#/components/schemas/TcpMonitorConfig'
        frequencySeconds:
          type: integer
          description: Check frequency in seconds (30–86400)
          format: int32
        enabled:
          type: boolean
          description: Whether the monitor is active
        regions:
          type: array
          description: Probe regions where checks are executed
          items:
            type: string
            description: Probe regions where checks are executed
        managedBy:
          type: string
          description: >-
            Source that created/owns this monitor: DASHBOARD, CLI, TERRAFORM,
            MCP, or API
          enum:
            - DASHBOARD
            - CLI
            - TERRAFORM
            - MCP
            - API
        ownerEnforced:
          type: boolean
          description: >-
            Whether only the managedBy tool may change this monitor's
            configuration
        createdAt:
          type: string
          description: Timestamp when the monitor was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the monitor was last updated
          format: date-time
        assertions:
          type: array
          description: >-
            Assertions evaluated against each check result; null on list
            responses
          nullable: true
          items:
            $ref: '#/components/schemas/MonitorAssertionDto'
        tags:
          type: array
          description: Tags applied to this monitor
          nullable: true
          items:
            $ref: '#/components/schemas/TagDto'
        pingUrl:
          type: string
          description: Heartbeat ping URL; populated for HEARTBEAT monitors only
          nullable: true
        environment:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Summary'
        auth:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorAuthConfig'
        incidentPolicy:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IncidentPolicyDto'
        alertChannelIds:
          type: array
          description: >-
            Alert channel IDs linked to this monitor; populated on
            single-monitor responses
          nullable: true
          items:
            type: string
            description: >-
              Alert channel IDs linked to this monitor; populated on
              single-monitor responses
            format: uuid
        boundStatusPageComponents:
          type: array
          description: >-
            Status-page components that represent this monitor; omitted when
            none
          nullable: true
          items:
            $ref: '#/components/schemas/StatusPageBoundComponentDto'
        currentStatus:
          type: string
          description: >-
            Current operational state. One of UP, DOWN, DEGRADED, PAUSED, or
            UNKNOWN
          nullable: true
          enum:
            - up
            - degraded
            - down
            - paused
            - unknown
        displayHealth:
          type: string
          description: >-
            List and header chip health; not currentStatus and not evaluation
            state
          nullable: true
          enum:
            - healthy
            - down
            - degraded
            - recovering
            - infra
            - flaky
            - blocked
            - capped
            - paused
            - never_run
            - confirming
        bindingReadiness:
          type: string
          description: 'Secret binding state: ready, blocked, or not_applicable'
          nullable: true
          enum:
            - ready
            - blocked
            - not_applicable
        needsAttention:
          type: boolean
          description: True when the monitor needs operator attention
          nullable: true
        openIncident:
          type: string
          description: Open confirmed incident id
          format: uuid
          nullable: true
        lastRunAt:
          type: string
          description: When the latest code run was enqueued
          format: date-time
          nullable: true
        lastRunId:
          type: string
          description: Latest code run id
          format: uuid
          nullable: true
        resumesAt:
          type: string
          description: When a capped monitor resumes
          format: date-time
          nullable: true
        capped:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorCappedDto'
        missingKeys:
          type: array
          description: Secret keys missing while the monitor is blocked
          nullable: true
          items:
            type: string
            description: Secret keys missing while the monitor is blocked
        blockedKeys:
          type: array
          description: Secret keys missing while the monitor is blocked
          nullable: true
          items:
            type: string
            description: Secret keys missing while the monitor is blocked
        owner:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorOwnerDto'
        flakyRate:
          type: number
          description: >-
            Share of recent cycles that passed only after a retry, 0–1; null
            when not flaky
          format: double
          nullable: true
        flakySince:
          type: string
          description: When the first retry-passed cycle in the last 7 days finished
          format: date-time
          nullable: true
        flakySeverity:
          type: string
          description: 'How flaky the monitor is: LOW, MEDIUM, or HIGH'
          nullable: true
          enum:
            - low
            - medium
            - high
        lastCheckOutcome:
          type: string
          description: >-
            Result of the most recent check in any region: PASSED, DEGRADED, or
            FAILED
          nullable: true
          enum:
            - passed
            - degraded
            - failed
        lastCheckRegion:
          type: string
          description: Region of the most recent check
          nullable: true
        lastFailureSummary:
          type: string
          description: Why the latest failing region failed
          nullable: true
        lastStateChangeAt:
          type: string
          description: >-
            When the monitor last changed state: paused, evaluation change, or
            incident open or resolve
          format: date-time
          nullable: true
        regionHealth:
          type: array
          description: Latest verdict per region the monitor runs from; null while paused
          nullable: true
          items:
            $ref: '#/components/schemas/MonitorRegionHealthDto'
        definitionId:
          type: string
          description: >-
            Definition id for a browser or multi-step monitor. Null on probe
            monitors
          format: uuid
          nullable: true
        capturePolicy:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CapturePolicy'
        secretKeys:
          type: array
          description: Explicit attached secret keys; null uses scanned demand
          nullable: true
          items:
            type: string
            description: Explicit attached secret keys; null uses scanned demand
        fastRetryMaxAttempts:
          type: integer
          description: Fast-retry max attempts; null/0 = off
          format: int32
          nullable: true
        runParallel:
          type: boolean
          description: >-
            When multiple locations are set, run all of them each interval.
            False rotates one location per interval
          nullable: true
        muted:
          type: boolean
          description: Whether alert delivery is muted
        mutedUntil:
          type: string
          description: Mute expiry; null means indefinite while muted
          format: date-time
          nullable: true
        muteReason:
          type: string
          description: Optional mute reason
          nullable: true
        pausedAt:
          type: string
          description: When the monitor was paused
          format: date-time
          nullable: true
        pauseReason:
          type: string
          description: Optional pause reason
          nullable: true
        pauseExpiresAt:
          type: string
          description: Pause expiry
          format: date-time
          nullable: true
        quarantineOwnerId:
          type: string
          description: Quarantine person owner id
          nullable: true
        quarantineUntil:
          type: string
          description: Quarantine expiry; non-null means quarantined
          format: date-time
          nullable: true
        quarantineReason:
          type: string
          description: Quarantine reason
          nullable: true
        usageProjection:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorUsageProjectionDto'
        liveRevisionId:
          type: string
          description: Revision scheduled runs execute
          format: uuid
          nullable: true
        liveRevisionDigest:
          type: string
          description: Closure digest of the revision scheduled runs execute
          nullable: true
        triage:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/MonitorTriageDto'
        deletedAt:
          type: string
          description: When the monitor was moved to Trash
          format: date-time
          nullable: true
        deletedBy:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/UserDto'
        createdVia:
          type: string
          description: Client that originally created the monitor
          nullable: true
      description: Full monitor representation
    DnsMonitorConfig:
      required:
        - hostname
      type: object
      properties:
        hostname:
          minLength: 1
          type: string
          description: Domain name to resolve
        recordTypes:
          type: array
          description: >-
            DNS record types to query: A, AAAA, CNAME, MX, NS, TXT, SRV, SOA,
            CAA, PTR
          nullable: true
          items:
            type: string
            description: >-
              DNS record types to query: A, AAAA, CNAME, MX, NS, TXT, SRV, SOA,
              CAA, PTR
            nullable: true
            enum:
              - A
              - AAAA
              - CNAME
              - MX
              - NS
              - TXT
              - SRV
              - SOA
              - CAA
              - PTR
        nameservers:
          type: array
          description: Custom nameservers to query (uses system defaults if omitted)
          nullable: true
          items:
            type: string
            description: Custom nameservers to query (uses system defaults if omitted)
            nullable: true
        timeoutMs:
          type: integer
          description: Per-query timeout in milliseconds
          format: int32
          nullable: true
        totalTimeoutMs:
          type: integer
          description: Total timeout for all queries in milliseconds
          format: int32
          nullable: true
    HeartbeatMonitorConfig:
      required:
        - expectedInterval
        - gracePeriod
      type: object
      properties:
        expectedInterval:
          maximum: 86400
          minimum: 1
          type: integer
          description: Expected heartbeat interval in seconds
          format: int32
        gracePeriod:
          minimum: 1
          type: integer
          description: Grace period in seconds before marking as down
          format: int32
    HttpMonitorConfig:
      required:
        - method
        - url
      type: object
      properties:
        url:
          minLength: 1
          type: string
          description: Target URL to send requests to
        method:
          type: string
          description: 'HTTP method: GET, POST, PUT, PATCH, DELETE, or HEAD'
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
            - HEAD
        customHeaders:
          type: object
          additionalProperties:
            type: string
            description: Additional HTTP headers to include in requests
            nullable: true
          description: Additional HTTP headers to include in requests
          nullable: true
        requestBody:
          type: string
          description: Request body content for POST/PUT/PATCH methods
          nullable: true
        contentType:
          type: string
          description: Content-Type header value for the request body
          nullable: true
        verifyTls:
          type: boolean
          description: 'Whether to verify TLS certificates (default: true)'
          nullable: true
    IcmpMonitorConfig:
      required:
        - host
      type: object
      properties:
        host:
          minLength: 1
          type: string
          description: Target hostname or IP address to ping
        packetCount:
          maximum: 20
          minimum: 1
          type: integer
          description: Number of ICMP packets to send
          format: int32
          nullable: true
        timeoutMs:
          type: integer
          description: Ping timeout in milliseconds
          format: int32
          nullable: true
    McpServerMonitorConfig:
      required:
        - command
      type: object
      properties:
        command:
          minLength: 1
          type: string
          description: Command to execute to start the MCP server
        args:
          type: array
          description: Command-line arguments for the MCP server process
          nullable: true
          items:
            type: string
            description: Command-line arguments for the MCP server process
            nullable: true
        env:
          type: object
          additionalProperties:
            type: string
            description: Environment variables to pass to the MCP server process
            nullable: true
          description: Environment variables to pass to the MCP server process
          nullable: true
    ScriptMonitorConfig:
      type: object
      additionalProperties: false
      properties:
        timeoutSeconds:
          maximum: 240
          minimum: 5
          type: integer
          description: Maximum execution time in seconds (5–240)
          format: int32
          nullable: true
        runtimeId:
          maxLength: 32
          minLength: 0
          pattern: ^$|^[A-Za-z0-9._-]+$
          type: string
          description: >-
            Runtime pin such as 2026.11; omit to pin the newest runtime that can
            run
          nullable: true
    TcpMonitorConfig:
      required:
        - host
        - port
      type: object
      properties:
        host:
          minLength: 1
          type: string
          description: Target hostname or IP address
        port:
          maximum: 65535
          minimum: 1
          type: integer
          description: TCP port to connect to
          format: int32
        timeoutMs:
          type: integer
          description: Connection timeout in milliseconds
          format: int32
          nullable: true
    MonitorAssertionDto:
      required:
        - assertionType
        - config
        - id
        - monitorId
        - severity
      type: object
      properties:
        id:
          type: string
          format: uuid
        monitorId:
          type: string
          format: uuid
        assertionType:
          type: string
          enum:
            - status_code
            - response_time
            - body_contains
            - json_path
            - header_value
            - regex_body
            - dns_resolves
            - dns_response_time
            - dns_expected_ips
            - dns_expected_cname
            - dns_record_contains
            - dns_record_equals
            - dns_txt_contains
            - dns_min_answers
            - dns_max_answers
            - dns_response_time_warn
            - dns_ttl_low
            - dns_ttl_high
            - mcp_connects
            - mcp_response_time
            - mcp_has_capability
            - mcp_tool_available
            - mcp_min_tools
            - mcp_protocol_version
            - mcp_response_time_warn
            - mcp_tool_count_changed
            - ssl_expiry
            - response_size
            - redirect_count
            - redirect_target
            - response_time_warn
            - tcp_connects
            - tcp_response_time
            - tcp_response_time_warn
            - icmp_reachable
            - icmp_response_time
            - icmp_response_time_warn
            - icmp_packet_loss
            - heartbeat_received
            - heartbeat_max_interval
            - heartbeat_interval_drift
            - heartbeat_payload_contains
        config:
          oneOf:
            - $ref: '#/components/schemas/BodyContainsAssertion'
            - $ref: '#/components/schemas/DnsExpectedCnameAssertion'
            - $ref: '#/components/schemas/DnsExpectedIpsAssertion'
            - $ref: '#/components/schemas/DnsMaxAnswersAssertion'
            - $ref: '#/components/schemas/DnsMinAnswersAssertion'
            - $ref: '#/components/schemas/DnsRecordContainsAssertion'
            - $ref: '#/components/schemas/DnsRecordEqualsAssertion'
            - $ref: '#/components/schemas/DnsResolvesAssertion'
            - $ref: '#/components/schemas/DnsResponseTimeAssertion'
            - $ref: '#/components/schemas/DnsResponseTimeWarnAssertion'
            - $ref: '#/components/schemas/DnsTtlHighAssertion'
            - $ref: '#/components/schemas/DnsTtlLowAssertion'
            - $ref: '#/components/schemas/DnsTxtContainsAssertion'
            - $ref: '#/components/schemas/HeaderValueAssertion'
            - $ref: '#/components/schemas/HeartbeatIntervalDriftAssertion'
            - $ref: '#/components/schemas/HeartbeatMaxIntervalAssertion'
            - $ref: '#/components/schemas/HeartbeatPayloadContainsAssertion'
            - $ref: '#/components/schemas/HeartbeatReceivedAssertion'
            - $ref: '#/components/schemas/IcmpPacketLossAssertion'
            - $ref: '#/components/schemas/IcmpReachableAssertion'
            - $ref: '#/components/schemas/IcmpResponseTimeAssertion'
            - $ref: '#/components/schemas/IcmpResponseTimeWarnAssertion'
            - $ref: '#/components/schemas/JsonPathAssertion'
            - $ref: '#/components/schemas/McpConnectsAssertion'
            - $ref: '#/components/schemas/McpHasCapabilityAssertion'
            - $ref: '#/components/schemas/McpMinToolsAssertion'
            - $ref: '#/components/schemas/McpProtocolVersionAssertion'
            - $ref: '#/components/schemas/McpResponseTimeAssertion'
            - $ref: '#/components/schemas/McpResponseTimeWarnAssertion'
            - $ref: '#/components/schemas/McpToolAvailableAssertion'
            - $ref: '#/components/schemas/McpToolCountChangedAssertion'
            - $ref: '#/components/schemas/RedirectCountAssertion'
            - $ref: '#/components/schemas/RedirectTargetAssertion'
            - $ref: '#/components/schemas/RegexBodyAssertion'
            - $ref: '#/components/schemas/ResponseSizeAssertion'
            - $ref: '#/components/schemas/ResponseTimeAssertion'
            - $ref: '#/components/schemas/ResponseTimeWarnAssertion'
            - $ref: '#/components/schemas/SslExpiryAssertion'
            - $ref: '#/components/schemas/StatusCodeAssertion'
            - $ref: '#/components/schemas/TcpConnectsAssertion'
            - $ref: '#/components/schemas/TcpResponseTimeAssertion'
            - $ref: '#/components/schemas/TcpResponseTimeWarnAssertion'
        severity:
          type: string
          enum:
            - fail
            - warn
    TagDto:
      required:
        - color
        - createdAt
        - id
        - name
        - updatedAt
        - organizationId
      type: object
      properties:
        id:
          type: string
          description: Unique tag identifier
          format: uuid
        organizationId:
          type: integer
          description: Organization this tag belongs to
          format: int32
        name:
          minLength: 1
          type: string
          description: Tag name, unique within the org
        color:
          minLength: 1
          type: string
          description: 'Hex color code for display (e.g. #6B7280)'
        createdAt:
          type: string
          description: Timestamp when the tag was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the tag was last updated
          format: date-time
      description: Tag for organizing and filtering monitors
    Summary:
      required:
        - id
        - name
        - slug
      type: object
      properties:
        id:
          type: string
          format: uuid
        name:
          minLength: 1
          type: string
        slug:
          minLength: 1
          type: string
      description: Environment containing this value
    MonitorAuthConfig:
      description: New authentication configuration (full replacement)
      discriminator:
        propertyName: type
        mapping:
          bearer: '#/components/schemas/BearerAuthConfig'
          basic: '#/components/schemas/BasicAuthConfig'
          header: '#/components/schemas/HeaderAuthConfig'
          api_key: '#/components/schemas/ApiKeyAuthConfig'
      oneOf:
        - $ref: '#/components/schemas/BearerAuthConfig'
        - $ref: '#/components/schemas/BasicAuthConfig'
        - $ref: '#/components/schemas/HeaderAuthConfig'
        - $ref: '#/components/schemas/ApiKeyAuthConfig'
    IncidentPolicyDto:
      required:
        - confirmation
        - createdAt
        - id
        - monitorId
        - recovery
        - triggerRules
        - updatedAt
      type: object
      properties:
        id:
          type: string
          description: Unique incident policy identifier
          format: uuid
        monitorId:
          type: string
          description: Monitor this policy is attached to
          format: uuid
        triggerRules:
          type: array
          description: Array of trigger rules defining when an incident should be raised
          items:
            $ref: '#/components/schemas/TriggerRule'
        confirmation:
          $ref: '#/components/schemas/ConfirmationPolicy'
        recovery:
          $ref: '#/components/schemas/RecoveryPolicy'
        createdAt:
          type: string
          description: Timestamp when the policy was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the policy was last updated
          format: date-time
        monitorRegionCount:
          type: integer
          description: >-
            Number of regions configured on the monitor (only set in internal
            API responses)
          format: int32
          nullable: true
        checkFrequencySeconds:
          type: integer
          description: >-
            Monitor check frequency in seconds (only set in internal API
            responses)
          format: int32
          nullable: true
      description: Incident detection, confirmation, and recovery policy for a monitor
    StatusPageBoundComponentDto:
      required:
        - componentId
        - componentName
        - statusPageId
        - statusPageName
      type: object
      properties:
        componentId:
          type: string
          description: Component identifier
          format: uuid
        componentName:
          minLength: 1
          type: string
          description: Component display name
        statusPageId:
          type: string
          description: Status page that owns this component
          format: uuid
        statusPageName:
          minLength: 1
          type: string
          description: Human-readable status page name
      description: Status-page component that represents a monitor, group, or dependency
    MonitorCappedDto:
      type: object
      properties:
        resumesAt:
          type: string
          description: When runs resume; null when unknown
          format: date-time
          nullable: true
        kind:
          type: string
          description: 'Allowance stopping this meter: included or spend_cap'
          nullable: true
      description: Run allowance that is keeping a code monitor from running
    MonitorOwnerDto:
      required:
        - type
      type: object
      properties:
        type:
          type: string
          description: 'Owning tool: DASHBOARD, CLI, TERRAFORM, MCP, or API'
          enum:
            - DASHBOARD
            - CLI
            - TERRAFORM
            - MCP
            - API
        project:
          type: string
          description: Project the owning tool declares; null when it declares none
          nullable: true
        address:
          type: string
          description: Resource address declared by the owning tool
          nullable: true
        label:
          type: string
          description: Display label declared by the owning client
          nullable: true
        labeledAt:
          type: string
          description: When the owner label was declared
          format: date-time
          nullable: true
      description: Tool that owns a monitor and the project it declares
    MonitorRegionHealthDto:
      required:
        - region
        - verdict
      type: object
      properties:
        region:
          minLength: 1
          type: string
          description: Probe region
        verdict:
          type: string
          description: 'Latest verdict: UP, DEGRADED, DOWN, or UNKNOWN when no recent check'
          enum:
            - up
            - degraded
            - down
            - paused
            - unknown
      description: Latest verdict for one region of a monitor
    CapturePolicy:
      type: object
      properties:
        screenshots:
          type: string
          description: When to capture screenshots
          nullable: true
          enum:
            - always
            - on_failure
            - 'off'
        trace:
          type: string
          description: When to capture a Playwright trace
          nullable: true
          enum:
            - always
            - on_failure
            - 'off'
        video:
          type: string
          description: When to capture video
          nullable: true
          enum:
            - always
            - on_failure
            - 'off'
        network:
          type: string
          description: When network rows and HAR are retained; null uses always
          nullable: true
          enum:
            - always
            - on_failure
            - 'off'
      description: When to retain screenshots, traces, video, and network evidence
    MonitorUsageProjectionDto:
      type: object
      properties:
        meter:
          type: string
          description: Usage meter this schedule bills
          nullable: true
        projectedMonthlyRuns:
          type: integer
          description: Projected runs this month from interval and locations
          format: int64
        includedRunsLeft:
          type: integer
          description: Included runs left this period; null when unlimited
          format: int64
          nullable: true
        reserveRuns:
          type: integer
          description: Runs held back for validation and triggers
          format: int64
        scheduledUsageEatsReserve:
          type: boolean
          description: True when this schedule would use the validation reserve
        wouldHitHardStop:
          type: boolean
          description: True when this schedule would hit the included-run stop
        wouldHitSpendCap:
          type: boolean
          description: True when this schedule would pass the spend cap
        projectedOverageRuns:
          type: integer
          description: Runs past the included pool if this schedule runs all month
          format: int64
        projectedOverageCents:
          type: integer
          description: Projected overage in cents; null when overage is off
          format: int64
          nullable: true
      description: Projected monthly usage for a browser or multi-step API schedule
      required:
        - projectedMonthlyRuns
        - reserveRuns
        - scheduledUsageEatsReserve
        - wouldHitHardStop
        - wouldHitSpendCap
        - projectedOverageRuns
    MonitorTriageDto:
      required:
        - deletedBindings
        - restoreBlockers
      type: object
      properties:
        lastCheckAt:
          type: string
          description: When the latest completed check finished
          format: date-time
          nullable: true
        latestRun:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunDto'
        latestHealthRun:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunDto'
        incident:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IncidentDto'
        pausedBy:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/UserDto'
        flakiness:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/Flakiness'
        restoreBlockers:
          type: array
          description: Reasons this trashed monitor cannot currently be restored
          items:
            type: string
            description: Reasons this trashed monitor cannot currently be restored
        deletedBindings:
          type: array
          description: Status-page bindings retained for restoration
          items:
            $ref: '#/components/schemas/RestorableBinding'
      description: Operational facts for a monitor
    UserDto:
      required:
        - createdAt
        - email
        - updatedAt
        - userRole
        - id
        - emailVerified
      type: object
      properties:
        id:
          type: integer
          description: Unique user identifier
          format: int32
        email:
          type: string
          description: User email address
        emailVerified:
          type: boolean
          description: Whether the email address has been verified
        name:
          type: string
          description: Display name; null if not set
          nullable: true
        userRole:
          type: string
          description: 'Platform role: USER or SUPERADMIN'
          enum:
            - SUPERADMIN
            - ADMIN
            - USER
        onboardingStage:
          type: string
          description: Current onboarding progress stage; null when completed
          nullable: true
          enum:
            - WELCOME
            - FIRST_MONITOR
            - SETUP_COMPLETE
            - COMPLETED
        imageUrl:
          type: string
          description: Profile image URL; null if not set
          nullable: true
        createdAt:
          type: string
          description: Timestamp when the account was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the account was last updated
          format: date-time
      description: User account details
    BodyContainsAssertion:
      required:
        - type
        - substring
      type: object
      properties:
        type:
          type: string
          enum:
            - body_contains
        substring:
          minLength: 1
          type: string
          description: Substring that must appear in the response body
    DnsExpectedCnameAssertion:
      required:
        - type
        - value
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_expected_cname
        value:
          minLength: 1
          type: string
          description: Expected CNAME target the resolution must include
    DnsExpectedIpsAssertion:
      required:
        - type
        - ips
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_expected_ips
        ips:
          minItems: 1
          type: array
          description: Allowed IP addresses; at least one resolved address must match
          items:
            type: string
            description: Allowed IP addresses; at least one resolved address must match
    DnsMaxAnswersAssertion:
      required:
        - type
        - recordType
        - max
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_max_answers
        recordType:
          minLength: 1
          type: string
          description: DNS record type whose answer count is checked
        max:
          type: integer
          description: Maximum number of answers allowed for that record type
          format: int32
    DnsMinAnswersAssertion:
      required:
        - type
        - recordType
        - min
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_min_answers
        recordType:
          minLength: 1
          type: string
          description: DNS record type whose answer count is checked
        min:
          type: integer
          description: Minimum number of answers required for that record type
          format: int32
    DnsRecordContainsAssertion:
      required:
        - type
        - recordType
        - substring
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_record_contains
        recordType:
          minLength: 1
          type: string
          description: DNS record type to assert on (A, AAAA, CNAME, MX, TXT)
        substring:
          minLength: 1
          type: string
          description: Substring that must appear in a matching record value
    DnsRecordEqualsAssertion:
      required:
        - type
        - recordType
        - value
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_record_equals
        recordType:
          minLength: 1
          type: string
          description: DNS record type to assert on (A, AAAA, CNAME, MX, TXT)
        value:
          minLength: 1
          type: string
          description: Expected DNS record value for an exact match
    DnsResolvesAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_resolves
      required:
        - type
    DnsResponseTimeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_response_time
        maxMs:
          type: integer
          description: Maximum allowed DNS resolution time in milliseconds
          format: int32
      required:
        - type
        - maxMs
    DnsResponseTimeWarnAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_response_time_warn
        warnMs:
          type: integer
          description: DNS resolution time in milliseconds that triggers a warning only
          format: int32
      required:
        - type
        - warnMs
    DnsTtlHighAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_ttl_high
        maxTtl:
          type: integer
          description: Maximum TTL in seconds before a high-TTL warning is raised
          format: int32
      required:
        - type
        - maxTtl
    DnsTtlLowAssertion:
      required:
        - type
        - minTtl
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_ttl_low
        minTtl:
          type: integer
          description: Minimum acceptable TTL in seconds before a warning is raised
          format: int32
    DnsTxtContainsAssertion:
      required:
        - type
        - substring
      type: object
      properties:
        type:
          type: string
          enum:
            - dns_txt_contains
        substring:
          minLength: 1
          type: string
          description: Substring that must appear in at least one TXT record
    HeaderValueAssertion:
      required:
        - type
        - headerName
        - expected
        - operator
      type: object
      properties:
        type:
          type: string
          enum:
            - header_value
        headerName:
          minLength: 1
          type: string
          description: HTTP header name to assert on
        expected:
          minLength: 1
          type: string
          description: Expected value to compare against
        operator:
          type: string
          description: >-
            Comparison operator (equals, contains, less_than, greater_than,
            etc.)
          enum:
            - equals
            - contains
            - less_than
            - greater_than
            - matches
            - range
    HeartbeatIntervalDriftAssertion:
      required:
        - type
        - maxDeviationPercent
      type: object
      properties:
        type:
          type: string
          enum:
            - heartbeat_interval_drift
        maxDeviationPercent:
          maximum: 100
          minimum: 1
          type: integer
          description: >-
            Max percent drift from expected ping interval before warning
            (non-fatal)
          format: int32
    HeartbeatMaxIntervalAssertion:
      required:
        - type
        - maxSeconds
      type: object
      properties:
        type:
          type: string
          enum:
            - heartbeat_max_interval
        maxSeconds:
          minimum: 1
          type: integer
          description: Maximum allowed gap in seconds between consecutive heartbeat pings
          format: int32
    HeartbeatPayloadContainsAssertion:
      required:
        - type
        - path
        - value
      type: object
      properties:
        type:
          type: string
          enum:
            - heartbeat_payload_contains
        path:
          minLength: 1
          type: string
          description: JSONPath expression into the heartbeat ping JSON payload
        value:
          type: string
          description: Expected value to compare against at that path
    HeartbeatReceivedAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - heartbeat_received
      required:
        - type
    IcmpPacketLossAssertion:
      required:
        - type
        - maxPercent
      type: object
      properties:
        type:
          type: string
          enum:
            - icmp_packet_loss
        maxPercent:
          maximum: 100
          exclusiveMaximum: false
          minimum: 0
          exclusiveMinimum: false
          type: number
          description: >-
            Maximum allowed packet loss percentage before the check fails
            (0–100)
          format: double
    IcmpReachableAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - icmp_reachable
      required:
        - type
    IcmpResponseTimeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - icmp_response_time
        maxMs:
          type: integer
          description: Maximum average ICMP round-trip time in milliseconds
          format: int32
      required:
        - type
        - maxMs
    IcmpResponseTimeWarnAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - icmp_response_time_warn
        warnMs:
          type: integer
          description: ICMP round-trip time in milliseconds that triggers a warning only
          format: int32
      required:
        - type
        - warnMs
    JsonPathAssertion:
      required:
        - type
        - path
        - expected
        - operator
      type: object
      properties:
        type:
          type: string
          enum:
            - json_path
        path:
          minLength: 1
          type: string
          description: JSONPath expression to extract a value from the response body
        expected:
          minLength: 1
          type: string
          description: Expected value to compare against
        operator:
          type: string
          description: >-
            Comparison operator (equals, contains, less_than, greater_than,
            etc.)
          enum:
            - equals
            - contains
            - less_than
            - greater_than
            - matches
            - range
    McpConnectsAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_connects
      required:
        - type
    McpHasCapabilityAssertion:
      required:
        - type
        - capability
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_has_capability
        capability:
          minLength: 1
          type: string
          description: Capability name the server must advertise, e.g. tools or resources
    McpMinToolsAssertion:
      required:
        - type
        - min
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_min_tools
        min:
          type: integer
          description: Minimum number of tools the server must expose
          format: int32
    McpProtocolVersionAssertion:
      required:
        - type
        - version
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_protocol_version
        version:
          minLength: 1
          type: string
          description: Expected MCP protocol version string from the server handshake
    McpResponseTimeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_response_time
        maxMs:
          type: integer
          description: Maximum allowed MCP check duration in milliseconds
          format: int32
      required:
        - type
        - maxMs
    McpResponseTimeWarnAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_response_time_warn
        warnMs:
          type: integer
          description: MCP check duration in milliseconds that triggers a warning only
          format: int32
      required:
        - type
        - warnMs
    McpToolAvailableAssertion:
      required:
        - type
        - toolName
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_tool_available
        toolName:
          minLength: 1
          type: string
          description: MCP tool name that must appear in the server's tool list
    McpToolCountChangedAssertion:
      required:
        - type
        - expectedCount
      type: object
      properties:
        type:
          type: string
          enum:
            - mcp_tool_count_changed
        expectedCount:
          type: integer
          description: Expected tool count; warns when the live count differs
          format: int32
    RedirectCountAssertion:
      required:
        - type
        - maxCount
      type: object
      properties:
        type:
          type: string
          enum:
            - redirect_count
        maxCount:
          type: integer
          description: Maximum number of HTTP redirects allowed before the check fails
          format: int32
    RedirectTargetAssertion:
      required:
        - type
        - expected
        - operator
      type: object
      properties:
        type:
          type: string
          enum:
            - redirect_target
        expected:
          minLength: 1
          type: string
          description: Expected final URL after following redirects
        operator:
          type: string
          description: >-
            Comparison operator (equals, contains, less_than, greater_than,
            etc.)
          enum:
            - equals
            - contains
            - less_than
            - greater_than
            - matches
            - range
    RegexBodyAssertion:
      required:
        - type
        - pattern
      type: object
      properties:
        type:
          type: string
          enum:
            - regex_body
        pattern:
          minLength: 1
          type: string
          description: Regular expression the response body must match
    ResponseSizeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - response_size
        maxBytes:
          type: integer
          description: Maximum response body size in bytes before the check fails
          format: int32
      required:
        - type
        - maxBytes
    ResponseTimeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - response_time
        thresholdMs:
          type: integer
          description: Maximum allowed response time in milliseconds before the check fails
          format: int32
      required:
        - type
        - thresholdMs
    ResponseTimeWarnAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - response_time_warn
        warnMs:
          type: integer
          description: HTTP response time in milliseconds that triggers a warning only
          format: int32
      required:
        - type
        - warnMs
    SslExpiryAssertion:
      required:
        - type
        - minDaysRemaining
      type: object
      properties:
        type:
          type: string
          enum:
            - ssl_expiry
        minDaysRemaining:
          type: integer
          description: >-
            Minimum days before TLS certificate expiry; fails or warns below
            this threshold
          format: int32
    StatusCodeAssertion:
      required:
        - type
        - expected
        - operator
      type: object
      properties:
        type:
          type: string
          enum:
            - status_code
        expected:
          minLength: 1
          type: string
          description: Expected status code, range pattern, or wildcard such as 2xx
        operator:
          type: string
          description: >-
            Comparison operator (equals, contains, less_than, greater_than,
            etc.)
          enum:
            - equals
            - contains
            - less_than
            - greater_than
            - matches
            - range
    TcpConnectsAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - tcp_connects
      required:
        - type
    TcpResponseTimeAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - tcp_response_time
        maxMs:
          type: integer
          description: Maximum TCP connect time in milliseconds before the check fails
          format: int32
      required:
        - type
        - maxMs
    TcpResponseTimeWarnAssertion:
      type: object
      properties:
        type:
          type: string
          enum:
            - tcp_response_time_warn
        warnMs:
          type: integer
          description: TCP connect time in milliseconds that triggers a warning only
          format: int32
      required:
        - type
        - warnMs
    BearerAuthConfig:
      type: object
      properties:
        type:
          type: string
          enum:
            - bearer
        vaultSecretId:
          type: string
          description: Vault secret ID holding the bearer token value
          format: uuid
          nullable: true
      required:
        - type
    BasicAuthConfig:
      type: object
      properties:
        type:
          type: string
          enum:
            - basic
        vaultSecretId:
          type: string
          description: Vault secret ID holding Basic auth username and password
          format: uuid
          nullable: true
      required:
        - type
    HeaderAuthConfig:
      required:
        - type
        - headerName
      type: object
      properties:
        type:
          type: string
          enum:
            - header
        headerName:
          minLength: 1
          pattern: ^[A-Za-z0-9\-_]+$
          type: string
          description: Custom HTTP header name for the secret value
        vaultSecretId:
          type: string
          description: Vault secret ID for the header value
          format: uuid
          nullable: true
    ApiKeyAuthConfig:
      required:
        - type
        - headerName
      type: object
      properties:
        type:
          type: string
          enum:
            - api_key
        headerName:
          minLength: 1
          pattern: ^[A-Za-z0-9\-_]+$
          type: string
          description: HTTP header name that carries the API key
        vaultSecretId:
          type: string
          description: Vault secret ID for the API key value
          format: uuid
          nullable: true
    TriggerRule:
      required:
        - scope
        - severity
        - type
      type: object
      properties:
        type:
          type: string
          description: Condition that opens or escalates an incident from check results
          enum:
            - consecutive_failures
            - failures_in_window
            - response_time
        count:
          type: integer
          description: Failure count for consecutive or windowed failure rules
          format: int32
          nullable: true
        windowMinutes:
          type: integer
          description: Window length in minutes for failures-in-window rules
          format: int32
          nullable: true
        scope:
          type: string
          description: Whether the rule applies per region or across regions
          nullable: true
          enum:
            - per_region
            - any_region
        thresholdMs:
          type: integer
          description: Response time threshold in milliseconds for response-time rules
          format: int32
          nullable: true
        severity:
          type: string
          description: Incident severity when this rule fires
          enum:
            - down
            - degraded
        aggregationType:
          type: string
          description: How response times are aggregated for response-time rules
          nullable: true
          enum:
            - all_exceed
            - average
            - p95
            - max
      description: Array of trigger rules defining when an incident should be raised
    ConfirmationPolicy:
      required:
        - type
        - minRegionsFailing
        - maxWaitSeconds
      type: object
      properties:
        type:
          type: string
          description: How incident confirmation is coordinated across regions
          enum:
            - multi_region
        minRegionsFailing:
          type: integer
          description: Minimum failing regions required to confirm an incident
          format: int32
        maxWaitSeconds:
          type: integer
          description: >-
            Maximum seconds to wait for enough regions to fail after first
            trigger
          format: int32
      description: Multi-region confirmation settings
    RecoveryPolicy:
      type: object
      properties:
        consecutiveSuccesses:
          type: integer
          description: Consecutive passing checks required to auto-resolve the incident
          format: int32
        minRegionsPassing:
          type: integer
          description: Minimum regions that must be passing before recovery can complete
          format: int32
        cooldownMinutes:
          type: integer
          description: >-
            Minutes after resolve before a new incident may open on the same
            monitor
          format: int32
      description: Auto-recovery settings
      required:
        - consecutiveSuccesses
        - minRegionsPassing
        - cooldownMinutes
    RunDto:
      required:
        - attempts
        - bindingVersionSnapshot
        - bundleDigest
        - capturePolicySnapshot
        - enqueuedAt
        - evidence
        - executionAttempts
        - id
        - monitorId
        - phase
        - region
        - revisionId
        - source
        - tabCounts
        - organizationId
        - countsTowardHealth
        - cancelRequested
        - stream
        - attempt
        - attemptOf
        - billable
      type: object
      properties:
        id:
          type: string
          description: Unique run identifier
          format: uuid
        organizationId:
          type: integer
          description: Organization this run belongs to
          format: int32
        monitorId:
          type: string
          description: Monitor this run belongs to
          format: uuid
        monitorName:
          type: string
          description: Monitor display name
          nullable: true
        monitorType:
          type: string
          description: Monitor type
          nullable: true
          enum:
            - HTTP
            - DNS
            - MCP_SERVER
            - TCP
            - ICMP
            - HEARTBEAT
            - BROWSER
            - MULTI_STEP_API
        host:
          type: string
          description: Target host from the environment BASE_URL
          nullable: true
        environmentId:
          type: string
          description: Environment this run executed in
          format: uuid
          nullable: true
        environmentName:
          type: string
          description: Environment display name
          nullable: true
        revisionId:
          type: string
          description: Revision this run executed
          format: uuid
        revision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RevisionDto'
        region:
          minLength: 1
          type: string
          description: Probe region for this run
        source:
          type: string
          description: What triggered this run
          enum:
            - schedule
            - run_now
            - ci
            - fast_retry
            - remote_validation
            - deployment_validation
            - session_renew
        countsTowardHealth:
          type: boolean
          description: Whether this run votes on monitor health
        enqueuedAt:
          type: string
          description: When this run was enqueued
          format: date-time
        startDeadlineAt:
          type: string
          description: When this queued run must start
          format: date-time
          nullable: true
        evaluationCycleId:
          type: string
          description: Evaluation cycle grouping this run with retries
          format: uuid
          nullable: true
        retryOfRunId:
          type: string
          description: Parent run when this is a fast retry
          format: uuid
          nullable: true
        retriedFromRunId:
          type: string
          description: Fast-retry parent run
          format: uuid
          nullable: true
        phase:
          type: string
          description: Current run phase
          enum:
            - created
            - queued
            - starting
            - running
            - finalizing
            - finished
        cancelRequested:
          type: boolean
          description: Whether cancel was requested
        outcome:
          type: string
          description: Outcome; null until the run is finished
          nullable: true
          enum:
            - passed
            - failed
            - execution_error
            - timed_out
            - passed_on_retry
            - cancelled
            - inconclusive
        headline:
          type: string
          description: Last control headline
          nullable: true
        executionLine:
          type: string
          description: Live execution one-liner
          nullable: true
        metaLine:
          type: string
          description: Server-composed header meta line
          nullable: true
        bundleDigest:
          minLength: 1
          type: string
          description: Package digest frozen at create
        startedAt:
          type: string
          description: When execution claimed a seat
          format: date-time
          nullable: true
        finishedAt:
          type: string
          description: When the run finished
          format: date-time
          nullable: true
        updatedAt:
          type: string
          description: When the run row last changed
          format: date-time
          nullable: true
        lastHeartbeatAt:
          type: string
          description: Last supervisor heartbeat
          format: date-time
          nullable: true
        cancelledBy:
          type: string
          description: Who requested cancel
          nullable: true
        artifactsExpiredAt:
          type: string
          description: When artifact bytes expired
          format: date-time
          nullable: true
        pinnedAt:
          type: string
          description: When this run was pinned past retention
          format: date-time
          nullable: true
        purgedAt:
          type: string
          description: When stored evidence was purged
          format: date-time
          nullable: true
        capturePolicySnapshot:
          type: object
          additionalProperties:
            type: object
            description: Capture settings frozen at create
          description: Capture settings frozen at create
        bindingVersionSnapshot:
          type: object
          additionalProperties:
            type: object
            description: Resolved secret key names frozen at create
          description: Resolved secret key names frozen at create
        durationMs:
          type: integer
          description: Wall time from claim to finish
          format: int64
          nullable: true
        queueWaitMs:
          type: integer
          description: Time spent waiting for a seat
          format: int64
          nullable: true
        queuePosition:
          type: integer
          description: Live queue position; null when not queued
          format: int32
          nullable: true
        heartbeatAgeMs:
          type: integer
          description: Milliseconds since the last supervisor heartbeat
          format: int64
          nullable: true
        stream:
          type: boolean
          description: True while the run is still live and clients may stream
        evidence:
          type: array
          description: List evidence chips in SHOT → TRACE → VIDEO → NET order
          items:
            $ref: '#/components/schemas/RunEvidenceDto'
        tabCounts:
          $ref: '#/components/schemas/RunTabCountsDto'
        live:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunLiveDto'
        attempt:
          type: integer
          description: Selected in-check attempt (1-based)
          format: int32
        attemptOf:
          type: integer
          description: In-check attempt count
          format: int32
        attempts:
          type: array
          description: In-check attempts
          items:
            $ref: '#/components/schemas/RunAttemptDto'
        incidentId:
          type: string
          description: Open incident for this monitor
          format: uuid
          nullable: true
        execution:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunExecutionDto'
        executionAttempts:
          type: array
          description: Persisted worker execution attempts
          items:
            $ref: '#/components/schemas/RunExecutionAttemptDto'
        url:
          type: string
          description: Dashboard URL for this run
          nullable: true
        triggerId:
          type: string
          description: Groups runs started by one manual trigger; null for other runs
          format: uuid
          nullable: true
        session:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunSessionContext'
        runtimeId:
          type: string
          description: Runtime profile that executed this run
          nullable: true
        cause:
          type: string
          description: >-
            Platform cause for an execution error, inconclusive finish, or
            network failure
          nullable: true
          enum:
            - platform
            - runtime_unavailable
            - testing_quota_exhausted
            - no_seat
            - lease_lost
            - target_unreachable
        billable:
          type: boolean
          description: Whether a finished run counts against the included run pool
        failure:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RunFailureDto'
        artifactsExpireAt:
          type: string
          description: When artifact bytes will expire
          format: date-time
          nullable: true
      description: Code-monitor run
    IncidentDto:
      required:
        - affectedRegions
        - createdAt
        - id
        - severity
        - source
        - status
        - updatedAt
        - organizationId
        - reopenCount
        - statusPageVisible
        - suppressDispatch
      type: object
      properties:
        id:
          type: string
          description: Unique incident identifier
          format: uuid
        monitorId:
          type: string
          description: >-
            Monitor that triggered the incident; null for service or manual
            incidents
          format: uuid
          nullable: true
        organizationId:
          type: integer
          description: Organization this incident belongs to
          format: int32
        source:
          type: string
          description: 'Incident origin: MONITOR, SERVICE, or MANUAL'
          enum:
            - AUTOMATIC
            - MANUAL
            - MONITORS
            - STATUS_DATA
            - RESOURCE_GROUP
        status:
          type: string
          description: Current lifecycle status (OPEN, RESOLVED, etc.)
          enum:
            - WATCHING
            - TRIGGERED
            - CONFIRMED
            - RESOLVED
        severity:
          type: string
          description: 'Severity level: DOWN, DEGRADED, or MAINTENANCE'
          enum:
            - DOWN
            - DEGRADED
            - MAINTENANCE
        title:
          type: string
          description: Short summary of the incident; null for auto-generated incidents
          nullable: true
        triggeredByRule:
          type: string
          description: Human-readable description of the trigger rule that fired
          nullable: true
        affectedRegions:
          type: array
          description: Probe regions that observed the failure
          items:
            type: string
            description: Probe regions that observed the failure
        reopenCount:
          type: integer
          description: Number of times this incident has been reopened
          format: int32
        createdByUserId:
          type: integer
          description: User who created the incident (manual incidents only)
          format: int32
          nullable: true
        statusPageVisible:
          type: boolean
          description: Whether this incident is visible on the status page
        suppressDispatch:
          type: boolean
          description: >-
            When true, alert channels are suppressed (AWARENESS silent
            tracking); false means Alerted
        serviceIncidentId:
          type: string
          description: Linked vendor service incident ID; null for monitor incidents
          format: uuid
          nullable: true
        serviceId:
          type: string
          description: Linked service catalog ID; null for monitor incidents
          format: uuid
          nullable: true
        externalRef:
          type: string
          description: External reference ID (e.g. PagerDuty incident ID)
          nullable: true
        affectedComponents:
          type: array
          description: Service components affected by this incident
          nullable: true
          items:
            type: string
            description: Service components affected by this incident
        shortlink:
          type: string
          description: Short URL linking to the incident details
          nullable: true
        resolutionReason:
          type: string
          description: How the incident was resolved (AUTO_RECOVERED, MANUAL, etc.)
          nullable: true
          enum:
            - MANUAL
            - AUTO_RECOVERED
            - AUTO_RESOLVED
        resolutionNote:
          type: string
          description: >-
            Body from the most recent resolve update; null when not currently
            resolved, auto-resolved without a note, or no resolve update body
            was provided
          nullable: true
        startedAt:
          type: string
          description: Timestamp when the incident was detected or created
          format: date-time
          nullable: true
        confirmedAt:
          type: string
          description: >-
            Timestamp when the incident was confirmed (multi-region
            confirmation)
          format: date-time
          nullable: true
        resolvedAt:
          type: string
          description: Timestamp when the incident was resolved
          format: date-time
          nullable: true
        cooldownUntil:
          type: string
          description: Cooldown window end; new incidents suppressed until this time
          format: date-time
          nullable: true
        createdAt:
          type: string
          description: Timestamp when the incident record was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the incident was last updated
          format: date-time
        monitorName:
          type: string
          description: >-
            Name of the associated monitor; populated on list responses. Omitted
            from JSON (undefined to SDKs) on detail responses, treat missing as
            null.
          nullable: true
        serviceName:
          type: string
          description: >-
            Name of the associated service; populated on list responses. Omitted
            from JSON (undefined to SDKs) on detail responses, treat missing as
            null.
          nullable: true
        serviceSlug:
          type: string
          description: >-
            Slug of the associated service; populated on list responses. Omitted
            from JSON (undefined to SDKs) on detail responses, treat missing as
            null.
          nullable: true
        monitorType:
          type: string
          description: >-
            Type of the associated monitor; populated on list responses. Omitted
            from JSON (undefined to SDKs) on detail responses, treat missing as
            null.
          nullable: true
        resourceGroupId:
          type: string
          description: Resource group that owns this incident; null when not group-managed
          format: uuid
          nullable: true
        resourceGroupName:
          type: string
          description: >-
            Name of the resource group; populated on list responses. Omitted
            from JSON (undefined to SDKs) on detail responses, treat missing as
            null.
          nullable: true
        triggeringCheckId:
          type: string
          description: >-
            Scheduler-minted check execution ID whose result confirmed this
            incident; joins to check_results, rule_evaluations, and
            incident_state_transitions. Omitted from JSON (undefined to SDKs)
            when null, treat missing as null.
          format: uuid
          nullable: true
        triggeringRunId:
          type: string
          description: >-
            Code-monitor run whose failing tick confirmed this incident; null
            for uptime
          format: uuid
          nullable: true
        triggeredByRuleSnapshotHashHex:
          type: string
          description: >-
            Hex SHA-256 of the canonical policy snapshot that fired; combined
            with triggeredByRuleIndex points to the exact TriggerRule. Omitted
            from JSON when null, treat missing as null.
          nullable: true
        triggeredByRuleIndex:
          type: integer
          description: >-
            Index of the fired rule inside the policy's trigger_rules array.
            Omitted from JSON when null, treat missing as null.
          format: int32
          nullable: true
        engineVersion:
          type: string
          description: >-
            Detection engine semver that evaluated the rule. Omitted from JSON
            when null, treat missing as null.
          nullable: true
        displayKey:
          type: string
          description: >-
            Org-scoped human-readable incident code, e.g. "ABC-42". Null on
            incidents created by pre-INC-keys API pods before the sweep; treat
            missing as unknown and fall back to the id
          nullable: true
        alertCollapsedByResourceGroupIds:
          type: array
          description: >-
            Sticky union of resource-group IDs that suppressed a paging dispatch
            for this member incident; null when never written / legacy
          nullable: true
          items:
            type: string
            description: >-
              Sticky union of resource-group IDs that suppressed a paging
              dispatch for this member incident; null when never written /
              legacy
            format: uuid
        peakFailingMemberCount:
          type: integer
          description: >-
            Peak non-operational member count while this RESOURCE_GROUP incident
            was open; null otherwise
          format: int32
          nullable: true
        failingMembersAtPeak:
          type: array
          description: >-
            Frozen failing members at peakFailingMemberCount; null when not a
            group incident or never snapshotted
          nullable: true
          items:
            $ref: '#/components/schemas/IncidentFailingMemberSnapshotDto'
      description: Incident triggered by a monitor check failure or manual creation
    Flakiness:
      required:
        - from
        - to
        - cycleCount
        - flakyCycleCount
      type: object
      properties:
        from:
          type: string
          description: Start of the seven-day measurement window
          format: date-time
        to:
          type: string
          description: Exclusive end of the measurement window
          format: date-time
        cycleCount:
          type: integer
          description: Completed region cycles in this window
          format: int64
        flakyCycleCount:
          type: integer
          description: Completed region cycles recovered by retry
          format: int64
      description: Completed region-cycle retry recovery counts
    RestorableBinding:
      required:
        - component
        - statusPage
      type: object
      properties:
        statusPage:
          $ref: '#/components/schemas/StatusPageDto'
        component:
          $ref: '#/components/schemas/StatusPageBindingSnapshot'
      description: Status-page binding retained while a monitor is trashed
    RevisionDto:
      required:
        - createdAt
        - definitionId
        - digest
        - entrypoint
        - files
        - id
        - keys
        - number
      type: object
      properties:
        id:
          type: string
          description: Revision identifier
          format: uuid
        definitionId:
          type: string
          description: Parent definition
          format: uuid
        number:
          type: integer
          description: Monotonic revision number within the definition
          format: int32
        digest:
          minLength: 1
          type: string
          description: Closure digest from POST /bundles (sha256:<hex>)
        entrypoint:
          minLength: 1
          type: string
          description: Entrypoint file that runs
        files:
          type: array
          description: Paths present in the zip
          items:
            type: string
            description: Paths present in the zip
        keys:
          type: array
          description: Secret key names the code demands
          items:
            type: string
            description: Secret key names the code demands
        downloadUntil:
          type: string
          description: When package bytes expire for download
          format: date-time
          nullable: true
        purgedAt:
          type: string
          description: When package bytes were purged
          format: date-time
          nullable: true
        gitSha:
          type: string
          description: Git commit SHA when sourced from Git
          nullable: true
        gitMessage:
          type: string
          description: Git commit message
          nullable: true
        gitFile:
          type: string
          description: Declaring Git file path
          nullable: true
        authoredBy:
          type: string
          description: Who authored this package
          nullable: true
        source:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/CodeSource'
        createdAt:
          type: string
          description: When the revision was minted
          format: date-time
        state:
          type: string
          description: draft, tested_passed, tested_failed, live, previous, or discarded
          nullable: true
          enum:
            - draft
            - tested_passed
            - tested_failed
            - live
            - previous
            - discarded
        testRunId:
          type: string
          description: Latest validation run for this revision
          format: uuid
          nullable: true
        testOutcome:
          type: string
          description: Latest test outcome; absent until a test finishes
          nullable: true
          enum:
            - passed
            - failed
        liveStats:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RevisionLiveStatsDto'
        expiresAt:
          type: string
          description: When this draft expires; preserved after discard
          format: date-time
          nullable: true
        createdByKind:
          type: string
          description: Tool that created this draft
          nullable: true
          enum:
            - dashboard
            - git
            - terraform
            - api
            - mcp
        baseRevision:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RevisionReferenceDto'
      description: Definition revision package
    RunEvidenceDto:
      required:
        - kind
        - state
      type: object
      properties:
        kind:
          type: string
          description: Evidence kind in SHOT → TRACE → VIDEO → NET order
          enum:
            - screenshot
            - trace
            - video
            - network
        state:
          type: string
          description: Whether the artifact is usable
          enum:
            - present
            - bad
            - processing
            - expired
      description: List evidence chip
    RunTabCountsDto:
      type: object
      properties:
        steps:
          type: integer
          description: Step rows for the selected attempt
          format: int32
        assets:
          type: integer
          description: Items across asset kinds, excluding dead no-browser rows
          format: int32
        diff:
          type: integer
          description: 1 when a diff baseline exists or this run passed on retry
          format: int32
      description: Run detail tab counts
      required:
        - steps
        - assets
        - diff
    RunLiveDto:
      type: object
      properties:
        stepIndex:
          type: integer
          description: Current step index
          format: int32
          nullable: true
        stepTitle:
          type: string
          description: Current step title
          nullable: true
        stepCount:
          type: integer
          description: Known step count for this attempt
          format: int32
        artifactsUploaded:
          type: integer
          description: Artifacts already available
          format: int32
          nullable: true
        artifactsExpected:
          type: integer
          description: Artifacts expected for this run
          format: int32
          nullable: true
      description: Live run progress
      required:
        - stepCount
    RunAttemptDto:
      type: object
      properties:
        attempt:
          type: integer
          description: 1-based attempt number
          format: int32
        outcome:
          type: string
          description: Attempt outcome; null while the case is open
          nullable: true
          enum:
            - passed
            - failed
            - execution_error
            - timed_out
            - passed_on_retry
            - cancelled
            - inconclusive
        startedAt:
          type: string
          description: When this attempt started
          format: date-time
          nullable: true
        finishedAt:
          type: string
          description: When this attempt finished
          format: date-time
          nullable: true
      description: In-check attempt
      required:
        - attempt
    RunExecutionDto:
      required:
        - createdAt
        - harness
        - id
        - imageDigest
        - monitorType
        - requiredCapabilities
        - runtime
      type: object
      properties:
        id:
          type: string
          description: Immutable execution image identifier
          format: uuid
        runtime:
          $ref: '#/components/schemas/RuntimeProfileDto'
        harness:
          $ref: '#/components/schemas/HarnessReleaseDto'
        monitorType:
          type: string
          description: Monitor type supported by this image
          enum:
            - HTTP
            - DNS
            - MCP_SERVER
            - TCP
            - ICMP
            - HEARTBEAT
            - BROWSER
            - MULTI_STEP_API
        imageDigest:
          minLength: 1
          type: string
          description: Immutable image digest
        customerManifestSha256:
          type: string
          description: Measured customer environment manifest hash
          nullable: true
        buildManifestSha256:
          type: string
          description: Measured image build manifest hash
          nullable: true
        requiredCapabilities:
          type: array
          description: Capabilities required by this image
          items:
            type: string
            description: Capabilities required by this image
        createdAt:
          type: string
          description: When the image identity was registered
          format: date-time
      description: Frozen execution identity; null when historical identity is unknown
    RunExecutionAttemptDto:
      required:
        - capabilities
        - recordedAt
        - supervisor
        - runGeneration
        - protocolMajor
      type: object
      properties:
        runGeneration:
          type: integer
          description: Claim generation for this execution attempt
          format: int32
        supervisor:
          $ref: '#/components/schemas/HarnessReleaseDto'
        protocolMajor:
          type: integer
          description: Negotiated execution protocol major
          format: int32
        capabilities:
          type: array
          description: Negotiated execution capabilities
          items:
            type: string
            description: Negotiated execution capabilities
        recordedAt:
          type: string
          description: When execution attempt metadata was recorded
          format: date-time
      description: Persisted worker execution attempts
    RunSessionContext:
      required:
        - id
      type: object
      properties:
        id:
          maxLength: 255
          minLength: 0
          type: string
          description: Caller-provided CI session identifier
        label:
          maxLength: 255
          minLength: 0
          type: string
          description: 'CI session label, such as CI #4812'
          nullable: true
        commit:
          maxLength: 64
          minLength: 0
          type: string
          description: Commit that started this CI session
          nullable: true
        branch:
          maxLength: 255
          minLength: 0
          type: string
          description: Branch that started this CI session
          nullable: true
        url:
          maxLength: 2048
          minLength: 0
          pattern: ^[hH][tT][tT][pP][sS]?://\S+$
          type: string
          description: HTTP or HTTPS URL of the CI job
          nullable: true
      description: CI session that started this run; absent on historical runs
    RunFailureDto:
      required:
        - kind
      type: object
      properties:
        kind:
          type: string
          description: Failure category
          enum:
            - assertion
            - timeout
            - navigation
            - network
            - target_blocked
            - script_error
            - wait_timeout
            - setup
        step:
          type: string
          description: Step title that failed; null when the run failed before a step
          nullable: true
        message:
          type: string
          description: Reporter message, trimmed
          nullable: true
        file:
          type: string
          description: User source file; null when the reporter did not capture one
          nullable: true
        line:
          type: integer
          description: 1-based line in the user source file
          format: int32
          nullable: true
        index:
          type: integer
          description: 0-based index of the failed step
          format: int32
          nullable: true
      description: >-
        Why a run failed, including the source location when the reporter
        captured one
    IncidentFailingMemberSnapshotDto:
      required:
        - memberType
        - name
      type: object
      properties:
        memberType:
          type: string
          description: 'Member type: monitor or service'
        monitorId:
          type: string
          description: Monitor ID when memberType is monitor
          format: uuid
          nullable: true
        serviceId:
          type: string
          description: Service ID when memberType is service
          format: uuid
          nullable: true
        name:
          minLength: 1
          type: string
          description: Frozen display name at snapshot time
        membershipId:
          type: string
          description: Membership row ID when available
          format: uuid
          nullable: true
      description: >-
        Frozen failing member identity at peak failing count for a
        resource-group incident
    StatusPageDto:
      required:
        - branding
        - createdAt
        - id
        - incidentMode
        - name
        - slug
        - updatedAt
        - visibility
        - organizationId
        - workspaceId
        - enabled
      type: object
      properties:
        id:
          type: string
          format: uuid
        organizationId:
          type: integer
          format: int32
        workspaceId:
          type: integer
          format: int32
        name:
          minLength: 1
          type: string
        slug:
          minLength: 1
          type: string
        description:
          type: string
          nullable: true
        branding:
          $ref: '#/components/schemas/StatusPageBranding'
        visibility:
          type: string
          enum:
            - PUBLIC
            - PASSWORD
            - IP_RESTRICTED
        enabled:
          type: boolean
        incidentMode:
          type: string
          enum:
            - MANUAL
            - REVIEW
            - AUTOMATIC
        componentCount:
          type: integer
          format: int32
          nullable: true
        subscriberCount:
          type: integer
          format: int64
          nullable: true
        overallStatus:
          type: string
          nullable: true
          enum:
            - OPERATIONAL
            - DEGRADED_PERFORMANCE
            - PARTIAL_OUTAGE
            - MAJOR_OUTAGE
            - UNDER_MAINTENANCE
        openIncident:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/StatusPageOpenIncidentSummaryDto'
        managedBy:
          type: string
          description: >-
            Source that created/owns this status page: DASHBOARD, CLI,
            TERRAFORM, MCP, or API. Null on pages created before this
            attribution column existed.
          nullable: true
          enum:
            - DASHBOARD
            - CLI
            - TERRAFORM
            - MCP
            - API
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    StatusPageBindingSnapshot:
      required:
        - name
        - showUptime
        - displayOrder
        - excludeFromOverall
      type: object
      properties:
        name:
          minLength: 1
          type: string
          description: Component display name
        description:
          type: string
          description: Optional component description
          nullable: true
        groupId:
          type: string
          description: Group that contains this component
          format: uuid
          nullable: true
        showUptime:
          type: boolean
          description: Whether to show measured uptime
        displayOrder:
          type: integer
          description: Position within the page or group
          format: int32
        excludeFromOverall:
          type: boolean
          description: Whether to exclude this component from overall status
        startDate:
          type: string
          description: Optional start date for published uptime history
          format: date
          nullable: true
      description: Saved component configuration
    CodeSource:
      type: object
      properties:
        repo:
          maxLength: 512
          minLength: 0
          type: string
          description: Repository that produced this code
          nullable: true
        branch:
          maxLength: 255
          minLength: 0
          type: string
          description: Branch that produced this code
          nullable: true
        commit:
          maxLength: 64
          minLength: 0
          type: string
          description: Commit that produced this code
          nullable: true
        file:
          maxLength: 512
          minLength: 0
          type: string
          description: Declaring file in that repository
          nullable: true
      description: Advisory source location. Untrusted, and unknown when omitted
    RevisionLiveStatsDto:
      type: object
      properties:
        runs:
          type: integer
          description: Scheduled runs and fast retries of this revision
          format: int64
        failed:
          type: integer
          description: How many of those runs failed
          format: int64
      description: Scheduled runs of this revision, and how many failed
      required:
        - runs
        - failed
    RevisionReferenceDto:
      required:
        - id
        - number
      type: object
      properties:
        id:
          type: string
          description: Related revision identifier
          format: uuid
        number:
          type: integer
          description: Revision number within its definition
          format: int32
      description: Live revision this draft was based on
    RuntimeProfileDto:
      required:
        - id
        - nodeVersion
        - playwrightVersion
        - status
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: Runtime environment identifier
        nodeVersion:
          minLength: 1
          type: string
          description: Node version available to checks
        playwrightVersion:
          minLength: 1
          type: string
          description: Playwright version available to checks
        status:
          type: string
          description: Runtime support status
          enum:
            - baking
            - available
            - deprecated
            - retired
        eolAt:
          type: string
          description: When runtime support ends
          format: date-time
          nullable: true
        availableAt:
          type: string
          description: When this runtime became available
          format: date-time
          nullable: true
        deprecatedAt:
          type: string
          description: When this runtime was deprecated; null while current
          format: date-time
          nullable: true
        packages:
          type: object
          additionalProperties:
            type: string
            description: Pinned npm packages available to checks
            nullable: true
          description: Pinned npm packages available to checks
          nullable: true
        nodeBuiltins:
          type: array
          description: Node built-in modules available to checks
          nullable: true
          items:
            type: string
            description: Node built-in modules available to checks
        reservedBindings:
          type: array
          description: Environment bindings this runtime reads
          nullable: true
          items:
            type: string
            description: Environment bindings this runtime reads
        browser:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/BrowserCapabilityEnvelope'
      description: Default execution environment; null uses the catalog default
    HarnessReleaseDto:
      required:
        - createdAt
        - id
        - provenance
        - protocolMajor
      type: object
      properties:
        id:
          minLength: 1
          type: string
          description: Supervisor harness release identifier
        sourceSha:
          type: string
          description: Source commit for this release
          nullable: true
        provenance:
          minLength: 1
          type: string
          description: Release provenance
        protocolMajor:
          type: integer
          description: Harness protocol major version
          format: int32
        compatibilityManifestSha256:
          type: string
          description: Compatibility manifest hash
          nullable: true
        createdAt:
          type: string
          description: When the release was registered
          format: date-time
      description: Supervisor release used for this attempt
    StatusPageBranding:
      type: object
      properties:
        logoUrl:
          maxLength: 2048
          minLength: 0
          pattern: ^https?://.*
          type: string
          description: URL for the logo image displayed in the header
          nullable: true
        faviconUrl:
          maxLength: 2048
          minLength: 0
          pattern: ^https?://.*
          type: string
          description: URL for the browser tab favicon
          nullable: true
        brandColor:
          maxLength: 30
          minLength: 0
          pattern: ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
          type: string
          description: >-
            Primary brand color as hex, e.g. #4F46E5; drives
            accent/links/buttons
          nullable: true
        pageBackground:
          maxLength: 30
          minLength: 0
          pattern: ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
          type: string
          description: 'Page body background color as hex, e.g. #FAFAFA'
          nullable: true
        cardBackground:
          maxLength: 30
          minLength: 0
          pattern: ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
          type: string
          description: 'Card/surface background color as hex, e.g. #FFFFFF'
          nullable: true
        textColor:
          maxLength: 30
          minLength: 0
          pattern: ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
          type: string
          description: 'Primary text color as hex, e.g. #09090B'
          nullable: true
        borderColor:
          maxLength: 30
          minLength: 0
          pattern: ^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$
          type: string
          description: 'Card border color as hex, e.g. #E4E4E7'
          nullable: true
        headerStyle:
          maxLength: 50
          minLength: 0
          type: string
          description: Header layout style (reserved for future use)
          nullable: true
        theme:
          maxLength: 50
          minLength: 0
          type: string
          description: 'Color theme: light or dark (default: light)'
          nullable: true
        reportUrl:
          maxLength: 2048
          minLength: 0
          pattern: ^https?://.*
          type: string
          description: URL where visitors can report a problem
          nullable: true
        hidePoweredBy:
          type: boolean
          description: >-
            Whether to hide the 'Powered by DevHelm' footer badge (default:
            false)
          default: false
        showSubscribeButton:
          type: boolean
          description: 'Whether to show the ''Subscribe'' button in the header (default: true)'
          default: true
        customCss:
          maxLength: 50000
          minLength: 0
          type: string
          description: >-
            Custom CSS injected via <style> on the public page — grants full
            style control
          nullable: true
        customHeadHtml:
          maxLength: 50000
          minLength: 0
          type: string
          description: >-
            Custom HTML injected into <head> on the public page — grants full
            script control (analytics, pixels)
          nullable: true
      description: Updated branding configuration; null preserves current
    StatusPageOpenIncidentSummaryDto:
      required:
        - startedAt
        - status
        - title
        - updatedAt
      type: object
      properties:
        id:
          type: string
          description: Incident id for dashboard CTAs that open the matching drawer
          format: uuid
          nullable: true
        title:
          minLength: 1
          type: string
          description: Incident title shown on the list card live row
        status:
          type: string
          description: Lifecycle status of the open incident
          enum:
            - INVESTIGATING
            - IDENTIFIED
            - MONITORING
            - RESOLVED
        startedAt:
          type: string
          description: When the incident started (ISO 8601)
          format: date-time
        updatedAt:
          type: string
          description: When the incident was last updated (ISO 8601)
          format: date-time
      description: Newest open status-page incident; omitted from JSON when none
    BrowserCapabilityEnvelope:
      type: object
      properties:
        iframes:
          type: boolean
          description: Cross-origin iframes are enabled
        stripeElements:
          type: boolean
          description: Stripe Elements iframes are enabled
        popups:
          type: boolean
          description: Popup windows are enabled
        downloads:
          type: boolean
          description: File downloads are enabled
        viewport:
          type: boolean
          description: Viewport emulation is enabled
        geolocation:
          type: boolean
          description: Geolocation emulation is enabled
        clipboard:
          type: boolean
          description: Clipboard access is enabled
        upload:
          type: boolean
          description: File upload is enabled
      description: Browser capability envelope for this runtime
      required:
        - iframes
        - stripeElements
        - popups
        - downloads
        - viewport
        - geolocation
        - clipboard
        - upload
  securitySchemes:
    BearerAuth:
      type: http
      description: API key (dh_live_...) or Auth0 JWT token
      scheme: bearer
      bearerFormat: JWT

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.