Skip to content

cloud holds

NAME

phyware cloud holds — place and release legal holds that block data retention.

SYNOPSIS

phyware cloud holds list    [OPTIONS] --tenant <TENANT_ID> [--include-released]
phyware cloud holds create  [OPTIONS] --tenant <TENANT_ID> [--source <SOURCE_ID>] --reason <TEXT>
phyware cloud holds release [OPTIONS] --tenant <TENANT_ID> <HOLD_ID>

DESCRIPTION

While a legal hold is active, the retention job deletes none of the events it covers, whatever the tenant's policy says. A hold covers a whole tenant, or one source with --source. Archiving continues, so the lake stays complete.

Releasing a hold keeps its record. The next retention run removes the events the hold was keeping. Under an archive policy it removes only events that were archived.

All commands require the admin:tenants scope and are written to the audit log.

OPTIONS

Flag Type Required Default Env
--url string No http://localhost:8000 PHYCLOUD_URL
--api-key string No — PHYCLOUD_API_KEY
--output enum No table —
Flag Type Required Description
--tenant string Yes Tenant ID
--source string No (create) Hold only this source
--reason string Yes (create) Why the hold exists
--include-released bool No (list) Include released holds

ARGUMENTS

Name Required Description
HOLD_ID Yes (release) Hold to release

INPUT

None.

OUTPUT

Field Type Description
hold_id string Hold identifier
source_id string Held source, or null for the whole tenant
reason string Why the hold exists
created_at string When it was placed
released_at string When it was released, or null

EXIT CODES

Code Meaning
0 Success
1 Generic / connection error
2 Authentication / authorisation error
3 Resource not found
4 Validation error
5 Server-side error

EXAMPLES

# Hold everything for a tenant
phyware cloud holds create --tenant acme --reason "Case 2026-114"

# Hold one robot's data
phyware cloud holds create --tenant acme --source ROBOT-001 --reason "Incident 42"

# List active holds
phyware cloud holds list --tenant acme

# Release a hold
phyware cloud holds release --tenant acme hold_3f9a

# Capture a hold id in a script
HID=$(phyware cloud holds create --tenant acme --reason "Audit" -o json | jq -r '.hold_id')

AGENT NOTES

Place a hold before running retention on data that may be needed as evidence. A tenant-level hold stops retention runs entirely (status: held). Evidence lockers are separate: sealed lockers keep their own copy of events and survive retention without a hold.

SEE ALSO

ERRORS

Code Message Remediation
FORBIDDEN Insufficient scope Use a key with admin:tenants
NOT_FOUND No active legal hold with that id Check HOLD_ID
VALIDATION reason is required Pass --reason