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

# Create Bundle Deployment

`POST /api/v1/devices/{device_id}/bundle-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}/bundle-deployments`
- Auth: HTTP bearer

Re-plan from fresh evidence, confirm the previewed intent, reserve the N100 and
record the `requested` event. The same key and body return the same deployment.

## Path parameters

- `device_id` string, required

## Headers

- `Idempotency-Key` string, nullable

## Request body

- BundleDeploymentRequest: `POST /api/v1/devices/{device_id}/bundle-deployments` (Idempotency-Key header): the plan request plus the intent the operator previewed and confirmed.
  - `kind` 'onboard' | 'upgrade' | 'rollback' | 'repair', required
  - `target_bundle_release_id` string, uuid, required
  - `transition_id` string, uuid, nullable
  - `checkpoint` string, nullable
  - `plan_intent_sha256` string, required

## Response `201`

Successful Response

- BundleDeploymentResponse: The `bundle_deployment` object (docs/bundle-api-v1.md, "Deployments").
  - `deployment_id` string, uuid, required
  - `device_id` string, required
  - `companion_id` string, required
  - `binding_generation` integer, required
  - `profile` string, required
  - `kind` 'onboard' | 'upgrade' | 'rollback' | 'repair', required
  - `source_bundle_release_id` string, uuid, nullable, required
  - `target_bundle_release_id` string, uuid, required
  - `source` BundleRef, required
    - `product` string, required
    - `version` string, required
    - `profile` string, required
    - `manifest_sha256` string, required
  - `target` BundleRef, required
    - `product` string, required
    - `version` string, required
    - `profile` string, required
    - `manifest_sha256` string, required
  - `transition_id` string, uuid, nullable, required
  - `transition_sha256` string, nullable, required
  - `checkpoint` string, nullable, required
  - `previous_deployment_id` string, uuid, nullable, required
  - `phase` 'queued' | 'preflight' | 'staging' | 'entering_maintenance' | 'applying' | 'verifying' | 'exiting_maintenance' | 'complete' | 'blocked' | 'recovering' | 'failed' | 'cancelled' | 'expired' | 'recovery_required', required
  - `reason` BundleDeploymentReason, required
    - `code` string, required
    - `component` 'n100' | 'jetson' | 'teensy' | 'cube', nullable
  - `reason_detail` unknown
  - `reached_checkpoint` string, nullable, required
  - `maintenance_active` boolean, required
  - `local_target_verified` boolean, required
  - `plan_sha256` string, required
  - `plan_intent_sha256` string, required
  - `inventory_sha256` string, required
  - `inventory_source` 'onboarding_probe' | 'device_reports', required
  - `admission_deadline` string, date-time, required
  - `cancel_requested_at` string, date-time, nullable, required
  - `cancel_requested_by` string, nullable, required
  - `created_by` string, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `finished_at` string, date-time, 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)
