with one click
umbraco-automate
Umbraco Automate operations (event-driven workflow automation)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Umbraco Automate operations (event-driven workflow automation)
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | umbraco-automate |
| description | Umbraco Automate operations (event-driven workflow automation) |
| metadata | {"version":"0.4.8","requires":{"bins":["umbraco"],"skills":["umbraco-shared"]}} |
PREREQUISITE: Read
../umbraco-shared/SKILL.mdfor auth, global flags, and security rules.
umbraco automate <command> [flags]
| Command | Description |
|---|---|
automate approvals pending | List approvals waiting for a decision |
automate automation ancestors <id> | Get an automation's location (workspace and group breadcrumb) |
automate automation export <id> | Export an automation as a portable definition |
automate automation get <id> | Get an automation by ID (trigger, steps, connections, state) |
automate automation list | List automations (paginated; --skip/--take/--all) |
automate automation runs <id> | List runs for an automation (paginated; --skip/--take/--all) |
automate automation validate --workspace-id <id> --file <export.json> | Validate a new automation import server-side without writing anything |
automate catalogue actions | List action step types |
automate catalogue connection-types | List connection types |
automate catalogue control-flows | List control-flow step types |
automate catalogue notification-channels | List notification channels |
automate catalogue operators | List condition/filter operators for automation export models |
automate catalogue output-schema <alias> | Resolve a step type's dynamic output schema |
automate catalogue step-types | List step types, optionally filtered by kind |
automate catalogue triggers | List trigger step types |
automate catalogue webhook-authenticators | List webhook authenticators |
automate connection get <id> | Get a connection by ID |
automate connection list | List connections (paginated; --skip/--take/--all) |
automate metrics by-automation | Get run metrics grouped by automation |
automate metrics summary | Get run summary metrics |
automate run get <id> | Get a run by ID (per-step status, errors, retries, timing -- resolved step values are not exposed by the API) |
automate version-history compare <entity-type> <entity-id> <from-version> <to-version> | Compare two stored versions of an entity |
automate version-history get <entity-type> <entity-id> <version> | Get one stored version of an entity (the full payload as it was) |
automate version-history list <entity-type> <entity-id> | List stored versions of an entity (paginated; --skip/--take) |
automate version-history types | List the entity types that keep version history |
automate workspace get <id> | Get a workspace by ID |
automate workspace group get <workspace-id> <group-id> | Get an automation group |
automate workspace group list <workspace-id> | List automation groups in a workspace |
automate workspace list | List workspaces (paginated; --skip/--take/--all) |
umbraco automate approvals pending
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate automation ancestors <id>
umbraco automate automation export <id>
GET /automations/{id}/export. The export model is the template format for 'automation validate', 'automation import', and 'automation import-update'. Filter conditions use string operators such as "NotEquals" in the lowercase operator field; Deploy .uda files use integer Operator values, so do not paste .uda condition JSON directly into import/update payloads. Use 'automate catalogue operators' for the mapping.
| Flag | Type | Default | Description |
|---|---|---|---|
--include | string | — | Export include option |
umbraco automate automation get <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate automation list
| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | Walk every page until exhausted (auto-paginates with --take as the page size, default 500; combine with --skip to start partway through). Bounded by an internal 100k-item ceiling. |
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--filter | string | — | Text filter |
--first-n | int | 0 | Return only the first N items from item collections |
--group-id | string | — | Group ID |
--ids-only | bool | false | Return only item IDs for item collections |
--params | string | — | Query parameters as JSON |
--skip | int | -1 | Skip count (passes through as ?skip=N; lets you walk past the server page size on large children/root collections) |
--summarize | bool | false | Return only id/name/alias fields for item collections |
--take | int | -1 | Take count (passes through as ?take=N; combine with --skip to page) |
--workspace-id | string | — | Workspace ID |
umbraco automate automation runs <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | Walk every page until exhausted (auto-paginates with --take as the page size, default 500; combine with --skip to start partway through). Bounded by an internal 100k-item ceiling. |
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--first-n | int | 0 | Return only the first N items from item collections |
--ids-only | bool | false | Return only item IDs for item collections |
--params | string | — | Query parameters as JSON |
--skip | int | -1 | Skip count (passes through as ?skip=N; lets you walk past the server page size on large children/root collections) |
--summarize | bool | false | Return only id/name/alias fields for item collections |
--take | int | -1 | Take count (passes through as ?take=N; combine with --skip to page) |
umbraco automate automation validate --workspace-id <id> --file <export.json>
POST /automations/import/validate. Checks an export model against a workspace -- step aliases, connection references, binding syntax -- and reports success/errors/warnings for creating/importing a new automation. It does not validate overwriting an existing automation; for edits use 'automation import-update --dry-run' to preflight the update request shape.
| Flag | Type | Default | Description |
|---|---|---|---|
--file | string | — | Path to an export-model JSON file (from 'automation export') |
--json | string | — | Export model as inline JSON |
--workspace-id | string | — | Workspace the definition would be imported into (required) |
umbraco automate catalogue actions
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--workspace-id | string | — | Scope to one workspace |
umbraco automate catalogue connection-types
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate catalogue control-flows
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate catalogue notification-channels
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate catalogue operators
Lists the ConditionOperator values accepted by automation export/import/update payloads. Use the string in the operator field, e.g. {"operator":"NotEquals"}; Deploy .uda files use integer Operator values, exposed here only as a mapping aid.
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate catalogue output-schema <alias>
POST /catalogue/step-types/{alias}/output-schema. Steps with hasDynamicOutputSchema=true shape their output by their settings; pass the intended settings via --json to see the fields available for ${...} bindings in later steps.
| Flag | Type | Default | Description |
|---|---|---|---|
--json | string | — | JSON body; defaults to {"settings":{}} |
umbraco automate catalogue step-types
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--type | string | — | Step type filter |
umbraco automate catalogue triggers
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--workspace-id | string | — | Scope to one workspace |
umbraco automate catalogue webhook-authenticators
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate connection get <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate connection list
| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | Walk every page until exhausted (auto-paginates with --take as the page size, default 500; combine with --skip to start partway through). Bounded by an internal 100k-item ceiling. |
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--first-n | int | 0 | Return only the first N items from item collections |
--ids-only | bool | false | Return only item IDs for item collections |
--params | string | — | Query parameters as JSON |
--skip | int | -1 | Skip count (passes through as ?skip=N; lets you walk past the server page size on large children/root collections) |
--summarize | bool | false | Return only id/name/alias fields for item collections |
--take | int | -1 | Take count (passes through as ?take=N; combine with --skip to page) |
umbraco automate metrics by-automation
| Flag | Type | Default | Description |
|---|---|---|---|
--from | string | — | Start date (ISO) |
--take | int | -1 | Take count |
--to | string | — | End date (ISO) |
--workspace-id | string | — | Workspace ID |
umbraco automate metrics summary
| Flag | Type | Default | Description |
|---|---|---|---|
--from | string | — | Start date (ISO) |
--to | string | — | End date (ISO) |
--workspace-id | string | — | Workspace ID |
umbraco automate run get <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate version-history compare <entity-type> <entity-id> <from-version> <to-version>
umbraco automate version-history get <entity-type> <entity-id> <version>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate version-history list <entity-type> <entity-id>
GET /version-history/{entityType}/{entityId}. entity-type is one of 'version-history types' (e.g. Automation); entity-id is the entity's GUID. The response wraps the versions array with currentVersion/publishedVersion/totalVersions, so it does not follow the standard {items,total} envelope.
| Flag | Type | Default | Description |
|---|---|---|---|
--skip | int | -1 | Skip count (passes through as ?skip=N; lets you walk past the server page size on large children/root collections) |
--take | int | -1 | Take count (passes through as ?take=N; combine with --skip to page) |
umbraco automate version-history types
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate workspace get <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate workspace group get <workspace-id> <group-id>
umbraco automate workspace group list <workspace-id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco automate workspace list
| Flag | Type | Default | Description |
|---|---|---|---|
--all | bool | false | Walk every page until exhausted (auto-paginates with --take as the page size, default 500; combine with --skip to start partway through). Bounded by an internal 100k-item ceiling. |
--fields | string | — | Limit response fields (comma-separated top-level keys) |
--first-n | int | 0 | Return only the first N items from item collections |
--ids-only | bool | false | Return only item IDs for item collections |
--params | string | — | Query parameters as JSON |
--skip | int | -1 | Skip count (passes through as ?skip=N; lets you walk past the server page size on large children/root collections) |
--summarize | bool | false | Return only id/name/alias fields for item collections |
--take | int | -1 | Take count (passes through as ?take=N; combine with --skip to page) |
Safety: Always use
--dry-runfirst. Remove the flag only after verifying the dry-run output.
| Command | Description |
|---|---|
automate approvals decide <run-id> <step-id> | Submit an approval decision for a suspended run step |
automate automation create | Create an automation (draft; publish separately) |
automate automation delete <id> | Permanently delete an automation (including its run history) |
automate automation import --workspace-id <id> --file <export.json> | Import an automation definition as a new automation |
automate automation import-update <id> --file <export.json> | Overwrite an existing automation from an export model |
automate automation publish <id> | Publish the automation's current draft so it goes live |
automate automation re-enable <id> | Re-enable an automation disabled after repeated failures |
automate automation trigger <id> | Trigger a published automation manually |
automate automation unpublish <id> | Unpublish the automation so it stops triggering |
automate automation update <id> | Update an automation |
automate connection create | Create a connection |
automate connection delete <id> | Permanently delete a connection (automations referencing it will fail) |
automate connection test <id> | Test that a connection's credentials work against the external service |
automate connection update <id> | Update a connection |
automate run replay <id> | Replay a run |
automate run resume <id> | Resume a suspended run |
automate run suspend <id> | Suspend a run |
automate run terminate <id> | Terminate a run |
automate version-history rollback <entity-type> <entity-id> <version> | Roll an entity back to a stored version |
automate workspace create | Create a workspace |
automate workspace delete <id> | Permanently delete a workspace |
automate workspace group add <workspace-id> | Add an automation group to a workspace |
automate workspace group remove <workspace-id> <group-id> | Remove an automation group from a workspace |
automate workspace group update <workspace-id> <group-id> | Rename or move an automation group |
automate workspace update <id> | Update a workspace |
umbraco automate approvals decide <run-id> <step-id>
| Flag | Type | Default | Description |
|---|---|---|---|
--comment | string | — | Approval comment |
--dry-run | bool | false | Print the planned request without executing |
--outcome | string | — | Approval outcome: Approved or Rejected |
Safe pattern:
# 1. Dry run first
umbraco automate approvals decide <run-id> <step-id> --dry-run
# 2. Execute
umbraco automate approvals decide <run-id> <step-id>
umbraco automate automation create
POST /automations. Required: alias, name, workspaceId (from 'workspace list'), steps (the action sequence), connections (connection GUIDs used by the steps; [] for none). trigger defines what starts the flow; step aliases come from the catalogue commands.
Creating leaves the automation as a draft -- 'automation publish ' makes it live. For building from an existing automation, prefer the export/validate/import round-trip.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Create payload as JSON |
--print-template | bool | false | Print an annotated JSON skeleton; substitute placeholders before passing to --json |
Safe pattern:
# 1. Dry run first
umbraco automate automation create --dry-run
# 2. Execute
umbraco automate automation create
umbraco automate automation delete <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--force | bool | false | Confirm permanent deletion |
Safe pattern:
# 1. Dry run first
umbraco automate automation delete <id> --dry-run
# 2. Execute
umbraco automate automation delete <id> --force
umbraco automate automation import --workspace-id <id> --file <export.json>
POST /automations/import. Creates a new draft automation from an export model. Run 'automation validate' first -- it performs the same create/import checks without writing.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--file | string | — | Path to an export-model JSON file (from 'automation export') |
--json | string | — | Export model as inline JSON |
--workspace-id | string | — | Workspace to import into (required) |
Safe pattern:
# 1. Dry run first
umbraco automate automation import --workspace-id <id> --file <export.json> --dry-run
# 2. Execute
umbraco automate automation import --workspace-id <id> --file <export.json>
umbraco automate automation import-update <id> --file <export.json>
PUT /automations/{id}/import. Unlike 'automation import' this takes the bare export model as the body (no workspace wrapper -- the automation already lives somewhere) and replaces the automation's definition with it. Use --dry-run as the update preflight path; 'automation validate' targets only new imports and can reject existing automation IDs.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--file | string | — | Path to an export-model JSON file (from 'automation export') |
--json | string | — | Export model as inline JSON |
Safe pattern:
# 1. Dry run first
umbraco automate automation import-update <id> --file <export.json> --dry-run
# 2. Execute
umbraco automate automation import-update <id> --file <export.json>
umbraco automate automation publish <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate automation publish <id> --dry-run
# 2. Execute
umbraco automate automation publish <id>
umbraco automate automation re-enable <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate automation re-enable <id> --dry-run
# 2. Execute
umbraco automate automation re-enable <id>
umbraco automate automation trigger <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate automation trigger <id> --dry-run
# 2. Execute
umbraco automate automation trigger <id>
umbraco automate automation unpublish <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate automation unpublish <id> --dry-run
# 2. Execute
umbraco automate automation unpublish <id>
umbraco automate automation update <id>
PUT /automations/{id}. The update model requires the automation's current version field for optimistic concurrency; --merge-json picks it up from the fetch automatically, making it the safe default for partial edits (e.g. renaming, tweaking one step's settings).
Updating creates a new draft version; 'automation publish ' makes it live.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Full replacement payload as JSON (fields not mentioned are reset by the server) |
--merge-json | string | — | Partial JSON deep-merged into the current resource before update (fields not mentioned are preserved) |
Safe pattern:
# 1. Dry run first
umbraco automate automation update <id> --dry-run
# 2. Execute
umbraco automate automation update <id>
umbraco automate connection create
POST /connections. Required: alias, name, type (from 'catalogue connection-types'), settings (the type's credential fields). Verify it works afterwards with 'connection test'.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Create payload as JSON |
--print-template | bool | false | Print an annotated JSON skeleton; substitute placeholders before passing to --json |
Safe pattern:
# 1. Dry run first
umbraco automate connection create --dry-run
# 2. Execute
umbraco automate connection create
umbraco automate connection delete <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--force | bool | false | Confirm permanent deletion |
Safe pattern:
# 1. Dry run first
umbraco automate connection delete <id> --dry-run
# 2. Execute
umbraco automate connection delete <id> --force
umbraco automate connection test <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate connection test <id> --dry-run
# 2. Execute
umbraco automate connection test <id>
umbraco automate connection update <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Full replacement payload as JSON (fields not mentioned are reset by the server) |
--merge-json | string | — | Partial JSON deep-merged into the current resource before update (fields not mentioned are preserved) |
Safe pattern:
# 1. Dry run first
umbraco automate connection update <id> --dry-run
# 2. Execute
umbraco automate connection update <id>
umbraco automate run replay <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate run replay <id> --dry-run
# 2. Execute
umbraco automate run replay <id>
umbraco automate run resume <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate run resume <id> --dry-run
# 2. Execute
umbraco automate run resume <id>
umbraco automate run suspend <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate run suspend <id> --dry-run
# 2. Execute
umbraco automate run suspend <id>
umbraco automate run terminate <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate run terminate <id> --dry-run
# 2. Execute
umbraco automate run terminate <id>
umbraco automate version-history rollback <entity-type> <entity-id> <version>
POST /version-history/{entityType}/{entityId}/{entityVersion}/rollback. The undo path after an agent edit goes wrong: pick the version from 'version-history list', confirm with 'get' or 'compare', then roll back.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco automate version-history rollback <entity-type> <entity-id> <version> --dry-run
# 2. Execute
umbraco automate version-history rollback <entity-type> <entity-id> <version>
umbraco automate workspace create
POST /workspaces. Required: alias, name, serviceAccountKey (a backoffice user GUID automations run as), userGroups (who may edit), allowedConnections (connection GUIDs automations here may use; [] for none). Use --print-template for the shape.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Create payload as JSON |
--print-template | bool | false | Print an annotated JSON skeleton; substitute placeholders before passing to --json |
Safe pattern:
# 1. Dry run first
umbraco automate workspace create --dry-run
# 2. Execute
umbraco automate workspace create
umbraco automate workspace delete <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--force | bool | false | Confirm permanent deletion |
Safe pattern:
# 1. Dry run first
umbraco automate workspace delete <id> --dry-run
# 2. Execute
umbraco automate workspace delete <id> --force
umbraco automate workspace group add <workspace-id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--name | string | — | Group name (required) |
--parent-id | string | — | Parent group ID for nesting |
Safe pattern:
# 1. Dry run first
umbraco automate workspace group add <workspace-id> --dry-run
# 2. Execute
umbraco automate workspace group add <workspace-id>
umbraco automate workspace group remove <workspace-id> <group-id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--force | bool | false | Confirm permanent deletion |
Safe pattern:
# 1. Dry run first
umbraco automate workspace group remove <workspace-id> <group-id> --dry-run
# 2. Execute
umbraco automate workspace group remove <workspace-id> <group-id> --force
umbraco automate workspace group update <workspace-id> <group-id>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--name | string | — | Group name (required) |
--parent-id | string | — | Parent group ID for nesting |
Safe pattern:
# 1. Dry run first
umbraco automate workspace group update <workspace-id> <group-id> --dry-run
# 2. Execute
umbraco automate workspace group update <workspace-id> <group-id>
umbraco automate workspace update <id>
PUT /workspaces/{id}. The update model requires the workspace's current version field for optimistic concurrency; --merge-json picks it up from the fetch automatically.
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
--json | string | — | Full replacement payload as JSON (fields not mentioned are reset by the server) |
--merge-json | string | — | Partial JSON deep-merged into the current resource before update (fields not mentioned are preserved) |
Safe pattern:
# 1. Dry run first
umbraco automate workspace update <id> --dry-run
# 2. Execute
umbraco automate workspace update <id>
# Browse subcommands
umbraco automate --help
# Inspect a specific endpoint schema
umbraco schema automate.<method>
Use csv-update to batch-modify a property across multiple documents.
Search for a data type, inspect it, and update its configuration.
Walk the content tree to find a document, update a property, and publish.
Search for documents matching a query and publish them.
Call an authenticated raw Umbraco Management API endpoint
Persistent authentication helpers