Org wallet vs. cloud wallet
| Organization Wallet | Cloud Wallet | |
|---|---|---|
| Purpose | Issue credentials, request proofs | Hold and present credentials |
| User type | Organizations (issuers, verifiers) | Individual holders |
| DID scope | Tied to the organization’s agent | Tied to the individual user |
| Provisioning | Agent spin-up with ledger registration | Lightweight wallet creation |
| Wallet type | CLOUD_BASE_WALLET or CLOUD_SUB_WALLET | CLOUD_SUB_WALLET |
CloudWalletType enum defines two wallet types:
CLOUD_BASE_WALLET— the base wallet configured by a platform operatorCLOUD_SUB_WALLET— an individual user’s wallet derived from the base wallet
Cloud wallet capabilities
Receive credentials
Accept credential offers from issuers via OOB invitation URLs or by accepting offers directly with a credential record ID.
Store credentials
Credentials received and accepted are stored in the wallet and can be listed and retrieved by credential record ID.
Present proofs
Respond to proof requests from verifiers by submitting a proof presentation from stored credentials.
Manage connections
Create connection invitations, receive invitations via URL, and manage existing connections by ID.
Manage DIDs
Create DIDs within the cloud wallet and list all DIDs associated with the wallet.
Basic messaging
Send and receive basic DIDComm messages over existing connections.
Creating a cloud wallet
Before creating individual user wallets, a platform operator must configure the base wallet. The base wallet provides the cloud infrastructure that individual (sub) wallets are derived from.Configure the base wallet
Create a user wallet
Each authenticated user can create their own cloud wallet:label field identifies the wallet in DIDComm connections. The authenticated user’s email and ID are automatically bound to the wallet.
The cloud wallet endpoints use the
UserRoleGuard, which requires the user to have the HOLDER user role (UserRole.HOLDER). A user with DEFAULT_USER role must be promoted to HOLDER before creating a cloud wallet.Receiving a credential offer
When an issuer sends a credential via an OOB invitation URL (for example, from a QR code or email link), the holder receives it by submitting the URL to their cloud wallet:Receive the invitation URL
Submit the OOB invitation URL to create a connection:Optional parameters control connection reuse (
reuseConnection), timeout (acceptInvitationTimeoutMs), and the local DID to use for the connection (ourDid).Accept the credential offer
Once the connection is established and the credential offer arrives, accept it:The
autoAcceptCredential field accepts always, contentApproved, or never (from the AutoAccept enum).Responding to a proof request
When a verifier sends a proof request to the holder’s cloud wallet:View the proof request
List all proof presentations or retrieve a specific one by ID:Optional: filter by
threadId.Managing connections
The cloud wallet maintains a list of all DIDComm connections established with issuers and verifiers.Create a connection invitation
Generate a connection invitation that another agent can accept:List all connections
outOfBandId, alias, myDid, theirDid, theirLabel.
Get a specific connection
Managing DIDs in the cloud wallet
Create a DID
Create a DID within the cloud wallet using any supported method:did:indy, add the network field (e.g., "bcovrin:testnet"). For did:web, add the domain field.
An optional 32-character seed can be provided to generate a deterministic key pair. Spaces are not allowed in the seed value.