---
id: config-list-digital-wallet-open-id-credential-definition-templates
title: "List credential definition templates"
description: "Lists the pre-defined credential schema templates that you can use to create a credential definition. The platform returns only the latest version of each schema. A claim path pointer schema has one entry for each credential format, so the same `name` and `version` can appear more than once. When the platform cannot read the schema repository, it returns an empty `templates` array and no `pagination` object."
sidebar_label: "List credential definition templates"
hide_title: true
hide_table_of_contents: true
api: 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
sidebar_class_name: "get 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"}>List credential definition templates</h1>

<MethodEndpoint method={"get"} path={"/v2/config/digital-wallet/openid/sdjwt/credential-definition/templates"}></MethodEndpoint>



Lists the pre-defined credential schema templates that you can use to create a credential definition. The platform returns only the latest version of each schema. A claim path pointer schema has one entry for each credential format, so the same `name` and `version` can appear more than once. When the platform cannot read the schema repository, it returns an empty `templates` array and no `pagination` object.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Query Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Number of records to skip for pagination. A negative or unreadable value falls back to `0`.","in":"query","name":"offset","required":false,"schema":{"type":"integer","default":0,"minimum":0}}}></ParamsItem><ParamsItem className={"paramsItem"} param={{"name":"limit","in":"query","description":"Maximum number of records to return per page.","required":false,"schema":{"type":"integer","default":10}}}></ParamsItem></ul></div></details><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

Credential definition templates listed successfully

</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={"templates"} required={false} schemaName={"object[]"} qualifierMessage={undefined} schema={{"description":"Credential schema templates for the current page.","items":{"allOf":[{"type":"object","description":"Pre-defined credential schema that you can use as a template for a new credential definition. The platform reads the templates from the public credential schema repository. A claim path pointer schema has one entry for each credential format, so the same `name` and `version` can appear more than once in the list.\n","properties":{"name":{"type":"string","description":"Schema identifier. This value is the folder name of the schema in the credential schema repository.","example":"LegalPersonIdentificationData"},"type":{"type":"string","description":"Dialect of the schema document, and the field that tells you how to use it. `claimPathPointer` is a claim path pointer document, which is the dialect of OpenID4VCI 1.0. `jsonSchema` is a JSON Schema document that earlier versions of this API used; do not use it for a new credential definition.\n","enum":["jsonSchema","claimPathPointer"]},"version":{"type":"string","description":"Semantic version of the schema. The platform returns only the latest version of each schema.","example":"1.0.0"},"schema":{"type":"object","additionalProperties":true,"description":"The schema document. For a `claimPathPointer` template, copy this object into `credentialDefinitions[].claims` when the credential format is `dc+sd-jwt` or `mso_mdoc`, and into `credentialDefinitions[].credentialDefinition` when the credential format is `jwt_vc_json`.\n"},"metadata":{"type":"object","properties":{"id":{"type":"string","description":"Schema identifier","example":"WgWxqztrNooG92RXvxSTWv"},"credentialType":{"type":"string","description":"Schema name","example":"LegalPersonIdentificationData"},"isJwt":{"type":"boolean","description":"Is W3C VC(JWT) format supported","example":true},"isMsoMdoc":{"type":"boolean","description":"Is ISO 18013-5 mdoc/mDL format supported","example":true},"isSdJwt":{"type":"boolean","description":"Is IETF SD-JWT VC format supported","example":true},"title":{"type":"string","description":"Title of schema","example":"Legal Person Identification Data (LPID)"},"isClaimPathPointer":{"type":"boolean","description":"When `true`, `schema` is a claim path pointer document. The platform always sets this field.","example":true},"doctype":{"type":"string","description":"Document type identifier to use when the credential format is `mso_mdoc`.","example":"org.iso.18013.5.1.mDL"},"namespace":{"type":"string","description":"mDoc namespace of the schema. For OpenID4VCI 1.0, it is the first element of each claim path.","example":"org.iso.18013.5.1"},"versionSupported":{"type":"array","items":{"type":"string"},"description":"Versions of the OID4VCI specification that this schema supports.","example":["version_01"]}}}},"required":["name","type","version","schema","metadata"]}]},"type":"array"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>pagination</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Offset based pagination for the template list. This operation does not use the page based pagination of the other list operations.

</div><SchemaItem collapsible={false} name={"offset"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Number of templates that the server skipped.","example":0}}></SchemaItem><SchemaItem collapsible={false} name={"limit"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Maximum number of templates per page. Defaults to 10.","example":10}}></SchemaItem><SchemaItem collapsible={false} name={"totalItems"} required={false} schemaName={"integer"} qualifierMessage={undefined} schema={{"type":"integer","description":"Total number of templates available.","example":12}}></SchemaItem><SchemaItem collapsible={false} name={"hasPrevious"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates whether a previous page exists.","example":false}}></SchemaItem><SchemaItem collapsible={false} name={"hasNext"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"Indicates whether a next page exists.","example":true}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"templates\": [\n    {\n      \"name\": \"LegalPersonIdentificationData\",\n      \"type\": \"jsonSchema\",\n      \"version\": \"1.0.0\",\n      \"schema\": {},\n      \"metadata\": {\n        \"id\": \"WgWxqztrNooG92RXvxSTWv\",\n        \"credentialType\": \"LegalPersonIdentificationData\",\n        \"isJwt\": true,\n        \"isMsoMdoc\": true,\n        \"isSdJwt\": true,\n        \"title\": \"Legal Person Identification Data (LPID)\",\n        \"isClaimPathPointer\": true,\n        \"doctype\": \"org.iso.18013.5.1.mDL\",\n        \"namespace\": \"org.iso.18013.5.1\",\n        \"versionSupported\": [\n          \"version_01\"\n        ]\n      }\n    }\n  ],\n  \"pagination\": {\n    \"offset\": 0,\n    \"limit\": 10,\n    \"totalItems\": 12,\n    \"hasPrevious\": false,\n    \"hasNext\": 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={"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>
      