TemplateInstallResult
stack objectrequired
template objectrequired
Where the template came from; empty for a stack no template installed.
True once the stack's Compose text was saved by hand (updateStack), so the template's form must not silently overwrite it. A template install is not manually edited.
The stored docker-compose.yml text. Returned by getStack and updateStack only, never by listStacks. The .env is never returned.
plan objectrequired
template objectrequired
Where the template came from; empty for a stack no template installed.
Hex SHA-256 over the plan's template source, id and revision, its compose text and its privileges. A preview and an install of the same request have the same digest. Pass it as planDigest to installTemplate to install only what was shown.
The stack's name.
inputs object[]required
Possible values: [path, port, string, secret, timezone, device]
Possible values: [appdata, share, media, downloads, gpu]
What the input resolves to. Absent for a secret, whose value is only ever written to the stack's .env; empty for a device input with no GPU chosen.
Present on a port input whose requested port is taken: the port asked for, while value is the next free port instead.
A secret that the install generates.
True for an input that may not be left empty: a path, a port, or a string input the template does not mark optional.
Present on a required input that has no value and no default: what is missing. previewTemplateInstall lists the input with this instead of refusing the request, so a form can show every field; installTemplate refuses the same input with 400 invalid_template_input.
The existing shares' paths for a path input that is not appdata; the host's /dev/dri render devices for a device input.
privileges object[]required
Computed from the generated Compose content, so it includes what networkMode and extraParams add. Empty when the template asks for nothing beyond an ordinary container.
Possible values: [privileged, host_network, host_pid, host_cgroup, device_cgroup_rules, added_capabilities, confinement_disabled, group_add, docker_socket, host_path, gpu_reservation, container_runtime]
The Compose service that asks for it.
The path, process namespace, rules, capabilities, security options, groups, device reservations or runtime concerned, comma-separated when there are several (the entries of gpu_reservation are separated by a semicolon, each one listing its own driver, count or device ids and capabilities with commas); absent for privileged, host_network and host_cgroup.
Plain-language explanation of what it grants.
warnings object[]required
What the network mode and the extra parameters could not carry out or need a decision on, to read before installing: untranslated flags, host paths outside the pool and the cache, clashes with the template's own entries, a network that does not exist (with its command) and notes. Empty with no such setting.
untranslated_flag is an ExtraParams flag or word that has no Compose equivalent here. untranslated_field is a template field or entry that could not be carried over. flagged_path is a host path outside the pool and the cache. missing_network is a custom network the template names. conflict is two entries for one target with different values. writable_layer is the warning every conversion carries about state inside the source container. note is informational.
Possible values: [untranslated_flag, untranslated_field, flagged_path, missing_network, conflict, writable_layer, note]
Plain-language explanation.
The flag, path, network name or entry concerned.
Only on missing_network: the docker network create command. In a conversion it holds <PLACEHOLDER> values for what the template does not say; in an install plan it is the exact docker network create <name> for the network that was chosen.
False for a template with several services, where networkMode, cpus, memoryMiB and extraParams are refused because no input says which service they mean; restart still applies to every service.
The docker-compose.yml text that an install writes.
{
"stack": {
"name": "string",
"template": {
"source": "string",
"id": "string",
"revision": "string"
},
"installedAt": "2024-07-29T15:51:28.071Z",
"manuallyEdited": true,
"compose": "string"
},
"plan": {
"template": {
"source": "string",
"id": "string",
"revision": "string"
},
"digest": "string",
"title": "string",
"name": "string",
"inputs": [
{
"name": "string",
"kind": "path",
"role": "appdata",
"label": "string",
"description": "string",
"value": "string",
"requestedValue": "string",
"generated": true,
"required": true,
"error": "string",
"suggestions": [
"string"
]
}
],
"privileges": [
{
"kind": "privileged",
"service": "string",
"detail": "string",
"description": "string"
}
],
"warnings": [
{
"class": "untranslated_flag",
"message": "string",
"detail": "string",
"command": "string"
}
],
"advancedAvailable": true,
"compose": "string"
}
}