TemplateInstallRequest
The stack's name, under the rules of createStack. Absent means the template's id.
values object
Input name to value. An input with no entry, or an empty one, takes its default. An entry for a name that is not one of the template's inputs is refused.
bridge, host or the name of an existing Docker network. It replaces the service's own network_mode and networks in the generated Compose file. A name that is not a Docker network name, or is none, is refused with 400 invalid_template_input (details.input is networkMode). A network that does not exist is a missing_network warning in the plan, with the exact docker network create <name> command, and installTemplate refuses it with 409 network_missing: Hoserva never creates networks. A failure to list the networks is an error (503 docker_unavailable when Docker is not reachable), never read as the network existing. Absent leaves the template's network settings as they are, and so does an empty string. Refused for a template with several services, like cpus, memoryMiB and extraParams (advancedAvailable is false).
The restart policy of every service. Absent leaves the template's.
Possible values: [no, always, unless-stopped, on-failure]
CPU limit of the service (Compose cpus), from 0.01 to 1024. Absent is no limit, and 0 is not a limit but a value outside the range: 400 invalid_template_input (details.input is cpus).
Memory limit of the service in MiB (Compose mem_limit), from 6 to 16777216. Absent is no limit, and 0 is not a limit but a value outside the range: 400 invalid_template_input (details.input is memoryMiB).
At most 4096 bytes; longer is 400 invalid_template_input. Absent or empty adds nothing. Raw docker run flags, read by the same parser that handles an Unraid template's ExtraParams: parsed into Compose fields and merged into the service, never passed to a shell. A flag outside the translate table, a word that is not a flag, or a string with shell syntax is a untranslated_flag warning in the plan and a comment above the service in the Compose file, never dropped silently. A flag that widens privileges (--cap-add, --device, --pid=host, --security-opt, a mount of a host path or of the Docker socket) is applied and shows in the plan's privileges. An entry that clashes with the template's own (a variable, label or mount at the same target with another value) is a conflict warning and the template's is kept. --restart, --cpus and --memory are refused with 400 invalid_template_input (details.input is extraParams) only when the request also gives restart, cpus or memoryMiB respectively; otherwise they translate like any other flag. A named volume a mount refers to is declared under the top-level volumes of the Compose file (one the template declares stays as declared). A host port a -p flag publishes is checked as a port input is: one the template's own ports, another flag, a container, a stack or the host already holds is refused with 409 no_free_port (details.input is extraParams) and is never moved, and a port that cannot be checked is refused too. Under host networking Docker ignores published ports, so none is checked.
The digest of the plan the caller was shown. Only installTemplate reads it; previewTemplateInstall ignores it. When given and the plan the install would write now has another digest, the install is refused with 409 template_changed before anything is created. Absent installs whatever the template is now; a value that is not a 64-character lowercase hex digest is refused with 400, never read as absent.
Possible values: Value must match regular expression ^[0-9a-f]{64}$
{
"name": "string",
"values": {},
"networkMode": "string",
"restart": "no",
"cpus": 0,
"memoryMiB": 0,
"extraParams": "string",
"planDigest": "string"
}