x-cpod-domain: storage
Storage
Object and record storage primitives — files and small JSON docs.
StorageObject
A blob stored in object storage (MinIO/S3).
REST path
/api/v1/storage/objectsOperations
listgetuploaddeleteSDK
// list — returns only your records; add filters/search:
await client.storage.objects.list()| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| user_id | string | Set only for tier=user — the user who owns this object. |
| tier | string | Isolation sandbox: private (app-scoped), user (user-scoped cross-app), shared (tenant-wide). |
| path | string | Relative path as supplied by the SDK consumer (e.g. config/settings.json). |
| minio_key | string | Actual MinIO object key — resolved by cpod-backend, never trusted from client. |
| size | number | Object size in bytes. |
| content_type | string | MIME content type (e.g. application/json, image/png). |
| checksum | string | SHA-256 hex digest of the object bytes. |
StorageRecord
A small JSON record keyed by app + namespace.
REST path
/api/v1/storage/recordsOperations
listgetputdeleteSDK
// list — returns only your records; add filters/search:
await client.storage.records.list()| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| user_id | string | Set only for tier=user — the user who owns this record. |
| tier | string | Isolation sandbox: private (app-scoped), user (user-scoped cross-app), shared (tenant-wide). |
| collection | string | Collection name as supplied by the SDK consumer. cpod-backend namespaces it by tenantId + appId. |
| key | string | Document key within the collection. |
| value | json | Arbitrary JSON document stored as the record's payload. |
| ttl | number | TTL in seconds. A MongoDB TTL index removes the document when the TTL elapses. Null means no expiry. |
| version | number | Optimistic concurrency counter — incremented on every update. |