---
id: config-list-digital-wallet-open-id-wallet-unit
title: "List wallet units"
description: "Lists all wallet units managed by the wallet provider for OID4VCI and OpenID4VP operations."
sidebar_label: "List 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 wallet units</h1>

<MethodEndpoint method={"get"} path={"/v2/config/digital-wallet/openid/wallet-provider/wallet-units"}></MethodEndpoint>



Lists all wallet units managed by the wallet provider for OID4VCI and OpenID4VP operations.

## 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":"Filter by the holder's Decentralized Identifier (DID).","in":"query","name":"holderDid","schema":{"type":"string"}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"description":"Filter by wallet application platform (e.g., iOS, Android).","in":"query","name":"platform","schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div></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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>walletUnit</strong><span className={"openapi-schema__name"}> object[]</span></span></summary><div style={{"marginLeft":"1rem"}}><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the wallet unit record."}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client identifier of the wallet instance, typically a DID or URL. Used to identify the wallet during OID4VCI and OpenID4VP protocol interactions."}}></SchemaItem><SchemaItem collapsible={false} name={"clientUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL endpoint of the wallet instance, used for direct communication."}}></SchemaItem><SchemaItem collapsible={false} name={"clientPublicKey"} required={true} schemaName={"object"} qualifierMessage={undefined} schema={{"type":"object","description":"Public key JWK of the wallet instance, used to verify Wallet Unit Attestation Proof of Possession."}}></SchemaItem><SchemaItem collapsible={false} name={"isAuthorised"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, this wallet unit is authorized to interact with the Wallet Provider's services."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionToken"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Client assertion JWT of the wallet unit, used for OAuth 2.0 client authentication."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionTokenType"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Type of the client assertion token."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this wallet unit was registered."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this wallet unit record was last modified."}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></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></summary><div style={{"marginLeft":"1rem"}}><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  \"walletUnit\": [\n    {\n      \"id\": \"string\",\n      \"clientId\": \"string\",\n      \"clientUrl\": \"string\",\n      \"clientPublicKey\": {},\n      \"isAuthorised\": true,\n      \"assertionToken\": \"string\",\n      \"assertionTokenType\": \"string\",\n      \"createdAt\": 0,\n      \"updatedAt\": 0\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></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"500"} value={"500"}><div>

Internal 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></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem></ApiTabs></div></div>
      