---
id: config-create-digital-wallet-open-id-global-configuration
title: "Create global configuration"
description: "Creates a global configuration for the OID4VCI issuer, including credential issuer metadata and default issuance parameters."
sidebar_label: "Create global configuration"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "post 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"}>Create global configuration</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/global-configuration"}></MethodEndpoint>



Creates a global configuration for the OID4VCI issuer, including credential issuer metadata and default issuance parameters.

## 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></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"credentialExpirationInDays"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Default expiration period (in days) for all credentials issued under this configuration. Individual credential definitions can override this value. Defaults to 30."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>credentialBranding</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"}}><SchemaItem collapsible={false} name={"name"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default display name for credentials in wallet UIs, as specified in the OID4VCI Credential Issuer Metadata."}}></SchemaItem><SchemaItem collapsible={false} name={"description"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default human-readable description for credentials displayed in wallet UIs."}}></SchemaItem><SchemaItem collapsible={false} name={"backgroundColor"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default hex color code for the credential card background (e.g. `#FFFFFF`)."}}></SchemaItem><SchemaItem collapsible={false} name={"textColor"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default hex color code for text on the credential card (e.g. `#000000`)."}}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"credentialRequestEncryptionRequired"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the wallet must encrypt the OpenID for Verifiable Credentials Issuance (OID4VCI) Credential Request using the issuer's encryption key."}}></SchemaItem><SchemaItem collapsible={false} name={"authorizationRequestExpiry"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Time-to-live (in seconds) for the OID4VCI Authorization Request. After this period, the credential offer expires."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialBindingMethods"} required={false} schemaName={"array"} qualifierMessage={undefined} schema={{"type":"array","description":"Array of supported cryptographic key binding methods for issued credentials, as defined in OID4VCI Credential Issuer Metadata."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialResponseInterval"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Minimum polling interval (in seconds) for the wallet when using the OID4VCI Deferred Credential Endpoint."}}></SchemaItem></ul></details></TabItem></MimeTabs><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"}>globalConfiguration</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"globalConfigurationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier for the issuer's global configuration."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialExpirationInDays"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Default expiration period (in days) for all credentials issued under this configuration. Individual credential definitions can override this value. Defaults to 30."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>credentialBranding</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"}}><SchemaItem collapsible={false} name={"name"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default display name for credentials in wallet UIs, as specified in the OID4VCI Credential Issuer Metadata."}}></SchemaItem><SchemaItem collapsible={false} name={"description"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default human-readable description for credentials displayed in wallet UIs."}}></SchemaItem><SchemaItem collapsible={false} name={"backgroundColor"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default hex color code for the credential card background (e.g. `#FFFFFF`)."}}></SchemaItem><SchemaItem collapsible={false} name={"textColor"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Default hex color code for text on the credential card (e.g. `#000000`)."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>logo</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"uri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the default logo displayed on credential cards in wallet UIs."}}></SchemaItem><SchemaItem collapsible={false} name={"altText"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Alt text for the logo image, used for accessibility."}}></SchemaItem></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"}>backgroundImage</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"uri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URL of the default background image for credential cards."}}></SchemaItem><SchemaItem collapsible={false} name={"altText"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Alt text for the background image."}}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"credentialRequestEncryptionRequired"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"When `true`, the wallet must encrypt the OpenID for Verifiable Credentials Issuance (OID4VCI) Credential Request using the issuer's encryption key."}}></SchemaItem><SchemaItem collapsible={false} name={"authorizationRequestExpiry"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Time-to-live (in seconds) for the OID4VCI Authorization Request. After this period, the credential offer expires."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialBindingMethods"} required={false} schemaName={"array"} qualifierMessage={undefined} schema={{"type":"array","description":"Array of supported cryptographic key binding methods for issued credentials, as defined in OID4VCI Credential Issuer Metadata."}}></SchemaItem><SchemaItem collapsible={false} name={"credentialResponseInterval"} required={false} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Minimum polling interval (in seconds) for the wallet when using the OID4VCI Deferred Credential Endpoint."}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this configuration was created."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp (in seconds) when this configuration was last modified."}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"globalConfiguration\": {\n    \"globalConfigurationId\": \"string\",\n    \"credentialExpirationInDays\": 0,\n    \"credentialBranding\": {\n      \"name\": \"string\",\n      \"description\": \"string\",\n      \"backgroundColor\": \"string\",\n      \"textColor\": \"string\",\n      \"logo\": {\n        \"uri\": \"string\",\n        \"altText\": \"string\"\n      },\n      \"backgroundImage\": {\n        \"uri\": \"string\",\n        \"altText\": \"string\"\n      }\n    },\n    \"credentialRequestEncryptionRequired\": true,\n    \"authorizationRequestExpiry\": 0,\n    \"credentialBindingMethods\": [\n      null\n    ],\n    \"credentialResponseInterval\": 0,\n    \"createdAt\": 0,\n    \"updatedAt\": 0\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>
      