---
id: config-digital-wallet-open-id-presentation-definition
title: "Create presentation definition"
description: "Creates a presentation definition. The presentation definition gives the credential types and the claims that the verifier needs for an OpenID4VP verification."
sidebar_label: "Create presentation definition"
hide_title: true
hide_table_of_contents: true
api: eJztPftz2zbS/wpGv+TxSfQjybXnu7k5R/a1btPYtfO4TpORYBKS2FCEQlC21Yz/99sHQIIUKSmp+6VtNJkkEgksFvvCYrELfehEyoRZPMtjnXYOOv1MyVwZIcUsU0alucQXIlKjOI3xYyBeTFTbSzGOr6BzDi3CTEXQIpaJyBczhJhG/CKR8RTbyJy+X6ksHsUqE6lSkREjnUFTcTpT6cnR41dn9n1IQwVv0jfpNzBGfYhMvZ/HmZrCVxgJ0T+Kx3EOb/pFIyN+nKtsIZ7JdDyXYyXuH/V/fPZAvKencSqGUfg+oTZDnmWBWmw8hPaCXZqMDEM1g+EQCgGJYZY6TRaE5SoqAS5aTHQSManyTKZmprNcGJXncTq21FFXiJg/f5qnMjlgO4HHuTkQQxhjplOjftCRGnbFMExiGPMkuggnQA98EoWHs/ice74AXuAzdTNTYa6i0wzolJohzWio0jBbzODxuQV6nIavZAIdL+YzxFBFQJqnOp+Ihw+PgOBhLs60yR8+FPeHEX0fzOA7jVp+DX65zocPaAjo1heHZyfcIxzIWcwo4ifbzs1ITGFKwMtMCXkl40ReJopoez5PlCdBRmVAJCFnM5i6OXiT9sQQGqtkiIybwrAy10BJHH86B+pdKvFI5Frs7e6KcCIzCZTIjEh0Og783tQ41dRBCnrIo4KAqptcpYZ5QgiYLsmuupHTWaLEvUOQsFce7+51xb0jHc5RRsVFPE6B0fcE9Lj3faqvez/pedbrw4B6CnO5//1P/Qf3GJlSKqvTuZ6otGQ/MRYbDK9mg1y/U+kQgQ8jdRWHauCaAfuONM0JJDMScd4KJo4sGMLiWIYTAZjDuHrk4RSUSghCxCoM1IHeLFJSDIEqU5lblXLfRKgBmAalvJ7EAHo4VbkcindqYSo8ZR0DMZ8aPZhGOhyKXL4D7g/hMxqWwRXK55AUjwTp/0zUQzly7a5ACKmNYYKUnQxIHok9NB9chYNfjE6Lbn4z1mrG/6oYoIukLkbzAA0FT9IQLCC2NzuB0pMkgThMgZIw04yeAsEzNZobFTHPyUgOwByURAU4aU9NZ/nCvkalzTJJpotIJqcVm0h2bVPmtY+laWlwg1mRJN1GzT9X/PllFpPYwNz0tYqIYjXRIgNFouVbCiarZTfTwKBYjkh4azaER9/ESq1SlUZEAmapW6UK0z9O9CUQE8R1FI/nGZthMgwzlU0B0cJaWbR4meo1mN3N6cN2kfW3tIx29nXLvTxTnIBbKVCOCagBk0Pm2weJq5KcJyiqumjCsuyQqLSYpw4M4UIrF1hPmPORzOVRscQV823ArFgvQRnMO7viizO5IMv4GiikcnGYgxfCKycwRfx4fHHY94WbvYSL/iEoVNGyWHiHsdF7X+/uPRp8NZBpqm4GoJTAUrLXE/APphoWlQyXkYO67XMrxJLl7OJ84eVhGk505jW8ebL794aVt2yQzpOEu68kl2svL9FraFqkqQU6DrCOwkIT5iBEOlWwmGpq0rU+Q90KcEdQLd+OXsewjEu2TUHVmnZXmRuSDutwDUjk9TiTMzDjA0RNZYPLOI1gdRuiP0NiA3RDoBY5hCZmEkYv55Nfa6ESduCsVV4yTvzUs4zoGeBSZpUK2N/pdjToJUnDSQT+LOutdQZZtsiTi84836xkBPS3ivNUR4vOwYeOnSjAwkl0a+7yM/QJuu2eKFqTZe8OjDAqQqquW71sQARXSHiFSJBrw27EDq5S+MyglEl6my5OR52Dnz90kIWAlb78BeQGQORxnuCDI9ZhcR8IIMCsgef5wE6V5/Zzh7ybztvbbjuUk+MX/xEXR73vXr8Qr/qdOi3OWrxd9pgKTU9FFY5PPCuSpYUIPgHLi1NBut97IqbgcO1Mj579Blxr0NDwAMC7Rvr1oz6S4j6Q5MGnIissEHAHkLLsg2yOHeDXsc6rQak6fvr69ORI9GrswldkJPAD9z3oHM8zUDsg19O5iVNljDPjp9cprKEA5j6Dw8lVTMb3anFChMTFFiA1vP8PTQTeRXF0AM4SNLGmHJ7ZT4PdPXhsQk3kpRmWNh2bWZ8YwVesNLzLrAszmGex1xOXYxq0cBGQMc51wtl7ri9pX4wG55kay6R3BmiB/XRTY9XtodHvPTs7OQJIo2JWzqGEh2iKicCFz4ocIpAMsQoQ4aFcddhAExJoV7FTXFKVJM89TxDYc3AVkeWFJKy04870TcGExDOU1xFMWYHE3MLYpZw0Kd7nkxZclf9iouLWbk9SKus2WpZsHIDzExAjgifBXpDMYLBmGVlqDIDb5Kap7e8nSxV7uLU4dytG3nbXkyRvwwuw11qdFrNTYngxd4tcm0g1tf0dzVPV67jPcaguhWJU9FulzMErwP3ppI62eyRw1W0rvOM9Xwf9g8qGBJk4yfOZOdjZcRvmwPoQQainnbfbFfNTRPKl3WXfmVCWAP9KYumCEVu/7BOkDPcId278cIg7MICfwXUrQmJ3bwE3CFcimMO9/a/7T/u9by/2n/wNRsLv3/R/wE/wAD9trekny/mdW1Qc5E6s6h9P1j2zuhXdz7d1/iN7qJ9LaP8U7umXs0tfLbZ/TC/2jyW6v68Lu5XErae79XS36tCgDluH+K/oEH85Eu4fEGw95T+pp/xlHkQ0i+7WW/7c3vJWGrce89Zj3qrECpXYes1/Ra/5C5LyW5L0mcwAIta8EK7VbMNT+iCTAAQzBoaKEl2XuGpkGl3qGwEuv0xjw4mJuaYEY0xFzCdUz0DSEIjXmPi90HOuOKF3EyUB4W5R6RGHmI2dculHkcDrChsoEfYmL9JmAfeoEYcup0TGmEE8lmCCuT7omrWQusPrRuwxU5dSib1+U/hY6awqfQLxTElbisYTEnqeOzrUABSp6cV0oYfxqeGVBCCx5BwgAN1BxpRL4rxUMrNFMQbz8UFvPfI29EjJyLxTiyqpucSllZOjTE/pre1MxAFd1pmqYByIFxrZZsfpYdMQM4xh1rKFQSijBBsbA6lakaAJDM9evhA7V/s7nMa9I6NpnO6A2YHeOx/gfzKRtzsWQg8gDAXyD/Ajig//2wNdYhaccFUIjhipGRg2oFNE0sTc9eflEQulL07nigoguB5JxDnMBHiN4Hno02yM8K9hcBGPSnG/xFo5BmtKGWiaMOXCq5vYAGxbCYAFaTgqQMuWxdWVC8BkEr1QEdYUiXn6LtXXqae0mE1f0+Fm5jjlIT1wQDkXvwqB2jF2TBQRxaORyrB8o4olyMIUS6BIiyn3XMY2YfrbFy/OxOPdXUxHjtHuMJHgG3IEvldJ2/GTlsmedb0MeJtWbfIM7V+ZyAzP/vb1139Xe/Jx+ORyf/Rod3d3Tz6Kvtrb7bA55fWIEp73d3cpYFKxhl5xUkilsSy9d5G2X88Fn6H3kOUxY+OP4NUnrO2HS2CdIPWE8hPAMEupWCHUWdRg4VcW/yYxSmoazXScYv1TPs+s6ablkmrMmtFHFZmAoDAcJmiXTCGJ2XwWoe1yoI2FXRGw2OFeIg2Cn1zLheECl/aRUVSjKCPbuYqHt1REAl1OPWE+2YSuS3R0VcN9q1BU4kT6A0pqjekqPNomsx6X5cW7Xi9ra7X1aoa/pLUM0PQgkX1vrEumlYJXbSrwsWRADncde7FNpMAge5ymyVo/et3Mvp1PZdpDkFgQ7JflltXns3k206Y07C3Tq5XsUrnuQpyBR0qgi3Ldw717LLKRNJNLLUFnzERfWwYSBjSDinNa11OQvZhdqzNPY5uqij62dr02ec8rXl91z/UjbsVnT7JYqBg8V6pLvyKrKAf1a0uxsM7W/na9wl9bB8zfegb2yCg3riaWyXOwVM9L9Z9FsVp3dR2vrRb1SnOpVmy5iV/pS+slYx5Kryi/qHfrVqrNuhsWvUE753nbkjWqGlTRAB00ncXIdxwcVG/WS9QVSG9DrRuV2iFe40zPZ/X7Dux1AxWvEpiZoENamBUSsgU5pUXxZduVBMi7VPtlQm9SlOiVJYvrdRVbkRKWYECHclkXxJoZQVoa1jimLjs7sJ5m2nrcSxAv1QiLOj2HHx2wZVNvr3aglcqAGQpzbvPdxelzQXtfuWQqqSgZLCX0ismG4bt6OefQWbumKQXiHFe54TfHFYc2Yk3vMcY7uOzE0Y6JQE53PPA9nGGvZJcVZ8KQMYahFWoisqOQCp5kTFrJpZzMpvXiQAxAgaiTmWssVTqf4o4VvQ+u2x3gy/Ir7lz1OE4HWWzeDTwgrS8GKfzNzd4+Wsow1HOAyRsdHI/LiBXKF4wzkONMUYnlgD0Y9zyKTZhoMwcdbWjyXhlGk/bq7M0d5p4Qw6wuyQVdWkpvRB5Pscx4OuviAmcAJlCo61g+1eXK7slN6TKuWed5afydsUkk6FA4gSVkE5SKUNI6HWcfhwSS77ugtdMvWjTifnF9yoOiDtsie8hW8VdG4typy7AMYA2X7l8Jmiu87e6uPP3+Ckw8vBN9tIajOAFnk6+bKKomqabTXzD1lWLFalqEYZcbeOJfibEtI2TlrD2it46y3+PNEEs+Je2c7VYNb4xAw4ShNnpZYktMbIsXrhuZ2xXxHr6thAMJvsc0tDUBvCJTHXxwQoXOsJfW155Lgdck6MR5KDypfFG1mOjJN/KVb6Ww8D36lxUJFP5EcttI51qZRakT+8GuoA7WUnIZLT3pXUokbUVBClP+22wru1NgW2kgYlM1KLs58sXdE7lbZ1cpVHEvjFcz3KKxgXf/S6Ue2ip7XwNvwhxj2i84DLV0XUJrGfURNXShYN4y8MVJ7KM1SEBF6cqItUORKFQZ3ab2VgPa6+jap/Y4J1pU1xG0LujlbVFOZfEiE3AxRm6TVY0lWl8b3coyzj5kX0MK91C8PD+h25Si4tXRyVGX7CMNN/AuwCiavHK4ePdo8BEGadHAyHQQoRvBng1gc3H4XBw9vyjiYcC0/wbQVIS4UyF3Rlm3miCAwzjxuuPXtm6BeI0RH777g4KK1RueunUSOHGQAn2FsLLZLyO1uKtMSjrlMhurvHKdTKs7vImc1U4/gAF8vrJEdGt+HE3dV6QIiWHjZTkbbODPT8oVvElyMFAOS6sc5ShzucCCUdMosEzsQJw6HSP31b+Fp8qRxjt5qlRsvJ6H5QNQsbuJqZK0brghG7m/Gcc2t6pAt4pN5eOqddQ+93Gy5wS+cjcyIFJJjD7ASqJXLko7ePiwRviSawVZyAXB+GiwTOKm9rztLg7ZUM+D4qI1HtHe5VOoKx5xtjg4xEM/qFeMg3Fb5MV3r4/9y46qFwoVQ3w0eLq2D2BXV/hKLXSVGHTuWGSLFKeRpHNL55HrBMDeyFZZSQt5tRa/pj+WqN5tSUyCunwX9yqhPjTFYPB9sxC5tbu4d6kdRrHZdZto1+euFYw8H59JxTlvceTLd4nUsiEKDlBsY9mr4XZLNs9ds2idMxpgiTN3O0O+TIlOJnI1NQ0nDLcbHmqvmTNqkj0v8DRKyGSMcaJJc8DOo8cqu3OSuxsRnfuxbEwqkvoPX6z5/SgB8+dO/mIO70qOtcvoCld41PahPai3qmAP64d3GJxyjCkI49/PWYsd4SGoGIHsGHEpw3cU9U8wQJwp5VGWAxkt/C1le4OcBBQGszAA6QeZynGF7Zdaw7TTJcbzjVjezBOZY4B0g2MB8ZOeY2CQT+kojA5qQePjbWuIwMp9PV1cid+OU3T7PxbbytWXvmOwHlsb/zdz3IC3h+RRiBZLc5yC0Fq7DNx/rm0QzsxUkqDdLiP9VrLQkV1xhvLbIvSYDBIuWu/9ojPWNml2N4iyD1G56JaIaoNGtW0mXyLHu2+6Rm0leGJM5T5bjw90K5tPq4AMmn8pFDm7rYdP7qhmXXi423lHgHhTXtvm+iE4PwDWcvhW17EGQX5bn0UL5zndyx7Kgxzgt8d8+Lvx4a0/jMoynfXRzezy5yNPVt521xzYlr1LicRDzjHF/oqDbEDwtgF8k+kqzr6fSjyNm4GJLTJ+OjYFaPmU+1JHC3f6T3Fuioh3K1fpxsaQrmV4/JXlfKiYikfeLbqVDptcmttwT2aklbHZOGi0ORWkfs9x4z2YFsEVvkJ31e2lqBktO5vNbx31cFhece2ivfp60WL+7VeMdkXtKk2fc+uvmlyi1dJxSmnaeKhKYgdGHjnRhF/aYwznsnln3RYtG/0DzCwBaj3s5bfrcivqOrv3Bevsy9SeJ/5K1rBKmidftDkr8lus50nD1GiETpsK5+AMLigJ8pCSyeAjpWQ+pUw7dK3pCc5ajimj221rbWpvcbDRx/RdF3ZDMgF+E435qHbzylmenQ0P/3wl8A7+cBmkOTVlbh6pqbZTxhU1w5xkl4Aewbse+vXxGDQ9D2LdwXnWL5rU0ZxtQAuYdRAugExoVFq6G35dR+RtyQuO1ZIkOY6Ueyh+0JIvVtkHLbmwRSpjmSRZOwu2e/5hBc7QJWe6ZDvgyyi+AUvFixLjKIbifuo8UrCkMXmkZiZD9aArVDAOamAPhO34T0ztQ3Jg8uS/huSv+rL3ocM5n0We93evXyzPzcsHBdUwxqHHkCzOeFBY3SsWFDQu45sH6xQ6jnwj3xAtxnl5Me6x08ky+b0Mq6xN0C6afsRFHraPNT9+XrZ7g7nhtVrHMh/Qy8yuomBzr9G5BgAFWPqOclkmgNQH+7RUbP7ekBHi399bYLc8/1vGqpouQn3tPe0taNr7i+mW1zU5HfUj/ZaagpWlCsUMNrhNzBUnFH0+vUShJdS+DLrlqsWPqu0pRfKT6huQE3E60m6dBobQ+jkF84Ejc89/l2aysHTxN+Wjqn31TXPNSBSdcNd3FdMPa4DbiWoMhivG/6eF11XJXqyf7PsB3RNj5jINFayDtAie8K98rE8JqGQEAEa5DnVCZwExh4kVbeqM9Tt/tXkEuQaP0oAKUUyIYwVXnLXnPEr/MH9OHi6sOmkks8j0aL4x0IEiW4atpKU0YeuX/nRrN0rxaI2l9V4cwP70A3qr4G8pPIsErro1CpYEoOt+sLvEuuvr60DS6wCmvGP7mp1nJ/3j5xfHPexzW14YXbITiRXZREW39pUqu7+7/zh4FOxRIATEfCpTDx/+tZ82j7u+0Hj+5PZ3gra/E7T9naDt7wRtfydo+ztB298J2v5O0PZ3gra/E/Qn+50gu9fGyuKdGTSmcgfyycuK7Kt9LugDlabdpR+vswdVfMAVceyiLWoHe8QJ7jEB5IcPmFn6Mktub/Hxe46U/EzBh4z2SRyDdPEtCvPFxh7V2srHVrd8W7y9Ld7eFm9vi7f/H4u3G+0oRvYaSrhdYJZODrhNn21Xz+YEuBZLx1Vlj0Ni48q2/vHL2ekFhswv7e+5TTnyl8lrDAfCvwedN/CHrLkNoH7g5xjb5ggA3hFCcDEULm1gvjyU4DCm/eCFcWW68LCsn0/wZPBf74fBql3+iToMWvKvojm/ae1QRPS5NfICkx3+B9GtBfA=
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 presentation definition</h1>

