---
id: config-digital-wallet-open-id-list-credential-categories
title: "List credential categories"
description: "Lists the credential categories. A credential category is the eIDAS category of the credentials that a credential configuration issues: PID, EAA, QEAA or PuB-EAA. Each category has the rules for the certificate of the key that signs the configuration, the certificate preset to request, the entitlement of the provider (ETSI TS 119 475 Annex A.2) and the sources of the rules. `none` has no rule."
sidebar_label: "List credential categories"
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 categories</h1>

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



Lists the credential categories. A credential category is the eIDAS category of the credentials that a credential configuration issues: PID, EAA, QEAA or PuB-EAA. Each category has the rules for the certificate of the key that signs the configuration, the certificate preset to request, the entitlement of the provider (ETSI TS 119 475 Annex A.2) and the sources of the rules. `none` has no rule.

The categories, in this order: `none`, `pid`, `eaa`, `qeaa` and `pub-eaa`. Give the `id` in `credentialDefinitions[].credentialCategory` of the create and update credential definition operations. The save refuses a configuration whose signing key does not fit its category, with `400` and `errorType` `signing_key_does_not_fit`. An mDL (doctype `org.iso.18013.5.1.mDL`) also needs a key with the ISO/IEC 18013-5 Document Signer profile, whatever its category: `mdlRule` gives this rule. The list is the same for every organisation.


<div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The service returned the credential categories.

</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"}>credentialCategories</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"}}>

The credential categories, in the order of the description.

</div><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"id"} required={true} schemaName={"CredentialCategoryId"} qualifierMessage={"**Possible values:** [`none`, `pid`, `eaa`, `qeaa`, `pub-eaa`]"} schema={{"type":"string","title":"CredentialCategoryId","description":"The id of a credential category (the list credential categories operation): the eIDAS category of a credential configuration. `none` (no certificate rule), `pid` (person identification data), `eaa` (non-qualified attestation), `qeaa` (qualified attestation) or `pub-eaa` (attestation issued by or for a public sector body).","enum":["none","pid","eaa","qeaa","pub-eaa"],"example":"eaa"}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The name of the category, for a person.","example":"EAA (non-qualified attestation)"}}></SchemaItem><SchemaItem collapsible={false} name={"description"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What the category is, for a person.","example":"An electronic attestation of attributes that is not qualified, for example a membership card or a ticket. Any organisation can issue it as a non-qualified trust service. It needs an electronic seal certificate."}}></SchemaItem><SchemaItem collapsible={false} name={"certificateRequirements"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The rules for the certificate of the signing key, one text for each rule. An empty list for `none`.","items":{"type":"string","description":"One rule."},"example":["keyUsage type A, B or F (ETSI EN 319 412-2 table 1: nonRepudiation, with digitalSignature or also with keyEncipherment or keyAgreement)","organizationIdentifier in the subject"]}}></SchemaItem><SchemaItem collapsible={false} name={"presetId"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`pid-provider`, `eaa-provider`, `qeaa-provider`, `pub-eaa-provider`, `null`]"} schema={{"type":"string","nullable":true,"description":"The certificate preset to request for a key of this category (the list certificate presets operation). `null` for `none`.","enum":["pid-provider","eaa-provider","qeaa-provider","pub-eaa-provider",null],"example":"eaa-provider"}}></SchemaItem><SchemaItem collapsible={false} name={"entitlement"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`PID_Provider`, `Non_Q_EAA_Provider`, `QEAA_Provider`, `PUB_EAA_Provider`, `null`]"} schema={{"type":"string","nullable":true,"description":"The entitlement of the provider in ETSI TS 119 475 Annex A.2. `null` for `none`.","enum":["PID_Provider","Non_Q_EAA_Provider","QEAA_Provider","PUB_EAA_Provider",null],"example":"Non_Q_EAA_Provider"}}></SchemaItem><SchemaItem collapsible={false} name={"eaaCategory"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`urn:etsi:esi:eaa:eu:qualified`, `urn:etsi:esi:eaa:eu:pub`, `null`]"} schema={{"type":"string","nullable":true,"description":"The EAA category of ETSI TS 119 472-1 that the issuer adds to each credential of a configuration with this category (clause 4.2.2): for SD-JWT VC the claim `category`, for mdoc the data element `category` in the namespace `org.etsi.01947201.010101`, for W3C VC one more value of `type`. `null` for `none`, `pid` and `eaa`.","enum":["urn:etsi:esi:eaa:eu:qualified","urn:etsi:esi:eaa:eu:pub",null],"example":null}}></SchemaItem><SchemaItem collapsible={false} name={"sources"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The standards and the clauses of the rules. An empty list for `none`.","items":{"type":"string","description":"One standard and its clauses."},"example":["ETSI TS 119 412-6 V1.2.1 clause 6 (EAA provider)","ETSI EN 319 412-3 V1.4.1 LEG-4.3.1-3 (keyUsage type A, B or F for a seal over content)","ETSI EN 319 412-3 V1.4.1 LEG-4.2.1-2 (organizationIdentifier)","ETSI TS 119 475 V1.2.1 A.2.3 (Non_Q_EAA_Provider)"]}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></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"}>mdlRule</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"}}>

