Overview
Resource operations are the everyday CLI commands for platform metadata:| Command | Purpose |
|---|---|
kdx api-resources | Discover resource types from the connected server |
kdx get | List resources or get one resource |
kdx describe | Render a detailed view of one resource |
kdx validate -f | Validate a resource YAML file against the live API schema |
kdx apply -f | Create or update a resource from YAML |
kdx delete | Delete one resource |
kdx run | Discover and call resource-specific API operations |
kdx create command. Use kdx apply -f <file> for create-or-update.
Discover Resources
--refresh after a platform upgrade or when a new resource type is missing from the local cache.
Current resource names you should use in new metadata include:
| Resource | Scope | Typical use |
|---|---|---|
activity-plan / activity-plans | Organization | Reusable Activity workflow definitions |
data-definition / data-definitions | Organization | Business data models and validation behavior |
data-form / data-forms | Organization | Task review forms |
task-template / task-templates | Organization | Human review work created by Activities |
task-status / task-statuses | Organization | Task status definitions bound into projects |
document-store / document-stores | Organization | Document storage and intake |
data-store / data-stores | Organization | Structured platform data stores |
module / modules | Organization | Processing modules |
service-bridge / service-bridges | Organization | External system integrations |
knowledge-set / knowledge-sets | Organization or project | Reusable knowledge collections |
project-template / project-templates | Organization | Reusable project scaffolds |
project / projects | Organization | Project workspace definitions |
intake / intakes | Organization | Upload and intake endpoints |
trigger / triggers | Project | Event bindings for Activity start behavior |
Read Resources
List resources:kdx get also supports --filter-name when you have presentation filters configured.
Interactive Tables
Whenkdx get <resource> runs in a terminal, it opens an interactive table when possible.
Common controls:
| Key | Action |
|---|---|
/ | Filter in the table |
Tab | Open the query panel |
r | Refresh |
Enter | Open row details |
PgUp / PgDn | Page through results |
Home / End | Move to first or last row |
-o json, -o yaml, or pipe output to disable table-oriented behavior for automation.
Filter And Sort Syntax
kdx get sends filters to the platform API. The current filter language is SpringFilter.
| Operator | Meaning | Example |
|---|---|---|
: | equals | slug:'invoice' |
! | not equals | status!'ARCHIVED' |
~ | like or contains | name~'*invoice*' |
> | greater than | createdOn>'2026-01-01' |
< | less than | updatedOn<'2026-05-01' |
and | both conditions | status:'ACTIVE' and slug~'*invoice*' |
or | either condition | status:'FAILED' or status:'PENDING' |
field:direction:
Validate YAML
Validate a resource file without sending changes:- The file parses as YAML.
- The file declares a
type. - The type exists in the connected platform’s OpenAPI resource discovery.
- Required fields and known schema properties match the API schema where available.
sync push:
Apply YAML
Apply creates or updates the resource described by a YAML file:type:
Supplying type and org with flags
If a file omits type (or, for slug-based resources, orgSlug), pass them on the command line instead of editing the file. This is the common case for files produced by kdx sync pull, which are intentionally untyped and organization-agnostic:
--typetakes the same value you would put in atype:field (for exampleknowledge-set). It overrides the file’stypewhen both are present.--org-slugsupplies the organization used to resolve the resource (scheme://org-slug/slug) and, when creating a new resource, to set its owning organization. It overrides the file’sorgSlug.
Module Apply
Fortype: module, kdx apply can upload both metadata and implementation content.
Current module metadata should use metadata.moduleRuntimeParameters:
metadata.build:
metadata.script or metadata.scriptPath. Inline-script-only modules do not need implementation upload.
Delete Resources
Dynamic Operations
Usekdx run to list and call specialized API operations:
Production Safety
Profiles can be marked as production:--skip-production-confirm only when the pipeline has its own approval gate:
When To Use Sync Instead
Use one-off resource operations for inspection, debugging, and small edits. Usekdx sync when:
- A project has multiple related resources.
- You need pull request review.
- You promote from dev to staging to production.
- Resources reference each other through project bindings.
- You need conflict detection and deterministic push ordering.
Troubleshooting
Resource Type Not Found
data-definition instead of older naming.
Apply Cannot Resolve A Resource
Check that the file includestype, slug, and any required orgSlug or projectSlug values:
type or orgSlug — for example a file pulled via kdx sync — supply them with flags instead of editing the file:
Validation Fails On Unknown Fields
The connected server schema is authoritative. Refresh discovery and compare the YAML to the current API shape:Changes Are Overwritten
For metadata repositories, runkdx sync pull before editing and commit .sync-state/ so conflict detection can protect against stale pushes.