<MethodEndpoint method={"post"} path={"/v2/config/digital-wallet/openid/sdjwt/presentation-definition"}></MethodEndpoint>



Creates a presentation definition. The presentation definition gives the credential types and the claims that the verifier needs for an OpenID4VP verification.

Give the credential requirements as a Digital Credentials Query Language (DCQL) query in `dcqlQuery`. The verifier is OpenID4VP 1.0 and accepts DCQL queries only.

The presentation definition also holds the transport settings that every verification request inherits: `responseMode`, `clientIdScheme`, `dcApiRequestType`, `expectedOrigins` and `encryptedResponseEncValuesSupported`. Both **Direct Post** (`direct_post`, `direct_post.jwt`) and **DC API** (`dc_api`, `dc_api.jwt`) response modes are available.

Rules that the server applies:
- `label` is mandatory and must be 3 to 100 characters long.
- `label` must not be a label that an extension reserves, for example 'Age Verification', 'Document Signing' or 'Know-Your-Customer (KYC)'.
- `dcqlQuery` is mandatory when `responseType` is `vp_token` or `device_response`. Do not send it when `responseType` is `id_token`.
- Each entry of `dcqlQuery.credentials` needs an `id` and a `format`. The `format` controls which `meta` keys the server accepts: `mso_mdoc` takes `doctype_value` only, `dc+sd-jwt` takes `vct_values` or `type_values`, and `jwt_vc_json` takes `type_values` only. The `vc+sd-jwt`, `vp+sd-jwt` and `jwt_vc` formats take no `meta` key at all. Any other key is refused.
- `claim_sets` needs a non-empty `claims` array in the same credential query.
- Each entry of `dcqlQuery.credential_sets` needs a non-empty `options` array.
- `directPostRedirectUri` is allowed only when `responseMode` is `direct_post`. The server refuses it for `direct_post.jwt`.
- `encryptedResponseEncValuesSupported` is mandatory when `responseMode` is `direct_post.jwt`, and the verifier global configuration must permit response encryption.
- `dcApiRequestType` is allowed only when `responseMode` is `dc_api` or `dc_api.jwt`.
- `expectedOrigins` is mandatory when the request type is `signed`. `dc_api.jwt` defaults to `signed` and `dc_api` defaults to `unsigned`.
- `transactionDataDefinitionType` is mandatory when the DCQL query asks for a Payment Wallet Attestation, a QESAC credential or an SCA attestation.