The mDL rule: a credential configuration with `credentialFormat` `mso_mdoc` and one of the `doctypes` needs a signing key with the Document Signer profile of ISO/IEC 18013-5 Table B.3, whatever its credential category (also `none`). For an mDL with the category `eaa`, `qeaa` or `pub-eaa`, the key usage rule of the category also accepts Type C, as ETSI TS 119 412-6 PID-4.4.1-01 does for a PID (a known deviation from ETSI EN 319 412-3 LEG-4.3.1-3). For an mDL with the category `none`, request the certificate with the preset `presetId`; for another category, use the preset of the category and add the values of `fixed`.

</div><SchemaItem collapsible={false} name={"doctypes"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The doctypes of the rule.","items":{"type":"string"},"example":["org.iso.18013.5.1.mDL"]}}></SchemaItem><SchemaItem collapsible={false} name={"name"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"The name of the rule, for a person."}}></SchemaItem><SchemaItem collapsible={false} name={"description"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"What the rule is, for a person."}}></SchemaItem><SchemaItem collapsible={false} name={"certificateRequirements"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The rules for the certificate of the signing key, one text for each rule.","items":{"type":"string","description":"One rule."},"example":["keyUsage digitalSignature, critical","extendedKeyUsage 1.0.18013.5.1.2 (mdlDS), critical"]}}></SchemaItem><SchemaItem collapsible={false} name={"presetId"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`mdoc-document-signer`]"} schema={{"type":"string","enum":["mdoc-document-signer"],"example":"mdoc-document-signer"}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>fixed</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"}}>

The key usage and the extended key usage of the rule, in the form of a CsrRequest. For an mDL with the category `pid`, `eaa`, `qeaa` or `pub-eaa`, add them to the CSR of the preset of the category.

</div><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>keyUsage</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"}}>

The key usage extension. The keys are EC keys, so `keyEncipherment` and `dataEncipherment` are not allowed (RFC 5480 section 3). A leaf certificate has no CA key usage (`keyCertSign`, `cRLSign`).

</div><SchemaItem collapsible={false} name={"values"} required={true} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`digitalSignature`, `nonRepudiation`, `keyAgreement`], `>= 1`"} schema={{"type":"array","minItems":1,"description":"The key usages, each one time.","items":{"type":"string","description":"One key usage by its X.509 name.","enum":["digitalSignature","nonRepudiation","keyAgreement"]},"example":["digitalSignature"]}}></SchemaItem><SchemaItem collapsible={false} name={"critical"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","nullable":true,"description":"`true`: the extension is critical. Without a value, the criticality of the preset applies (`true` when the preset fixes none).","example":true}}></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"}>extendedKeyUsage</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"}}>

The extended key usage extension.

