{"openapi":"3.1.0","info":{"title":"Credimi Capture Wallet API","version":"1.0.0","description":"Stateful OpenID4VCI issuer and OpenID4VP verifier used to capture wallet protocol evidence. Protocol endpoints require a conforming wallet; use the session endpoints to start a flow."},"servers":[{"url":"https://beta-capture-wallet.credimi.io","description":"Configured capture service"}],"tags":[{"name":"Service","description":"Service discovery and initialization."},{"name":"Issuance sessions","description":"Capture sessions and credential offers."},{"name":"Presentation sessions","description":"Create sessions and retrieve captured presentation evidence."},{"name":"OpenID4VCI","description":"OpenID for Verifiable Credential Issuance endpoints."},{"name":"OpenID4VP","description":"OpenID for Verifiable Presentations wallet endpoints."},{"name":"Fake OAuth","description":"Test-only auto-approving OAuth server used by Credo's chained authorization-code flow."}],"paths":{"/healthz":{"get":{"tags":["Service"],"operationId":"health","summary":"Check service health","responses":{"200":{"description":"The service is ready.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Health"}}}}}}},"/.well-known/openid-credential-issuer/issuers/{issuerConfigurationId}":{"get":{"tags":["Service"],"operationId":"credentialIssuerMetadata","summary":"Get credential issuer metadata","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"Accept","in":"header","required":false,"description":"Request application/jwt for signed metadata; application/json is returned otherwise.","schema":{"type":"string","enum":["application/json","application/jwt"],"default":"application/json"}}],"responses":{"200":{"description":"OpenID4VCI credential issuer metadata.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}},"application/jwt":{"schema":{"type":"string","description":"Compact JWS with the signed metadata as top-level claims."}}}}}}},"/.well-known/oauth-authorization-server/issuers/{issuerConfigurationId}":{"get":{"tags":["Service"],"operationId":"authorizationServerMetadata","summary":"Get authorization server metadata","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"OAuth authorization server metadata.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/.well-known/oauth-authorization-server/authorization-servers/{issuerConfigurationId}":{"get":{"tags":["Fake OAuth"],"operationId":"fakeAuthorizationServerMetadata","summary":"Get fake OAuth server metadata","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"Auto-approving OAuth authorization server metadata.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/.well-known/jwt-vc-issuer/issuers/{issuerConfigurationId}":{"get":{"tags":["Service"],"operationId":"jwtVcIssuerMetadata","summary":"Get JWT VC issuer metadata","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"JWT VC issuer metadata.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/issuers/{issuerConfigurationId}/jwks.json":{"get":{"tags":["Service"],"operationId":"authorizationServerJwks","summary":"Get authorization-server signing keys","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"Authorization-server JSON Web Key Set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwks"}}}}}}},"/issuers/{issuerConfigurationId}/credential-jwks.json":{"get":{"tags":["Service"],"operationId":"credentialIssuerJwks","summary":"Get credential-signing keys","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"Credential issuer JSON Web Key Set.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwks"}}}}}}},"/oid4vci/requests":{"get":{"tags":["OpenID4VCI"],"operationId":"getOid4vciRequests","summary":"Get redacted OpenID4VCI HTTP evidence","description":"Returns the bounded chronological request ledger. Security-sensitive headers and fields are replaced with presence and length metadata.","responses":{"200":{"description":"Redacted OpenID4VCI request evidence.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Oid4vciHttpRequestCapture"}}}}}}}},"/issuers":{"get":{"tags":["Service"],"operationId":"issuerCatalogue","summary":"List all always-on credential issuers","responses":{"200":{"description":"Public issuer catalogue.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/IssuerCatalogueEntry"}}}}}}}},"/sessions":{"post":{"tags":["Issuance sessions"],"operationId":"createIssuanceSession","summary":"Create an issuance capture session","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuanceSessionRequest"}}}},"responses":{"201":{"description":"New issuance session and credential-offer deeplink.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuanceSessionCreated"}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{sessionId}":{"get":{"tags":["Issuance sessions"],"operationId":"getIssuanceSession","summary":"Get issuance capture evidence","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Current issuance capture.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssuanceSession"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{sessionId}/offer":{"get":{"tags":["Issuance sessions"],"operationId":"getCredentialOffer","summary":"Get the credential offer","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OpenID4VCI credential offer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{sessionId}/deeplink":{"get":{"tags":["Issuance sessions"],"operationId":"getCredentialOfferDeeplink","summary":"Get credential-offer deeplink","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Credential offer and its deeplink.","content":{"application/json":{"schema":{"type":"object","required":["deeplink","credential_offer"],"properties":{"deeplink":{"type":"string"},"credential_offer":{"type":"object","additionalProperties":true}}}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{sessionId}/jwks":{"get":{"tags":["Issuance sessions"],"operationId":"getWalletJwks","summary":"Get observed holder-binding keys","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Observed wallet JWKS.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Jwks"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The wallet has not supplied a proof header JWK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sessions/{sessionId}/events":{"get":{"tags":["Issuance sessions"],"operationId":"getIssuanceEvents","summary":"Get issuance event evidence","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Chronological capture events.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions":{"post":{"tags":["Presentation sessions"],"operationId":"createPresentationSession","summary":"Create an OpenID4VP presentation session","requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationSessionRequest"}}}},"responses":{"201":{"description":"New presentation session and OpenID4VP deeplink.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationSessionCreated"}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions/{sessionId}":{"get":{"tags":["Presentation sessions"],"operationId":"getPresentationSession","summary":"Get presentation capture evidence","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Current presentation capture.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresentationSession"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions/{sessionId}/request":{"get":{"tags":["OpenID4VP"],"operationId":"getPresentationRequest","summary":"Retrieve signed presentation request","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Signed authorization request object.","content":{"application/oauth-authz-req+jwt":{"schema":{"type":"string"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"tags":["OpenID4VP"],"operationId":"postPresentationRequest","summary":"Retrieve request using request_uri POST","description":"Used only when the session was created with `request_uri_method: post`. A wallet may supply `wallet_nonce`.","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":false,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","properties":{"wallet_nonce":{"type":"string"}},"additionalProperties":true}}}},"responses":{"200":{"description":"Signed authorization request object.","content":{"application/oauth-authz-req+jwt":{"schema":{"type":"string"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions/{sessionId}/deeplink":{"get":{"tags":["Presentation sessions"],"operationId":"getPresentationDeeplink","summary":"Get presentation deeplink","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OpenID4VP deeplink and request claims.","content":{"application/json":{"schema":{"type":"object","required":["deeplink","authorization_request"],"properties":{"deeplink":{"type":"string"},"authorization_request":{"type":"object","additionalProperties":true}}}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions/{sessionId}/response":{"post":{"tags":["OpenID4VP"],"operationId":"submitPresentationResponse","summary":"Submit a presentation response for a session","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","additionalProperties":true}}}},"responses":{"200":{"description":"Presentation was captured and verified."},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/response":{"post":{"tags":["OpenID4VP"],"operationId":"submitPresentationResponseByState","summary":"Submit a presentation response using state","description":"Alternative direct-post response endpoint. The `state` form parameter identifies the presentation session.","requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["state"],"properties":{"state":{"type":"string"}},"additionalProperties":true}}}},"responses":{"200":{"description":"Presentation was captured and verified."},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openid4vp/sessions/{sessionId}/events":{"get":{"tags":["Presentation sessions"],"operationId":"getPresentationEvents","summary":"Get presentation event evidence","parameters":[{"name":"sessionId","in":"path","required":true,"description":"Capture session identifier returned when the session was created.","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Chronological capture events.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Event"}}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/offers/{credentialOfferId}":{"get":{"tags":["OpenID4VCI"],"operationId":"credentialOffer","summary":"Retrieve a Credo credential offer","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"credentialOfferId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"OpenID4VCI credential offer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"The requested session or protocol resource was not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/par":{"post":{"tags":["OpenID4VCI"],"operationId":"pushedAuthorizationRequest","summary":"Submit an authorization-code request","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"DPoP","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["response_type","client_id","redirect_uri","scope","code_challenge","code_challenge_method"],"properties":{"response_type":{"type":"string","const":"code"},"client_id":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"scope":{"type":"string"},"issuer_state":{"type":"string"},"state":{"type":"string"},"code_challenge":{"type":"string"},"code_challenge_method":{"type":"string","const":"S256"}}}}}},"responses":{"201":{"description":"Short-lived pushed authorization request URI.","content":{"application/json":{"schema":{"type":"object","required":["request_uri","expires_in"],"properties":{"request_uri":{"type":"string"},"expires_in":{"type":"integer"}}}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/authorize":{"get":{"tags":["OpenID4VCI"],"operationId":"authorize","summary":"Start auto-approved authorization","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"client_id","in":"query","required":true,"schema":{"type":"string"}},{"name":"request_uri","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect through the chained fake OAuth server and ultimately back to the Wallet."},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/redirect":{"get":{"tags":["OpenID4VCI"],"operationId":"chainedAuthorizationCallback","summary":"Complete the chained OAuth authorization","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"302":{"description":"Redirect to the Wallet with Credo's authorization code."},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/authorization-servers/{issuerConfigurationId}/authorize":{"get":{"tags":["Fake OAuth"],"operationId":"fakeAuthorize","summary":"Automatically approve Credo's authorization request","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"302":{"description":"Immediate redirect to Credo's registered callback with a code."},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/authorization-servers/{issuerConfigurationId}/token":{"post":{"tags":["Fake OAuth"],"operationId":"fakeToken","summary":"Exchange Credo's chained authorization code","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"type":"object","required":["grant_type","code","code_verifier","redirect_uri","client_id","client_secret"],"properties":{"grant_type":{"type":"string","const":"authorization_code"},"code":{"type":"string"},"code_verifier":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"client_id":{"type":"string"},"client_secret":{"type":"string","format":"password"}}}}}},"responses":{"200":{"description":"Short-lived token used only by Credo's chained flow.","content":{"application/json":{"schema":{"type":"object","required":["access_token","token_type","expires_in"],"properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer"},"scope":{"type":"string"}}}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/token":{"post":{"tags":["OpenID4VCI"],"operationId":"token","summary":"Exchange an issuance grant for a DPoP-bound token","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"DPoP","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"oneOf":[{"type":"object","required":["grant_type","pre-authorized_code"],"properties":{"grant_type":{"type":"string","const":"urn:ietf:params:oauth:grant-type:pre-authorized_code"},"pre-authorized_code":{"type":"string"},"tx_code":{"type":"string"}}},{"type":"object","required":["grant_type","code","code_verifier","redirect_uri"],"properties":{"grant_type":{"type":"string","const":"authorization_code"},"code":{"type":"string"},"code_verifier":{"type":"string"},"redirect_uri":{"type":"string","format":"uri"},"client_id":{"type":"string"}}}]}}}},"responses":{"200":{"description":"DPoP access token and credential nonce.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponse"}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"DPoP validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/issuers/{issuerConfigurationId}/nonce":{"post":{"tags":["OpenID4VCI"],"operationId":"credentialNonce","summary":"Request a credential nonce","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}}],"responses":{"200":{"description":"Fresh credential nonce.","content":{"application/json":{"schema":{"type":"object","required":["c_nonce"],"properties":{"c_nonce":{"type":"string"}}}}}}}}},"/issuers/{issuerConfigurationId}/credential":{"post":{"tags":["OpenID4VCI"],"operationId":"credential","summary":"Request a credential","parameters":[{"name":"issuerConfigurationId","in":"path","required":true,"description":"Always-on issuer configuration identifier returned by GET /issuers.","schema":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"]}},{"name":"Authorization","in":"header","required":true,"schema":{"type":"string","description":"DPoP access token."}},{"name":"DPoP","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["credential_configuration_id","proofs"],"properties":{"credential_configuration_id":{"type":"string"},"proofs":{"type":"object","minProperties":1,"maxProperties":1,"properties":{"jwt":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string"},"description":"openid4vci-proof+jwt with a required key_attestation JOSE header."},"attestation":{"type":"array","minItems":1,"maxItems":1,"items":{"type":"string"},"description":"One key-attestation+jwt proof."}}}},"additionalProperties":true}},"application/jwt":{"schema":{"type":"string","description":"Compact JWE Credential Request. Required when credential_response_encryption is present."}}}},"responses":{"200":{"description":"Issued credential, optionally encrypted as a compact JWE.","content":{"application/json":{"schema":{"type":"object","required":["credentials"],"properties":{"credentials":{"type":"array","items":{"type":"object","required":["credential"],"properties":{"credential":{"type":"string"}}}}}}},"application/jwt":{"schema":{"type":"string","description":"Compact JWE containing the Credential Response JSON object."}}}},"400":{"description":"The request is invalid for the current protocol state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Access token or DPoP validation failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Health":{"type":"object","required":["status"],"properties":{"status":{"type":"string","const":"ok"}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"error_description":{"type":"string"},"message":{"type":"string"}},"additionalProperties":true},"Jwks":{"type":"object","required":["keys"],"properties":{"keys":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"Event":{"type":"object","required":["at","type","detail"],"properties":{"at":{"type":"string","format":"date-time"},"type":{"type":"string"},"detail":{"type":"object","additionalProperties":true}}},"Oid4vciHttpRequestCapture":{"type":"object","required":["id","at","method","path","session_id","issuer_configuration_id","headers","query","body","response"],"properties":{"id":{"type":"string","format":"uuid"},"at":{"type":"string","format":"date-time"},"method":{"type":"string"},"path":{"type":"string"},"session_id":{"type":["string","null"]},"issuer_configuration_id":{"type":["string","null"]},"headers":{"type":"object","additionalProperties":true},"query":{},"body":{},"response":{"type":"object","properties":{"status":{"type":["integer","null"]},"content_type":{"type":["string","null"]}}}}},"IssuanceSessionRequest":{"type":"object","properties":{"issuer_configuration_id":{"type":"string","enum":["eu-pid-device-bound","eu-pid-jwt-proof-only"],"default":"eu-pid-device-bound","description":"Selects one of the always-on isolated issuer configurations."},"flow":{"type":"string","enum":["pre_authorized_code","authorization_code"],"default":"authorization_code","description":"Issuance flow preset."},"credential_offer_mode":{"type":"string","enum":["credential_offer","credential_offer_uri"],"default":"credential_offer","description":"Encode the offer directly in the deeplink or provide its hosted URI by reference."},"credential_configuration_id":{"type":"string","description":"One of the IDs advertised by credential issuer metadata."}}},"IssuanceSessionCreated":{"type":"object","required":["session_id","issuer_configuration_id","issuer_identifier","authorization_server_identifier","flow","credential_offer_mode","credential_configuration_id","offer_url","deeplink","status"],"properties":{"session_id":{"type":"string","format":"uuid"},"issuer_configuration_id":{"type":"string"},"issuer_identifier":{"type":"string","format":"uri"},"authorization_server_identifier":{"type":"string","format":"uri"},"flow":{"type":"string","enum":["pre_authorized_code","authorization_code"]},"credential_offer_mode":{"type":"string","enum":["credential_offer","credential_offer_uri"]},"credential_configuration_id":{"type":"string"},"offer_url":{"type":"string","format":"uri"},"deeplink":{"type":"string"},"status":{"type":"string","const":"created"}}},"IssuanceSession":{"type":"object","required":["session_id","issuer_configuration_id","issuer_identifier","authorization_server_identifier","status","flow","credential_offer_mode","credential_configuration_id","observed","checks","events"],"additionalProperties":true},"IssuerCatalogueEntry":{"type":"object","required":["id","compliance","credential_issuer","credential_issuer_metadata","authorization_server_metadata","upstream_authorization_server","name","description","credential_configuration_ids"],"properties":{"id":{"type":"string"},"compliance":{"type":"string"},"credential_issuer":{"type":"string","format":"uri"},"credential_issuer_metadata":{"type":"string","format":"uri"},"authorization_server_metadata":{"type":"string","format":"uri"},"upstream_authorization_server":{"type":"string","format":"uri"},"name":{"type":"string"},"description":{"type":"string"},"warning":{"type":"string"},"credential_configuration_ids":{"type":"array","items":{"type":"string"}}}},"PresentationSessionRequest":{"type":"object","properties":{"scheme":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9+.-]*://$","default":"openid4vp://","description":"Custom URL-scheme prefix for the returned deeplink."},"request_uri_method":{"type":"string","enum":["get","post"],"default":"get"},"request_delivery":{"type":"string","enum":["by_reference","by_value"],"default":"by_reference"},"response_type":{"type":"string","enum":["vp_token","vp_token id_token","code"],"default":"vp_token"},"response_mode":{"type":"string","enum":["direct_post","direct_post.jwt"],"default":"direct_post.jwt"},"presentation_request":{"type":"object","additionalProperties":true},"dcql_query":{"type":"object","additionalProperties":true},"scopes":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"transaction_data":{},"verifier_info":{}},"additionalProperties":true},"PresentationSessionCreated":{"type":"object","required":["session_id","request_delivery","request_uri","request_uri_method","response_mode","scheme","response_uri","deeplink","authorization_request","status"],"properties":{"session_id":{"type":"string","format":"uuid"},"request_delivery":{"type":"string"},"request_uri":{"type":"string","format":"uri"},"request_uri_method":{"type":"string"},"response_mode":{"type":"string"},"scheme":{"type":"string"},"response_uri":{"type":"string","format":"uri"},"deeplink":{"type":"string"},"authorization_request":{"type":"object","additionalProperties":true},"status":{"type":"string","const":"created"}}},"PresentationSession":{"type":"object","required":["session_id","status","authorization_request","observed","checks","events"],"additionalProperties":true},"TokenResponse":{"type":"object","required":["access_token","token_type","expires_in","c_nonce","c_nonce_expires_in"],"properties":{"access_token":{"type":"string"},"token_type":{"type":"string","const":"DPoP"},"expires_in":{"type":"integer"},"c_nonce":{"type":"string"},"c_nonce_expires_in":{"type":"integer"}}}}}}