---
id: config-update-digital-wallet-open-id-individual-wallet-unit
title: "Update individual wallet unit"
description: "Changes the client id, the credential offer URL, the public key or the authorisation of an individual wallet unit. A member that you leave out keeps its value."
sidebar_label: "Update individual wallet unit"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "put 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"}>Update individual wallet unit</h1>

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



Changes the client id, the credential offer URL, the public key or the authorisation of an individual wallet unit. A member that you leave out keeps its value.

`isAuthorised: false` on an authorised wallet unit is the kill switch. In the same change, the wallet provider revokes (`Revoked`) every active Wallet Unit Attestation (WUA) of the wallet unit on its status list, so an issuer that checks the status refuses the wallet at once, and the wallet unit gets no new WUA. The key attestations of the wallet unit do not change. `isAuthorised: true` lets the wallet unit get new WUAs again; the revoked WUAs stay revoked.

## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Path Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"The `id` of the wallet unit, from the list of the wallet units of its kind. The routes of each kind read only their kind: the `id` of an organisation wallet unit gives 404 on an individual wallet unit route, and the other way round. A deleted wallet unit also gives 404.","in":"path","name":"walletUnitId","required":true,"schema":{"type":"string","format":"uuid"}}}></ParamsItem></ul></div></details><MimeTabs className={"openapi-tabs__mime"}><TabItem label={"application/json"} value={"application/json-schema"}><details style={{}} className={"openapi-markdown__details mime"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-mime"}><h3 className={"openapi-markdown__details-summary-header-body"}>Body</h3><strong className={"openapi-schema__required"}>required</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}><div style={{"marginTop":"1rem","marginBottom":"1rem"}}>

The members to change.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A new client id for the wallet unit. No other individual wallet unit, also a deleted one, may have it.","example":"urn:ietf:params:oauth:jwk-thumbprint:sha-256:NzbLsXh8uDCcd-6MNwXF4W_7noWXFZAfHkxZsRGC9Xs"}}></SchemaItem><SchemaItem collapsible={false} name={"clientUrl"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"A new credential offer URL of the wallet.","example":"openid-credential-offer://"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>clientPublicKey</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

A new public key (JWK) of the wallet unit: an EC key on P-256, P-384 or P-521 with `kty`, `crv`, `x` and `y`, and no private member.

</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"A new public key (JWK) of the wallet unit: an EC key on P-256, P-384 or P-521 with `kty`, `crv`, `x` and `y`, and no private member."}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"isAuthorised"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` authorises the wallet unit: it can get Wallet Unit Attestations again. `false` on an authorised wallet unit is the kill switch: the wallet provider also revokes every active WUA of the wallet unit, in the same change.","example":true}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The individual wallet unit after the change.

</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"}>individualWalletUnit</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

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`.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"uuid"} qualifierMessage={undefined} schema={{"type":"string","format":"uuid","description":"The id of the wallet unit: the `walletUnitId` of the individual wallet unit operations and of the history filter."}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={false} name={"clientUrl"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>clientPublicKey</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__nullable"}>nullable</span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The public key (JWK) of the wallet unit: from the registration, then the key of the client assertion of its last single WUA request.

</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","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.","additionalProperties":true}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"isAuthorised"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true`: the wallet unit can get Wallet Unit Attestations. `false`: the wallet provider refuses its WUA requests."}}></SchemaItem><SchemaItem collapsible={false} name={"devicePlatform"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`ios`, `android`]"} schema={{"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"}}></SchemaItem><SchemaItem collapsible={false} name={"deviceIntegrityToken"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={false} name={"deviceKeyId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionToken"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={false} name={"assertionTokenType"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The type of `assertionToken`: `urn:ietf:params:oauth:client-assertion-type:jwt-bearer`, or empty."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>clientMetadata</strong><span className={"openapi-schema__name"}> object</span><span className={"openapi-schema__divider"}></span><span className={"openapi-schema__nullable"}>nullable</span><span className={"openapi-schema__required"}>required</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The client metadata that the wallet sent in its last WUA request (`client_metadata`), for example its name.

</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","nullable":true,"description":"The client metadata that the wallet sent in its last WUA request (`client_metadata`), for example its name.","additionalProperties":true}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"attestationStatus"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [``, `unauthorised`, `authorised`, `active`, `revoked`]"} schema={{"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"}}></SchemaItem><SchemaItem collapsible={false} name={"attestationExpiresAt"} required={true} schemaName={"int64"} qualifierMessage={undefined} schema={{"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."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"int64"} qualifierMessage={undefined} schema={{"type":"integer","format":"int64","description":"When the wallet provider registered the wallet unit (Unix time in seconds)."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"int64"} qualifierMessage={undefined} schema={{"type":"integer","format":"int64","description":"When the wallet unit last changed (Unix time in seconds)."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"individualWalletUnit\": {\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  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"individualWalletUnit\": {\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  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The body is not valid (an unknown member, a value of the wrong JSON type, or a `clientPublicKey` that is not a public EC JWK), another individual wallet unit has the `clientId`, a status list refused the revocation of the kill switch, or the organisation is not the wallet provider.

</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={"404"} value={"404"}><div>

No individual wallet unit of the wallet provider has this id (also for the id of an organisation wallet unit or of a deleted wallet unit).

</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={"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>
      