# Publish a version to a release channel (platform owner) (/docs/api-reference/edges/OtaController_upsertReleaseChannel)

`PUT /api/ota/release-channels/{edgeType}/{channel}`

Base URL: https://api.xentr.ai

Authentication: bearer token (`Authorization: Bearer <token>`).

Upserts the (edge_type, channel) row so edges on that channel resolve this version on their next manifest poll. This is how a release reaches the fleet.

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `edgeType` | path | yes | string |  |
| `channel` | path | yes | string |  |

## Request body

Required.

Content type: `application/json`

```json
{
  "type": "object",
  "properties": {
    "currentVersion": {
      "type": "string",
      "description": "Version this channel now serves",
      "example": "0.3.1"
    },
    "artifactUrl": {
      "type": "string",
      "description": "Canonical artifact URL (GitHub release asset; private repo).",
      "example": "https://github.com/VIGOR-Digital-Solution/xentr-mimos/releases/download/edge-fanuc-v0.3.1/xentr-fanuc-edge-fanuc-v0.3.1-x86_64-windows.zip"
    },
    "sha256": {
      "type": "string",
      "description": "SHA-256 of the artifact zip (hex).",
      "example": "a1b2…"
    },
    "signature": {
      "type": "string",
      "description": "ed25519 detached signature (Phase 3). Omit until signing ships."
    },
    "minVersion": {
      "type": "string",
      "description": "Anti-downgrade floor (Phase 3).",
      "example": "0.3.0"
    },
    "mandatory": {
      "type": "boolean",
      "description": "Security release → swap ASAP. false defers to a maintenance window.",
      "default": false
    },
    "notes": {
      "type": "string",
      "description": "Free-text release note."
    },
    "force": {
      "type": "boolean",
      "description": "Override the orphan-guard: allow overwriting this channel's current version even when a per-edge pin or active rollout still depends on it (they would get a null manifest + 404 until re-homed). Default false.",
      "default": false
    }
  },
  "required": [
    "currentVersion",
    "artifactUrl",
    "sha256"
  ]
}
```

## Responses

### 200