---
title: "Create Deployment"
method: POST
path: "/api/v1/devices/{device_id}/deployments"
tags: ["device deployments"]
---

# Create Deployment

`POST /api/v1/devices/{device_id}/deployments`

## 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}/deployments`
- Auth: HTTP bearer

## Path parameters

- `device_id` string, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- DeploymentCreate
  - `release_id` string, uuid, required
  - `updater_migration_authorization_id` string, uuid, nullable

## Response `201`

Successful Response

- DeploymentResponse
  - `action` DiagnosticActionResponse, required
    - `action_id` string, uuid, required
    - `device_id` string, required
    - `release_id` string, uuid, nullable, required
    - `updater_migration_authorization_id` string, uuid, nullable, required
    - `process` 'hello_world' | 'dock_cover' | 'dock_release' | 'dock_host' | 'mission' | 'sim_run', required
    - `action` 'start' | 'stop' | 'status' | 'open' | 'close' | 'install' | 'reboot' | 'stage', required
    - `state` string, required
    - `requested_by_actor` string, required
    - `issued_at` string, date-time, required
    - `expires_at` string, date-time, required
    - `accepted_at` string, date-time, nullable, required
    - `parameters` union, required
      - DockReleaseCreateParameters: Operator input: select an immutable, registered catalogue release.
        - `release_id` string, uuid, required
        - `updater_migration_authorization_id` string, uuid, nullable
      - LegacyDockReleaseParameters: Read compatibility for install actions created before the catalogue. New request bodies cannot use this model. It exists only on response models so historical rows remain inspectable while they are linked/backfilled.
        - `s3_key` string, required
        - `version` string, nullable
        - `sha256` string, nullable
      - MissionStageSummary: Redacted mission metadata safe for staff action history.
        - `farm_id` string, required
        - `mission_id` string, required
        - `config_sha256` string, required
      - SimRunActionParametersV1: Which scheduled simulated run a SITL bench is asked to start or stop. Only the run's identity crosses the wire. The command the bench executes is its operator's own configuration (dock-link `--sim-runner-command`); nothing in this contract names a program, a path or an argument.
        - `run_id` string, uuid, required
    - `result_status` string, nullable, required
    - `result_payload` object, nullable, required
    - `result_received_at` string, date-time, nullable, required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `deployment` DeviceReleaseHistoryResponse, required
    - `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
  - `software` DeviceSoftwareResponse, required
    - `device_id` string, required
    - `desired_release_id` string, uuid, nullable, required
    - `desired_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
    - `reported_version` string, nullable, required
    - `reported_schema_version` string, nullable, required
    - `reported_release_sha256` string, nullable, required
    - `reported_at` string, date-time, nullable, required
    - `updater` DeviceUpdaterResponse, required
      - `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
      - `reported_at` string, date-time, required
      - `received_at` string, date-time, required
    - `converged` boolean, nullable, 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)
