> ## 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 all resource groups for the authenticated org with health summaries



## OpenAPI

````yaml /openapi/monitoring-api.json get /api/v1/resource-groups
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: 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: Email Testing
    description: Receive domains, captured mail, and JSON inject
  - 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 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: 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: 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/resource-groups:
    get:
      tags:
        - Resource Groups
      summary: List all resource groups for the authenticated org with health summaries
      operationId: list_6
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/TableValueResultResourceGroupDto'
        '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'
        '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'
        '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:
    TableValueResultResourceGroupDto:
      required:
        - data
        - hasNext
        - hasPrev
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ResourceGroupDto'
        hasNext:
          type: boolean
        hasPrev:
          type: boolean
        totalElements:
          type: integer
          format: int64
          nullable: true
        totalPages:
          type: integer
          format: int32
          nullable: true
    ErrorResponse:
      required:
        - code
        - message
        - status
        - timestamp
      type: object
      properties:
        status:
          type: integer
          description: HTTP status code (mirrors the response status line)
          format: int32
          example: 404
        code:
          type: string
          description: >-
            Coarse machine-readable error category (e.g. NOT_FOUND,
            RATE_LIMITED); stable per status
          example: NOT_FOUND
        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'
      description: Uniform error envelope returned for every non-2xx response
      example:
        status: 404
        code: NOT_FOUND
        message: Monitor not found
        timestamp: 1737302400000
        requestId: 5b6f7a8c-1234-4d5e-9f0a-1b2c3d4e5f6a
    ResourceGroupDto:
      required:
        - createdAt
        - health
        - id
        - name
        - slug
        - updatedAt
        - organizationId
        - suppressMemberAlerts
      type: object
      properties:
        id:
          type: string
          description: Unique resource group identifier
          format: uuid
        organizationId:
          type: integer
          description: Organization this group belongs to
          format: int32
        name:
          minLength: 1
          type: string
          description: Human-readable group name
        slug:
          minLength: 1
          type: string
          description: URL-safe group identifier
        description:
          type: string
          description: Optional group description
          nullable: true
        alertPolicyId:
          type: string
          description: Notification policy applied to this group
          format: uuid
          nullable: true
        defaultFrequency:
          type: integer
          description: Default check frequency in seconds for member monitors
          format: int32
          nullable: true
        defaultRegions:
          type: array
          description: Default regions for member monitors
          nullable: true
          items:
            type: string
            description: Default regions for member monitors
        defaultRetryStrategy:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/RetryStrategy'
        defaultAlertChannels:
          type: array
          description: Default alert channel IDs for member monitors
          nullable: true
          items:
            type: string
            description: Default alert channel IDs for member monitors
            format: uuid
        defaultEnvironmentId:
          type: string
          description: Default environment ID for member monitors
          format: uuid
          nullable: true
        healthThresholdType:
          type: string
          description: 'Health threshold type: COUNT or PERCENTAGE'
          nullable: true
          enum:
            - COUNT
            - PERCENTAGE
        healthThresholdValue:
          type: number
          description: Health threshold value
          nullable: true
        suppressMemberAlerts:
          type: boolean
          description: >-
            When true, member-level incidents skip notification dispatch; only
            group alerts fire
        confirmationDelaySeconds:
          type: integer
          description: >-
            Seconds to wait after health threshold breach before creating group
            incident
          format: int32
          nullable: true
        recoveryCooldownMinutes:
          type: integer
          description: >-
            Cooldown minutes after group incident resolves before a new one can
            open
          format: int32
          nullable: true
        health:
          $ref: '#/components/schemas/ResourceGroupHealthDto'
        members:
          type: array
          description: Member list with individual statuses; populated on detail GET only
          nullable: true
          items:
            $ref: '#/components/schemas/ResourceGroupMemberDto'
        deleteBlockedBy:
          type: array
          description: >-
            Status-page GROUP components that represent this group (removed with
            the group on delete); populated on detail GET only — omitted on list
          nullable: true
          items:
            $ref: '#/components/schemas/ResourceGroupDeleteBlockerDto'
        openRegionIncident:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/IncidentDto'
        managedBy:
          type: string
          description: >-
            Source that created/owns this group: DASHBOARD, CLI, TERRAFORM, MCP,
            or API. Null on groups created before this attribution column
            existed.
          nullable: true
          enum:
            - DASHBOARD
            - CLI
            - TERRAFORM
            - MCP
            - API
        createdAt:
          type: string
          description: Timestamp when the group was created
          format: date-time
        updatedAt:
          type: string
          description: Timestamp when the group was last updated
          format: date-time
      description: Resource group with health summary and optional member details
    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
    RetryStrategy:
      required:
        - type
        - maxRetries
        - interval
      type: object
      properties:
        type:
          type: string
          description: Retry strategy kind, e.g. fixed interval between attempts
        maxRetries:
          type: integer
          description: Maximum number of retries after a failed check
          format: int32
        interval:
          type: integer
          description: Delay between retry attempts in seconds
          format: int32
      description: Default retry strategy for member monitors; null clears
    ResourceGroupHealthDto:
      required:
        - status
        - totalMembers
        - operationalCount
        - activeIncidents
      type: object
      properties:
        status:
          type: string
          description: Worst-of health status across all members
          enum:
            - operational
            - maintenance
            - degraded
            - down
        totalMembers:
          type: integer
          description: Total number of members in the group
          format: int32
        operationalCount:
          type: integer
          description: Number of members currently in operational status
          format: int32
        activeIncidents:
          type: integer
          description: >-
            Number of members currently non-operational (not an incident-row
            count)
          format: int32
        thresholdStatus:
          type: string
          description: >-
            Computed group health status based on threshold: 'healthy',
            'degraded', or 'down'. Null when no health threshold is configured.
          nullable: true
          enum:
            - healthy
            - degraded
            - down
        failingCount:
          type: integer
          description: >-
            Number of failing members at time of last evaluation; null when no
            threshold configured
          format: int32
          nullable: true
        healthBreachedSince:
          type: string
          description: >-
            When the health threshold was first breached in the current cycle;
            null when not breached
          format: date-time
          nullable: true
        healthEvaluatedAt:
          type: string
          description: >-
            When group health was last evaluated (threshold or stamp-only); null
            until first evaluation
          format: date-time
          nullable: true
      description: Aggregated health summary for a resource group
    ResourceGroupMemberDto:
      required:
        - createdAt
        - groupId
        - id
        - memberType
        - status
      type: object
      properties:
        id:
          type: string
          description: Unique group member record identifier
          format: uuid
        groupId:
          type: string
          description: Resource group this member belongs to
          format: uuid
        memberType:
          type: string
          description: 'Type of member: ''monitor'' or ''service'''
        monitorId:
          type: string
          description: Monitor ID; set when memberType is 'monitor'
          format: uuid
          nullable: true
        serviceId:
          type: string
          description: Service ID; set when memberType is 'service'
          format: uuid
          nullable: true
        name:
          type: string
          description: Display name of the referenced monitor or service
          nullable: true
        slug:
          type: string
          description: >-
            Slug identifier for the service (services only); used for icons and
            uptime API calls
          nullable: true
        subscriptionId:
          type: string
          description: >-
            Subscription ID for the service (services only); used to link to the
            dependency detail page
          format: uuid
          nullable: true
        status:
          type: string
          description: Computed health status for this member
          enum:
            - operational
            - maintenance
            - degraded
            - down
        effectiveFrequency:
          type: string
          description: >-
            Effective check frequency label showing the group default when the
            monitor inherits it; null for services or when no group default is
            configured
          nullable: true
        createdAt:
          type: string
          description: Timestamp when the member was added to the group
          format: date-time
        uptime24h:
          type: number
          description: 24h uptime percentage; populated when includeMetrics=true
          format: double
          nullable: true
        chartData:
          type: array
          description: >-
            Uptime tick values (0-100) for last-24h mini chart; populated when
            includeMetrics=true
          nullable: true
          items:
            type: number
            description: >-
              Uptime tick values (0-100) for last-24h mini chart; populated when
              includeMetrics=true
            format: double
        avgLatencyMs:
          type: number
          description: >-
            Average latency in ms (monitors only); populated when
            includeMetrics=true
          format: double
          nullable: true
        p95LatencyMs:
          type: number
          description: >-
            P95 latency in ms (monitors only); populated when
            includeMetrics=true
          format: double
          nullable: true
        lastCheckedAt:
          type: string
          description: >-
            Timestamp of the most recent health check; populated when
            includeMetrics=true
          format: date-time
          nullable: true
        monitorType:
          type: string
          description: Monitor type (HTTP, DNS, TCP, ICMP, HEARTBEAT, MCP); monitors only
          nullable: true
        environmentName:
          type: string
          description: Environment name; monitors only
          nullable: true
        groupMembershipCount:
          type: integer
          description: >-
            Count of resource groups this monitor or service belongs to; detail
            GET only — omitted on list
          format: int32
          nullable: true
        failingSince:
          type: string
          description: >-
            Start of the current non-operational stretch; null when operational
            or unknown (services OK); detail GET only — omitted on list
          format: date-time
          nullable: true
        alertCollapsed:
          type: boolean
          description: >-
            True when an active member incident records this group among
            alertCollapsedByResourceGroupIds; detail GET only — omitted on list
          nullable: true
        incidentMarks:
          type: array
          description: >-
            Incident marks for the trailing 24h strip; null when metrics omitted
            or failed; detail GET only — omitted on list
          nullable: true
          items:
            $ref: '#/components/schemas/ResourceGroupMemberIncidentMarkDto'
      description: A single member of a resource group with its computed health status
    ResourceGroupDeleteBlockerDto:
      required:
        - componentId
        - componentName
        - statusPageId
        - statusPageName
        - statusPageSlug
      type: object
      properties:
        statusPageId:
          type: string
          description: Status page that owns the component
          format: uuid
        statusPageName:
          minLength: 1
          type: string
          description: Human-readable status page name
        statusPageSlug:
          minLength: 1
          type: string
          description: URL-safe status page slug
        componentId:
          type: string
          description: GROUP-typed status page component ID
          format: uuid
        componentName:
          minLength: 1
          type: string
          description: Component display name
        hostname:
          type: string
          description: Public hostname when a custom domain is configured; null otherwise
          nullable: true
      description: Status-page component that represents this resource group
    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
        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
    ResourceGroupMemberIncidentMarkDto:
      required:
        - at
      type: object
      properties:
        at:
          type: string
          description: >-
            Incident startedAt (or first confirmed) within the trailing 24h
            window
          format: date-time
        incidentId:
          type: string
          description: Incident ID for navigation; null when unknown
          format: uuid
          nullable: true
        severity:
          type: string
          description: Optional severity display hint
          nullable: true
      description: Member incident mark for the trailing 24h uptime strip
    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
  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.