Create wallet unit
POST/v2/config/digital-wallet/openid/wallet-provider/wallet-unit
Registers a new wallet unit with the wallet provider. The wallet provider uses this registration to issue a Wallet Unit Attestation (WUA) to the wallet instance. The organisation must have the wallet provider capability enabled. To enable it, use PUT /v2/config/digital-wallet/openid.
The response holds the assertionToken of the new wallet unit. This token is secret. Send it only to the wallet instance.
Request
Header Parameters
Optional. Unique identifier of the sandbox organisation to use for this request. When you send this header, the service runs the operation in the context of the named sandbox organisation, that is, against the wallet of that sandbox organisation and not against the main wallet of the organisation. Leave the header out to use the main wallet.
The service reads this header only when you authenticate with a bearer access token. When you authenticate with an API key, the service takes the sandbox organisation from the API key and ignores this header. To run an API-key call in a sandbox organisation, bind the key to the sandbox organisation with PUT /v2/config/admin/apikey/{apiKeyId}/sandbox-org instead.
X-SubwalletId is the deprecated name of this header. The service continues to accept it, but X-SandboxOrgId wins if you send both headers.
The sandbox organisation must exist, must belong to your organisation and must be deployed. An unknown identifier, an identifier of a sandbox organisation that is not deployed, and an identifier that belongs to a different organisation all make the call fail with HTTP 400.
- application/json
Body
required
Details of the wallet unit to register.
Client identifier for the new wallet unit (DID or URL).
URL endpoint of the wallet instance. Optional.
clientPublicKey objectrequired
Public key JWK of the wallet instance for cryptographic verification. The service refuses the request when this object is empty.
Public key JWK of the wallet instance for cryptographic verification. The service refuses the request when this object is empty.
Default value: false
Set to true to authorize this wallet unit upon creation. Only an authorised wallet unit can get a Wallet Unit Attestation.
Responses
- 201
- 400
- 401
- 500
The wallet provider registered the wallet unit.
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
walletUnit objectrequired
The wallet unit record that the wallet provider created.
Unique identifier for the wallet unit record. Use this value as the walletUnitId path parameter.
Client identifier of the wallet instance, typically a DID or URL. Used to identify the wallet during OID4VCI and OpenID4VP protocol interactions.
URL endpoint of the wallet instance, used for direct communication.
clientPublicKey objectnullablerequired
Public key JWK of the wallet instance, used to verify Wallet Unit Attestation Proof of Possession.
Public key JWK of the wallet instance, used to verify Wallet Unit Attestation Proof of Possession.
When true, this wallet unit is authorized to interact with the Wallet Provider's services.
Client assertion JWT of the wallet unit, used for OAuth 2.0 client authentication. This value is secret. Treat it as a credential and do not write it to logs.
Type of the client assertion token.
Unix timestamp (in seconds) when this wallet unit was registered.
Unix timestamp (in seconds) when this wallet unit record was last modified.
Device platform of the wallet unit. The known values are ios, android and organisation. The service does not check the value.
Device integrity token supplied by the wallet unit during registration, for example an App Attest or Play Integrity token.
Identifier of the cryptographic key that the wallet unit registered for attestation.
walletUnitMetadata objectnullablerequired
Additional metadata that the wallet unit supplied during registration.
Additional metadata that the wallet unit supplied during registration.
{
"walletUnit": {
"id": "string",
"clientId": "string",
"clientUrl": "string",
"clientPublicKey": {},
"isAuthorised": true,
"assertionToken": "string",
"assertionTokenType": "string",
"createdAt": 0,
"updatedAt": 0,
"walletUnitDevicePlatform": "ios",
"walletUnitIntegrityToken": "string",
"walletUnitKeyId": "string",
"walletUnitMetadata": {}
}
}
The request body is not valid, clientPublicKey is empty, or the organisation is not a wallet provider.
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
Unauthorized
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}
Internal server error
Response Headers
- application/json
- Schema
- Example (from schema)
Schema
{
"errorCode": 400,
"errorDescription": "Bad input parameter"
}