The `iso18013_7_annex_c` version has more rules: `responseType` must be `device_response`, `trustAnchor` must be `x509`, `clientIdScheme` must be `null`, `transactionDataDefinitionType` must be absent, `expectedOrigins` must hold **exactly one** origin, every credential query must use `mso_mdoc` with a `meta.doctype_value`, a non-empty `claims` array and `require_cryptographic_holder_binding` set to `true`, every claim path must hold two elements, and `credential_sets` and `claim_sets` are not allowed.


## Request

<details style={{"marginBottom":"1rem"}} className={"openapi-markdown__details"} data-collapsed={false} open={true}><summary style={{}}><h3 className={"openapi-markdown__details-summary-header-params"}>Header Parameters</h3></summary><div><ul><ParamsItem className={"paramsItem"} param={{"description":"Optional. Unique identifier of the sandbox organisation to use for this request. When you send this header, the service runs the operation in the context of the named sandbox organisation, that is, against the wallet of that sandbox organisation and not against the main wallet of the organisation. Leave the header out to use the main wallet.\n\nThe service reads this header only when you authenticate with a bearer access token. When you authenticate with an API key, the service takes the sandbox organisation from the API key and ignores this header. To run an API-key call in a sandbox organisation, bind the key to the sandbox organisation with `PUT /v2/config/admin/apikey/{apiKeyId}/sandbox-org` instead.\n\n`X-SubwalletId` is the deprecated name of this header. The service continues to accept it, but `X-SandboxOrgId` wins if you send both headers.\n\nThe sandbox organisation must exist, must belong to your organisation and must be deployed. An unknown identifier, an identifier of a sandbox organisation that is not deployed, and an identifier that belongs to a different organisation all make the call fail with HTTP 400.","in":"header","name":"X-SandboxOrgId","required":false,"schema":{"type":"string"},"example":"6889e1a4c5b2f30001a3d710"}}></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 style={{"marginTop":"1rem","marginBottom":"1rem"}}>

Label, credential requirements and transport settings of the new presentation definition.

</div></div><ul style={{"marginLeft":"1rem"}}><div><span className={"badge badge--info"}>anyOf</span><SchemaTabs><TabItem label={"Default (all fields)"} value={"0-item-properties"}><SchemaItem collapsible={false} name={"label"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `>= 3 characters` and `<= 100 characters`"} schema={{"type":"string","minLength":3,"maxLength":100,"description":"Human-readable label that gives the purpose of this presentation definition, for example 'Verify Portable Document A1'. The dashboard shows this label. The label must be 3 to 100 characters long. Labels that extensions reserve are refused, for example 'Age Verification', 'Document Signing' and 'Know-Your-Customer (KYC)'."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dcqlQuery</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Digital Credentials Query Language (DCQL) query that gives the credentials and the claims that the verifier asks from the holder. This is the only way to give the credential requirements.

The query holds a `credentials` array. Each entry needs an `id` and a `format`. The `format` controls which `meta` keys the server accepts. Each entry can also hold `claims`, `claim_sets`, `require_cryptographic_holder_binding`, `multiple` and `trusted_authorities`. A top-level `credential_sets` array can group the credential queries.

`dcqlQuery` is mandatory when `responseType` is `vp_token` or `device_response`. Do not send it when `responseType` is `id_token`.


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

**Possible values:** `>= 1`

</div><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Credential queries. The wallet of the holder must satisfy every entry, unless `credential_sets` says otherwise.

</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={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of this credential query. `credential_sets` and the presentation response use this value. Use only letters, digits, `_` and `-`. Do not use spaces. The server does not apply this check to the `iso18013_7_annex_c` version."}}></SchemaItem><SchemaItem collapsible={false} name={"format"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`dc+sd-jwt`, `vc+sd-jwt`, `vp+sd-jwt`, `jwt_vc_json`, `jwt_vc`, `mso_mdoc`]"} schema={{"type":"string","description":"Credential format that the verifier accepts for this query.","enum":["dc+sd-jwt","vc+sd-jwt","vp+sd-jwt","jwt_vc_json","jwt_vc","mso_mdoc"]}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>meta</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Format-specific match rules. The server refuses any key that the `format` does not allow:

- `mso_mdoc` - `doctype_value` only.
- `dc+sd-jwt` - `vct_values` or `type_values`.
- `jwt_vc_json` - `type_values` only. `vct_values` is refused.
- `vc+sd-jwt`, `vp+sd-jwt`, `jwt_vc` - no key is allowed. Leave `meta` out.


</div><SchemaItem collapsible={false} name={"vct_values"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Accepted `vct` values of the SD-JWT VC. Use this property with the `dc+sd-jwt` format only.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"type_values"} required={false} schemaName={"array[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Accepted type sets of the credential. Each entry is an array of type names, and the credential must hold every type of at least one entry. Use this property with the `dc+sd-jwt` and `jwt_vc_json` formats only.","items":{"type":"array","items":{"type":"string"}}}}></SchemaItem><SchemaItem collapsible={false} name={"doctype_value"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Accepted `docType` of the mDoc, for example `org.iso.18013.5.1.mDL`. Use this property with `mso_mdoc` only."}}></SchemaItem><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Format-specific match rules. The server refuses any key that the `format` does not allow:\n\n- `mso_mdoc` - `doctype_value` only.\n- `dc+sd-jwt` - `vct_values` or `type_values`.\n- `jwt_vc_json` - `type_values` only. `vct_values` is refused.\n- `vc+sd-jwt`, `vp+sd-jwt`, `jwt_vc` - no key is allowed. Leave `meta` out.\n","properties":{"vct_values":{"type":"array","description":"Accepted `vct` values of the SD-JWT VC. Use this property with the `dc+sd-jwt` format only.","items":{"type":"string"}},"type_values":{"type":"array","description":"Accepted type sets of the credential. Each entry is an array of type names, and the credential must hold every type of at least one entry. Use this property with the `dc+sd-jwt` and `jwt_vc_json` formats only.","items":{"type":"array","items":{"type":"string"}}},"doctype_value":{"type":"string","description":"Accepted `docType` of the mDoc, for example `org.iso.18013.5.1.mDL`. Use this property with `mso_mdoc` only."}}}} collapsible={false} discriminator={false}></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"}>claims</strong><span className={"openapi-schema__name"}> object[]</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Claims that the verifier asks for. Leave this property out to ask for the whole credential.

