Unify usage of types in authz details, initiate issuance and server metadata

Issue #1628 resolved
Oliver Terbu created an issue

The specification mentions the usage of types in several places with similar semantics but different parameter or property names. I suggest, we should unify how we use types throughout the specification.

Types are used in the following places:

  • Initiate Issuance Request: uses credential_type but it is unclear what the actual value is. Does it refer to the abstract identifier or the types per format?

Q1: Can we make it explicit that this refers to the key values (abstract identifier of the credential) in the credentials_supported in the server metadata?

credential_type: REQUIRED. A JSON string denoting the type of the Credential the Wallet shall request.

  • Authorization Details: array of multiple authorization_details possible where each contains a credential_type.

Q2: Currently, it seems this is not the abstract identifier (at least according to the examples). We should require the abstract identifier from the credentials_supported in the server metadata here as well. Thoughts?

credential_type: REQUIRED. JSON string denoting the type of the requested Credential

  • Server Metadata: Two usages of type whereas one is the abstract identifier of the credential (key values in the credentials_supported) and the other one is the types property in the value object for the abstract identifier itself.

Q3: Can we add language here that the abstract identifier of the credential corresponds to the types in the authorization_details and initiate issuance? Can we provide guidance when is what needed? I’d assume that the wallet reads the server metadata first, gets the list of abstract identifier keys and their values. Then the wallet checks the format-specific types property to find the unique type (e.g., fully qualified URI) per format, e.g. https://my.provider.com/healthCareCredential and requests the credential by submitting the abstract identifier for the credential plus the format.

credentials_supported: REQUIRED. A JSON object containing a list of key value pairs, where the key is a string serving as an abstract identifier of the Credential. This identifier is RECOMMENDED to be collision resistant - it can be globally unique, but does not have to be when naming conflicts are unlikely to arise in a given use case. The value is a JSON object. The JSON object MUST conform to the structure of the

types: REQUIRED. Array of strings representing a format specific type of a Credential. This value corresponds to type in W3C [VC_DATA] and a doctype in ISO/IEC 18013-5 (mobile Driving License).

Comments (3)

  1. Log in to comment