branded_app_apply
# branded_app_apply
Turns the install pop-up on or off or updates the app name, short name, description, background colour or icon of a released branded app, as the console does. The icon is a PNG, JPEG, WebP or SVG file up to 1,000,000 bytes uploaded from this computer (the server never receives it or downloads a link): call with icon {kind:"local-file", filename, byteLength, sha256}, send the file with the presigned PUT returned under images.icon (the console screen link comes with it), then call again with icon {kind:"complete", uploadId, parts:[{partNumber:1, etag}]}. Called without confirmToken it previews and returns a confirmToken; repeating the same input with it executes once.
## Inputs
| Field | Required here | Contract |
| --- | --- | --- |
| `popUpEnabled` | No | boolean |
| `revise` | No | object |
| `revise.name` | No | string; min length 2; max length 30 |
| `revise.shortName` | No | string; min length 2; max length 12 |
| `revise.description` | No | string; min length 4; max length 100 |
| `revise.backgroundColor` | No | string; pattern `^#[0-9A-Fa-f]{6}$` |
| `icon` | No | one of: `local-file`, `more-parts`, `complete`, `cancel` (by `kind`) |
| `icon.filename` | Yes | When `icon.kind` is `local-file`: string; min length 1; max length 240; pattern `^[^/\\:\x00-\x1f\x7f]+$`; The name of the file on this computer, with its extension. |
| `icon.byteLength` | Yes | When `icon.kind` is `local-file`: integer; greater than 0; The exact file size in bytes (for example from `wc -c < FILE` or `stat`). |
| `icon.sha256` | No | When `icon.kind` is `local-file`: string; pattern `^[0-9a-f]{64}$` |
| `icon.uploadId` | Yes | When `icon.kind` is `more-parts`: string; pattern `^upl_[A-Za-z0-9_-]{22}$` |
| `icon.fromPart` | Yes | When `icon.kind` is `more-parts`: integer; minimum 1; maximum 10000 |
| `icon.uploadId` | Yes | When `icon.kind` is `complete`: string; pattern `^upl_[A-Za-z0-9_-]{22}$` |
| `icon.parts` | Yes | When `icon.kind` is `complete`: array; min items 1; max items 10000 |
| `icon.parts[].partNumber` | Yes | When `icon.kind` is `complete`: integer; minimum 1; maximum 10000 |
| `icon.parts[].etag` | Yes | When `icon.kind` is `complete`: string; min length 1; max length 200 |
| `icon.measured` | No | When `icon.kind` is `complete`: object; What the video measures on this computer, read with measureCommand. |
| `icon.measured.durationSeconds` | Yes | When `icon.kind` is `complete`: number; maximum 1000000; greater than 0; Video duration in seconds (ffprobe format.duration). |
| `icon.measured.frameRate` | Yes | When `icon.kind` is `complete`: number; maximum 1000; greater than 0; Frames per second (ffprobe avg_frame_rate, for example 30000/1001 = 29.97). |
| `icon.measured.width` | Yes | When `icon.kind` is `complete`: integer; maximum 100000; greater than 0 |
| `icon.measured.height` | Yes | When `icon.kind` is `complete`: integer; maximum 100000; greater than 0 |
| `icon.measured.frameRateMode` | No | When `icon.kind` is `complete`: `CFR`, `VFR` |
| `icon.measured.minFrameRate` | No | When `icon.kind` is `complete`: number; maximum 1000; greater than 0 |
| `icon.measured.maxFrameRate` | No | When `icon.kind` is `complete`: number; maximum 1000; greater than 0 |
| `icon.uploadId` | Yes | When `icon.kind` is `cancel`: string; pattern `^upl_[A-Za-z0-9_-]{22}$` |
| `confirmToken` | No | string; pattern `^ct[a-f\d]{32}$`; The confirmToken from this tool's preview result. Omit it to preview; repeat the same input with it to execute. |