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

# Health (Detailed)

> Detailed health status including database and dependency checks.



## OpenAPI

````yaml GET /health/detailed
openapi: 3.0.3
info:
  title: Umbra Indexer Read Service
  description: >
    Read-only REST API for querying Umbra mixer tree state, UTXO records,

    and Merkle inclusion proofs.


    ## Response Encoding


    **All endpoints** support `application/x-protobuf` encoding. The encoding

    strategy differs by endpoint category:


    - **Always Protobuf** (no content negotiation): stats, tree metadata, Merkle
    proofs,
      and all UTXO data endpoints. These endpoints always respond with
      `Content-Type: application/x-protobuf` regardless of the `Accept` header.
    - **Content negotiation** (health endpoints only): respond with JSON by
    default,
      or Protobuf when `Accept: application/x-protobuf` is set. Send
      `Accept: application/x-protobuf` for consistent protobuf-only clients.

    ## UTXO Response Layouts


    The three UTXO data endpoints (`GET /v1/utxos`, `GET
    /v1/utxos/{absolute_index}`,

    `GET /v1/trees/{tree_index}/utxos`) support two Protobuf response layouts

    controlled by the `X-Response-Layout` request header:


    - **Row-oriented** (default) -- `UtxoResponse` message: each UTXO is a
      self-contained `UtxoDataItem` sub-message. Easier to iterate record-by-record.
    - **Columnar** (`X-Response-Layout: columnar`) -- `UtxoColumnarResponse`
    message:
      each field across all UTXOs is packed into a parallel array inside a single
      `UtxoColumns` sub-message. Compresses significantly better over the wire and is
      preferred by vectorized consumers (e.g. data pipelines, analytics).

    ## Rate Limiting


    All endpoints are subject to rate limiting. Exceeded limits return `429 Too
    Many Requests`.


    ## Compression


    All responses are compressed. Send `Accept-Encoding: gzip, br`.


    ## Absolute Index


    The **absolute index** is a globally monotonic cursor across all Merkle
    trees:

    ```

    absolute_index = tree_index * MAX_LEAVES_PER_TREE + insertion_index

    ```

    where `MAX_LEAVES_PER_TREE = 1,048,576` (2^20).
  version: 0.1.0
  contact:
    name: Umbra Protocol
servers:
  - url: https://utxo-indexer.api.umbraprivacy.com
    description: Mainnet
  - url: https://utxo-indexer.api-devnet.umbraprivacy.com
    description: Devnet
security: []
tags:
  - name: health
    description: |
      Health and readiness probes for Kubernetes or load-balancer checks.
      Support both JSON and Protobuf via `Accept` header negotiation.
  - name: stats
    description: Aggregate statistics for the UTXO index. Always Protobuf.
  - name: trees
    description: Per-tree Merkle metadata and Merkle inclusion proofs. Always Protobuf.
  - name: utxos
    description: >
      UTXO data queries with absolute-index-based pagination. Always Protobuf.

      Supports row-oriented and columnar response layouts via
      `X-Response-Layout`.
paths:
  /health/detailed:
    get:
      tags:
        - health
      summary: Detailed health report
      description: |
        Returns a comprehensive health report including service version, process
        uptime, and storage backend connectivity status.

        **Content negotiation**: `Accept: application/x-protobuf` returns a
        Protobuf-encoded `DetailedHealthResponse`; otherwise JSON.

        Note: A `200 OK` does **not** guarantee all dependencies are healthy.
        Inspect `storage.connected` to confirm the backend is reachable.
      operationId: detailedHealth
      parameters:
        - name: Accept
          in: header
          required: false
          schema:
            type: string
            enum:
              - application/json
              - application/x-protobuf
      responses:
        '200':
          description: Full health report.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DetailedHealthResponse'
              example:
                status: ok
                version: 0.1.0
                timestamp: '2026-02-25T12:00:00Z'
                uptime_seconds: 86400
                storage:
                  status: healthy
                  connected: true
            application/x-protobuf:
              schema:
                $ref: '#/components/schemas/DetailedHealthResponse'
components:
  schemas:
    DetailedHealthResponse:
      type: object
      description: Comprehensive health report returned by `GET /health/detailed`.
      required:
        - status
        - version
        - timestamp
        - uptime_seconds
        - storage
      properties:
        status:
          type: string
          description: Overall service status (`"ok"` when all components are healthy).
          example: ok
        version:
          type: string
          description: Crate version string (from `CARGO_PKG_VERSION`).
          example: 0.1.0
        timestamp:
          type: string
          format: date-time
          description: Current UTC timestamp in RFC 3339 / ISO 8601 format.
          example: '2026-02-25T12:00:00Z'
        uptime_seconds:
          type: integer
          format: int64
          description: Elapsed seconds since the service process started.
          example: 86400
        storage:
          $ref: '#/components/schemas/StorageHealth'
    StorageHealth:
      type: object
      description: >-
        Storage backend connectivity sub-report embedded in
        `DetailedHealthResponse`.
      required:
        - status
        - connected
      properties:
        status:
          type: string
          description: >
            `"healthy"` when the backend passed a connectivity probe;
            `"unhealthy"`

            when the probe failed; or an error message string describing the
            failure.
          example: healthy
        connected:
          type: boolean
          description: '`true` if the storage backend responded to a health probe.'
          example: true

````