| gvc | Yes | GVC slug (lowercase kebab-case). Use the GVC the user named; otherwise discover with list_resources (kind="gvc") and let them choose — never guess (a wrong GVC targets the wrong environment). | |
| org | Yes | Organization slug (lowercase kebab-case). NEVER guess — if the user has not named one, ask. On org-not-found, stop and ask; do not retry variants. | |
| name | Yes | Workload name (lowercase kebab-case, must start with a letter, max 49 chars, cannot end with -headless). The name is IMMUTABLE — "renaming" requires delete + recreate (loses public URL, internal DNS, policy targetLinks). | |
| tags | No | Optional tags (key/value pairs such as env=prod). | |
| type | No | Workload type (default: standard — always-running). Use "cron" for a SCHEDULED JOB: then `schedule` is REQUIRED and the job-policy fields apply, while autoscaling/timeoutSeconds/debug do NOT (they are rejected — probes and autoscaling have no meaning for a cron run). vm is not supported. | standard |
| debug | No | Enable or disable spec.defaultOptions.debug. Not valid with type: "cron". | |
| public | No | Convenience shortcut: opens the external firewall BOTH ways — inbound 0.0.0.0/0 AND outbound 0.0.0.0/0 (a public service almost always needs both directions). Mutually exclusive with firewallConfig, and an explicit firewallConfig overrides it. OMITTED = no external access (deny-by-default) — decide exposure here, at create time; do not create closed and patch the firewall open afterward. | |
| suspend | No | Enable or disable spec.defaultOptions.suspend (no replicas run while suspended; for a cron workload this pauses scheduled runs) | |
| schedule | No | REQUIRED when type is "cron" (and ONLY valid then): a NUMERIC 5-field cron expression like "0 */6 * * *" (no @daily macros, no MON/JAN names). Omit entirely for serverless/standard/stateful. | |
| capacityAI | No | Enable or disable spec.defaultOptions.capacityAI — applies to every type (default ON for serverless/standard/cron; on cron the new reservation takes effect at the next scheduled run). Explicit true is rejected with the cpu metric and with GPUs. | |
| containers | Yes | Required full container specs (1-8). Each item minimally needs name and image; all other container fields are optional. This is the only way to define containers — there are no flat image/cpu/port fields. | |
| autoscaling | No | Autoscaling configuration → spec.defaultOptions.autoscaling (metric, target, minScale, maxScale, scaleToZeroDelay, maxConcurrency, keda). This is the ONLY place scaling is configured. Omit to use platform defaults (minScale 1, maxScale 5). | |
| description | No | Workload description | |
| historyLimit | No | Number of completed job instances to retain (default 5) | |
| identityLink | No | Identity link granting 3rd-party cloud resource access, e.g. //identity/my-id | |
| restartPolicy | No | What to do when a job instance fails | |
| firewallConfig | No | Inbound/outbound access control. Access is restricted by default. | |
| timeoutSeconds | No | Set spec.defaultOptions.timeoutSeconds — max request duration (platform default 5s; serverless caps at 600) | |
| concurrencyPolicy | No | What to do when a run is due while a prior run is still active (default Forbid) | |
| supportDynamicTags | No | Enable or disable spec.supportDynamicTags (detects image digest changes). | |
| activeDeadlineSeconds | No | Max seconds to wait for the job to complete before it is stopped | |