---
id: config-update-digital-wallet-open-id-individual-wallet-unit-global-configuration
title: "Update individual wallet unit configuration"
description: "Changes the wallet provider configuration of the individual wallet units. Send only the members to change: a member that you leave out keeps its value. The configuration of the organisation wallet units does not change."
sidebar_label: "Update individual wallet unit configuration"
hide_title: true
hide_table_of_contents: true
api: eJztW21z2ziS/itd/HJSFSVLtpzYytbUeWzvjiaz49Q4Hu+V4wohsilhTQFcALSsTem/XzUAUpRE+SXJ1c1O+UvKoQigu9HdeJ5u8EuQoI4Vzw2XIhgGp1MmJqjBTBHmLMvQQK7kPU9QQSxFyieFYvQuyNS+xEXC73lSsKx8vxDc6C5cokhAimxhX5vhbIxKg5EQ2yWGwPxDMFNmYCELyJDdI8jCwB1iroEbDfcsK7ALH6fYvL5UEya4ds/qEkAiUYOQxi/Y/SQ+iUs0dpTmE8HFBO5wAVNUCGNMpUL7W8qVNnDtproS3MCJMaiNW6J1fXXSHjbahybVTuU5N1NgAs5P4UNn//CNXahRYnrRrirVjBmIHg57xxEwkQAj3XkCMSrDUx4zg6QKF84ammylMC00amB2AWtI7pRmAlhs+D3uWjr0i9DPJAWZnTUtNjIrU7r1/Kgxxoz+J1O7U7WhQ4i8hd/j4pop+ktHpRRM6DkqmLLSzdzvXTiB66sTUPivArWBlPFMw3zKM7cvtGTMBIlBk3chusPFpZGKTfDSMFPokUjw4cK6ckR2SPkDJsBSY52s3Fmah9V2VKZkrGY/7gZhIHN0LjdKgmHgnPAqT5jBMz7hhmXOVS5yFKNkVE3jnpL//C2TY5ad1r03CAOv5o8yWQTDLxthaDcYjSG7rGKm64dxhUkwNKrAkOQxKAxNwfI8I/NzKfb+qWmeL4GOpzhj9JdZ5BgMAzn+J8YmCAPDTUYPnCrPl/sRQf3+fkveqCkL5/eoFmWS4BqkXZRlz0kdNsiNVJjUM4hGdc/jetjU5/GRwwWYKS1nLbUKxQIrBZUUE/j58uJXIKt+l+wUhEGuyNUMR037Na/2oZZ+fqeMwM3ijC10bVO5MDhBFYTBjAs+K2bBsN+0UxlP0fCZVYTZYOMCErbQIfRBKphRDmxFPZeAIlFkWQRMlQZL2mWMcu2TUyoVMAMzqQ3092EqC6Wh9fHyADTGVuv97n633+23SUN8YLOcvO6gtwybNfwNU4V6OhIG1T3LLjGWIvkaXZWbCLifqdyS66sTTWprN/PzNR8Zm7KEBExT8gwpHj0B6/oevRn0dqp86VKlCzQbyFl2kQbDm91Be/30PI2RWjv2ZApSINxxOqbTtaQH5yyeul9aNe3IMnWHblt7kDPLubBzclH999EksO3tsVrkRk4Uy6c8fo+LUYKCThNUta3XRnHRrBmdBaMkco6988RLlZzBzS/cnQL6trWXyFjvyRwFTwb3cYflfM9J2klccu84RTr0TocnnYxr06HB6w4dHKT77LgfD96Oj5IBvklZLz5M3mL/aHy8P0gPesEy3FLyr/bMf56CHh94te5w4bLOUxjE4YkhnXD/6B72jrcP+NqUMKGkxJ1bRw+HcQRTZDStTAHJJ+rn5kaUvwnhp5PRB+h3e840gkLzJiABgtu6qeyT5XJ526RnhWOcJlXEkvOVYtak0E/i0I/SThU2Hk0CMdFbQO2rQBlt8COA5Old/knOmzWcONDKFWg7K5APAgqjFpubcNjdbw8hooU+6ylTSCGhIMpRfb5jURf+RxYEovypA9w4XymE4VmjhbjWhecDzfDJyMfhU+kHNZko+q1Awe0yDGbs4T0uannsR2bi6SX/Nz6Z9Wfswf/d6zU5kz2WKFidS9l8tyF+iTZt4qiJbq3kXlwL9H7PiXzN2VfIebhbTOvllZhjmnsNDjcKOMEG6bi+5uwDqhFtnfoNC43ngo0zAo2VoGMpM2TbgC4iWBkNV4Fn13Xi7BSFUABJbZ1FAZECB8A23dUGKzNrgyms/EA2oYS05dMEHqxe77+LWk0p5P9Qny64xX2yeZy1lJEKLY3CUOw6FEsWWC5rO70DIO6CTw6A2CkU6lwK7c7d/V6vmX2sw9kVh1rB1a9mHusn/zZRrI1hSrFF43lYssYy/9egTehQqUvlU6lxLVvnCrVNqFzbja2AOItjzA20WKZljRcT4Nse3x5aBzH44LzFno6qyDxH8HM7WrHOjVcLpgS1TrI5W2g3qzDvKJfiLDcL52XzKdrTWKFjJ6XatRIArzPzhDaGG5zpp8+bC1FZ0YZX5Vo3lJUnDeTvWdD0W5jktzDH4VZhp4QMtC2ln3C1q7KjbWlHvwPKPjHLMnvozcrXR0IbJmJcGxLC9eikbRfaTCqWL3ANLGfKOOBpXswSien6k9rD9Q3a6IaTgziP8KUVy4a1pcNMVLy5JOrOLT2Xcex4Kyp58jxYypNSiQ2Av4vsPMlgX8BaoZVgyorMwEHvW6hpCFoC2mpDxfNXrHDCyZblDN+fxn41dV2pb7P7yymqLaTIMRXY/GOm77Q1nMC5X85ozNJXMvtKZl/J7P83mS3HrTNBKpyXoMHF1pAyAM29QGNzW2NVtlZK/8Ny1zLDvbPh7Z760RXqIv81tnmzyLFdp7vQIjS19XZdwnZ5Tn+fXsGfgOzCr+QVaIbQ7/X+4NR3Jethg6j/4Tw49L0vblaYpokaw5lHAVHKMk0yW0cnA06QkoY9zO26/8k0usEcXfj1BZR6y1Bdd4whM5icmEZPTv2hRo/eDLbMce3p2QasnzMNM5YgtK4EfwCLXVewzRUzCtt2+77rZkyXxCDZvfay3kS8IaT/HKj+Mpxbt2td19vmc/KpYsOmzA01g2bGerteMmmqNdzc7iS7RIKCXr93FLOjXuewjwedwcH+YWccx2lnwHpH8fjNETvE3rMsODzovZAsWKD9XJz9GOgMDnB8fHicHr99Oz4e9JP9o7h3HKf7b9Ix7rOj48NgN57zCOcJgLBx4j2Wem3wPZqG/Bu10Oy/PT7YHxz2BoO1yOm/PR70B/uD47eutOUAHmFw+t/A1baeXaeqexgqJdWpTJBOFfr7rOa0t+ETNa3V6KbgrhzS0ait6RvQ1gpv/sgS4CIvDORMsRkaVEE5yXtcPA3VTlzRKpZJ1c+2tSOWuRy8WWEoS1B+mLsf1IULQuVazqrRGqa2HGVc+c1LDFGdtHzWhc5RJJhEIUQpMlMo/JxwbTfetyoKlUuNn/GBsG1k6560m9tZYyyTRVn+8scjE1CIO0GczXX2wyd69/S7KOwdAKqW+KssipQMgdrBJJLrBpNW0ZNh7ka8IMwjEiFqjr7I1XZoY4RnPyHY2ubWgFW4Ry+7B0TzuSqpvQzlygc76FU7fPrSTWl/qUpn+SZUHUK0M1PY9XxxvbzCVJ724baiXrcE80wuZiiMtSWvTNXEklrRSDjf8qAv3O4hUilXFiKJLFXczEH91xz0J85B0UlhplLxfzMXAL7EwDXMuNZcTKyPkegnH0YuBBUYeYdiLXM1Oc5Bc2Nma55VAyPLLA3n2tavbVmgfLsMD4u/Y5lXdq9utzmyYB9lpILNrtGXTwH50KcghE/B31FrNsFPwTKyk0f/6FwykYzlw4WaUMHKa2/3ULAZhb5wGUy799YD0qY1u6Ko5CkFttLQ8pUfOxk2PdUJYwExgzxjhqAzsGTGXcCbQgmkoqCb3u/3tvap36b1GtvGdcWodPGoyXPKqo6/U1a+EUGLnpI9ymX9L+0XtdGYWPhC6tcniWW4uwx7YbfdzmE3v7Fyt/q5us0Zx6g1xFOM76pnOXfXS2Xq41MWpurB0M8QS7Vxn/Em8Gp4NyOysA7fXTYb9A5W7wyDK8F8CFL9xgrz7kqjsnEh/su4lIBCFpMp5KhsXEqh3wWNkHHwmq7/xOm6CQ88o+nItW8g2DQLgsBZBjHT2HDkH77Sjj+tD10JfMgxNpjYu8Rlvtx0gmUYaIwLxc3CJuyTnFsj3QQrkFv2YlwnzpFaVx8xzNYlAn+9vOxAt+wN87PB76ftIPRNsx1eS64yQzOVVMDIqWZJvsLMNBgGe/cD3xXak3O956Uo59lrFrATb/TunfbaarduojOcSW8cKv2oLBgGU2NyPdzbS3AmqS3V5RPFhOlyaU+k9Qk+KJkUrsK5Y5qnZrg0bEKdwR3Dtft5U5Db1aZdUnC6mCq3bnUlxT0IA05LuV0PwoCOd3LzOhzcCgL7TUwd5ZTtqWYUWd1DzBWm/AEiJwxE0HIfmIDOWYzUNVmbYAj+xb+wnFN/74eoC6e2muIbin7dhOnpWDKVQCFowZM4loUw8AOc4T1mlFtIVPtpBg3ThimjfTNOzvXd5+jd+owOO/58/dH2+KAV4eLnbrcbtT2gG/T6kW/JrrCXg4oraGoTQllitremhhsfqnBTzXcQldJZsWpQ0slip9QQOQ92wS6F1TpyVyFZlvnuv4Up3hbRKlDcIPp/ObBaUqo736EsDbBBrXcBX+OJ55iYIxg5hETa/KfJR7aQtdWN0+2kxwD1yiZte/FVYZ6x2G96CHHpAtQQkAJDW5Kn1Gko2yaYocHSdPQCAWuquTci6yqpbuvt71BZ2m8/dqCZbUCTA2HSDr3Bre29brqG+8lNvJvVIPeOnL7WPK68SkMrWs91Udu1KHZvCRXunRWSEvZHg36vFGVt/QRtXYVKkZGrUNPR/tvqq57zJ67q/XGKw091+79zcfixHmi/19BipIePVZTdl1CPFJTpBep8iVSW0IzFFprhjHE6G3SR51KZ/16dB1VK539bPVo/SOpnUNPdqHKgTfdNBNM77dA1uig+7b4QqrEeV534I7qJEMI9Kp4u3L20tRc+uN+nFLf1WXxSKmMjpW+lVNNngPShk16170o4YLvj3jYaRucf/wqXZx1K77+fhjC6vNgbnZ9C/6jXP+gcwiyRMbRmZ7+4K3HXB6fw+ym0fr7+2K5L5Wj1+dXZqIQ29PZ5QViWCfix0FwQpVxBnJRnqMOKYJfA6LSm6cmHEaGwjMcotA268kTOWTxF2O/2tvZvPp93mf25K9Vkz4/Ve7+MTs9/vTzv0JjliiCv72ci44KKiOVJT3DI7f1+b3/QPej2aWwutZkxUZPHfW+3o9oJmzgrWQfoFal4/VD39UPd1w911y/feIBOhHEvzxgXts9OEf/Fk5+b4H7gSm7uUqGcrxrbFQWy0P4ZJOg2DKZSG5r1y5cx03ilsuWSHv+rQLVwneV7pjgdQv5WtacLxJruiFUEpy6gOx9Jdno9KxzJ2KgYEMlxI07sNfVH362zvw8nH09/CsJg7L8zntnyQKDYnIpvbB4Mg0/Bp8B+52xhky1J0PMvQcbEpHBVNjcxoRyqtq3ToTtLh/wftYueTCxqYm4yI6cN/VsrSq4P+Qvl2fe4+KF63f2yc0DFxtzb5AG3y+XyfwHkCe8i
sidebar_class_name: "patch 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 configuration</h1>

