with one click
umbraco-datatype
Data type operations
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
Data type operations
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
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
| name | umbraco-datatype |
| description | Data type operations |
| metadata | {"version":"0.4.8","requires":{"bins":["umbraco"],"skills":["umbraco-shared"]}} |
PREREQUISITE: Read
../umbraco-shared/SKILL.mdfor auth, global flags, and security rules.
umbraco datatype <command> [flags]
| Command | Description |
|---|---|
datatype block list <datatypeId> | List allowed blocks on a Block List / Block Grid datatype |
datatype extensions <id> | List enabled data type extension aliases |
datatype get <id> | Get data type by ID |
datatype is-used <id> | Check whether a data type is in use |
datatype list | List data types (paginated; --skip/--take/--all) |
datatype root | Get root data types (paginated; --skip/--take/--all) |
datatype search | Search data types |
umbraco datatype block list <datatypeId>
umbraco datatype extensions <id>
umbraco datatype get <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--fields | string | — | Limit response fields (comma-separated top-level keys) |
umbraco datatype is-used <id>
umbraco datatype 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 datatype root
| 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 datatype search
| Flag | Type | Default | Description |
|---|---|---|---|
--editor-alias | string | — | Filter by property editor alias, e.g. Umbraco.TextBox |
--params | string | — | Query parameters as JSON |
--query | string | — | Search query |
--skip | int | 0 | Pagination offset |
--take | int | 100 | Pagination page size |
Safety: Always use
--dry-runfirst. Remove the flag only after verifying the dry-run output.
| Command | Description |
|---|---|
datatype add-extension <id> <extension-alias> | Add an extension alias to the datatype extensions array |
datatype add-value <id> | Append a string value to a datatype array setting |
datatype block add <datatypeId> | Register an element type as an allowed block |
datatype block remove <datatypeId> | Unregister an element type from a Block List / Block Grid |
datatype block update <datatypeId> | Update an existing block's properties (partial; flags only mutate what you pass) |
datatype create | Create data type |
datatype remove-extension <id> <extension-alias> | Remove an extension alias from the datatype extensions array |
datatype remove-value <id> | Remove a string value from a datatype array setting |
datatype update <id> | Update data type |
umbraco datatype add-extension <id> <extension-alias>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco datatype add-extension <id> <extension-alias> --dry-run
# 2. Execute
umbraco datatype add-extension <id> <extension-alias>
umbraco datatype add-value <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--alias | string | — | Datatype array alias to update |
--dry-run | bool | false | Print the planned request without executing |
--value | string | — | String value to append |
Safe pattern:
# 1. Dry run first
umbraco datatype add-value <id> --dry-run
# 2. Execute
umbraco datatype add-value <id>
umbraco datatype block add <datatypeId>
Appends a block to the datatype's blocks array. Idempotent: if a block with the same --content-element-type is already present, no PUT is sent.
BlockGrid: --allow-at-root and --allow-in-areas default to true so the block is actually placeable after registration (server-side both default to false when omitted, which would register a block that's invisible to editors). Pass --allow-at-root=false or --allow-in-areas=false to override. --group support over BlockGrid's blockGroups array is a deferred follow-up.
BlockList: --allow-at-root and --allow-in-areas are ignored (those flags only apply to Block Grid).
| Flag | Type | Default | Description |
|---|---|---|---|
--allow-at-root | bool | true | BlockGrid only: allow placing the block at the grid's root level (default true). Ignored for BlockList. |
--allow-in-areas | bool | true | BlockGrid only: allow placing the block inside areas of other blocks (default true). Ignored for BlockList. |
--content-element-type | string | — | GUID of the element type to register as a block (required) |
--dry-run | bool | false | Validate the resulting payload without writing it |
--editor-size | string | — | Overlay size: small |
--force-hide-content-editor | bool | false | Hide the content editor in the overlay (settings-only blocks) |
--label | string | — | Optional label shown in the block picker; defaults to the element type's name |
--settings-element-type | string | — | GUID of the element type to use for the block's settings overlay (optional) |
--thumbnail | string | — | Optional path/URL to a thumbnail image |
Safe pattern:
# 1. Dry run first
umbraco datatype block add <datatypeId> --dry-run
# 2. Execute
umbraco datatype block add <datatypeId>
umbraco datatype block remove <datatypeId>
Idempotent: if no block with --content-element-type is registered, no PUT is sent.
| Flag | Type | Default | Description |
|---|---|---|---|
--content-element-type | string | — | GUID of the element type to unregister (required) |
--dry-run | bool | false | Validate the resulting payload without writing it |
Safe pattern:
# 1. Dry run first
umbraco datatype block remove <datatypeId> --dry-run
# 2. Execute
umbraco datatype block remove <datatypeId>
umbraco datatype block update <datatypeId>
Mutates a single existing block on a Block List / Block Grid datatype. The deliberate difference from 'block add': if no block with --content-element-type is present, this errors instead of creating one.
Partial-update semantics: only flags you pass on the command line are applied. Unpassed flags leave that property untouched, so 'block update
Clearing optional fields: pass an empty string. --thumbnail "" and --settings-element-type "" remove those fields entirely. --label "" is also accepted and removes the override label (the editor falls back to the element type's name).
Idempotent: if the resulting block is byte-identical to the current one, no PUT is sent.
BlockGrid: --allow-at-root and --allow-in-areas are honored when explicitly passed. Both are ignored for BlockList (mirror of 'block add').
| Flag | Type | Default | Description |
|---|---|---|---|
--allow-at-root | bool | true | BlockGrid only: allow placing the block at the grid's root level. Ignored for BlockList. |
--allow-in-areas | bool | true | BlockGrid only: allow placing the block inside areas of other blocks. Ignored for BlockList. |
--content-element-type | string | — | GUID of the block to update (required; identity key — same as 'block add' / 'block remove') |
--dry-run | bool | false | Validate the resulting payload without writing it |
--editor-size | string | — | Overlay size: small |
--force-hide-content-editor | bool | false | Hide the content editor in the overlay (settings-only blocks) |
--label | string | — | New block label. Pass empty string to clear (editor falls back to element type name). |
--settings-element-type | string | — | Set the settings overlay element type. Pass empty string to clear. |
--thumbnail | string | — | Path/URL to a thumbnail image. Pass empty string to clear. |
Safe pattern:
# 1. Dry run first
umbraco datatype block update <datatypeId> --dry-run
# 2. Execute
umbraco datatype block update <datatypeId>
umbraco datatype create
POST /data-type. Editor settings go in the values array ([{alias, value}, ...]); a configuration map ({alias: value}) is accepted as a convenience and converted to values automatically.
| 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 datatype create --dry-run
# 2. Execute
umbraco datatype create
umbraco datatype remove-extension <id> <extension-alias>
| Flag | Type | Default | Description |
|---|---|---|---|
--dry-run | bool | false | Print the planned request without executing |
Safe pattern:
# 1. Dry run first
umbraco datatype remove-extension <id> <extension-alias> --dry-run
# 2. Execute
umbraco datatype remove-extension <id> <extension-alias>
umbraco datatype remove-value <id>
| Flag | Type | Default | Description |
|---|---|---|---|
--alias | string | — | Datatype array alias to update |
--dry-run | bool | false | Print the planned request without executing |
--value | string | — | String value to remove |
Safe pattern:
# 1. Dry run first
umbraco datatype remove-value <id> --dry-run
# 2. Execute
umbraco datatype remove-value <id>
umbraco datatype update <id>
Updates a data type with the uniform CLI update contract:
--json full replacement; the server resets any field not mentioned (including editorUiAlias, items, multiple) --merge-json fetches the current data type, deep-merges the patch, and PUTs the result; fields not mentioned are preserved
Before v0.4.0 --json silently behaved like --merge-json on this resource. Pass --merge-json for partial edits. A configuration map ({alias: value}) is accepted as a convenience and converted to the values array the API expects.
| 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 datatype update <id> --dry-run
# 2. Execute
umbraco datatype update <id>
# Browse subcommands
umbraco datatype --help
# Inspect a specific endpoint schema
umbraco schema datatype.<method>