Skip to content

Working with Resources

This page covers day-to-day resource operations. Make sure you understand Core Concepts first.

Prerequisites

declarest context current       # confirm active context
declarest context check         # validate context config
declarest server check          # confirm API connectivity

Save resources

Import remote state into the local repository:

declarest resource save /corporations/acme

Variants:

# overwrite existing local resource
declarest resource save /corporations/acme --force

# detect and mask secrets during save
declarest resource save /corporations/acme --secret-attributes

# save from explicit payload instead of remote read
cat payload.json | declarest resource save /corporations/acme --payload -

Save collections

# fan out list items into individual resource directories (default)
declarest resource save /customers/

# store collection payload as one file
declarest resource save /customers/ --mode single

Wildcard save for bulk discovery

Use _ wildcard segments to expand remote collections:

declarest resource save /admin/realms/_/clients/_

This discovers and saves all concrete resources matching the pattern.

Review local state

declarest resource get --source repository /corporations/acme
declarest resource list --source repository /customers/

Metadata-backed defaults

When many sibling resources share the same fields, extract shared values into metadata-managed defaults so resource.<ext> keeps only explicit overrides:

# preview what defaults would be inferred
declarest resource defaults infer /corporations/acme

# persist inferred defaults
declarest resource defaults infer /corporations/acme --save

# inspect current defaults
declarest resource defaults get /corporations/acme

# edit defaults
declarest resource defaults edit /corporations/acme

# check if current defaults match what would be inferred today
declarest resource defaults infer /corporations/acme --check

Managed-server probing

Probe server-added defaults (creates/removes temporary resources):

declarest resource defaults infer /corporations/acme --managed-server --yes
declarest resource defaults infer /corporations/acme --managed-server --wait 2s --yes

After defaults exist, compact payloads to just the non-default values:

declarest resource get --source repository /corporations/acme --prune-defaults
declarest resource save /corporations/acme --prune-defaults --force

Diff and apply

Compare desired vs real state

declarest resource diff /corporations/acme
declarest resource diff /corporations --recursive
declarest resource diff /corporations --recursive --list    # paths only
declarest resource diff /corporations/acme --color always

Use --list for drifting paths only, or -o json|yaml for structured output.

Apply desired state to the API

declarest resource apply /corporations/acme
declarest resource apply /corporations/acme --refresh     # re-read after write
declarest resource apply /customers/ --recursive

Edit, copy, and delete

# open resource in editor
declarest resource edit /corporations/acme

# copy a resource
declarest resource copy /corporations/acme /corporations/acme-copy

# delete from remote API
declarest resource delete /corporations/acme

Create and update

# create a new resource on the remote API from local state
declarest resource create /corporations/acme

# update an existing resource
declarest resource update /corporations/acme

# recursive operations
declarest resource create /customers/ --recursive
declarest resource update /customers/ --recursive

Inspect before you mutate

Use these commands to understand what DeclaREST will do before making changes.

Confirm target path

declarest resource list --source repository /customers/
declarest resource list --source remote-server /customers/
declarest resource list --source remote-server /customers/ --output text

Inspect metadata

# effective metadata (defaults + merged overrides)
declarest resource metadata get /corporations/acme

# only authored overrides
declarest resource metadata get /corporations/acme --overrides-only

Render operation specs

See the exact HTTP request that would be sent:

declarest resource metadata render /corporations/acme get
declarest resource metadata render /corporations/acme update
declarest resource metadata render /customers/ list

Explain the reconciliation plan

declarest resource explain /corporations/acme

Inspect payload with metadata context

declarest resource get /corporations/acme --show-metadata

Check server connectivity

declarest server check
declarest server get base-url
declarest server get token-url
declarest server get access-token    # OAuth2 only

Enable debug output

declarest -d resource get /corporations/acme

Common diagnosis checklist

Symptom Check
Wrong endpoint resource.remoteCollectionPath and operation path
Wrong ID/alias in URL resource.id and resource.alias
List returns extra objects add list.payload.jqExpression filter
Diff shows noise tune compare suppress/filter rules
Write payload rejected inspect create/update payload transforms
Command fails silently run with -d for debug output