> For the complete documentation index, see [llms.txt](https://docs.meeco.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.meeco.me/openapi-docs/svx-api/authorization-server.md).

# Authorization Server

## Generate attestation challenge Endpoint

> Initiates an attestation process by generating a challenge that the Wallet must sign to prove possession of a key or credential.  \
> The resulting signed attestation can then be submitted to complete the credential issuance or binding process.\
> \
> \## Purpose\
> \
> This endpoint enables the Issuer to verify the authenticity and integrity of the Wallet or Holder before issuing a Verifiable Credential.\
> \
> \## Typical Flow\
> \
> 1\. The Wallet requests a challenge from the Issuer.\
> 2\. The Issuer returns a challenge (e.g., nonce, payload, or proof request).\
> 3\. The Wallet signs the challenge using its private key and returns the attestation proof to the Issuer.\
> \
> \## Supported Standards\
> \
> \- \[OAuth 2.0 Attestation-Based Client Authentication]\(<https://www.ietf.org/archive/id/draft-ietf-oauth-attestation-based-client-auth-07.html>)<br>

```json
{"openapi":"3.1.0","info":{"title":"SVX Wallet API","version":"4.0.1"},"servers":[{"url":"https://zyfla-wallet-sandbox.meeco.cloud","description":"SVX Wallet deployment (relative)"}],"security":[{},{"bearerAuth":[]},{"mutualTLS":[]}],"components":{"securitySchemes":{"bearerAuth":{"bearerFormat":"JWT","scheme":"bearer","type":"http"},"mutualTLS":{"type":"mutualTLS"}},"schemas":{"AttestationChallengeResponseModelDto":{"type":"object","properties":{"attestation_challenge":{"type":"string"}},"required":["attestation_challenge"]},"SlowDownError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["slow_down"]},"error_description":{"type":"string","description":"A variant of authorization_pending error code, the authorization request is still pending and polling should continue, but the interval MUST be increased by 5 seconds for this and all subsequent requests.\n"}}}]},"OAuthErrorResponse":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"ServerErrorError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["server_error"]},"error_description":{"type":"string","description":"Server error.\n"}}}]},"TemporarilyUnavailableError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["temporarily_unavailable"]},"error_description":{"type":"string","description":"The server is undergoing maintenance, or is otherwise unavailable.\n"}}}]}}},"paths":{"/challenge":{"post":{"summary":"Generate attestation challenge Endpoint","description":"Initiates an attestation process by generating a challenge that the Wallet must sign to prove possession of a key or credential.  \nThe resulting signed attestation can then be submitted to complete the credential issuance or binding process.\n\n## Purpose\n\nThis endpoint enables the Issuer to verify the authenticity and integrity of the Wallet or Holder before issuing a Verifiable Credential.\n\n## Typical Flow\n\n1. The Wallet requests a challenge from the Issuer.\n2. The Issuer returns a challenge (e.g., nonce, payload, or proof request).\n3. The Wallet signs the challenge using its private key and returns the attestation proof to the Issuer.\n\n## Supported Standards\n\n- [OAuth 2.0 Attestation-Based Client Authentication](https://www.ietf.org/archive/id/draft-ietf-oauth-attestation-based-client-auth-07.html)\n","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttestationChallengeResponseModelDto"}}},"description":"OK"},"400":{"description":"Invalid request / Too many requests","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SlowDownError"}]}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorError"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemporarilyUnavailableError"}}}}},"tags":["Authorization Server"]}}}}
```

## JSON Web Keys Endpoint

> Host the JSON Web Key Set (JWKS) used to validate access tokens issued by the Wallet.<br>

```json
{"openapi":"3.1.0","info":{"title":"SVX Wallet API","version":"4.0.1"},"servers":[{"url":"https://zyfla-wallet-sandbox.meeco.cloud","description":"SVX Wallet deployment (relative)"}],"security":[],"paths":{"/jwks":{"get":{"summary":"JSON Web Keys Endpoint","description":"Host the JSON Web Key Set (JWKS) used to validate access tokens issued by the Wallet.\n","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"keys":{"items":{"description":"JSON Web Key","type":"object"},"type":"array"}},"type":"object"}}},"description":"JSON Web Key Set"}},"tags":["Authorization Server"]}}}}
```

## Authorization Endpoint

> Authorization Request endpoint as specified in the OpenID for Verifiable Credential Issuance specification.\
> \
> Supports wallet-initiated issuance requests via \`scope\` as per \[Section 5.1.2 of OID4VCI]\(<https://openid.net/specs/openid-4-verifiable-credential-issuance-1\\_0.html#name-using-scope-parameter-to-re)\\>
> \
> \## Supported Standards\
> \
> \- \[OpenID for Verifiable Credential Issuance 1.0 (Section 5)]\(<https://openid.net/specs/openid-4-verifiable-credential-issuance-1\\_0.html#name-authorization-endpoint)\\>
> \- \[RFC 6749 - The OAuth 2.0 Authorization Framework]\(<https://datatracker.ietf.org/doc/html/rfc6749)\\>
> \- \[RFC 7636 - OAuth 2.0 Proof Key for Code Exchange (Section 4.3)]\(<https://datatracker.ietf.org/doc/html/rfc7636#section-4.3)\\>
> \- \[RFC 9396 - OAuth 2.0 Rich Authorization Requests]\(<https://datatracker.ietf.org/doc/html/rfc9396>)<br>

```json
{"openapi":"3.1.0","info":{"title":"SVX Wallet API","version":"4.0.1"},"servers":[{"url":"https://zyfla-wallet-sandbox.meeco.cloud","description":"SVX Wallet deployment (relative)"}],"security":[],"paths":{"/authorize":{"get":{"summary":"Authorization Endpoint","description":"Authorization Request endpoint as specified in the OpenID for Verifiable Credential Issuance specification.\n\nSupports wallet-initiated issuance requests via `scope` as per [Section 5.1.2 of OID4VCI](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-using-scope-parameter-to-re)\n\n## Supported Standards\n\n- [OpenID for Verifiable Credential Issuance 1.0 (Section 5)](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-authorization-endpoint)\n- [RFC 6749 - The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)\n- [RFC 7636 - OAuth 2.0 Proof Key for Code Exchange (Section 4.3)](https://datatracker.ietf.org/doc/html/rfc7636#section-4.3)\n- [RFC 9396 - OAuth 2.0 Rich Authorization Requests](https://datatracker.ietf.org/doc/html/rfc9396)\n","parameters":[{"description":"A unique identifier for the client","in":"query","name":"client_id","required":true,"schema":{"type":"string"}},{"description":"Inform the authorization server of the desired grant type. MUST be `code`, which is used to initiate the authorization code flow","in":"query","name":"response_type","required":false,"schema":{"enum":["code"],"type":"string"}},{"description":"Scope of the access request. Can be used to communicate credential template(s) to be issued.","in":"query","name":"scope","required":false,"schema":{"enum":["openid"],"type":"string"}},{"description":"The URI to which the authorization server will redirect the user-agent with the authorization code after the authorization is completed","in":"query","name":"redirect_uri","required":true,"schema":{"type":"string"}},{"description":"Code challenge generated by the client's code verifier. MUST be used with `code_challenge_method`","in":"query","name":"code_challenge","required":false,"schema":{"type":"string"}},{"description":"The method used to dervice the code challenge. MUST be `S256`","in":"query","name":"code_challenge_method","required":false,"schema":{"enum":["S256"],"type":"string"}},{"description":"Issuer state as provided in the credential offer claim `grants.authorization_code.issuer_state`. Required if the offer contained `issuer_state`.","in":"query","name":"issuer_state","required":false,"schema":{"type":"string"}},{"description":"Reference to the request object as returned by the Pushed Authorization Request (PAR) endpoint","in":"query","name":"request_uri","required":false,"schema":{"type":"string"}},{"description":"Serialized array of authorization details object defined in Section 2 of [RFC9396] used to convey the details about the Credentials the Wallet wants to obtain","in":"query","name":"authorization_details","required":false,"schema":{"type":"string"}},{"description":"Custom reference to the IDP that will be used for bridge interaction","in":"query","name":"connection","required":false,"schema":{"type":"string","enum":["connect_id","select_id"]}},{"description":"Custom parameter to allow account based claims to be passed between bridge components. It is a comma separated list of claim names.","in":"query","name":"account_claims","required":false,"schema":{"type":"string"}}],"responses":{"303":{"description":"Redirect to Authentication page.\nIn case of error, response redirects to the URI provided via `redirect_uri` paramter with `error` and `error_description` properties.\nPossible error values:\n  - invalid_request\n  - invalid_grant\n  - invalid_scope\n  - invalid_client\n  - unauthorized_client\n  - unsupported_grant_type\n  - server_error\n  - temporary_unavailable\n","headers":{"location":{"schema":{"type":"string"}}}},"400":{"description":"Request is invalid and `redirect_uri` property was not provided","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InvalidRequestError"}}}},"500":{"description":"Internal Server Error. Unexpected error occurred.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorError"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemporarilyUnavailableError"}}}}},"tags":["Authorization Server"]}}},"components":{"schemas":{"InvalidRequestError":{"properties":{"error":{"description":"Unique error identifier","enum":["invalid_request"],"type":"string"},"extra_info":{"description":"Object that may contain more information about the error","type":"object"},"message":{"description":"User friendly error message","type":"string"}},"required":["error","message","extra_info"],"type":"object"},"ServerErrorError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["server_error"]},"error_description":{"type":"string","description":"Server error.\n"}}}]},"OAuthErrorResponse":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"TemporarilyUnavailableError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["temporarily_unavailable"]},"error_description":{"type":"string","description":"The server is undergoing maintenance, or is otherwise unavailable.\n"}}}]}}}}
```

## Pushed Authorization Request Endpoint

> Pushed Authorization Request endpoint as defined in \[RFC 9126 - OAuth 2.0 Pushed Authorization Request (PAR)]\(<https://www.rfc-editor.org/rfc/rfc9126.html#name-pushed-authorization-reques)\\>
> \
> Used in the OpenID4VCI Authorization Code Flow, it supports a more secure way of sending the authorization request. Upon successfully verifying the request, it returns a \`request\_uri\` which can be used in a subsequent call to the \`/authorize\` endpoint.\
> \
> Its usage is highly recommended in general, but mandatory when \`require\_pushed\_authorization\_requests\` is set to \`true\` in the Authorization Server Metadata.<br>

```json
{"openapi":"3.1.0","info":{"title":"SVX Wallet API","version":"4.0.1"},"servers":[{"url":"https://zyfla-wallet-sandbox.meeco.cloud","description":"SVX Wallet deployment (relative)"}],"security":[],"paths":{"/par":{"post":{"summary":"Pushed Authorization Request Endpoint","description":"Pushed Authorization Request endpoint as defined in [RFC 9126 - OAuth 2.0 Pushed Authorization Request (PAR)](https://www.rfc-editor.org/rfc/rfc9126.html#name-pushed-authorization-reques)\n\nUsed in the OpenID4VCI Authorization Code Flow, it supports a more secure way of sending the authorization request. Upon successfully verifying the request, it returns a `request_uri` which can be used in a subsequent call to the `/authorize` endpoint.\n\nIts usage is highly recommended in general, but mandatory when `require_pushed_authorization_requests` is set to `true` in the Authorization Server Metadata.\n","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"description":"A unique identifier for the client","type":"string"},"response_type":{"description":"Inform the authorization server of the desired grant type. MUST be `code`, which is used to initiate the authorization code flow","enum":["code"],"type":"string"},"scope":{"description":"Scope of the access request. Can be used to communicate credential template(s) to be issued.","enum":["openid"],"type":"string"},"redirect_uri":{"description":"The URI to which the authorization server will redirect the user-agent with the authorization code after the authorization is completed","type":"string"},"code_challenge":{"description":"Code challenge generated by the client's code verifier. MUST be used with `code_challenge_method`","type":"string"},"code_challenge_method":{"description":"The method used to dervice the code challenge. MUST be `S256`","enum":["S256"],"type":"string"},"issuer_state":{"description":"Issuer state as provided in the credential offer claim `grants.authorization_code.issuer_state`. Required if the offer contained `issuer_state`.","type":"string"},"connection":{"description":"Custom reference to the IDP that will be used for bridge interaction","type":"string","enum":["connect_id","select_id"]},"account_claims":{"description":"Custom parameter to allow account based claims to be passed between bridge components. It is a comma separated list of claim names.","type":"string"}},"required":["client_id","code_challenge","code_challenge_method","issuer_state","redirect_uri","response_type","scope"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"request_uri":{"type":"string"}},"type":"object"}}},"description":"Redirect URI that can be used in the /authorize endpoint"},"400":{"description":"The request could not be processed due to invalid input. Refer to the detailed error codes and descriptions for more information.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InvalidRequestError"},{"$ref":"#/components/schemas/InvalidScopeError"},{"$ref":"#/components/schemas/InvalidClientError"},{"$ref":"#/components/schemas/UnauthorizedClientError"},{"$ref":"#/components/schemas/UnsupportedGrantTypeError"}]}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorError"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemporarilyUnavailableError"}}}}},"tags":["Authorization Server"]}}},"components":{"schemas":{"InvalidRequestError":{"properties":{"error":{"description":"Unique error identifier","enum":["invalid_request"],"type":"string"},"extra_info":{"description":"Object that may contain more information about the error","type":"object"},"message":{"description":"User friendly error message","type":"string"}},"required":["error","message","extra_info"],"type":"object"},"InvalidScopeError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_scope"]},"error_description":{"type":"string","description":"The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.\n"}}}]},"Error":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"InvalidClientError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_client"]},"error_description":{"type":"string","description":"Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).\n"}}}]},"UnauthorizedClientError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["unauthorized_client"]},"error_description":{"type":"string","description":"The authenticated client is not authorized to use this authorization grant type.\n"}}}]},"UnsupportedGrantTypeError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["unsupported_grant_type"]},"error_description":{"type":"string","description":"The authorization grant type is not supported by the authorization server.\n"}}}]},"ServerErrorError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["server_error"]},"error_description":{"type":"string","description":"Server error.\n"}}}]},"OAuthErrorResponse":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"TemporarilyUnavailableError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["temporarily_unavailable"]},"error_description":{"type":"string","description":"The server is undergoing maintenance, or is otherwise unavailable.\n"}}}]}}}}
```

## Token Endpoint

> Token endpoint for OpenID for Verifiable Credential Issuance (OID4VCI). Exchanges either a Pre-Authorized Code or Authorization Code for an access token used to obtain verifiable credentials from the Credential Endpoint.\
> \
> \## Flows\
> \
> \| Grant Type | Required Parameters |\
> \|------------|---------------------|\
> \| \`urn:ietf:params:oauth:grant-type:pre-authorized\_code\` | \`pre-authorized\_code\`, \`tx\_code\` (if required by the issuer) |\
> \| \`authorization\_code\` | \`code\`, \`redirect\_uri\`, \`code\_verifier\` (PKCE) |\
> \
> \## Supported Standards\
> \
> \- \[OpenID for Verifiable Credential Issuance 1.0 (Section 6)]\(<https://openid.net/specs/openid-4-verifiable-credential-issuance-1\\_0.html#name-token-endpoint)\\>
> \- \[RFC 6749 - The OAuth 2.0 Authorization Framework]\(<https://datatracker.ietf.org/doc/html/rfc6749)\\>
> \- \[RFC 7636 - OAuth 2.0 Proof Key for Code Exchange (Section 4.5)]\(<https://datatracker.ietf.org/doc/html/rfc7636#section-4.5>)<br>

```json
{"openapi":"3.1.0","info":{"title":"SVX Wallet API","version":"4.0.1"},"servers":[{"url":"https://zyfla-wallet-sandbox.meeco.cloud","description":"SVX Wallet deployment (relative)"}],"security":[],"paths":{"/token":{"post":{"summary":"Token Endpoint","description":"Token endpoint for OpenID for Verifiable Credential Issuance (OID4VCI). Exchanges either a Pre-Authorized Code or Authorization Code for an access token used to obtain verifiable credentials from the Credential Endpoint.\n\n## Flows\n\n| Grant Type | Required Parameters |\n|------------|---------------------|\n| `urn:ietf:params:oauth:grant-type:pre-authorized_code` | `pre-authorized_code`, `tx_code` (if required by the issuer) |\n| `authorization_code` | `code`, `redirect_uri`, `code_verifier` (PKCE) |\n\n## Supported Standards\n\n- [OpenID for Verifiable Credential Issuance 1.0 (Section 6)](https://openid.net/specs/openid-4-verifiable-credential-issuance-1_0.html#name-token-endpoint)\n- [RFC 6749 - The OAuth 2.0 Authorization Framework](https://datatracker.ietf.org/doc/html/rfc6749)\n- [RFC 7636 - OAuth 2.0 Proof Key for Code Exchange (Section 4.5)](https://datatracker.ietf.org/doc/html/rfc7636#section-4.5)\n","requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/TokenRequestModelDto"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenResponseModelDto"}}},"description":"OK"},"400":{"description":"Invalid request / grant / scope or unsupported grant type or invalid scope or authorization is pending","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/InvalidRequestError"},{"$ref":"#/components/schemas/InvalidGrantError"},{"$ref":"#/components/schemas/InvalidScopeError"},{"$ref":"#/components/schemas/InvalidClientError"},{"$ref":"#/components/schemas/UnauthorizedClientError"},{"$ref":"#/components/schemas/UnsupportedGrantTypeError"},{"$ref":"#/components/schemas/AuthorizationPendingError"},{"$ref":"#/components/schemas/SlowDownError"}]}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServerErrorError"}}}},"503":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemporarilyUnavailableError"}}}}},"tags":["Authorization Server"]}}},"components":{"schemas":{"TokenRequestModelDto":{"type":"object","required":["grant_type"],"properties":{"grant_type":{"type":"string","description":"The type of grant being requested.","enum":["urn:ietf:params:oauth:grant-type:pre-authorized_code","authorization_code"]},"pre-authorized_code":{"type":"string","description":"The pre-authorized code from the credential offer. Required when grant_type is `urn:ietf:params:oauth:grant-type:pre-authorized_code`."},"tx_code":{"type":"string","description":"Transaction code. Required if a `tx_code` object was present in the credential offer. The transaction code itself should be sent via a separate channel."},"code":{"type":"string","description":"Authorization code. Required when grant_type is `authorization_code`."},"redirect_uri":{"type":"string","description":"Required when grant_type is `authorization_code`."},"code_verifier":{"type":"string","description":"PKCE code verifier. Used with `authorization_code` grant type."},"client_id":{"type":"string","description":"Client identifier. Optional for pre-authorized code flow when client authentication is not required."},"client_secret":{"type":"string","description":"Client secret for `client_secret_post` authentication."},"client_assertion":{"type":"string","description":"Client assertion JWT for `private_key_jwt` authentication."},"client_assertion_type":{"type":"string","description":"Type of client assertion.","enum":["urn:ietf:params:oauth:client-assertion-type:jwt-bearer"]}}},"TokenResponseModelDto":{"type":"object","required":["access_token","token_type","expires_in"],"properties":{"access_token":{"type":"string","description":"The access token issued by the authorization server."},"token_type":{"type":"string","description":"The type of the token issued."},"expires_in":{"type":"integer","description":"The lifetime in seconds of the access token."}}},"InvalidRequestError":{"properties":{"error":{"description":"Unique error identifier","enum":["invalid_request"],"type":"string"},"extra_info":{"description":"Object that may contain more information about the error","type":"object"},"message":{"description":"User friendly error message","type":"string"}},"required":["error","message","extra_info"],"type":"object"},"InvalidGrantError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_grant"]},"error_description":{"type":"string","description":"The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client.\n"}}}]},"Error":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"InvalidScopeError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_scope"]},"error_description":{"type":"string","description":"The requested scope is invalid, unknown, malformed, or exceeds the scope granted by the resource owner.\n"}}}]},"InvalidClientError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["invalid_client"]},"error_description":{"type":"string","description":"Client authentication failed (e.g., unknown client, no client authentication included, or unsupported authentication method).\n"}}}]},"UnauthorizedClientError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["unauthorized_client"]},"error_description":{"type":"string","description":"The authenticated client is not authorized to use this authorization grant type.\n"}}}]},"UnsupportedGrantTypeError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["unsupported_grant_type"]},"error_description":{"type":"string","description":"The authorization grant type is not supported by the authorization server.\n"}}}]},"AuthorizationPendingError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"error":{"type":"string","enum":["authorization_pending"]},"error_description":{"type":"string","description":"This error code is used if the Authorization Server is waiting for an End-User interaction or a downstream process to complete. The Wallet SHOULD repeat the access token request to the token endpoint (a process known as polling). Before each new request, the Wallet MUST wait at least the number of seconds specified by the interval claim of the Credential Offer (see Section 4.1.1) or the authorization response (see Section 5.2), or 5 seconds if none was provided, and respect any increase in the polling interval required by the \"slow_down\" error.\n"}}}]},"SlowDownError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["slow_down"]},"error_description":{"type":"string","description":"A variant of authorization_pending error code, the authorization request is still pending and polling should continue, but the interval MUST be increased by 5 seconds for this and all subsequent requests.\n"}}}]},"OAuthErrorResponse":{"type":"object","required":["error","error_description"],"properties":{"error":{"type":"string","description":"A machine-readable error code."},"error_description":{"type":"string","description":"A human-readable description of the error providing additional information about the error."},"error_uri":{"type":"string","format":"uri","description":"A URI identifying a human-readable web page with information about the error."}}},"ServerErrorError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["server_error"]},"error_description":{"type":"string","description":"Server error.\n"}}}]},"TemporarilyUnavailableError":{"allOf":[{"$ref":"#/components/schemas/OAuthErrorResponse"},{"type":"object","properties":{"error":{"type":"string","enum":["temporarily_unavailable"]},"error_description":{"type":"string","description":"The server is undergoing maintenance, or is otherwise unavailable.\n"}}}]}}}}
```