</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={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of this claim query. `claim_sets` uses this value. Give an `id` to every claim when you use `claim_sets`."}}></SchemaItem><SchemaItem collapsible={false} name={"path"} required={false} schemaName={"undefined[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Pointer to the claim inside the credential. Each element is a property name, or an array index. For `mso_mdoc` the path holds two elements: the namespace and the data element, for example `['org.iso.18013.5.1', 'family_name']`. For `jwt_vc_json` the path starts with `credentialSubject`.","items":{}}}></SchemaItem><SchemaItem collapsible={false} name={"values"} required={false} schemaName={"undefined[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Values that the claim must hold. Leave this property out to accept every value.","items":{}}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem><SchemaItem collapsible={false} name={"claim_sets"} required={false} schemaName={"array[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Alternative sets of claims. Each entry is an array of claim `id` values, and the wallet satisfies the first entry that it can. Send this property only together with a non-empty `claims` array.","items":{"type":"array","items":{"type":"string"}}}}></SchemaItem><SchemaItem collapsible={false} name={"require_cryptographic_holder_binding"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the credential must prove that the holder owns it."}}></SchemaItem><SchemaItem collapsible={false} name={"multiple"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the wallet can return more than one credential for this query."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>trusted_authorities</strong><span className={"openapi-schema__name"}> object[]</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Issuers that the verifier trusts for this query.

</div><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"type"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Type of the trust list, for example `etsi_tl` for an ETSI trusted list or `aki` for an authority key identifier."}}></SchemaItem><SchemaItem collapsible={false} name={"values"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Identifiers of the trusted issuers.","items":{"type":"string"}}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></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"}>credential_sets</strong><span className={"openapi-schema__name"}> object[]</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Groups of credential queries. Each entry gives the combinations of credential query identifiers that satisfy the request.

</div><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem","paddingBottom":".5rem"}}>Array [</div></li><SchemaItem collapsible={false} name={"options"} required={true} schemaName={"array[]"} qualifierMessage={"**Possible values:** `>= 1`"} schema={{"type":"array","minItems":1,"description":"Accepted combinations. Each entry is an array of credential query identifiers. This property is mandatory, and it must hold at least one combination.","items":{"type":"array","items":{"type":"string"}}}}></SchemaItem><SchemaItem collapsible={false} name={"required"} required={false} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the wallet must satisfy one of the `options`."}}></SchemaItem><SchemaItem collapsible={false} name={"purpose"} required={false} schemaName={""} qualifierMessage={undefined} schema={{"description":"Reason why the verifier asks for this group of credentials. The server accepts a string, a number or an object here."}}></SchemaItem><li><div style={{"fontSize":"var(--ifm-code-font-size)","opacity":"0.6","marginLeft":"-.5rem"}}>]</div></li></div></details></SchemaItem><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Digital Credentials Query Language (DCQL) query that gives the credentials and the claims that the verifier asks from the holder. This is the only way to give the credential requirements.\n\nThe query holds a `credentials` array. Each entry needs an `id` and a `format`. The `format` controls which `meta` keys the server accepts. Each entry can also hold `claims`, `claim_sets`, `require_cryptographic_holder_binding`, `multiple` and `trusted_authorities`. A top-level `credential_sets` array can group the credential queries.\n\n`dcqlQuery` is mandatory when `responseType` is `vp_token` or `device_response`. Do not send it when `responseType` is `id_token`.\n","properties":{"credentials":{"type":"array","minItems":1,"description":"Credential queries. The wallet of the holder must satisfy every entry, unless `credential_sets` says otherwise.","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string","description":"Identifier of this credential query. `credential_sets` and the presentation response use this value. Use only letters, digits, `_` and `-`. Do not use spaces. The server does not apply this check to the `iso18013_7_annex_c` version."},"format":{"type":"string","description":"Credential format that the verifier accepts for this query.","enum":["dc+sd-jwt","vc+sd-jwt","vp+sd-jwt","jwt_vc_json","jwt_vc","mso_mdoc"]},"meta":{"type":"object","additionalProperties":true,"description":"Format-specific match rules. The server refuses any key that the `format` does not allow:\n\n- `mso_mdoc` - `doctype_value` only.\n- `dc+sd-jwt` - `vct_values` or `type_values`.\n- `jwt_vc_json` - `type_values` only. `vct_values` is refused.\n- `vc+sd-jwt`, `vp+sd-jwt`, `jwt_vc` - no key is allowed. Leave `meta` out.\n","properties":{"vct_values":{"type":"array","description":"Accepted `vct` values of the SD-JWT VC. Use this property with the `dc+sd-jwt` format only.","items":{"type":"string"}},"type_values":{"type":"array","description":"Accepted type sets of the credential. Each entry is an array of type names, and the credential must hold every type of at least one entry. Use this property with the `dc+sd-jwt` and `jwt_vc_json` formats only.","items":{"type":"array","items":{"type":"string"}}},"doctype_value":{"type":"string","description":"Accepted `docType` of the mDoc, for example `org.iso.18013.5.1.mDL`. Use this property with `mso_mdoc` only."}}},"claims":{"type":"array","description":"Claims that the verifier asks for. Leave this property out to ask for the whole credential.","items":{"type":"object","additionalProperties":true,"properties":{"id":{"type":"string","description":"Identifier of this claim query. `claim_sets` uses this value. Give an `id` to every claim when you use `claim_sets`."},"path":{"type":"array","description":"Pointer to the claim inside the credential. Each element is a property name, or an array index. For `mso_mdoc` the path holds two elements: the namespace and the data element, for example `['org.iso.18013.5.1', 'family_name']`. For `jwt_vc_json` the path starts with `credentialSubject`.","items":{}},"values":{"type":"array","description":"Values that the claim must hold. Leave this property out to accept every value.","items":{}}}}},"claim_sets":{"type":"array","description":"Alternative sets of claims. Each entry is an array of claim `id` values, and the wallet satisfies the first entry that it can. Send this property only together with a non-empty `claims` array.","items":{"type":"array","items":{"type":"string"}}},"require_cryptographic_holder_binding":{"type":"boolean","description":"`true` when the credential must prove that the holder owns it."},"multiple":{"type":"boolean","description":"`true` when the wallet can return more than one credential for this query."},"trusted_authorities":{"type":"array","description":"Issuers that the verifier trusts for this query.","items":{"type":"object","additionalProperties":true,"properties":{"type":{"type":"string","description":"Type of the trust list, for example `etsi_tl` for an ETSI trusted list or `aki` for an authority key identifier."},"values":{"type":"array","description":"Identifiers of the trusted issuers.","items":{"type":"string"}}}}}},"required":["id","format"]}},"credential_sets":{"type":"array","description":"Groups of credential queries. Each entry gives the combinations of credential query identifiers that satisfy the request.","items":{"type":"object","additionalProperties":true,"properties":{"options":{"type":"array","minItems":1,"description":"Accepted combinations. Each entry is an array of credential query identifiers. This property is mandatory, and it must hold at least one combination.","items":{"type":"array","items":{"type":"string"}}},"required":{"type":"boolean","description":"`true` when the wallet must satisfy one of the `options`."},"purpose":{"description":"Reason why the verifier asks for this group of credentials. The server accepts a string, a number or an object here."}},"required":["options"]}}},"required":["credentials"]}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"transactionDataDefinitionType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`payment_data`, `payment`, `login_risk_transaction`, `login_risk_transaction_non_ts12`, `account_access`, `emandate`, `data_agreement_record`, `data_disclosure_agreement_record`, `qes_data`]"} schema={{"type":"string","description":"Type of transaction data that the verification request binds. The holder must approve the transaction data before the wallet sends the presentation. The value selects the JSON Schema that the server uses to validate the `transactionData` of the verification request. Read `GET /v2/config/digital-wallet/openid/sdjwt/transaction-data-definitions` for the schema of each type.\n\nThis property is mandatory when the DCQL query asks for a Payment Wallet Attestation, a QESAC credential or an SCA attestation.\n","enum":["payment_data","payment","login_risk_transaction","login_risk_transaction_non_ts12","account_access","emandate","data_agreement_record","data_disclosure_agreement_record","qes_data"]}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`version_01`, `iso18013_7_annex_c`]"} schema={{"type":"string","default":"version_01","description":"OpenID for Verifiable Presentations (OpenID4VP) version of the Authorization Request. `version_01` is OpenID4VP 1.0. `iso18013_7_annex_c` is the ISO 18013-7 Annex C profile, which asks for mDoc credentials over the Digital Credentials API.","enum":["version_01","iso18013_7_annex_c"]}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key identifier of the key that is used to sign the Credential."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`did:key`, `x509`]"} schema={{"type":"string","description":"Format of the signing key, for example `did:key` or `x509`.It sets how the holder resolves the identity of the verifier. `iso18013_7_annex_c` needs `x509`.","enum":["did:key","x509"]}}></SchemaItem><SchemaItem collapsible={false} name={"scope"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"OAuth 2.0 scope value for a scope-based presentation request."}}></SchemaItem><SchemaItem collapsible={false} name={"responseType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`vp_token`, `id_token`, `device_response`]"} schema={{"type":"string","default":"vp_token","description":"OAuth 2.0 response type of the Authorization Request. `vp_token` asks for a Verifiable Presentation. `id_token` asks for an OpenID Connect ID Token and accepts no `dcqlQuery`. `device_response` asks for an ISO 18013-5 DeviceResponse and is only for `iso18013_7_annex_c`.","enum":["vp_token","id_token","device_response"]}}></SchemaItem><SchemaItem collapsible={false} name={"clientIdScheme"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`redirect_uri`, `did`, `verifier_attestation`, `x509_san_dns`, `x509_hash`]"} schema={{"type":"string","default":"redirect_uri","description":"Client ID scheme of the Authorization Request. It sets how the verifier identifies itself to the wallet of the holder. `redirect_uri` uses a redirect URI, `did` uses a DID, `verifier_attestation` uses a Verifier Attestation JWT, `x509_san_dns` uses the SAN DNS name of an X.509 certificate, and `x509_hash` uses the hash of an X.509 certificate. With the DC API response modes, `redirect_uri` is only a logical identifier and not a real redirect target. Send `null` for `iso18013_7_annex_c`.","enum":["redirect_uri","did","verifier_attestation","x509_san_dns","x509_hash"]}}></SchemaItem><SchemaItem collapsible={false} name={"directPostRedirectUri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URI that the wallet of the holder opens after it posts the Authorization Response. Only for the `direct_post` response mode. The server refuses this property for `direct_post.jwt`, and it has no meaning for the DC API response modes."}}></SchemaItem><SchemaItem collapsible={false} name={"responseMode"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`direct_post`, `direct_post.jwt`, `dc_api`, `dc_api.jwt`]"} schema={{"type":"string","default":"direct_post","description":"Response mode that sets how the wallet of the holder delivers the Authorization Response. **Direct Post:** `direct_post` posts the response over HTTP. `direct_post.jwt` posts the response as an encrypted JWT. **DC API:** `dc_api` uses the W3C Digital Credentials API and returns the response without JWE encryption. `dc_api.jwt` uses the Digital Credentials API and returns the response as a JWE.","enum":["direct_post","direct_post.jwt","dc_api","dc_api.jwt"]}}></SchemaItem><SchemaItem collapsible={false} name={"dcApiRequestType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`signed`, `unsigned`]"} schema={{"type":"string","description":"Signing type of the DC API request. Only allowed when `responseMode` is `dc_api` or `dc_api.jwt`. `signed` makes the verifier sign the Authorization Request. `unsigned` gives no verifier authentication. The server treats a missing value as `unsigned` for `dc_api` and as `signed` for `dc_api.jwt`. Use `signed` in production.","enum":["signed","unsigned"]}}></SchemaItem><SchemaItem collapsible={false} name={"expectedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Origins that the wallet accepts for a signed DC API request. The wallet compares these values with the actual origin to find a replay. Mandatory when the effective `dcApiRequestType` is `signed`, and mandatory for `iso18013_7_annex_c`. The wallet ignores this property for an unsigned request.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"encryptedResponseEncValuesSupported"} required={false} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`A128CBC-HS256`, `A128GCM`, `A256GCM`]"} schema={{"type":"array","description":"JWE content encryption algorithms that the verifier accepts for the Authorization Response.\n\nThis property is mandatory when `responseMode` is `direct_post.jwt`, and the verifier global configuration must permit response encryption. When the stored value is empty, the verification request falls back to all three algorithms: `A128CBC-HS256`, `A128GCM` and `A256GCM`.\n\nThe `dc_api.jwt` response mode ignores this property. That flow always advertises `A128GCM` and `A256GCM`, and encrypts with `A256GCM`.\n","items":{"type":"string","enum":["A128CBC-HS256","A128GCM","A256GCM"]}}}></SchemaItem></TabItem><TabItem label={"IETF SD-JWT VC"} value={"1-item-properties"}><SchemaItem collapsible={false} name={"label"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `>= 3 characters` and `<= 100 characters`"} schema={{"type":"string","minLength":3,"maxLength":100,"description":"Human-readable label that gives the purpose of this presentation definition. The dashboard shows this label. The label must be 3 to 100 characters long. Labels that extensions reserve are refused, for example 'Age Verification', 'Document Signing' and 'Know-Your-Customer (KYC)'."}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`version_01`]"} schema={{"type":"string","default":"version_01","description":"OpenID for Verifiable Presentations (OpenID4VP) version of the Authorization Request. `version_01` is OpenID4VP 1.0.","enum":["version_01"]}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key Identifier (kid) of the cryptographic key of the verifier. The server uses the key of the organisation when you send no `kid`. The key must be valid when `dcApiRequestType` is `signed`."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`did:key`, `x509`]"} schema={{"type":"string","description":"Format of the signing key, for example `did:key` or `x509`.It sets how the holder resolves the identity of the verifier. `iso18013_7_annex_c` needs `x509`.","enum":["did:key","x509"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`vp_token`, `id_token`]"} schema={{"type":"string","default":"vp_token","description":"OAuth 2.0 response type of the Authorization Request. Use `vp_token` to ask for a Verifiable Presentation. `id_token` asks for an OpenID Connect ID Token and accepts no `dcqlQuery`.","enum":["vp_token","id_token"]}}></SchemaItem><SchemaItem collapsible={false} name={"clientIdScheme"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`redirect_uri`, `did`, `verifier_attestation`, `x509_san_dns`, `x509_hash`]"} schema={{"type":"string","default":"redirect_uri","description":"Client ID scheme of the Authorization Request. It sets how the verifier identifies itself to the wallet of the holder. With the DC API response modes, `redirect_uri` is only a logical identifier and not a real redirect target.","enum":["redirect_uri","did","verifier_attestation","x509_san_dns","x509_hash"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseMode"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`direct_post`, `direct_post.jwt`, `dc_api`, `dc_api.jwt`]"} schema={{"type":"string","default":"direct_post","description":"Response mode that sets how the wallet of the holder delivers the Authorization Response. **Direct Post:** `direct_post` posts the response over HTTP. `direct_post.jwt` posts the response as an encrypted JWT. **DC API:** `dc_api` uses the W3C Digital Credentials API and returns the response without JWE encryption. `dc_api.jwt` uses the Digital Credentials API and returns the response as a JWE.","enum":["direct_post","direct_post.jwt","dc_api","dc_api.jwt"]}}></SchemaItem><SchemaItem collapsible={false} name={"directPostRedirectUri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URI that the wallet of the holder opens after it posts the Authorization Response. Only for the `direct_post` response mode. The server refuses this property for `direct_post.jwt`, and it has no meaning for the DC API response modes."}}></SchemaItem><SchemaItem collapsible={false} name={"transactionDataDefinitionType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`payment_data`, `payment`, `login_risk_transaction`, `login_risk_transaction_non_ts12`, `account_access`, `emandate`, `data_agreement_record`, `data_disclosure_agreement_record`, `qes_data`]"} schema={{"type":"string","description":"Type of transaction data that the verification request binds. The holder must approve the transaction data before the wallet sends the presentation. Read `GET /v2/config/digital-wallet/openid/sdjwt/transaction-data-definitions` for the schema of each type.","enum":["payment_data","payment","login_risk_transaction","login_risk_transaction_non_ts12","account_access","emandate","data_agreement_record","data_disclosure_agreement_record","qes_data"]}}></SchemaItem><SchemaItem collapsible={false} name={"dcApiRequestType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`signed`, `unsigned`]"} schema={{"type":"string","description":"Signing type of the DC API request. Only allowed when `responseMode` is `dc_api` or `dc_api.jwt`. `signed` makes the verifier sign the Authorization Request. `unsigned` gives no verifier authentication. The server treats a missing value as `unsigned` for `dc_api` and as `signed` for `dc_api.jwt`. Use `signed` in production.","enum":["signed","unsigned"]}}></SchemaItem><SchemaItem collapsible={false} name={"expectedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Origins that the wallet accepts for a signed DC API request. The wallet compares these values with the actual origin to find a replay. Mandatory when the effective `dcApiRequestType` is `signed`. The wallet ignores this property for an unsigned request.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"encryptedResponseEncValuesSupported"} required={false} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`A128CBC-HS256`, `A128GCM`, `A256GCM`]"} schema={{"type":"array","description":"JWE content encryption algorithms that the verifier accepts for the Authorization Response.\n\nThis property is mandatory when `responseMode` is `direct_post.jwt`, and the verifier global configuration must permit response encryption. When the stored value is empty, the verification request falls back to all three algorithms: `A128CBC-HS256`, `A128GCM` and `A256GCM`.\n\nThe `dc_api.jwt` response mode ignores this property. That flow always advertises `A128GCM` and `A256GCM`, and encrypts with `A256GCM`.\n","items":{"type":"string","enum":["A128CBC-HS256","A128GCM","A256GCM"]}}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dcqlQuery</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Digital Credentials Query Language (DCQL) query for the IETF SD-JWT VC format. It holds a `credentials` array, and every entry needs an `id` and a `format`.

Set `format` to `dc+sd-jwt` and give the accepted credential types in `meta.vct_values`. Claim paths are flat, for example `['identifier']`.

Ask only for subject claims, for example `given_name` or `birthdate`. The envelope claims `iss`, `iat`, `exp`, `cnf`, `vct` and `status` are always in the presentation. You cannot ask for them.


</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Digital Credentials Query Language (DCQL) query for the IETF SD-JWT VC format. It holds a `credentials` array, and every entry needs an `id` and a `format`.\n\nSet `format` to `dc+sd-jwt` and give the accepted credential types in `meta.vct_values`. Claim paths are flat, for example `['identifier']`.\n\nAsk only for subject claims, for example `given_name` or `birthdate`. The envelope claims `iss`, `iat`, `exp`, `cnf`, `vct` and `status` are always in the presentation. You cannot ask for them.\n"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem></TabItem><TabItem label={"ISO 18013-5 mDoc/mDL"} value={"2-item-properties"}><SchemaItem collapsible={false} name={"label"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `>= 3 characters` and `<= 100 characters`"} schema={{"type":"string","minLength":3,"maxLength":100,"description":"Human-readable label that gives the purpose of this presentation definition. The dashboard shows this label. The label must be 3 to 100 characters long. Labels that extensions reserve are refused, for example 'Age Verification', 'Document Signing' and 'Know-Your-Customer (KYC)'."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key identifier of the key that is used to sign the Credential."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`did:key`, `x509`]"} schema={{"type":"string","description":"Format of the signing key, for example `did:key` or `x509`.It sets how the holder resolves the identity of the verifier. `iso18013_7_annex_c` needs `x509`.","enum":["did:key","x509"]}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`version_01`]"} schema={{"type":"string","default":"version_01","description":"OpenID for Verifiable Presentations (OpenID4VP) version of the Authorization Request. `version_01` is OpenID4VP 1.0.","enum":["version_01"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`vp_token`, `id_token`]"} schema={{"type":"string","default":"vp_token","description":"OAuth 2.0 response type of the Authorization Request. Use `vp_token` to ask for a Verifiable Presentation. `id_token` asks for an OpenID Connect ID Token and accepts no `dcqlQuery`.","enum":["vp_token","id_token"]}}></SchemaItem><SchemaItem collapsible={false} name={"clientIdScheme"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`redirect_uri`, `did`, `verifier_attestation`, `x509_san_dns`, `x509_hash`]"} schema={{"type":"string","default":"redirect_uri","description":"Client ID scheme of the Authorization Request. It sets how the verifier identifies itself to the wallet of the holder. With the DC API response modes, `redirect_uri` is only a logical identifier and not a real redirect target.","enum":["redirect_uri","did","verifier_attestation","x509_san_dns","x509_hash"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseMode"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`direct_post`, `direct_post.jwt`, `dc_api`, `dc_api.jwt`]"} schema={{"type":"string","default":"direct_post","description":"Response mode that sets how the wallet of the holder delivers the Authorization Response. **Direct Post:** `direct_post` posts the response over HTTP. `direct_post.jwt` posts the response as an encrypted JWT. **DC API:** `dc_api` uses the W3C Digital Credentials API and returns the response without JWE encryption. `dc_api.jwt` uses the Digital Credentials API and returns the response as a JWE.","enum":["direct_post","direct_post.jwt","dc_api","dc_api.jwt"]}}></SchemaItem><SchemaItem collapsible={false} name={"directPostRedirectUri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URI that the wallet of the holder opens after it posts the Authorization Response. Only for the `direct_post` response mode. The server refuses this property for `direct_post.jwt`, and it has no meaning for the DC API response modes."}}></SchemaItem><SchemaItem collapsible={false} name={"transactionDataDefinitionType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`payment_data`, `payment`, `login_risk_transaction`, `login_risk_transaction_non_ts12`, `account_access`, `emandate`, `data_agreement_record`, `data_disclosure_agreement_record`, `qes_data`]"} schema={{"type":"string","description":"Type of transaction data that the verification request binds. The holder must approve the transaction data before the wallet sends the presentation. Read `GET /v2/config/digital-wallet/openid/sdjwt/transaction-data-definitions` for the schema of each type.","enum":["payment_data","payment","login_risk_transaction","login_risk_transaction_non_ts12","account_access","emandate","data_agreement_record","data_disclosure_agreement_record","qes_data"]}}></SchemaItem><SchemaItem collapsible={false} name={"dcApiRequestType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`signed`, `unsigned`]"} schema={{"type":"string","description":"Signing type of the DC API request. Only allowed when `responseMode` is `dc_api` or `dc_api.jwt`. `signed` makes the verifier sign the Authorization Request. `unsigned` gives no verifier authentication. The server treats a missing value as `unsigned` for `dc_api` and as `signed` for `dc_api.jwt`. Use `signed` in production.","enum":["signed","unsigned"]}}></SchemaItem><SchemaItem collapsible={false} name={"expectedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Origins that the wallet accepts for a signed DC API request. The wallet compares these values with the actual origin to find a replay. Mandatory when the effective `dcApiRequestType` is `signed`. The wallet ignores this property for an unsigned request.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"encryptedResponseEncValuesSupported"} required={false} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`A128CBC-HS256`, `A128GCM`, `A256GCM`]"} schema={{"type":"array","description":"JWE content encryption algorithms that the verifier accepts for the Authorization Response.\n\nThis property is mandatory when `responseMode` is `direct_post.jwt`, and the verifier global configuration must permit response encryption. When the stored value is empty, the verification request falls back to all three algorithms: `A128CBC-HS256`, `A128GCM` and `A256GCM`.\n\nThe `dc_api.jwt` response mode ignores this property. That flow always advertises `A128GCM` and `A256GCM`, and encrypts with `A256GCM`.\n","items":{"type":"string","enum":["A128CBC-HS256","A128GCM","A256GCM"]}}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dcqlQuery</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Digital Credentials Query Language (DCQL) query for the ISO 18013-5 mDoc/mDL format. It holds a `credentials` array, and every entry needs an `id` and a `format`.

