---
id: read-oidc-client
title: "Read OIDC Client"
description: "Retrieves details of an OpenID Connect client. The client enables passwordless login with EUDI Wallet by requesting verifications from individuals. The client configuration includes presentation definition that specifies which credentials to request - appearing as a QR code or deep link on the authentication page."
sidebar_label: "Read OIDC Client"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get api-method"
info_path: docs/extensions-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"}>Read OIDC Client</h1>

<MethodEndpoint method={"get"} path={"/v3/config/extension/oidc/client/{clientId}"}></MethodEndpoint>



Retrieves details of an OpenID Connect client. The client enables passwordless login with EUDI Wallet by requesting verifications from individuals. The client configuration includes presentation definition that specifies which credentials to request - appearing as a QR code or deep link on the authentication page.

## 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 client","in":"path","name":"clientId","required":true,"schema":{"type":"string"}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Client details

</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"}}><li className={"schemaItem"}><summary style={{}}><strong>Cache-Control</strong><span style={{"opacity":"0.6"}}> string</span></summary><div><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Indicates that the response should not be cached.

</div></div></li></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"}>client</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"presentationDefinitionId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the client's configured presentation definition"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The name of the client"}}></SchemaItem><SchemaItem collapsible={false} name={"clientId"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the client"}}></SchemaItem><SchemaItem collapsible={false} name={"clientSecret"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The secret of the client"}}></SchemaItem><SchemaItem collapsible={false} name={"redirectURIs"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"string"},"description":"The valid redirect URIs for the client"}}></SchemaItem><SchemaItem collapsible={false} name={"allowedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","items":{"type":"string"},"description":"The valid origins for the client"}}></SchemaItem><SchemaItem collapsible={false} name={"callbackURI"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The URI at which a `sub` value will be calculated and returned according to the sent presentation.\n"}}></SchemaItem><SchemaItem collapsible={false} name={"callbackSecret"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The secret used to access the `callbackURI`. Required when `callbackURI` is set."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>identityMatchingAttributes</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

A map of VCTs (verifiable credential types) to claim paths used as linking values for identity matching. Each key is the VCT of a credential, and the value is the dot-separated path to the claim within that credential to use as the linking value.


</div><SchemaItem name={"property name*"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"transactionDataAction"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The configured action for the transaction data, e.g. \"login\" or \"verify\"\n"}}></SchemaItem><SchemaItem collapsible={false} name={"kid"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The ID of the client's key"}}></SchemaItem><SchemaItem collapsible={false} name={"systemManaged"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates whether the client is system-managed or not"}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"client\": {\n    \"presentationDefinitionId\": \"string\",\n    \"name\": \"string\",\n    \"clientId\": \"string\",\n    \"clientSecret\": \"string\",\n    \"redirectURIs\": [\n      \"string\"\n    ],\n    \"allowedOrigins\": [\n      \"string\"\n    ],\n    \"callbackURI\": \"string\",\n    \"callbackSecret\": \"string\",\n    \"identityMatchingAttributes\": {},\n    \"transactionDataAction\": \"string\",\n    \"kid\": \"string\",\n    \"systemManaged\": true\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"401"} value={"401"}><div>

Unauthorized

</div><details style={{"textAlign":"left","marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collaposed={true} open={false}><summary style={{}}><strong>Response Headers</strong></summary><ul style={{"marginLeft":"1rem"}}></ul></details><div><MimeTabs className={"openapi-tabs__mime"} schemaType={"response"}><TabItem label={"application/json"} value={"application/json"}><SchemaTabs className={"openapi-tabs__schema"}><TabItem label={"Schema"} value={"Schema"}><details style={{}} className={"openapi-markdown__details response"} data-collapsed={false} open={true}><summary style={{}} className={"openapi-markdown__details-summary-response"}><strong>Schema</strong></summary><div style={{"textAlign":"left","marginLeft":"1rem"}}></div><ul style={{"marginLeft":"1rem"}}><SchemaItem collapsible={false} name={"errorCode"} required={true} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","example":400}}></SchemaItem><SchemaItem collapsible={false} name={"errorDescription"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","example":"Bad input parameter"}}></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"errorCode\": 400,\n  \"errorDescription\": \"Bad input parameter\"\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"404"} value={"404"}><div>

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