Skip to main content

Vaults

Vaults are ERC-1155 tokens that contain digital twin data and manage access permissions.

Structure

graph TD
A[Vault] --> B[Streams]
B --> C[Data Attachments]
A --> D[Permissions]
A --> E[Metadata]

Key Features

Ownership

  • Transferable NFT ownership
  • Multi-chain deployment
  • Batch operations support

Permission System

Vault permission levels:

LevelMeaning
OWNERFull control, including ownership
ADMINFull control
EDITORModify content
VIEWERRead-only
CUSTOMGranular grant, used as a prerequisite for stream-level access

Streams use a narrower set — ADMIN, EDITOR, VIEWER — and assets use OWNER, ADMIN, EDITOR, VIEWER.

note

Granting a stream permission to a collaborator who has no access to the parent vault first requires an on-chain vault CUSTOM grant. The platform issues it as part of the grant flow.

Permissions settle on-chain asynchronously. A grant moves through FILEDGR_RECEIVEDFILEDGR_REVIEWEDFILEDGR_APPLIEDDLT_COMPLETEDFILEDGR_COMPLETED, so a freshly granted permission is not immediately effective.

Manage them over REST with POST, GET and DELETE on /vaults/{vault_id}/permissions, and the equivalent routes under /streams/{stream_id}/permissions and /assets/{asset_id}/permissions.

Metadata Storage

  • IPFS-based metadata
  • Customizable URI schema
  • Version tracking

Managing vaults

Vaults are managed over the REST API:

ActionEndpoint
CreatePOST /vaults
ListGET /vaults
Fetch oneGET /vaults/{vault_id}
Update name/description/archivedPUT /vaults/{vault_id}
Confirm or skip the image uploadPUT /vaults/{vault_id}/images
Add a streamPOST /vaults/{vault_id}/streams
List attachmentsGET /vaults/{vault_id}/attachments
Grant / revoke / list permissionsPOST / DELETE / GET /vaults/{vault_id}/permissions

See the API reference for request and response shapes, and the Quick Start for a worked example.

On-chain, transferVaultOwnership and the batch permission operations are available directly on the contract — see Smart Contract Integration.