---
title: "Read Device History"
method: GET
path: "/api/v1/devices/{device_id}/history"
tags: ["device inventory"]
---

# Read Device History

`GET /api/v1/devices/{device_id}/history`

## Request

- Base URL: `https://api.brumby.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.brumby.com/api/v1/devices/{device_id}/history`
- Auth: HTTP bearer

## Path parameters

- `device_id` string, required

## Query parameters

- `limit` integer

## Response `200`

Successful Response

- DeviceHistoryResponse
  - `device_reports` DeviceReportObservationResponse[], required
    - `observation_id` string, uuid, required
    - `device_report` PresenceV1, required: Version 1 application-presence report published with QoS 1, never retained.
      - `schema_version` '1', required
      - `device_id` string, required
      - `boot_id` string, uuid, required
      - `sequence` integer, required
      - `observed_at` string, date-time, required
      - `environment` 'staging', required
      - `hardware` HardwareIdentityV1, required
        - `kind` 'n100' | 'jetson', required
        - `serial_number` string, required
        - `model` string, nullable
        - `revision` string, nullable
      - `role` 'dock_compute', required
      - `agent` AgentIdentityV1, required
        - `name` string, required
        - `version` string, required
        - `build` string, nullable
        - `schema_version` string, nullable
        - `release_sha256` string, nullable
        - `defaults_sha256` string, nullable
        - `companion_version` string, nullable
        - `integrity` AgentIntegrityV1: The N100's own file-integrity verdict for its installed Dock release (bundle rule R4): the release's recorded checksums plus each installed package's hashes. A verdict counts only when bound to the reported release (`release_sha256` equal to the agent's): FleetOps maps an unbound, aborted, never-run or errored check to integrity `unknown` (bundles README section 5), never refuses the presence.
          - `status` 'ok' | 'modified' | 'aborted' | 'never_run' | 'error', required
          - `checked_at` string, date-time, nullable
          - `modified_count` integer, nullable
          - `release_sha256` string, nullable
      - `updater` DockUpdaterPresenceV1: Independently versioned privileged updater capability report. This block is optional on the presence-v1 envelope so deployed legacy dock-link processes continue to ingest. Once reported, FleetOps projects it independently from the ordinary Dock application version.
        - `name` 'dock-updater', required
        - `version` string, required
        - `supported_job_schema_versions` string[], required
        - `supported_release_format_versions` string[], required
        - `trusted_signing_key_ids` string[], required
        - `architecture` 'x86_64' | 'aarch64', required
        - `ready` boolean, required
      - `host` HostStatusV1, required
        - `hostname` string, required
        - `uptime_seconds` number, required
        - `load_1m` number, nullable
        - `memory_available_bytes` integer, nullable
        - `data_free_bytes` integer, nullable
        - `temperature_celsius` number, nullable
      - `health` HealthReportV1, required
        - `checks` HealthCheckV1[]
          - `name` string, required
          - `status` 'pass' | 'warn' | 'fail' | 'unknown', required
          - `message` string, nullable
      - `dock` DockPresenceV1
        - `dock_id` string, nullable
        - `state` 'BOOT' | 'IDLE_EMPTY' | 'IDLE_STOWED' | 'OPENING' | 'OPEN_READY' | 'LAUNCHING' | 'RECEIVING' | 'CLOSING' | 'CHARGING' | 'FAULT' | 'LOCKOUT'
        - `snapshot_observed_at` string, date-time, nullable
        - `supervisor_reachable` boolean, required
        - `reconciled` boolean, nullable
        - `configured` boolean, nullable
        - `active_faults` string[]
        - `snapshot_version` integer, nullable
        - `event_sequence` integer, nullable
        - `teensy` TeensyPresenceV1: Current Teensy controller health, carried in ordinary dock presence.
          - `model` string, required
          - `firmware_version` string, nullable, required
          - `io_mode` 'real' | 'fake' | 'unknown', required
          - `status` 'available' | 'degraded' | 'unavailable', required
          - `heartbeat` TeensyHeartbeatV1, required: Supervisor-observed Teensy heartbeat health and sender diagnostics.
            - `expected_hz` number, required
            - `sender_running` boolean, required
            - `ack_age_ms` integer, nullable, required
            - `mcu_uptime_s` integer, nullable, required
            - `uptime_advancing` boolean, nullable, required
            - `progress_age_ms` integer, nullable, required
            - `reset_count` integer, required
            - `last_reset_age_ms` integer, nullable, required
            - `actuation_inhibited` boolean, nullable, required
            - `in_safe_state` boolean, nullable, required
            - `beats_sent` integer, required
            - `late_beats` integer, required
            - `over_inhibit` integer, required
            - `send_errors` integer, required
            - `max_interval_ms` number, required
            - `mean_interval_ms` number, required
          - `producer` TeensyProducerV1, required: Process instance that observed and summarized the Teensy.
            - `service` string, required
            - `pid` integer, required
            - `instance_id` string, uuid, required
          - `diagnostics` TeensyDiagnosticsSpoolV1: Current health of the durable normalized-occurrence spool.
            - `status` 'available' | 'degraded' | 'unavailable', required
            - `pending` integer, nullable, required
            - `capacity` integer, required
            - `overflow_count` integer, nullable, required
            - `error` string, nullable, required
    - `fleetops_receipt` FleetOpsReceiptResponse, required: Worker-clock metadata recorded when one device report was accepted.
      - `received_at` string, date-time, required: Worker time at which this valid presence report was accepted.
      - `health_status` 'healthy' | 'degraded' | 'unknown', required
  - `connection_episodes` ConnectionEpisodeResponse[], required
    - `episode_id` string, uuid, required
    - `device_id` string, required
    - `boot_id` string, uuid, required
    - `opened_at` string, date-time, required
    - `last_presence_at` string, date-time, required
    - `closed_at` string, date-time, nullable, required
    - `close_reason` string, nullable, required
  - `audit_events` AuditEventResponse[], required
    - `event_id` string, uuid, required
    - `device_id` string, nullable, required
    - `event_type` string, required
    - `actor_type` string, required
    - `actor_id` string, required
    - `occurred_at` string, date-time, required
    - `details` object, required
  - `release_history` DeviceReleaseHistoryResponse[]
    - `history_id` string, uuid, required
    - `device_id` string, required
    - `release_id` string, uuid, required
    - `release` DockReleaseResponse, required
      - `release_id` string, uuid, required
      - `version` string, required
      - `git_commit` string, required
      - `schema_release_id` string, uuid, required
      - `schema_release` SchemaReleaseResponse, required
        - `schema_release_id` string, uuid, required
        - `version` string, required
        - `git_commit` string, required
        - `wheel_s3_key` string, required
        - `wheel_sha256` string, required
        - `created_at` string, date-time, required
        - `created_by` string, required
        - `status` 'draft' | 'released' | 'deprecated' | 'revoked', required: Operator-controlled lifecycle for immutable catalogue entries.
      - `product` 'brumby-dock', nullable, required
      - `release_purpose` 'application' | 'updater_migration', nullable, required
      - `release_format_version` string, nullable, required
      - `job_schema_version` '1' | '2', nullable, required
      - `target_hardware_family` 'n100' | 'jetson', nullable, required
      - `target_architecture` 'x86_64' | 'aarch64', nullable, required
      - `manifest_sha256` string, nullable, required
      - `signing_key_id` string, nullable, required
      - `artifact_s3_key` string, required
      - `artifact_sha256` string, required
      - `artifact_size_bytes` integer, required
      - `created_at` string, date-time, required
      - `created_by` string, required
      - `release_status` 'draft' | 'released' | 'deprecated' | 'revoked', required: Operator-controlled lifecycle for immutable catalogue entries.
      - `release_notes` string, nullable, required
      - `installable` boolean, required
    - `previous_release_id` string, uuid, nullable, required
    - `previous_release` DockReleaseResponse, required
      - `release_id` string, uuid, required
      - `version` string, required
      - `git_commit` string, required
      - `schema_release_id` string, uuid, required
      - `schema_release` SchemaReleaseResponse, required
        - `schema_release_id` string, uuid, required
        - `version` string, required
        - `git_commit` string, required
        - `wheel_s3_key` string, required
        - `wheel_sha256` string, required
        - `created_at` string, date-time, required
        - `created_by` string, required
        - `status` 'draft' | 'released' | 'deprecated' | 'revoked', required: Operator-controlled lifecycle for immutable catalogue entries.
      - `product` 'brumby-dock', nullable, required
      - `release_purpose` 'application' | 'updater_migration', nullable, required
      - `release_format_version` string, nullable, required
      - `job_schema_version` '1' | '2', nullable, required
      - `target_hardware_family` 'n100' | 'jetson', nullable, required
      - `target_architecture` 'x86_64' | 'aarch64', nullable, required
      - `manifest_sha256` string, nullable, required
      - `signing_key_id` string, nullable, required
      - `artifact_s3_key` string, required
      - `artifact_sha256` string, required
      - `artifact_size_bytes` integer, required
      - `created_at` string, date-time, required
      - `created_by` string, required
      - `release_status` 'draft' | 'released' | 'deprecated' | 'revoked', required: Operator-controlled lifecycle for immutable catalogue entries.
      - `release_notes` string, nullable, required
      - `installable` boolean, required
    - `action_id` string, uuid, required
    - `requested_by` string, required
    - `requested_at` string, date-time, required
    - `download_started_at` string, date-time, nullable, required
    - `installed_at` string, date-time, nullable, required
    - `result` 'requested' | 'downloading' | 'installed' | 'failed' | 'rejected' | 'expired', required: FleetOps' durable view of one device deployment attempt.
    - `failure_reason` string, nullable, required
    - `failure` DockReleaseFailureV2, required: Stable machine-readable failure from updater validation or installation.
      - `code` string, required
      - `phase` string, required
      - `detail` string, nullable
      - `expected` string, nullable
      - `reported` string, nullable
    - `artifact_sha256` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/brumby/apis/brumby-platform-api.md) - [All operations](https://skmtc.dev/brumby/apis/brumby-platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/brumby/apis/brumby-platform-api/revisions/fe185e20813e?raw)