Set `format` to `mso_mdoc` and give the document type in `meta.doctype_value`. Every claim path holds two elements: the namespace and the data element, for example `['org.iso.18013.5.1', 'family_name']`.

Ask only for subject data elements, for example `given_name` or `birth_date`. The MSO fields `validityInfo`, `digestAlgorithm` and `deviceKey` are always in the presentation. You cannot ask for them.


</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Digital Credentials Query Language (DCQL) query for the ISO 18013-5 mDoc/mDL format. It holds a `credentials` array, and every entry needs an `id` and a `format`.\n\nSet `format` to `mso_mdoc` and give the document type in `meta.doctype_value`. Every claim path holds two elements: the namespace and the data element, for example `['org.iso.18013.5.1', 'family_name']`.\n\nAsk only for subject data elements, for example `given_name` or `birth_date`. The MSO fields `validityInfo`, `digestAlgorithm` and `deviceKey` are always in the presentation. You cannot ask for them.\n"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem></TabItem><TabItem label={"W3C VC (JWT)"} value={"3-item-properties"}><SchemaItem collapsible={false} name={"label"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** `>= 3 characters` and `<= 100 characters`"} schema={{"type":"string","minLength":3,"maxLength":100,"description":"Human-readable label that gives the purpose of this presentation definition. The dashboard shows this label. The label must be 3 to 100 characters long. Labels that extensions reserve are refused, for example 'Age Verification', 'Document Signing' and 'Know-Your-Customer (KYC)'."}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`version_01`]"} schema={{"type":"string","default":"version_01","description":"OpenID for Verifiable Presentations (OpenID4VP) version of the Authorization Request. `version_01` is OpenID4VP 1.0.","enum":["version_01"]}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key identifier of the key that is used to sign the Credential."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`did:key`, `x509`]"} schema={{"type":"string","description":"Format of the signing key, for example `did:key` or `x509`.It sets how the holder resolves the identity of the verifier. `iso18013_7_annex_c` needs `x509`.","enum":["did:key","x509"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`vp_token`, `id_token`]"} schema={{"type":"string","default":"vp_token","description":"OAuth 2.0 response type of the Authorization Request. Use `vp_token` to ask for a Verifiable Presentation. `id_token` asks for an OpenID Connect ID Token and accepts no `dcqlQuery`.","enum":["vp_token","id_token"]}}></SchemaItem><SchemaItem collapsible={false} name={"clientIdScheme"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`redirect_uri`, `did`, `verifier_attestation`, `x509_san_dns`, `x509_hash`]"} schema={{"type":"string","default":"redirect_uri","description":"Client ID scheme of the Authorization Request. It sets how the verifier identifies itself to the wallet of the holder. With the DC API response modes, `redirect_uri` is only a logical identifier and not a real redirect target.","enum":["redirect_uri","did","verifier_attestation","x509_san_dns","x509_hash"]}}></SchemaItem><SchemaItem collapsible={false} name={"responseMode"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`direct_post`, `direct_post.jwt`, `dc_api`, `dc_api.jwt`]"} schema={{"type":"string","default":"direct_post","description":"Response mode that sets how the wallet of the holder delivers the Authorization Response. **Direct Post:** `direct_post` posts the response over HTTP. `direct_post.jwt` posts the response as an encrypted JWT. **DC API:** `dc_api` uses the W3C Digital Credentials API and returns the response without JWE encryption. `dc_api.jwt` uses the Digital Credentials API and returns the response as a JWE.","enum":["direct_post","direct_post.jwt","dc_api","dc_api.jwt"]}}></SchemaItem><SchemaItem collapsible={false} name={"directPostRedirectUri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URI that the wallet of the holder opens after it posts the Authorization Response. Only for the `direct_post` response mode. The server refuses this property for `direct_post.jwt`, and it has no meaning for the DC API response modes."}}></SchemaItem><SchemaItem collapsible={false} name={"transactionDataDefinitionType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`payment_data`, `payment`, `login_risk_transaction`, `login_risk_transaction_non_ts12`, `account_access`, `emandate`, `data_agreement_record`, `data_disclosure_agreement_record`, `qes_data`]"} schema={{"type":"string","description":"Type of transaction data that the verification request binds. The holder must approve the transaction data before the wallet sends the presentation. Read `GET /v2/config/digital-wallet/openid/sdjwt/transaction-data-definitions` for the schema of each type.","enum":["payment_data","payment","login_risk_transaction","login_risk_transaction_non_ts12","account_access","emandate","data_agreement_record","data_disclosure_agreement_record","qes_data"]}}></SchemaItem><SchemaItem collapsible={false} name={"dcApiRequestType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`signed`, `unsigned`]"} schema={{"type":"string","description":"Signing type of the DC API request. Only allowed when `responseMode` is `dc_api` or `dc_api.jwt`. `signed` makes the verifier sign the Authorization Request. `unsigned` gives no verifier authentication. The server treats a missing value as `unsigned` for `dc_api` and as `signed` for `dc_api.jwt`. Use `signed` in production.","enum":["signed","unsigned"]}}></SchemaItem><SchemaItem collapsible={false} name={"expectedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Origins that the wallet accepts for a signed DC API request. The wallet compares these values with the actual origin to find a replay. Mandatory when the effective `dcApiRequestType` is `signed`. The wallet ignores this property for an unsigned request.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"encryptedResponseEncValuesSupported"} required={false} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`A128CBC-HS256`, `A128GCM`, `A256GCM`]"} schema={{"type":"array","description":"JWE content encryption algorithms that the verifier accepts for the Authorization Response.\n\nThis property is mandatory when `responseMode` is `direct_post.jwt`, and the verifier global configuration must permit response encryption. When the stored value is empty, the verification request falls back to all three algorithms: `A128CBC-HS256`, `A128GCM` and `A256GCM`.\n\nThe `dc_api.jwt` response mode ignores this property. That flow always advertises `A128GCM` and `A256GCM`, and encrypts with `A256GCM`.\n","items":{"type":"string","enum":["A128CBC-HS256","A128GCM","A256GCM"]}}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dcqlQuery</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Digital Credentials Query Language (DCQL) query for the W3C VC (JWT) format. It holds a `credentials` array, and every entry needs an `id` and a `format`.

Set `format` to `jwt_vc_json` and give the accepted type sets in `meta.type_values`, which is an array of arrays. Every claim path starts with `credentialSubject`, for example `['credentialSubject', 'identifier']`.

Ask only for claims under `credentialSubject`. The envelope fields `issuer`, `issuanceDate`, `expirationDate` and `credentialStatus` are always in the presentation. You cannot ask for them.


</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Digital Credentials Query Language (DCQL) query for the W3C VC (JWT) format. It holds a `credentials` array, and every entry needs an `id` and a `format`.\n\nSet `format` to `jwt_vc_json` and give the accepted type sets in `meta.type_values`, which is an array of arrays. Every claim path starts with `credentialSubject`, for example `['credentialSubject', 'identifier']`.\n\nAsk only for claims under `credentialSubject`. The envelope fields `issuer`, `issuanceDate`, `expirationDate` and `credentialStatus` are always in the presentation. You cannot ask for them.\n"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem></TabItem></SchemaTabs></div></ul></details></TabItem></MimeTabs><div><div><ApiTabs label={undefined} id={undefined}><TabItem label={"200"} value={"200"}><div>

The server created the presentation definition.

</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"}>presentationDefinition</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={"id"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Internal record identifier of the presentation definition. The list endpoint returns the value of `presentationDefinitionId` here. The create, read and update endpoints return a different internal identifier. Always use `presentationDefinitionId` to address the presentation definition."}}></SchemaItem><SchemaItem collapsible={false} name={"openIdOrganisationId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Identifier of the OpenID4VC deployment that owns this presentation definition."}}></SchemaItem><SchemaItem collapsible={false} name={"presentationDefinitionId"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Unique identifier that the server gives to the presentation definition. Use this identifier in a verification request and in the path of the read, update and delete endpoints."}}></SchemaItem><SchemaItem collapsible={false} name={"label"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Human-readable label that gives the purpose of this presentation definition, for example 'Verify Portable Document A1'. The dashboard shows this label."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>dcqlQuery</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Digital Credentials Query Language (DCQL) query that gives the credentials and the claims that the verifier asks from the holder.

The query holds a `credentials` array. Each entry has an `id`, a `format` and a format-specific `meta` object: `doctype_value` for `mso_mdoc`, `vct_values` or `type_values` for `dc+sd-jwt`, and `type_values` for `jwt_vc_json`. An entry can also hold `claims`, `claim_sets`, `require_cryptographic_holder_binding`, `multiple` and `trusted_authorities`. A top-level `credential_sets` array can group the credential queries.

The server leaves this property out when the presentation definition has no DCQL query.


</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Digital Credentials Query Language (DCQL) query that gives the credentials and the claims that the verifier asks from the holder.\n\nThe query holds a `credentials` array. Each entry has an `id`, a `format` and a format-specific `meta` object: `doctype_value` for `mso_mdoc`, `vct_values` or `type_values` for `dc+sd-jwt`, and `type_values` for `jwt_vc_json`. An entry can also hold `claims`, `claim_sets`, `require_cryptographic_holder_binding`, `multiple` and `trusted_authorities`. A top-level `credential_sets` array can group the credential queries.\n\nThe server leaves this property out when the presentation definition has no DCQL query.\n"}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem><SchemaItem collapsible={false} name={"transactionDataDefinitionType"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [``, `payment_data`, `payment`, `login_risk_transaction`, `login_risk_transaction_non_ts12`, `account_access`, `emandate`, `data_agreement_record`, `data_disclosure_agreement_record`, `qes_data`]"} schema={{"type":"string","description":"Type of transaction data that the verification request binds. The holder must approve the transaction data before the wallet sends the presentation. The value selects the JSON Schema that the server uses to validate the `transactionData` of the verification request. Read `GET /v2/config/digital-wallet/openid/sdjwt/transaction-data-definitions` for the schema of each type.\n\nThe value is an empty string when the presentation definition binds no transaction data.\n","enum":["","payment_data","payment","login_risk_transaction","login_risk_transaction_non_ts12","account_access","emandate","data_agreement_record","data_disclosure_agreement_record","qes_data"]}}></SchemaItem><SchemaItem collapsible={false} name={"createdAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp, in seconds, of the moment that the server created this presentation definition."}}></SchemaItem><SchemaItem collapsible={false} name={"updatedAt"} required={true} schemaName={"number"} qualifierMessage={undefined} schema={{"type":"number","description":"Unix timestamp, in seconds, of the moment that the server last changed this presentation definition."}}></SchemaItem><SchemaItem collapsible={false} name={"version"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`version_01`, `iso18013_7_annex_c`]"} schema={{"type":"string","description":"OpenID for Verifiable Presentations (OpenID4VP) version of the Authorization Request. `version_01` is OpenID4VP 1.0. `iso18013_7_annex_c` is the ISO 18013-7 Annex C profile, which asks for mDoc credentials over the Digital Credentials API.","enum":["version_01","iso18013_7_annex_c"]}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyIdentifier"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"Key identifier of the key that is used to sign the Credential."}}></SchemaItem><SchemaItem collapsible={false} name={"cryptographicKeyFormat"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`did:key`, `x509`]"} schema={{"type":"string","description":"Format of the signing key, for example `did:key` or `x509`.It sets how the holder resolves the identity of the verifier. `iso18013_7_annex_c` needs `x509`.","enum":["did:key","x509"]}}></SchemaItem><SchemaItem collapsible={false} name={"scope"} required={true} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"OAuth 2.0 scope value for a scope-based presentation request. The value is an empty string when the presentation definition holds no scope."}}></SchemaItem><SchemaItem collapsible={false} name={"responseType"} required={true} schemaName={"string"} qualifierMessage={"**Possible values:** [`vp_token`, `id_token`, `device_response`]"} schema={{"type":"string","description":"OAuth 2.0 response type of the Authorization Request. `vp_token` asks for a Verifiable Presentation. `id_token` asks for an OpenID Connect ID Token. `device_response` asks for an ISO 18013-5 DeviceResponse and is only for `iso18013_7_annex_c`.","enum":["vp_token","id_token","device_response"]}}></SchemaItem><SchemaItem collapsible={false} name={"clientIdScheme"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`redirect_uri`, `did`, `verifier_attestation`, `x509_san_dns`, `x509_hash`]"} schema={{"type":"string","description":"Client ID scheme of the Authorization Request. It sets how the verifier identifies itself to the wallet of the holder. `redirect_uri` uses a redirect URI, `did` uses a DID, `verifier_attestation` uses a Verifier Attestation JWT, `x509_san_dns` uses the SAN DNS name of an X.509 certificate, and `x509_hash` uses the hash of an X.509 certificate. With the DC API response modes, `redirect_uri` is only a logical identifier and not a real redirect target. The server leaves this property out for `iso18013_7_annex_c`.","enum":["redirect_uri","did","verifier_attestation","x509_san_dns","x509_hash"]}}></SchemaItem><SchemaItem collapsible={false} name={"directPostRedirectUri"} required={false} schemaName={"string"} qualifierMessage={undefined} schema={{"type":"string","description":"URI that the wallet of the holder opens after it posts the Authorization Response. Only for the `direct_post` response mode. The server refuses this property for `direct_post.jwt`, and it has no meaning for the DC API response modes. The server leaves this property out when the presentation definition holds no URI."}}></SchemaItem><SchemaItem collapsible={false} name={"responseMode"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`direct_post`, `direct_post.jwt`, `dc_api`, `dc_api.jwt`]"} schema={{"type":"string","description":"Response mode that sets how the wallet of the holder delivers the Authorization Response. **Direct Post:** `direct_post` posts the response over HTTP. `direct_post.jwt` posts the response as an encrypted JWT. **DC API:** `dc_api` uses the W3C Digital Credentials API and returns the response without JWE encryption. `dc_api.jwt` uses the Digital Credentials API and returns the response as a JWE.","enum":["direct_post","direct_post.jwt","dc_api","dc_api.jwt"]}}></SchemaItem><SchemaItem collapsible={false} name={"dcApiRequestType"} required={false} schemaName={"string"} qualifierMessage={"**Possible values:** [`signed`, `unsigned`]"} schema={{"type":"string","description":"Signing type of the DC API request. Only for the `dc_api` and `dc_api.jwt` response modes. `signed` means that the verifier signs the Authorization Request. `unsigned` means that the verifier sends the request unsigned. The server leaves this property out when the presentation definition holds no value.","enum":["signed","unsigned"]}}></SchemaItem><SchemaItem collapsible={false} name={"expectedOrigins"} required={false} schemaName={"string[]"} qualifierMessage={undefined} schema={{"type":"array","description":"Origins that the wallet accepts for a signed DC API request. The server leaves this property out when the presentation definition holds no origin.","items":{"type":"string"}}}></SchemaItem><SchemaItem collapsible={false} name={"encryptedResponseEncValuesSupported"} required={false} schemaName={"string[]"} qualifierMessage={"**Possible values:** [`A128CBC-HS256`, `A128GCM`, `A256GCM`]"} schema={{"type":"array","description":"JWE content encryption algorithms that the verifier accepts for the Authorization Response. It applies to the `direct_post.jwt` response mode; the `dc_api.jwt` flow ignores it and always advertises `A128GCM` and `A256GCM`.\n\nThe server leaves this property out when the presentation definition holds no algorithm. The verification request then falls back to all three algorithms.\n","items":{"type":"string","enum":["A128CBC-HS256","A128GCM","A256GCM"]}}}></SchemaItem><SchemaItem collapsible={false} name={"systemManaged"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when the platform owns this presentation definition. You cannot delete a system managed presentation definition."}}></SchemaItem><SchemaItem collapsible={false} name={"extentionEnabled"} required={true} schemaName={"boolean"} qualifierMessage={undefined} schema={{"type":"boolean","description":"`true` when an extension uses this presentation definition. You cannot update such a presentation definition, and you cannot delete most of them. Note the spelling of this property name."}}></SchemaItem><SchemaItem collapsible={true} className={"schemaItem"}><details style={{}} className={"openapi-markdown__details"}><summary style={{}}><span className={"openapi-schema__container"}><strong className={"openapi-schema__property"}>presentationDefinition</strong><span className={"openapi-schema__name"}> object</span></span></summary><div style={{"marginLeft":"1rem"}}><div style={{"marginTop":".5rem","marginBottom":".5rem"}}>

