---
id: config-list-digital-wallet-open-id-individual-wallet-unit
title: "List individual wallet units"
description: "Lists the individual wallet units of the wallet provider, newest first, one page at a time. Filter by device platform, by authorisation or by client id (`holderDid`). A deleted wallet unit is not listed. Each wallet unit has the number of its rows in the wallet unit attestation issuance history."
sidebar_label: "List individual wallet units"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/openid4vc-api/igrant-io-api-documentation
custom_edit_url: null
---

> **Build this with an AI coding agent.** Install the iGrant.io Agent Skills, then ask your agent to build the integration:
>
> ```bash
> npx skills add L3-iGrant/skills
> ```


import ApiTabs from "@theme/ApiTabs";
import DiscriminatorTabs from "@theme/DiscriminatorTabs";
import MethodEndpoint from "@theme/ApiExplorer/MethodEndpoint";
import SecuritySchemes from "@theme/ApiExplorer/SecuritySchemes";
import MimeTabs from "@theme/MimeTabs";
import ParamsItem from "@theme/ParamsItem";
import ResponseSamples from "@theme/ResponseSamples";
import SchemaItem from "@theme/SchemaItem";
import SchemaTabs from "@theme/SchemaTabs";
import Markdown from "@theme/Markdown";
import OperationTabs from "@theme/OperationTabs";
import TabItem from "@theme/TabItem";

<h1 className={"openapi__heading"}>List individual wallet units</h1>

<MethodEndpoint method={"get"} path={"/v4/config/ows/wallet-provider/individual-wallet-units"}></MethodEndpoint>



Lists the individual wallet units of the wallet provider, newest first, one page at a time. Filter by device platform, by authorisation or by client id (`holderDid`). A deleted wallet unit is not listed. Each wallet unit has the number of its rows in the wallet unit attestation issuance history.

A bad `offset` or `limit` counts as not sent (0 and 10). An `offset` after the last wallet unit starts the page at the last one.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Query Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Gives only the individual wallet units of this device platform. Not sent: no filter.","in":"query","name":"platform","required":false,"schema":{"type":"string","enum":["ios","android"]},"example":"ios"}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"`true` gives only the authorised wallet units, `false` only the wallet units that are not authorised. Another value or not sent: no filter.","in":"query","name":"isAuthorised","required":false,"schema":{"type":"boolean"},"example":true}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"Gives only the individual wallet unit with this `clientId` (exact match), usually the DID of the wallet. Not sent: no filter.","in":"query","name":"holderDid","required":false,"schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"Number of records to skip for pagination. A negative or unreadable value falls back to `0`.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"limit","in":"query","description":"Maximum number of records to return per page.","required":false,"schema":{"type":"integer","default":10}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