<MethodEndpoint method={"patch"} path={"/v4/config/ows/wallet-provider/individual-wallet-unit-configuration"}></MethodEndpoint>



Changes the wallet provider configuration of the individual wallet units. Send only the members to change: a member that you leave out keeps its value. The configuration of the organisation wallet units does not change.

Set the signing key here before the first Wallet Unit Attestation (WUA): the wallet provider signs only with an EC P-256 key of the organisation with the format `x509` and a valid certificate chain. The save refuses a key that is not an active key of the organisation, and a key without a certificate chain. It does not refuse a key because of its certificate: `signingKeyWarnings` of the answer has the warnings. A WUA request fails while the key cannot sign. `keyStorageStatusIndexOption` is fixed after the first key attestation of an individual wallet unit.

## Request

<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 settings to change.

</div></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"walletUnitAttestationValidityDays"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"integer","minimum":1,"description":"The lifetime of a WUA in days, 1 or more (`0` and `null` are refused). A WUA is valid for at most 12 hours (TS3 section 2.2.1.1).","example":30}}></SchemaItem><SchemaItem collapsible={false} name={"walletUnitAttestationRefreshIntervalSeconds"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"integer","minimum":1,"description":"The refresh interval of the WUAs in seconds, 1 or more (`0` and `null` are refused). It has no effect on the individual wallet units.","example":86400}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>walletUnitAttestationSigningConfig</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The signing key of one kind of wallet unit. Each kind (individual and organisation) has its own key in its own wallet provider configuration.

