---
id: config-update-digital-wallet-open-id-oidc-provider
title: "Update external OpenID provider"
description: "Replaces the settings of an external OpenID provider of the organisation. Send `name`, `issuer` and `clientId` each time. The other members change as follows:"
sidebar_label: "Update external OpenID provider"
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 external OpenID provider</h1>

<MethodEndpoint method={"put"} path={"/v4/config/ows/issuer/openid-providers/{providerId}"}></MethodEndpoint>



Replaces the settings of an external OpenID provider of the organisation. Send `name`, `issuer` and `clientId` each time. The other members change as follows:

- `clientSecret` left out or empty: the stored secret stays.
- `scopes` left out or empty: the scopes become `openid profile email`.
- `claimsGatheringCallbackUri` left out or empty: the stored URL is removed.

You cannot change the built-in OpenID Conformance login provider.


## 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 an external OpenID provider of the organisation, from [List external OpenID providers](/docs/openid4vc-api/config-list-digital-wallet-open-id-oidc-providers). A value that is not a UUID gives HTTP 400 (`providerId: invalid type`).","in":"path","name":"providerId","required":true,"schema":{"type":"string","format":"uuid"},"example":"3f6c2a9e-7b1d-4c58-9e2f-1a4b6d8c0e57"}}></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><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"name"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 255 characters`"} schema={{"type":"string","maxLength":255,"description":"The name of the provider. Required.","example":"Example Bank login"}}></SchemaItem><SchemaItem collapsible={false} name={"issuer"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 2048 characters`"} schema={{"type":"string","maxLength":2048,"description":"The issuer identifier of the provider: an http(s) URL. A trailing `/` is removed. Required.","example":"https://login.example-bank.com"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 255 characters`"} schema={{"type":"string","maxLength":255,"description":"The client ID of the issuer at the provider. Required.","example":"igrant-issuer"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecret"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 4096 characters`"} schema={{"type":"string","maxLength":4096,"description":"The client secret of the issuer at the provider, for its token endpoint. Required to create a provider. In an update, leave it out (or send an empty text) to keep the stored secret.","example":"<client-secret>"}}></SchemaItem><SchemaItem collapsible={false} name={"scopes"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 255 characters`"} schema={{"type":"string","maxLength":255,"default":"openid profile email","description":"The scopes to ask for at the provider, separated by spaces. The API adds `openid` when it is missing. Empty or left out: `openid profile email`.","example":"openid profile email"}}></SchemaItem><SchemaItem collapsible={false} name={"claimsGatheringCallbackUri"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** `<= 2048 characters`"} schema={{"type":"string","maxLength":2048,"description":"An http(s) URL where the API gets the claims of a deferred issuance. The API calls it with the access token of the holder from the provider as bearer token, and the URL answers `{\"claims\": {...}}`, `{\"interval\": <seconds>}` (not ready yet) or `{\"issuanceDenied\": true, \"issuanceDeniedReason\": \"...\"}`. In an update, leave it out (or send an empty text) to remove the stored URL.","example":"https://issuer.example-bank.com/claims"}}></SchemaItem></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The changed 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={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>oidcProvider</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"}}>

An external OpenID provider of the organisation: the OpenID Connect provider where the holder logs in during an authorisation code issuance of a credential definition that names it (`externalOpenidProviderId`). The client secret is write-only: the response only says whether one is stored (`clientSecretConfigured`).

</div><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"uuid"} qualifierMessage={undefined} schema={{"type":"string","format":"uuid","description":"The ID of the provider. Use it as `providerId` in the path, and as `externalOpenidProviderId` of a credential definition.","example":"3f6c2a9e-7b1d-4c58-9e2f-1a4b6d8c0e57"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The name of the provider.","example":"Example Bank login"}}></SchemaItem><SchemaItem collapsible={false} name={"issuer"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The issuer identifier of the provider, an http(s) URL without a trailing `/`. The API reads the discovery document from `<issuer>/.well-known/openid-configuration` when a holder logs in.","example":"https://login.example-bank.com"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The client ID of the issuer at the provider.","example":"igrant-issuer"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecretConfigured"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when a client secret is stored. The API never returns the secret.","example":true}}></SchemaItem><SchemaItem collapsible={false} name={"scopes"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The scopes that the API asks for at the provider, separated by spaces. Always starts with `openid`.","example":"openid profile email"}}></SchemaItem><SchemaItem collapsible={false} name={"claimsGatheringCallbackUri"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","nullable":true,"description":"The URL where the API gets the claims of a deferred issuance, with the access token of the holder from the provider as bearer token. `null` when the provider has none.","example":"https://issuer.example-bank.com/claims"}}></SchemaItem><SchemaItem collapsible={false} name={"isBuiltInConformance"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` for the built-in OpenID Conformance login provider (conformance tests only, not for production). The OpenID Conformance extension creates and removes it; you cannot change or delete it, and only the credential definitions of that extension can use it.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The time of the creation, in Unix seconds.","example":1794365298}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"The time of the last change, in Unix seconds.","example":1794365298}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"oidcProvider\": {\n    \"id\": \"3f6c2a9e-7b1d-4c58-9e2f-1a4b6d8c0e57\",\n    \"name\": \"Example Bank login\",\n    \"issuer\": \"https://login.example-bank.com\",\n    \"clientId\": \"igrant-issuer\",\n    \"clientSecretConfigured\": true,\n    \"scopes\": \"openid profile email\",\n    \"claimsGatheringCallbackUri\": \"https://issuer.example-bank.com/claims\",\n    \"isBuiltInConformance\": false,\n    \"createdAt\": 1794365298,\n    \"updatedAt\": 1794365298\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"oidcProvider\": {\n    \"id\": \"3f6c2a9e-7b1d-4c58-9e2f-1a4b6d8c0e57\",\n    \"name\": \"Example Bank login\",\n    \"issuer\": \"https://login.example-bank.com\",\n    \"clientId\": \"igrant-issuer\",\n    \"clientSecretConfigured\": true,\n    \"scopes\": \"openid profile email address\",\n    \"claimsGatheringCallbackUri\": \"https://issuer.example-bank.com/claims\",\n    \"isBuiltInConformance\": false,\n    \"createdAt\": 1794365298,\n    \"updatedAt\": 1794368900\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The body is not a JSON object, has a member that it does not declare (`<name>: unknown field`) or a member of the wrong JSON type (`<name>: invalid type`); `name`, `issuer` or `clientId` is missing or empty (`Missing mandatory param <name>`); `issuer` or `claimsGatheringCallbackUri` is not an http(s) URL; a text is longer than its limit; `providerId` is not a UUID; the organisation has no provider with this ID (`OIDC provider not found with ID: <providerId>`); or the provider is the built-in OpenID Conformance login, which the OpenID Conformance extension manages. Also when the organisation has no deployed wallet.

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