A page of individual wallet units.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"individualWalletUnit"} required={true} schemaName={"object[]"} qualifierMessage={undefined} schema={{"type":"array","nullable":true,"description":"The individual wallet units of the page. An empty array when no wallet unit matches.","items":{"allOf":[{"type":"object","title":"IndividualWalletUnit","description":"An individual wallet unit: the wallet of a natural person in a mobile app on one iOS or Android device. The service always sends every member; a member without a value is an empty string, `0`, `false` or `null`.","properties":{"id":{"type":"string","format":"uuid","description":"The id of the wallet unit: the `walletUnitId` of the individual wallet unit operations and of the history filter."},"clientId":{"type":"string","description":"The client id of the wallet unit, usually its DID: the `sub` of its Wallet Unit Attestations. It is unique for the wallet provider."},"clientUrl":{"type":"string","description":"The credential offer URL of the wallet, from its last WUA request (`credential_offer_url`) or from the registration. Empty when the wallet sent none."},"clientPublicKey":{"type":"object","additionalProperties":true,"nullable":true,"description":"The public key (JWK) of the wallet unit: from the registration, then the key of the client assertion of its last single WUA request."},"isAuthorised":{"type":"boolean","description":"`true`: the wallet unit can get Wallet Unit Attestations. `false`: the wallet provider refuses its WUA requests."},"devicePlatform":{"type":"string","description":"The device platform of the wallet unit. The wallet provider refuses a WUA request from another platform.","enum":["ios","android"],"example":"ios"},"deviceIntegrityToken":{"type":"string","description":"The device integrity token of the last WUA request (header `X-Wallet-Unit-Integrity-Token`): Play Integrity on Android, App Attest on iOS. Empty before the first request."},"deviceKeyId":{"type":"string","description":"The device key id that the wallet sent (header `X-Wallet-Unit-KeyID`), for example the App Attest key id on iOS. Empty when the wallet sent none."},"assertionToken":{"type":"string","description":"The client assertion (a JWT, RFC 7523) of the last WUA request of the wallet. Empty for a wallet unit that sent no request yet. Treat it as a secret: do not write it to logs."},"assertionTokenType":{"type":"string","description":"The type of `assertionToken`: `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`, or empty."},"clientMetadata":{"type":"object","additionalProperties":true,"nullable":true,"description":"The client metadata that the wallet sent in its last WUA request (`client_metadata`), for example its name."},"attestationStatus":{"type":"string","description":"Where the wallet unit is: `unauthorised` or `authorised` (no Wallet Unit Attestation yet; registered without or with authorisation, read `isAuthorised` for the current value), `active` (it got WUAs) or `revoked` (a revocation left it no active WUA). The status does not change when the WUAs expire: compare `attestationExpiresAt` with the current time.","enum":["","unauthorised","authorised","active","revoked"],"example":"active"},"attestationExpiresAt":{"type":"integer","format":"int64","description":"When the newest Wallet Unit Attestation of the wallet unit expires (Unix time in seconds). `0` before the first WUA."},"createdAt":{"type":"integer","format":"int64","description":"When the wallet provider registered the wallet unit (Unix time in seconds)."},"updatedAt":{"type":"integer","format":"int64","description":"When the wallet unit last changed (Unix time in seconds)."}},"required":["id","clientId","clientUrl","clientPublicKey","isAuthorised","devicePlatform","deviceIntegrityToken","deviceKeyId","assertionToken","assertionTokenType","clientMetadata","attestationStatus","attestationExpiresAt","createdAt","updatedAt"]},{"type":"object","properties":{"totalCountOfCredentialHistory":{"type":"integer","format":"int64","description":"The rows of the wallet unit in the wallet unit attestation issuance history.","example":3}},"required":["totalCountOfCredentialHistory"]}]}}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>pagination</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The position of the page in the list.

</div><SchemaItem collapsible={false} name={"currentPage"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Current page number","example":1}}></SchemaItem><SchemaItem collapsible={false} name={"totalItems"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of items available","example":25}}></SchemaItem><SchemaItem collapsible={false} name={"totalPages"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of pages based on limit","example":3}}></SchemaItem><SchemaItem collapsible={false} name={"limit"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Number of items per page","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"hasPrevious"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a previous page","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"hasNext"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates if there's a next page","example":true}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"individualWalletUnit\": [\n    {\n      \"id\": \"3fa85f64-5717-4562-b3fc-2c963f66afa6\",\n      \"clientId\": \"string\",\n      \"clientUrl\": \"string\",\n      \"clientPublicKey\": {},\n      \"isAuthorised\": true,\n      \"devicePlatform\": \"ios\",\n      \"deviceIntegrityToken\": \"string\",\n      \"deviceKeyId\": \"string\",\n      \"assertionToken\": \"string\",\n      \"assertionTokenType\": \"string\",\n      \"clientMetadata\": {},\n      \"attestationStatus\": \"active\",\n      \"attestationExpiresAt\": 0,\n      \"createdAt\": 0,\n      \"updatedAt\": 0,\n      \"totalCountOfCredentialHistory\": 3\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 25,\n    \"totalPages\": 3,\n    \"limit\": 10,\n    \"hasPrevious\": false,\n    \"hasNext\": true\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"individualWalletUnit\": [\n    {\n      \"id\": \"6bf3bd97-50ba-4fec-9a78-1076b5627b5a\",\n      \"clientId\": \"wallet-unit-4f2a9c71\",\n      \"clientUrl\": \"https://wallet.example.com/app\",\n      \"clientPublicKey\": {\n        \"kty\": \"EC\",\n        \"crv\": \"P-256\",\n        \"x\": \"Nbii9ohvDybKefFdAx4QfqqUAKPyZnihqOHDp3Z2jEA\",\n        \"y\": \"DeBO5yAoahfS3HqfDmvrVsXvCzDrco4WLJ5wVIvTZ5s\"\n      },\n      \"isAuthorised\": true,\n      \"clientMetadata\": null,\n      \"attestationStatus\": \"authorised\",\n      \"attestationExpiresAt\": 0,\n      \"createdAt\": 1794149364,\n      \"updatedAt\": 1794149365,\n      \"devicePlatform\": \"android\",\n      \"deviceIntegrityToken\": \"\",\n      \"deviceKeyId\": \"\",\n      \"assertionToken\": \"\",\n      \"assertionTokenType\": \"\",\n      \"totalCountOfCredentialHistory\": 0\n    },\n    {\n      \"id\": \"90f0aa4e-c570-4147-973b-3a642573a0ae\",\n      \"clientId\": \"urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs\",\n      \"clientUrl\": \"\",\n      \"clientPublicKey\": {\n        \"kty\": \"EC\",\n        \"crv\": \"P-256\",\n        \"x\": \"TBAyLHPlOAO3G0CJOeC7d-qQFtwpevvqizOjtjUEbLE\",\n        \"y\": \"4d_a0oRgxHvU3d3LaQaskdTPRBe5xX3O25mwzjSxzKY\"\n      },\n      \"isAuthorised\": true,\n      \"clientMetadata\": {},\n      \"attestationStatus\": \"active\",\n      \"attestationExpiresAt\": 1794181014,\n      \"createdAt\": 1794086995,\n      \"updatedAt\": 1794137814,\n      \"devicePlatform\": \"android\",\n      \"deviceIntegrityToken\": \"<device-integrity-token>\",\n      \"deviceKeyId\": \"\",\n      \"assertionToken\": \"<client-assertion>\",\n      \"assertionTokenType\": \"urn:ietf:params:oauth:client-assertion-type:jwt-bearer\",\n      \"totalCountOfCredentialHistory\": 2\n    }\n  ],\n  \"pagination\": {\n    \"currentPage\": 1,\n    \"totalItems\": 14,\n    \"totalPages\": 7,\n    \"limit\": 2,\n    \"hasPrevious\": false,\n    \"hasNext\": true\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The organisation is not the wallet provider (also without a deployment).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

The `Authorization` header is missing, or the API key or token is not valid.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"403"} value={"403"}><div>

The API key or token does not allow this call. An API key without the scope of the operation gets the older body `{"Code", "Message"}`. An `X-SandboxOrgId` header that names another sandbox organisation than the one of the API key gets `{"errorCode", "errorDescription"}`. When a platform admin has turned off the feature of the operation for the organisation, the answer has `errorKey` `feature_disabled` and the member `feature` (the name of the feature).

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"MOD1"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></TabItem><TabItem label={"Older error body"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"Code"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The HTTP status.","example":403}}></SchemaItem><SchemaItem collapsible={false} name={"Message"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What went wrong.","example":"Unauthorized access;User doesn't have enough permissions;"}}></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"Code\": 403,\n  \"Message\": \"Unauthorized access;User doesn't have enough permissions;\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Unexpected server error.

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem><SchemaItem collapsible={false} name={"errorKey"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A text code of the refusal that does not change when the text changes. Only some refusals have it, for example `organisation_suspended`, `feature_disabled` or `purpose_exists`."}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\",\n  \"errorKey\": \"string\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      