</div><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The `keyId` of a key of the organisation, from [List keys](/docs/openid4vc-api/config-digital-wallet-open-id-list-keys).","example":"3f2a91c47b8d4e6fa0c5d7e18b924f30"}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`x509`]"} schema={{"type":"string","description":"The format of the key. The wallet provider signs only with `x509`: an X.509 certificate chain of the key goes in the `x5c` header of each attestation (TS3 section 2.6, HAIP 1.0).","enum":["x509"],"example":"x509"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"keyStorageStatusIndexOption"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`type_shared`, `per_ka`]"} schema={{"type":"string","description":"How the key attestations get their status list entry (TS3 section 2.5.2): `type_shared` or `per_ka`. You can change it only until the wallet provider issues the first key attestation to an individual wallet unit.","enum":["type_shared","per_ka"]}}></SchemaItem><SchemaItem collapsible={false} name={"maxKeyAttestationBatchSize"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1` and `<= 100`"} schema={{"type":"integer","minimum":1,"maximum":100,"description":"The most keys that one key attestation request of a wallet unit can attest.","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"maxWiaBatchSize"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1` and `<= 50`"} schema={{"type":"integer","minimum":1,"maximum":50,"description":"The most WUAs that one batch WUA request of a wallet unit can get.","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"isWiaPerIssuerReuseEnabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true`: the WUAs of a batch request of a wallet unit for one issuer use the status list entry of that wallet unit and issuer again (TS3 section 2.5.1)."}}></SchemaItem><SchemaItem collapsible={false} name={"isKaPerIssuerReuseEnabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true`: the key attestations of a wallet unit for one issuer use the status list entry of that wallet unit and issuer again. `true` needs `keyStorageStatusIndexOption` `per_ka` (sent or stored)."}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The configuration 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={false} name={"signingKeyWarnings"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The warnings of the signing key, for a key whose certificate preset this use does not accept (also a key with no certificate preset): one text for each rule of this use that its certificate does not fit. Always present; an empty list when there is no warning. The save is not refused.","items":{"type":"string","description":"One warning."},"example":[]}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>globalConfiguration</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The wallet provider configuration of the individual wallet units: the signing key and the rules of their Wallet Unit Attestations (WUAs; TS3 calls them Wallet Instance Attestations, WIA) and key attestations. It is apart from the configuration of the organisation wallet units: a change of one does not change the other. The answer leaves out an optional setting that has no value.

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The id of the configuration."}}></SchemaItem><SchemaItem collapsible={false} name={"walletUnitAttestationValidityDays"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The lifetime of a WUA in days (default 30). A WUA is valid for at most 12 hours (TS3 section 2.2.1.1), so every value of 1 or more gives 12 hours.","example":30}}></SchemaItem><SchemaItem collapsible={false} name={"walletUnitAttestationRefreshIntervalSeconds"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The refresh interval of the WUAs in seconds (default 86400). It has no effect on the individual wallet units: a mobile wallet asks for new WUAs itself.","example":86400}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>walletUnitAttestationSigningConfig</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

The key that signs the WUAs and the key attestations of the individual wallet units and their status lists. An empty object: no key yet, so the wallet provider cannot sign.

</div><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The `keyId` of a key of the organisation, from [List keys](/docs/openid4vc-api/config-digital-wallet-open-id-list-keys).","example":"3f2a91c47b8d4e6fa0c5d7e18b924f30"}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`x509`]"} schema={{"type":"string","description":"The format of the key. The wallet provider signs only with `x509`: an X.509 certificate chain of the key goes in the `x5c` header of each attestation (TS3 section 2.6, HAIP 1.0).","enum":["x509"],"example":"x509"}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"keyStorageStatusIndexOption"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`type_shared`, `per_ka`]"} schema={{"type":"string","description":"How the key attestations get their status list entry (TS3 section 2.5.2): `type_shared` (default; one shared entry for each keystore type) or `per_ka` (an entry for each key attestation). It is fixed after the first key attestation of an individual wallet unit.","enum":["type_shared","per_ka"]}}></SchemaItem><SchemaItem collapsible={false} name={"maxKeyAttestationBatchSize"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1` and `<= 100`"} schema={{"type":"integer","minimum":1,"maximum":100,"description":"The most keys that one key attestation request of a wallet unit can attest. Not set: 100.","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"maxWiaBatchSize"} required={false} schemaName={"integer"} qualifierMessage={"**Possible values:** `>= 1` and `<= 50`"} schema={{"type":"integer","minimum":1,"maximum":50,"description":"The most WUAs that one batch WUA request of a wallet unit can get. Not set: 50.","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"isWiaPerIssuerReuseEnabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true`: the WUAs of a batch request of a wallet unit for one issuer use the status list entry of that wallet unit and issuer again, while it is valid (TS3 section 2.5.1). Default `false`: each WUA gets a new entry."}}></SchemaItem><SchemaItem collapsible={false} name={"isKaPerIssuerReuseEnabled"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true`: the key attestations of a wallet unit for one issuer use the status list entry of that wallet unit and issuer again, while it is valid. Needs `keyStorageStatusIndexOption` `per_ka`. Default `false`."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"int64"} qualifierMessage={undefined} schema={{"type":"integer","format":"int64","description":"When the configuration was made (Unix time in seconds)."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"int64"} qualifierMessage={undefined} schema={{"type":"integer","format":"int64","description":"When the configuration 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  \"signingKeyWarnings\": [],\n  \"globalConfiguration\": {\n    \"id\": \"string\",\n    \"walletUnitAttestationValidityDays\": 30,\n    \"walletUnitAttestationRefreshIntervalSeconds\": 86400,\n    \"walletUnitAttestationSigningConfig\": {\n      \"cryptographicKeyIdentifier\": \"3f2a91c47b8d4e6fa0c5d7e18b924f30\",\n      \"cryptographicKeyFormat\": \"x509\"\n    },\n    \"keyStorageStatusIndexOption\": \"type_shared\",\n    \"maxKeyAttestationBatchSize\": 10,\n    \"maxWiaBatchSize\": 10,\n    \"isWiaPerIssuerReuseEnabled\": true,\n    \"isKaPerIssuerReuseEnabled\": true,\n    \"createdAt\": 0,\n    \"updatedAt\": 0\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"signingKeyWarnings\": [],\n  \"globalConfiguration\": {\n    \"id\": \"0108ca80-51e3-4325-bccf-4a08cb68a5e0\",\n    \"walletUnitAttestationValidityDays\": 30,\n    \"walletUnitAttestationRefreshIntervalSeconds\": 86400,\n    \"walletUnitAttestationSigningConfig\": {\n      \"cryptographicKeyIdentifier\": \"3eb959f977b941d28c09cf26fbe2a895\",\n      \"cryptographicKeyFormat\": \"x509\"\n    },\n    \"keyStorageStatusIndexOption\": \"type_shared\",\n    \"isWiaPerIssuerReuseEnabled\": false,\n    \"isKaPerIssuerReuseEnabled\": false,\n    \"createdAt\": 1793245044,\n    \"updatedAt\": 1794142497\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, a number out of its range, `0` or `null` for `walletUnitAttestationValidityDays` or `walletUnitAttestationRefreshIntervalSeconds`, a `cryptographicKeyFormat` other than `x509`, or a `cryptographicKeyIdentifier` that is not an active key of the organisation or whose key has no X.509 certificate chain), `keyStorageStatusIndexOption` is unknown or changes after the first key attestation of an individual wallet unit, `isKaPerIssuerReuseEnabled` is `true` without `per_ka`, the organisation has no deployment, or it is not the wallet provider (`Invalid request, wallet provider not found`).

</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>

The organisation has no wallet provider configuration of this kind (not a normal case).

</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>
      