# releases (/docs/reference/api/releases)

> Releases are signed bcd builds the platform may roll out to its nodes. A release is registered from a signed manifest, which must verify under the release key pins given to `rolloutModule`, and rollouts can then target its version. Both methods decide `compute:fleet:admin` on the fleet scope. See [Rollouts](/docs/guides/rollouts).



Releases are signed bcd builds the platform may roll out to its nodes. A release is registered from a signed manifest, which must verify under the release key pins given to `rolloutModule`, and rollouts can then target its version. Both methods decide `compute:fleet:admin` on the fleet scope. See [Rollouts](/docs/guides/rollouts).

All 2 methods are served by this release.

| Method                  | Kind     | Authorization                           | Phase | Status     |
| ----------------------- | -------- | --------------------------------------- | ----- | ---------- |
| [`register`](#register) | mutation | `compute:fleet:admin` @ `compute-fleet` | v0.4  | registered |
| [`list`](#list)         | read     | `compute:fleet:admin` @ `compute-fleet` | v0.4  | registered |

## register [#register]

`POST /api/compute/releases/register`

Verifies a signed bcd release manifest under the configured release pins and records the release; returns it with its per-platform binaries.

* **Replay.** Registering a manifest whose version is already recorded with the same sequence returns the stored release; the same version with another sequence is `CONFLICT`.

* **Errors.** `INVALID_INPUT` when the manifest does not verify (`details.reason` says why), when its sequence is not above the latest registered one (a rollback of the release channel, `details.reason` is `rollback`), when it lists several binaries for one platform, or when it lists no Linux binary.

* **Kind:** mutation

* **Authorization:** `compute:fleet:admin` @ `compute-fleet`

* **Module:** `rollout`

* **Phase:** v0.4 (registered)

**Input**

| Field      | Type   | Required | Constraints                                                |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `tenantId` | string | yes      | at most 128 characters; matches `^[A-Za-z0-9._:-]{1,128}$` |
| `manifest` | object | yes      |                                                            |

## list [#list]

`POST /api/compute/releases/list`

Returns every registered release, highest sequence first.

The list is not filtered by tenant: releases belong to the platform.

* **Kind:** read
* **Authorization:** `compute:fleet:admin` @ `compute-fleet`
* **Module:** `rollout`
* **Phase:** v0.4 (registered)

**Input**

| Field      | Type   | Required | Constraints                                                |
| ---------- | ------ | -------- | ---------------------------------------------------------- |
| `tenantId` | string | yes      | at most 128 characters; matches `^[A-Za-z0-9._:-]{1,128}$` |