</div><SchemaItem collapsible={false} name={"values"} required={true} schemaName={"string[]"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"array","minItems":1,"description":"The key purposes as OIDs in dotted form, at most 20, each one time. For example `1.0.18013.5.1.2` (ISO/IEC 18013-5 mdoc Document Signer), `1.0.18013.5.1.6` (ISO/IEC 18013-5 reader authentication) or `1.3.6.1.5.5.7.3.45` (Token Status List signer).","items":{"type":"string","description":"One OID in dotted form."},"example":["1.0.18013.5.1.2"]}}></SchemaItem><SchemaItem collapsible={false} name={"critical"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","nullable":true,"description":"`true`: the extension is critical. Without a value, the criticality of the preset applies (`false` when the preset fixes none).","example":true}}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"sources"} required={true} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"The standards and the clauses of the rule.","items":{"type":"string","description":"One standard and its clauses."}}}></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"credentialCategories\": [\n    {\n      \"id\": \"eaa\",\n      \"name\": \"EAA (non-qualified attestation)\",\n      \"description\": \"An electronic attestation of attributes that is not qualified, for example a membership card or a ticket. Any organisation can issue it as a non-qualified trust service. It needs an electronic seal certificate.\",\n      \"certificateRequirements\": [\n        \"keyUsage type A, B or F (ETSI EN 319 412-2 table 1: nonRepudiation, with digitalSignature or also with keyEncipherment or keyAgreement)\",\n        \"organizationIdentifier in the subject\"\n      ],\n      \"presetId\": \"eaa-provider\",\n      \"entitlement\": \"Non_Q_EAA_Provider\",\n      \"eaaCategory\": null,\n      \"sources\": [\n        \"ETSI TS 119 412-6 V1.2.1 clause 6 (EAA provider)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.3.1-3 (keyUsage type A, B or F for a seal over content)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.2.1-2 (organizationIdentifier)\",\n        \"ETSI TS 119 475 V1.2.1 A.2.3 (Non_Q_EAA_Provider)\"\n      ]\n    }\n  ],\n  \"mdlRule\": {\n    \"doctypes\": [\n      \"org.iso.18013.5.1.mDL\"\n    ],\n    \"name\": \"string\",\n    \"description\": \"string\",\n    \"certificateRequirements\": [\n      \"keyUsage digitalSignature, critical\",\n      \"extendedKeyUsage 1.0.18013.5.1.2 (mdlDS), critical\"\n    ],\n    \"presetId\": \"mdoc-document-signer\",\n    \"fixed\": {\n      \"keyUsage\": {\n        \"values\": [\n          \"digitalSignature\"\n        ],\n        \"critical\": true\n      },\n      \"extendedKeyUsage\": {\n        \"values\": [\n          \"1.0.18013.5.1.2\"\n        ],\n        \"critical\": true\n      }\n    },\n    \"sources\": [\n      \"string\"\n    ]\n  }\n}"} language={"json"}></ResponseSamples></TabItem><TabItem label={"Example"} value={"Example"}><ResponseSamples responseExample={"{\n  \"credentialCategories\": [\n    {\n      \"id\": \"none\",\n      \"name\": \"None\",\n      \"description\": \"No category and no certificate check. Use it for tests or for credentials outside eIDAS. An mDL still needs an ISO/IEC 18013-5 Document Signer certificate.\",\n      \"certificateRequirements\": [],\n      \"presetId\": null,\n      \"entitlement\": null,\n      \"eaaCategory\": null,\n      \"sources\": []\n    },\n    {\n      \"id\": \"pid\",\n      \"name\": \"PID\",\n      \"description\": \"Person identification data: the identity data of a natural person (for example the name and date of birth) that a Member State, or a body on its behalf, issues to the EUDI Wallet. It needs a PID provider certificate.\",\n      \"certificateRequirements\": [\n        \"QcType id-etsi-qct-pid (0.4.0.194126.1.1)\",\n        \"keyUsage type A, B, C or F (ETSI EN 319 412-2 table 1)\"\n      ],\n      \"presetId\": \"pid-provider\",\n      \"entitlement\": \"PID_Provider\",\n      \"eaaCategory\": null,\n      \"sources\": [\n        \"ETSI TS 119 412-6 V1.2.1 clause 4: PID-4.4.1-01 (keyUsage type A, B, C or F) and PID-4.5-01 (QcType id-etsi-qct-pid)\",\n        \"ETSI EN 319 412-2 V2.5.1 4.3.2 and table 1 (key usage types)\",\n        \"ETSI TS 119 475 V1.2.1 A.2.5 (PID_Provider)\"\n      ]\n    },\n    {\n      \"id\": \"eaa\",\n      \"name\": \"EAA (non-qualified attestation)\",\n      \"description\": \"An electronic attestation of attributes that is not qualified, for example a membership card or a ticket. Any organisation can issue it as a non-qualified trust service. It needs an electronic seal certificate.\",\n      \"certificateRequirements\": [\n        \"keyUsage type A, B or F (ETSI EN 319 412-2 table 1: nonRepudiation, with digitalSignature or also with keyEncipherment or keyAgreement); for an mDL also type C\",\n        \"organizationIdentifier in the subject\"\n      ],\n      \"presetId\": \"eaa-provider\",\n      \"entitlement\": \"Non_Q_EAA_Provider\",\n      \"eaaCategory\": null,\n      \"sources\": [\n        \"ETSI TS 119 412-6 V1.2.1 clause 6 (EAA provider)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.3.1-3 (keyUsage type A, B or F for a seal over content)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.2.1-2 (organizationIdentifier)\",\n        \"ISO/IEC 18013-5 Table B.3 with ETSI TS 119 412-6 V1.2.1 PID-4.4.1-01: for an mDL, key usage type C (digitalSignature only) is also allowed (a known deviation from ETSI EN 319 412-3 LEG-4.3.1-3)\",\n        \"ETSI TS 119 472-1 V1.2.1 EAA-5.2.2.1-01 and EAA-6.2.2.1-01 (no category claim)\",\n        \"ETSI TS 119 475 V1.2.1 A.2.3 (Non_Q_EAA_Provider)\"\n      ]\n    },\n    {\n      \"id\": \"qeaa\",\n      \"name\": \"QEAA (qualified attestation)\",\n      \"description\": \"A qualified electronic attestation of attributes. Only a qualified trust service provider (QTSP) can issue it, and it has the same legal effect as a lawfully issued paper attestation. It needs a qualified seal certificate. The platform adds the ETSI category urn:etsi:esi:eaa:eu:qualified.\",\n      \"certificateRequirements\": [\n        \"QcCompliance statement (0.4.0.1862.1.1)\",\n        \"QcSSCD statement (0.4.0.1862.1.4)\",\n        \"QcType id-etsi-qct-eseal (0.4.0.1862.1.6.2)\",\n        \"keyUsage type A, B or F (ETSI EN 319 412-2 table 1: nonRepudiation, with digitalSignature or also with keyEncipherment or keyAgreement); for an mDL also type C\"\n      ],\n      \"presetId\": \"qeaa-provider\",\n      \"entitlement\": \"QEAA_Provider\",\n      \"eaaCategory\": \"urn:etsi:esi:eaa:eu:qualified\",\n      \"sources\": [\n        \"ETSI TS 119 412-6 V1.2.1 clause 7 (QEAA provider)\",\n        \"ETSI EN 319 412-5 V2.6.1 4.2.1 (QcCompliance), 4.2.2 (QcSSCD) and 4.2.3 (QcType)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.3.1-3 (keyUsage type A, B or F for a seal over content)\",\n        \"ISO/IEC 18013-5 Table B.3 with ETSI TS 119 412-6 V1.2.1 PID-4.4.1-01: for an mDL, key usage type C (digitalSignature only) is also allowed (a known deviation from ETSI EN 319 412-3 LEG-4.3.1-3)\",\n        \"ETSI TS 119 472-1 V1.2.1 QEAA-4.2.2.2-02, QEAA-5.2.2.2-01, QEAA-6.2.2.2-01 and QEAA-7.2.2.2-01 (the EAA category)\",\n        \"ETSI TS 119 475 V1.2.1 A.2.2 (QEAA_Provider)\"\n      ]\n    },\n    {\n      \"id\": \"pub-eaa\",\n      \"name\": \"PuB-EAA (public sector attestation)\",\n      \"description\": \"An electronic attestation of attributes that a public sector body responsible for an authentic source issues, or that is issued on its behalf, for example a vehicle registration from the national register. It has the same legal effect as a lawfully issued paper attestation. It needs a qualified seal certificate with the public sector statement (the law and the authentic source). The platform adds the ETSI category urn:etsi:esi:eaa:eu:pub.\",\n      \"certificateRequirements\": [\n        \"QcPSB statement (0.4.0.194126.1.3) with the country of the law, the authentic source and the law\",\n        \"QcCompliance statement (0.4.0.1862.1.1)\",\n        \"QcSSCD statement (0.4.0.1862.1.4)\",\n        \"QcType id-etsi-qct-eseal (0.4.0.1862.1.6.2) or id-etsi-qct-eidaspsbeaa (0.4.0.194126.1.3)\",\n        \"keyUsage type A, B or F (ETSI EN 319 412-2 table 1: nonRepudiation, with digitalSignature or also with keyEncipherment or keyAgreement); for an mDL also type C\"\n      ],\n      \"presetId\": \"pub-eaa-provider\",\n      \"entitlement\": \"PUB_EAA_Provider\",\n      \"eaaCategory\": \"urn:etsi:esi:eaa:eu:pub\",\n      \"sources\": [\n        \"ETSI TS 119 412-6 V1.2.1 clause 8: PSB-8.3-01 to PSB-8.3-05 and Annex A (QcPSB)\",\n        \"CIR (EU) 2024/2979 Annex II PuB-EAA-4.6.3-04 (QcType id-etsi-qct-eidaspsbeaa)\",\n        \"ETSI EN 319 412-5 V2.6.1 4.2.1 (QcCompliance), 4.2.2 (QcSSCD) and 4.2.3 (QcType)\",\n        \"ETSI EN 319 412-3 V1.4.1 LEG-4.3.1-3 (keyUsage type A, B or F for a seal over content)\",\n        \"ISO/IEC 18013-5 Table B.3 with ETSI TS 119 412-6 V1.2.1 PID-4.4.1-01: for an mDL, key usage type C (digitalSignature only) is also allowed (a known deviation from ETSI EN 319 412-3 LEG-4.3.1-3)\",\n        \"ETSI TS 119 472-1 V1.2.1 PuB-EAA-4.2.2.3-02, PuB-EAA-5.2.2.3-01, PuB-EAA-6.2.2.3-01 and PuB-EA-7.2.2.3-01 (the EAA category)\",\n        \"ETSI TS 119 475 V1.2.1 A.2.4 (PUB_EAA_Provider)\"\n      ]\n    }\n  ],\n  \"mdlRule\": {\n    \"doctypes\": [\n      \"org.iso.18013.5.1.mDL\"\n    ],\n    \"name\": \"Mobile driving licence (mDL)\",\n    \"description\": \"An mso_mdoc configuration with the mDL doctype, whatever its credential category, needs a signing key with an mDL Document Signer certificate (ISO/IEC 18013-5 Table B.3), issued by an IACA.\",\n    \"certificateRequirements\": [\n      \"keyUsage digitalSignature, critical\",\n      \"extendedKeyUsage 1.0.18013.5.1.2 (mdlDS), critical\"\n    ],\n    \"presetId\": \"mdoc-document-signer\",\n    \"fixed\": {\n      \"keyUsage\": {\n        \"values\": [\n          \"digitalSignature\"\n        ],\n        \"critical\": true\n      },\n      \"extendedKeyUsage\": {\n        \"values\": [\n          \"1.0.18013.5.1.2\"\n        ],\n        \"critical\": true\n      }\n    },\n    \"sources\": [\n      \"ISO/IEC 18013-5 Table B.3 (document signer: keyUsage digitalSignature critical, extendedKeyUsage 1.0.18013.5.1.2 critical)\",\n      \"ETSI TS 119 472-1 V1.2.1 clause 6 (an ISO/IEC-mdoc EAA can be an EAA, a QEAA or a PuB-EAA)\"\n    ]\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>
      