Legacy credential requirements of a presentation definition that an older OpenID4VP version created. The value is `null` for every presentation definition that uses `dcqlQuery`. You cannot set this property.

</div><SchemaItem name={"property name*"} required={false} schemaName={"any"} qualifierMessage={undefined} schema={{"type":"object","additionalProperties":true,"description":"Legacy credential requirements of a presentation definition that an older OpenID4VP version created. The value is `null` for every presentation definition that uses `dcqlQuery`. You cannot set this property."}} collapsible={false} discriminator={false}></SchemaItem></div></details></SchemaItem></div></details></SchemaItem></ul></details></TabItem><TabItem label={"Example (from schema)"} value={"Example (from schema)"}><ResponseSamples responseExample={"{\n  \"presentationDefinition\": {\n    \"id\": \"string\",\n    \"openIdOrganisationId\": \"string\",\n    \"presentationDefinitionId\": \"string\",\n    \"label\": \"string\",\n    \"dcqlQuery\": {},\n    \"transactionDataDefinitionType\": \"\",\n    \"createdAt\": 0,\n    \"updatedAt\": 0,\n    \"version\": \"version_01\",\n    \"cryptographicKeyIdentifier\": \"string\",\n    \"cryptographicKeyFormat\": \"did:key\",\n    \"scope\": \"string\",\n    \"responseType\": \"vp_token\",\n    \"clientIdScheme\": \"redirect_uri\",\n    \"directPostRedirectUri\": \"string\",\n    \"responseMode\": \"direct_post\",\n    \"dcApiRequestType\": \"signed\",\n    \"expectedOrigins\": [\n      \"string\"\n    ],\n    \"encryptedResponseEncValuesSupported\": [\n      \"A128CBC-HS256\"\n    ],\n    \"systemManaged\": true,\n    \"extentionEnabled\": true,\n    \"presentationDefinition\": {}\n  }\n}"} language={"json"}></ResponseSamples></TabItem></SchemaTabs></TabItem></MimeTabs></div></TabItem><TabItem label={"400"} value={"400"}><div>

The body is not valid JSON, `label` is missing or shorter than 3 characters, `label` is a label that an extension reserves, `dcApiRequestType` does not agree with `responseMode`, `expectedOrigins` is missing for a signed DC API request, `directPostRedirectUri` is set for `direct_post.jwt`, `encryptedResponseEncValuesSupported` is missing for `direct_post.jwt` or the verifier global configuration does not permit response encryption, the DCQL query is not valid, `transactionDataDefinitionType` is missing for a transaction data credential, the organisation is unknown, the digital wallet deployment is not resolved, or the digital wallet refused the presentation definition.

</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={"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>
      