Fundamentally, the Verifiable Credential API (VC-API) is a standard developed to give technologists a way to enable holders of VCs to use them how and where they choose. Verifiable Credentials make claims which may be a qualification, achievement, quality, or piece of information about an entity's background such as a name, government ID, payment provider, home address, or university degree. The use cases outlined here are provided to help make progress toward possible future standardization and interoperability of the transport of both low- and high-stakes claims as outlined in the VC Use Cases. The use cases in this document focus on concrete scenarios that the technology defined by the group should address.
This document represents a concise but limited collection of use cases meant to be reviewed alongside the Verifiable Credentials API.
Work on this document is ongoing and subject to change as the conversation around the VC API evolves in the main group. This should currently be treated as a draft document and as such will have errors. As the VC API gets closer to a completed specification, this document should reflect the current understanding and status of that work.
Comments regarding this document are welcome. Please file directly on GitHub, or send them to public-vc-comments@w3.org (subscribe, archives).
The VC-API Working Group at the W3C is developing standards for exchanging Verifiable Credentials that have been verified by a third party and to make them easier for holders to use on the Web and in life.
Entities (people, organizations, devices) need to make many kinds of claims as part of their everyday activities. As more and more of these important activities move to the Internet, entities need to be able to transmit instantly verifiable claims (e.g., about their location, accomplishments, value, what-have-you). From educational records to payment account access, the next generation of web applications will authorize entities to perform actions based on rich sets of credentials issued by trusted parties. The Holders of these claims, in the form of Verfiable Credentials, need to be able to take the claims they control and make use of them where, when, and how they wish, often in ways the original issuer of the VC may not have originally indended. Having a common, standard way for these Holders of claims to use them as they wish is vital to a person having control of their own data.
Standardization of the transport layer for digital claims makes it possible for many stakeholders to interact with their desired counterparties, without being locked into proprietary platforms.
This document presents an aggregate use case model, comprised of Needs, Roles, Tasks, and Sequences. Taken together, these models define the use cases that the VC-API Working Group has addressed.
User needs define the problem space addressed by Verifiable Credentials. User Roles specify the roles different entities play when interacting with Verifiable Credentials. Tasks define the functions users can accomplish, and sequences demonstrate how tasks might be realized, by interactions between entities over time.
As with all models, this use case model is neither exhaustive nor complete. The listed uses cannot capture all possible use cases. Similarly, the models do not completely characterize the use cases represented. However, the combined model is intended to provide specific, coherent guidance for the work ahead.
The model used here draws heavily from the Verifiable Credentials Use Cases model. This is due to the fact that the VC-API is meant to support the transport of VCs in the use cases considered for the Verfiable Credential Working Group.
There are three roles supported by Verifiable Credentials as defined by the VCWG: Issuer, Verifier, and Holder. In the VC Use Cases, a fourth role — that of subject — is defined. However, for the purposes of the VC-API, the subject is not relevant except when the same entity is both the Holder and the subject. For this reason, the Subject role does not appear in the VC-API.
The above roles were those defined for the VCWG, however, due to the way most production software on the internet works, for the purposes of the VC-API there arises the need to delve into some detail as to how the Issuer and Verifier roles are structured. This is due to the fact that there are many use cases where one company is making use of services to handle part of the technology stack. This has led to both Verifier and Issuer splitting into two entities each, henceforth refered to as components of the Issuer and Verifier: Issuer Service, Issuer Coordinator, Verifier Service, and Verifier Coordinator.
The respective Service and Coordinator components combine to fulfill the role of the Issuer and Verifier as described in the VCWG. It is fully expected by the VC-API that software will exist that may fulfill only part of any of the roles, by implementing any combination of these component roles: Issuer Service, Issuer Coordinator Verifier Service, and Verifier Coordinator.
The VC-API address user needs in a number of key domains:
The education domain includes all levels of the educational experience; from primary through professional continuing education.
The retail domain encompasses all things where there is an exchange of value on an individual level. This includes brick-and-mortar store fronts, web-only venues, and even person-to-person sales.
The Finance domain includes banking, brokerage, insurance, and other industries where there is a high value placed on knowing exactly with whom you are dealing.
Privacy is critically important in the healthcare industry. This domain looks at everything from physical interaction to connecting patients and providers with service organizations.
In many aspects of life it is important to know that entities are who they say they are, and that they can do what they say. Professional accreditation is one way of learning about the abilities of an entity. Being able to verify these credentials is essential to their value.
For many transactions, an entity must be able to prove some aspect of their identity in a way that can be quickly verified. Governments and other widely recognized entities are well positioned to provide such identification in a verifiable digital form.
Intelligence devices are created and deployed so that they can interact with other entities (people, organizations, devices). Establishing trust and maintaining secure relationships with these devices is especially critical.
Bob, the director of production at HVAC Manufacturing, issues a device-identifying verifiable credential (e.g. IDevID, IAK) at the factory for an energy-saving fan controller IoT device. HVAC Manufacturing provides Bob with the front end software for this, and has stood up their own, custom, issueing service for use company wide.
Carol, senior quality engineer at Certifications Testing Lab, issues a certification of specification-compliance verifiable credential to the fan-controller device at the certification lab during the manufacturing process. Certifications Testing Lab provides Carol with the front end software to do this but makes use of the international Fan-Controller Standards Group's issueing service, which requires attestations of the engineer making the final claims about the device, before it will issue the specification-compliance certificate.
When the fan controller is installed at the customer's office at Modern Office Spaces, the controller's identifying credential can be verified by Sam, IT technician, to establish the identity of the controller as part of the on-boarding of the new controller. The controller's specification-compliance credential is verified to demonstrate the controller's Energy-Star compliance. Sam's handheld scanner makes use of Scanner Co's verification service, a package deal with the device.
As the fan controller leaves the factory, additional verifiable credentials are issued by Vince, a systems engineer at VAR Resellers, as he verifies the manufacturer's configuration matches the verifiable credentials accompanying the device. For this process, VAR Resellers has stood up their own verification and issueing services to be used within the company. He then installs a software package specific to Modern Office Spaces needs and issues verifiable credentials that establish evidence of possession by VAR Resellers and the software additions Vince made to the device.
Finally, upon delivery to Sam, the end customer, the verifiable credentials show that the fan controller has been securely handled and contains the correct features and certifications.
Sam, the new device owner, needs to trust the device originated from HVAC Manufacturing and was handled correctly at Certifications Testing Lab and installed with the correct software package at VAR Resellers. After Sam verifies each of the verifiable credentials, using Generic Online Verifier's online service. He issues another verifiable credential for fan controller #37 which includes assertions relating to trust: device manufacturer model/version, software manufacturer model/version, security versions of components TCB, and associated devices the fan controller is authorized to interact with including thermostat-board-room. To do this, he goes to HVAC Manufacturing's website and requests the new credential by scanning his new device's barcode and submitting an image to HVAC Manufacturing's website. After verifying the device is one of their, HVAC Manufacturing issuer's Sam the requested credential.
The thermostat-board-room monitors room temperature. When the temperature is too hot it switches the fan controller #37 on and later when the temperature reaches a comfortable level, off. The device makes sure the control signals from thermostat-board-room are authorized (namely, that Sam intended for thermostat-board-room to control the fan controller). To do this, Sam decides he trust's HVAC Manufacturing to verify these types of credentials for him, and so he puts the end-point provided by HVAC Manufacturing for these types of purposes into his fan-controller's settings page.
Sam is concerned about the security of the smart board room. He configures the autonomously interacting devices to re-verify device trustworthiness attributes periodically by re-checking that the device originated from HVAC Manufacturing and was handled correctly by Certifications Testing Lab and installed with the correct software package by VAR Resellers. For this purpose, Sam does not trust HVAC Manufacturing's verifier service, as there could be a conflict of interest there, so Sam instead decides to use Generic HVAC Verifier's verification service, adding the provided end-point to the approriate configuration files so the devices use his selected verification services.
Sam may update the device’s software occasionally during its lifetime. Even though Sam is applying the update, VAR Resellers supplies the correct update. The device ensures that only VAR Resellers is able to supply the updated software image and that only Sam is able to apply the update.
Lana is an IT administrator for the United States Citizenship and Immigration Services (USCIS) Digital Permanent Resident Card (PRC) program. She configures the USCIS website to issue digital Permanent Resident Cards by utilizing industry standard issuer software and setting up the appropriate HTTP API Authorizations between systems. Legal Permanent Residents, upon receiving their physical card in the mail, are given the USCIS website URL, a login account, and PIN code that they may use to manage their account and pick up their digital Permanent Resident Card. When Louis, a Legal Permanent Resident, requests a digital Permanent Resident Card via the USCIS website, he authenticates using his login account and once authenticated, provides a DID associated with his client-side digital wallet against which the website will issue VCs. The USCIS website then connects to the digital card issuing server, which builds the Verifiable Credential Permanent Resident Card using Louis' account data, and then utilizes industry standard HTTP APIs to issue the Permanent Resident Card as a Verifiable Credential. Louis can then use his Digital Permanent Resident Card in online scenarios when he needs to prove his resident status, such as when applying for a job.
Requirements:
Mermaid
sequenceDiagram
autonumber
Lana (Issuer Admin)->>uscis.gov (Issuer App):Configure to properly use Generic Issuer SAAS
uscis.gov (Issuer App)->>uscis.gov (Issuer App):Process configuration
uscis.gov (Issuer App)->>Generic Issuer SAAS (Issuer Service):Status check
Generic Issuer SAAS (Issuer Service)->>Generic Issuer SAAS (Issuer Service):Verify Authorization
Generic Issuer SAAS (Issuer Service)->>Generic Issuer SAAS (Issuer Service):Check business rules
Generic Issuer SAAS (Issuer Service)->>uscis.gov (Issuer App):All good
uscis.gov (Issuer App)->>Lana (Issuer Admin):Configuration complete
authn.io (Holder Service)->>Louis's Browser (Holder App):Holder-App/registerCredentialHandler
Louis (Holder)->>Louis's Browser (Holder App):uscis.gov
Louis's Browser (Holder App)->>uscis.gov (Issuer App):uscis.gov
uscis.gov (Issuer App)->>Louis's Browser (Holder App):uscis.gov/index.html
Louis's Browser (Holder App)->>Louis (Holder):uscis.gov/index.html
Louis (Holder)->>Louis's Browser (Holder App):Click "Get PRC"
Louis's Browser (Holder App)->>uscis.gov (Issuer App):uscis.gov/getPRC
uscis.gov (Issuer App)->>Louis's Browser (Holder App):request authentication
Louis's Browser (Holder App)->>Louis (Holder):request authentication
Louis (Holder)->>Louis's Browser (Holder App):provide authentication details
Louis's Browser (Holder App)->>uscis.gov (Issuer App):uscis.gov/authenticate?louiss-details
uscis.gov (Issuer App)->>uscis.gov (Issuer App):process provided authentication details
uscis.gov (Issuer App)->>Louis's Browser (Holder App):authentication succuss
Louis's Browser (Holder App)->>Louis (Holder):authentication succuss
uscis.gov (Issuer App)->>Louis's Browser (Holder App):Holder-App/requestPresentation
Louis's Browser (Holder App)->>Louis (Holder):Holder/selectHolderService
Louis (Holder)->>Louis's Browser (Holder App):holderServiceSelection
Louis's Browser (Holder App)->>authn.io (Holder Service):HolderService/requestPresentation
authn.io (Holder Service)->>Louis (Holder):Holder/selectWallet
Louis (Holder)->>authn.io (Holder Service):walletSelection
authn.io (Holder Service)->>Louis (Holder):Holder/selectProfile
Louis (Holder)->>authn.io (Holder Service):profileSelection
authn.io (Holder Service)->>Louis's Browser (Holder App):HolderApp/requestedPresentation
Louis's Browser (Holder App)->>uscis.gov (Issuer App):IssuerApp/requestedPresentation
uscis.gov (Issuer App)->>Generic Issuer SAAS (Issuer Service):IssuerService/credentials/issue?"providedVP"
Generic Issuer SAAS (Issuer Service)->>uscis.gov (Issuer App):IssuerApp/credentials/issued?"issuedCredentailsWrappedByIssuerApp"
uscis.gov (Issuer App)->>Louis's Browser (Holder App):HolderApp/newCredential?"issuedCredentialUnwrappedByIssuerApp"
Louis's Browser (Holder App)->>Louis (Holder):Holder/selectHolderService
Louis (Holder)->>Louis's Browser (Holder App):holderServiceSelection
Louis's Browser (Holder App)->>authn.io (Holder Service):HolderService/storeCredentials?"credentials"
authn.io (Holder Service)->>Louis (Holder):Holder/selectWallet
Louis (Holder)->>authn.io (Holder Service):walletSelection
authn.io (Holder Service)->>Louis (Holder):Holder/selectProfile
Louis (Holder)->>authn.io (Holder Service):profileSelection
authn.io (Holder Service)->>authn.io (Holder Service):Store credentials
authn.io (Holder Service)->>Louis's Browser (Holder App):HolderApp/credentialsStored
Contributed by: Digital Bazaar
Author Email: msporny@digitalbazaar.com
Author Github: msporny
Riley has onboarded into the TruAge digital age verification system, which has provided her with a set of Verifiable Credentials that she stores in her digital wallet. A subset of the Verifiable Credentials that she has received are digitally signed single-use age tokens that only assert that she is above the age of 21 and are marked as "used" by the TruAge system when they are submitted as a part of an age-restricted goods purchase, such as buying a bottle of wine. Eventually, Riley runs out of single use age tokens in her digital wallet. The digital wallet keeps track of which tokens have been used and once all tokens have been consumed, contacts a refresh service endpoint listed in one of the TruAge credentials that provides new over-age tokens. The digital wallet requests a new set of tokens by hitting the HTTP API of this VC-refresh service listed in the “refreshService” array and POSTing the original Verifiable Credential containing the refresh service description. The HTTP API ensures that it has received a valid credential and reissues a set of new digitally signed single-use age tokens in the response.
Requirements:
Mermaid
sequenceDiagram
autonumber
Riley's Wallet (Holder Service)->>Riley's Wallet (Holder Service):Notice out of Age Tokens
Riley's Wallet (Holder Service)->>TruAge Website (Verifier App):truage.com/credentials/refresh?"HolderCallbackURL1"
TruAge Website (Verifier App)->>Riley's Wallet (Holder Service):ackRequest
TruAge Website (Verifier App)->>Riley's Wallet (Holder Service):HolderCallbackURL1/"Domain&Challenge w/ request for expired VC + TruAgeCallbackURL1"
Riley's Wallet (Holder Service)->>TruAge Website (Verifier App):ackResponse
Riley's Wallet (Holder Service)->>Riley's Wallet (Holder Service):Generate VP containing Age Verification VC
Riley's Wallet (Holder Service)->>Riley's Wallet (Holder Service):Sign generated VP
Riley's Wallet (Holder Service)->>TruAge Website (Verifier App):TruAgeCallbackURL1?"AgeVerificationVP + HolderWalletCallback1"
TruAge Website (Verifier App)->>Riley's Wallet (Holder Service):ackResponse
TruAge Website (Verifier App)->>TruAge Website (Verifier App):Extract contained VC
TruAge Website (Verifier App)->>TruAge Website (Verifier App):Check if subject of contained VC is signer of VP
TruAge Website (Verifier App)->>Generic Verifier SAAS (Verifier Service):genericverifier.com/presentations/verify?"AgeVerificationVP"
Generic Verifier SAAS (Verifier Service)->>TruAge Website (Verifier App):ackRequest
Generic Verifier SAAS (Verifier Service)->>Generic Verifier SAAS (Verifier Service):Process provided VP
Generic Verifier SAAS (Verifier Service)->>TruAge Website (Verifier App):truage.com/presentations/verified?"VerificationResult"
TruAge Website (Verifier App)->>Generic Verifier SAAS (Verifier Service):ackResponse
TruAge Website (Verifier App)->>TruAge Website (Verifier App):Evaluate VP verification result
TruAge Website (Verifier App)->>Generic Verifier SAAS (Verifier Service):genericverifier.com/credentials/verify?"AgeVerificationVC"
Generic Verifier SAAS (Verifier Service)->>TruAge Website (Verifier App):ackRequest
Generic Verifier SAAS (Verifier Service)->>Generic Verifier SAAS (Verifier Service):Process provided VC
Generic Verifier SAAS (Verifier Service)->>TruAge Website (Verifier App):truage.com/credentials/verified?"VerificationResult"
TruAge Website (Verifier App)->>Generic Verifier SAAS (Verifier Service):ackResponse
TruAge Website (Verifier App)->>TruAge Website (Verifier App):Evaluate business rules
TruAge Website (Verifier App)->>Generic Issuer SAAS (Issuer Service):genericissuer.com/credentials/issue?"AgeVerificationVC"
Generic Issuer SAAS (Issuer Service)->>TruAge Website (Verifier App):ackRequest
Generic Issuer SAAS (Issuer Service)->>Generic Issuer SAAS (Issuer Service):Generate new Age Tokens
Generic Issuer SAAS (Issuer Service)->>TruAge Website (Verifier App):truage.com/credentials/issued?"Container Credential + Age Verification VC + NewSingleUseAgeTokenCredentials"
TruAge Website (Verifier App)->>Generic Issuer SAAS (Issuer Service):ackResponse
TruAge Website (Verifier App)->>Riley's Wallet (Holder Service):holderWalletCallback2?"NewAgeTokenCredentials"
Riley's Wallet (Holder Service)->>TruAge Website (Verifier App):ackRecieve
Contributed by: Digital Bazaar
Author Email: msporny@digitalbazaar.com
Author Github: msporny
Description: Ignio, a logistics manager for "Kirk Company", would like to submit all necessary paperwork to send his company's products across international boundaries. These products are considered hazardous chemicals and thus are regulated, requiring extra paperwork to be filed before transportation is approved across boundaries. Some hazardous material shipments are different resulting in different required paperwork, and Ignio wants to automate as much of the process as possible with Shippers, their 3rd Party Logistics company (3PL). There are a set of verifiable credentials that Ignio is willing to share with Customs as well as the transportation company.
When Kirk starts a shipping workflow, his company's systems initiate the workflow by contacting a known location on the Shipper's Website. A presentation exchange occurs to first DIDAuth the company and send generic mandatory information for any shipment; if and only if the information provided requires additional information‒in this case a hazmat certification‒a second exchange is initiated to request this outstanding/required hazmat info. Once this is received, Shippers can send back a Bill of Lading in VC form. The two (or more) credential exchanges are composable and idempotent, ending in a valid BoL if successful.
Requirements:
Mermaid
sequenceDiagram
autonumber
Ignio (Logistic Manager)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Verify all necessary info ready to ship
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Ignio (Logistic Manager):Display requested data
Ignio (Logistic Manager)->>Ignio (Logistic Manager):Evaluate data
Ignio (Logistic Manager)->>Ignio (Logistic Manager):Decide ready to ship
Ignio (Logistic Manager)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Trigger shipment
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):shippingco.com/createShipment?"KirkCallbackURL"
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Ack Request
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Evaluate business rules
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Generate nonce for VP Challenge
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Generate VP Request
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):KirkCallbackURL?"Domain&Challenge + Shipping Info + ShippingCoCallbackURL1"
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):Ack Request
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Evaluate Business Rules for requested Shipping Info
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Generate challenge response VP which contains requested Shipping Info VCs
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):ShippingCoCallbackURL1?"ChallengeResponseVP + KirkCallbackURL2"
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Ack Response
Shipping Co. Website (Issuer App)->>Generic Verifier SAAS (Verifier Service):genericverifier.com/presentations/verify?"ChallengeResponseVP"
Generic Verifier SAAS (Verifier Service)->>Shipping Co. Website (Issuer App):ackRequest
Generic Verifier SAAS (Verifier Service)->>Generic Verifier SAAS (Verifier Service):Evaluate Challenge Response
Generic Verifier SAAS (Verifier Service)->>Shipping Co. Website (Issuer App):shippinco.com/presentations/verified?"VerificationResultVP"
Shipping Co. Website (Issuer App)->>Generic Verifier SAAS (Verifier Service):ackResponse
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Evaluate business rules
Shipping Co. Website (Issuer App)->>Shipping Co Database:Register Shiptment info
Shipping Co Database->>Shipping Co. Website (Issuer App):info registered
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Generate nonce for VP Challenge
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Generate VP Request
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):KirkCallbackURL2?"Request for DID Atuh + Hazmat Info + ShippingCoCallbackURL2"
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):Ack Request
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Evaluate business rules for requested Hazmat Info
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Generate VP containing Hazmat Info
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):ShippingCoCallbackURL2?"HazmatVP + KirkCallbackURL3"
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):Ack Response
Shipping Co. Website (Issuer App)->>Generic Verifier SAAS (Verifier Service):genericverifier.com/presentations/verify?"HazmatVP"
Generic Verifier SAAS (Verifier Service)->>Shipping Co. Website (Issuer App):ackRequest
Generic Verifier SAAS (Verifier Service)->>Generic Verifier SAAS (Verifier Service):Evaluate Hazmat VP
Generic Verifier SAAS (Verifier Service)->>Shipping Co. Website (Issuer App):shippinco.com/presentations/verified?"VerificationResultVP"
Shipping Co. Website (Issuer App)->>Generic Verifier SAAS (Verifier Service):askResponse
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Check business rules
Shipping Co. Website (Issuer App)->>Shipping Co Database:Register Hazmat Info
Shipping Co Database->>Shipping Co. Website (Issuer App):info registered
Shipping Co. Website (Issuer App)->>Shipping Co Database:Request Shipment and Hazmat info
Shipping Co Database->>Shipping Co. Website (Issuer App):requested info
Shipping Co. Website (Issuer App)->>Shipping Co. Website (Issuer App):Generate BoLRequestVP
Shipping Co. Website (Issuer App)->>Generic Issuer SAAS (Issuer Service):genericissuer.com/credentials/issue?"BoLRequestVP"
Generic Issuer SAAS (Issuer Service)->>Shipping Co. Website (Issuer App):ackRequest
Generic Issuer SAAS (Issuer Service)->>Generic Issuer SAAS (Issuer Service):Check business rules
Generic Issuer SAAS (Issuer Service)->>Shipping Co. Website (Issuer App):shippingco.com/credentials/issued?"BoL"
Shipping Co. Website (Issuer App)->>Generic Issuer SAAS (Issuer Service):ackResponse
Shipping Co. Website (Issuer App)->>Kirk Company Enterprise Resource Planning App (Holder and Holder Service):KirkCallbackURL3?"BoL"
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Shipping Co. Website (Issuer App):Ack Response
Kirk Company Enterprise Resource Planning App (Holder and Holder Service)->>Ignio (Logistic Manager):BoL Ready notice
Contributed by: Digital Bazaar
Author Email: msporny@digitalbazaar.com
Author Github: msporny
Kenzie is using digital credentials to apply for a job at as a teacher. Her teaching certification is already in her digital wallet but the school also requires a criminal background check for which Kenzie does not currently have a credential. The process of getting the background check can take 24–48 hours. Kenzie goes to the job application website and submits her application; the website responds requesting both her teaching credential and a criminal background check credential --issued by some set of known issuers?-- Some of his credentials are available today, some will need to be provided when they are ready (for example, a criminal background check can take 24-48 hrs to process). He would like these credentials to be presented to the Verifier (service provider) when ready, without having to constantly return to the Verifier (service provider) and deliver them "by hand". He should be able to have them released from his Holder directly as they become available.
Requirements:
Mermaid
sequenceDiagram
autonumber
Kenzie (Holder)->>jobapplications.com (Verifier App):jobapplications.com/presenations/submit?"application"
jobapplications.com (Verifier App)->>jobapplications.com (Verifier App):process application
jobapplications.com (Verifier App)->>Kenzie (Holder):Request credentials A and B
Kenzie (Holder)->>Kenzie's Wallet (Holder Service):Check for A and B
Kenzie's Wallet (Holder Service)->>Kenzie (Holder):Display A, B not found
Kenzie (Holder)->>Kenzie's Wallet (Holder Service):Need B
Kenzie's Wallet (Holder Service)->>backgroundcheck.com (Issuer App):backgroundcheck.com/index.html
backgroundcheck.com (Issuer App)->>Kenzie's Wallet (Holder Service):index.html
Kenzie's Wallet (Holder Service)->>backgroundcheck.com (Issuer App):backgroundcheck.com/getBackgroundCheck
backgroundcheck.com (Issuer App)->>Kenzie's Wallet (Holder Service):getBackgoundCheck.html
Kenzie's Wallet (Holder Service)->>backgroundcheck.com (Issuer App):backgroundcheck.com/getBackgrounCheck/credentials/issue?"RequestedInfo"
backgroundcheck.com (Issuer App)->>backgroundcheck.com (Issuer App):evaluate requested info
backgroundcheck.com (Issuer App)->>Generic Issuer (Issuer Service):genericissuer.com/credentials/issue?"backgrounCheckCredential+info"
Generic Issuer (Issuer Service)->>backgroundcheck.com (Issuer App):issued VC
backgroundcheck.com (Issuer App)->>Kenzie's Wallet (Holder Service):kenzieswallet.com/credentials/recieve?"VC"
Kenzie's Wallet (Holder Service)->>Kenzie (Holder):Notify B Ready
Kenzie (Holder)->>jobapplications.com (Verifier App):jobapplications.com/presenations/submit?"application"
jobapplications.com (Verifier App)->>Kenzie (Holder):Request Credentials A and B
Kenzie (Holder)->>Kenzie's Wallet (Holder Service):Send A and B to jobapplications.com
Kenzie's Wallet (Holder Service)->>jobapplications.com (Verifier App):jobapplications.com/presentations/submit?"application with A and B"
jobapplications.com (Verifier App)->>Generic Verifier (Verifier Service):genericVerifer.com/presentations/verify?"applicationwith A and B"
Generic Verifier (Verifier Service)->>jobapplications.com (Verifier App):Verification Result
jobapplications.com (Verifier App)->>jobapplications.com (Verifier App):process application
jobapplications.com (Verifier App)->>Kenzie's Wallet (Holder Service):Application Accepted
Kenzie's Wallet (Holder Service)->>Kenzie (Holder):Application Accepted
Contributed by:SecureKey Technologies Inc.
Author Email: mike.varley@securekey.com
Author Github: mavarley
A student, Shabazz, wants to publish their MBLEx test results from an education test provider, Massage Therapy Test Corp. Massage Therapy Test Corp proxies their authority to sign to a service provider, SSI Ventures. SSI Ventures issues Shabazz a VC when he logs into his Massage Therapy Test Corp account and enables his browser-based SSI Wallet, Billfold. The signed VC is then stored in Shabazz’ Billfold™ Wallet to be presented elsewhere.
In a separate session, Shabazz logs into a web portal of a State Massage Therapy licensure system to apply for his Massage Therapy license. The licensure specialist at the State checks the issuer using a State accreditation system, then checks the signature on the test results VC and ingests the credential’s payload. The licensure specialist then finalizes their workflow and issues Shabazz a Massage Therapy license.
Requirements:
Mermaid
sequenceDiagram
autonumber
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):massagetherapytestcorp.com
Shabazz's Billfold (Holder App - includes browser)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/index.html
Massage Therapy Test Corp Webpage (Issuer App)->>Shabazz's Billfold (Holder App - includes browser):index.html
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):display webpage
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Authenticate
Shabazz's Billfold (Holder App - includes browser)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/authenticate
Massage Therapy Test Corp Webpage (Issuer App)->>Shabazz's Billfold (Holder App - includes browser):authentication challenge
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):challenge
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):authentication information
Shabazz's Billfold (Holder App - includes browser)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/authenticate?"info"
Massage Therapy Test Corp Webpage (Issuer App)->>Massage Therapy Test Corp Webpage (Issuer App):process authentication information
Massage Therapy Test Corp Webpage (Issuer App)->>Shabazz's Billfold (Holder App - includes browser):authentication success
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):authentication success
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):get Message Therapy Credential
Shabazz's Billfold (Holder App - includes browser)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/getTherapyCredential
Massage Therapy Test Corp Webpage (Issuer App)->>Shabazz's Billfold (Holder App - includes browser):DID Auth Challenge
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Display wallet selector
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Selected Wallet
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Display profile selector
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Selected Profile
Shabazz's Billfold (Holder App - includes browser)->>Shabazz's Wallet (Holder Service):Request DID Auth Challenge Responsew
Shabazz's Wallet (Holder Service)->>Shabazz's Wallet (Holder Service):generate DID Auth response
Shabazz's Wallet (Holder Service)->>Shabazz's Billfold (Holder App - includes browser):DID Auth response
Shabazz's Billfold (Holder App - includes browser)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/getTherapyCredential/didAuth?"DIDAuthResponse"
Massage Therapy Test Corp Webpage (Issuer App)->>Massage Therapy Test Corp Webpage (Issuer App):Process response
Massage Therapy Test Corp Webpage (Issuer App)->>SSI Venture (Issuer Service):ssiventures.com/messagetestcorp/credentials/issue?"VPfromDIDAuth"
SSI Venture (Issuer Service)->>Massage Therapy Test Corp Webpage (Issuer App):messagetherapytestcorp.com/credentials/issued?"issuedCredentailsWrappedByIssuerApp"
Massage Therapy Test Corp Webpage (Issuer App)->>Shabazz's Billfold (Holder App - includes browser):HolderApp/newCredential?"issuedCredentialUnwrappedByIssuerApp"
Shabazz's Billfold (Holder App - includes browser)->>Shabazz's Wallet (Holder Service):store credential
Shabazz's Wallet (Holder Service)->>Shabazz's Billfold (Holder App - includes browser):success
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Credential successfully stored in wallet
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Go to Floyd's Message Therapy Webpage
Shabazz's Billfold (Holder App - includes browser)->>floydsmassagetheray.com (Verifier App):floydsmessagetherapy.com/index.html
floydsmassagetheray.com (Verifier App)->>Shabazz's Billfold (Holder App - includes browser):index.html
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):display page
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Submit employment application
Shabazz's Billfold (Holder App - includes browser)->>floydsmassagetheray.com (Verifier App):floydsmessagetherapy.com/employmentApp
floydsmassagetheray.com (Verifier App)->>Shabazz's Billfold (Holder App - includes browser):Domain&Challenge
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Display wallet selector
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):wallet selection
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Display profile selector
Shabazz (Holder)->>Shabazz's Billfold (Holder App - includes browser):Selected Profile
Shabazz's Billfold (Holder App - includes browser)->>Shabazz's Wallet (Holder Service):Domain&Challenge
Shabazz's Wallet (Holder Service)->>Shabazz's Wallet (Holder Service):generate VP
Shabazz's Wallet (Holder Service)->>Shabazz's Billfold (Holder App - includes browser):Challenge response VP
Shabazz's Billfold (Holder App - includes browser)->>floydsmassagetheray.com (Verifier App):floydsmessagetherapy.com/empoymentApp/challengeResponse?"VP"
floydsmassagetheray.com (Verifier App)->>floydsmassagetheray.com (Verifier App):Process response
floydsmassagetheray.com (Verifier App)->>Shabazz's Billfold (Holder App - includes browser):request application with State License VC
Shabazz's Billfold (Holder App - includes browser)->>Shabazz's Wallet (Holder Service):Request VP
Shabazz's Wallet (Holder Service)->>Shabazz's Wallet (Holder Service):Generate VP
Shabazz's Wallet (Holder Service)->>Shabazz's Billfold (Holder App - includes browser):VP w/Application and State License
Shabazz's Billfold (Holder App - includes browser)->>floydsmassagetheray.com (Verifier App):floydsmessagetherapy.com/presenatations/submit?"Application wtih State License VP"
floydsmassagetheray.com (Verifier App)->>State Verifier (Verifier Service):stateverifier.com/credentials/verify?"StateLicenseVC"
State Verifier (Verifier Service)->>floydsmassagetheray.com (Verifier App):Verification Result
floydsmassagetheray.com (Verifier App)->>floydsmassagetheray.com (Verifier App):process application
floydsmassagetheray.com (Verifier App)->>Shabazz's Billfold (Holder App - includes browser):Application submitted
Shabazz's Billfold (Holder App - includes browser)->>Shabazz (Holder):Application submitted
Contributed by:RANDA Solutions
Author Email: marty.reed@randasolutions.com
Author Github: martyr160
In order to export steel products to the global market, Steel Mills Global must prove the quality of their products. For this, they rely on Inspectors & Co, an internationally recognized steel testing company. Upon inspection, Inspectors & Co issues a Mill Test Report VC to Steel Mills Global.
Steel Inc. imports and distributes steel products domestically. Negotiating a shipment Steel Mills Global presents the MTR as proof of product quality. Steel Inc. verifies the MTR VP and accepts the shipment.
Steel Inc. initiates the importing procedures, starting out self-issuing an Import Declaration Form VC. The MTR and IDF are jointly presented to the Customs authority which verifies the VP. Upon verification the customs release is granted for goods import.
Note: These VC types are taken from the Traceability Vocabulary, a W3C-CCG work item for supply chain use-cases.
Requirements:
Mermaid
sequenceDiagram
autonumber
Holder - Steel Mills Global (SMG)->>Holder App - SMG Enterprise API:getMillTestReportVC
Holder App - SMG Enterprise API->>Issuer App - Inspectors & Co Enterprise Software:inspectorandco.com/credentials/issue
Issuer App - Inspectors & Co Enterprise Software->>Lacy - Inspectors & Co Inspector:New inspection requested
Lacy - Inspectors & Co Inspector->>Lacy - Inspectors & Co Inspector:Completes SMG Inspection
Lacy - Inspectors & Co Inspector->>Issuer App - Inspectors & Co Enterprise Software:Issue Mill Test Report to SMG
Issuer App - Inspectors & Co Enterprise Software->>Issuer Service - Inspectors & Co Issuer:IandCoIssuer.com/credentials/issue
Issuer Service - Inspectors & Co Issuer->>Issuer Service - Inspectors & Co Issuer:Process request
Issuer Service - Inspectors & Co Issuer->>Issuer App - Inspectors & Co Enterprise Software:Issued Credentials
Issuer App - Inspectors & Co Enterprise Software->>Holder App - SMG Enterprise API:smgApi.com/credentials/recieve?\"MillTestReportVP\"
Holder App - SMG Enterprise API->>Holder App - SMG Enterprise API:Process returned VP
Holder App - SMG Enterprise API->>Holder Service - SMG Wallet:smgWallet.com/credentials/store?\"MTRVP\"
Holder Service - SMG Wallet->>Holder Storage - SMG EDV/KMS:smgEdv.com/credentials/store?\"MTRVP\"
Holder Storage - SMG EDV/KMS->>Holder Storage - SMG EDV/KMS:Store credentials
Holder Storage - SMG EDV/KMS->>Holder Service - SMG Wallet:Storage success and access info
Holder Service - SMG Wallet->>Holder App - SMG Enterprise API:Storage acknowledged
Holder App - SMG Enterprise API->>Holder - Steel Mills Global (SMG):Mill Test Report recieved
Steel Inc->>Holder - Steel Mills Global (SMG):Purchase Inquiry
Holder - Steel Mills Global (SMG)->>Holder - Steel Mills Global (SMG):Process Inquiry
Holder - Steel Mills Global (SMG)->>Steel Inc:Agree to sell
Steel Inc->>Holder - Steel Mills Global (SMG):Request Mill Test Report
Holder - Steel Mills Global (SMG)->>Holder App - SMG Enterprise API:sendMillTestReportVC
Holder App - SMG Enterprise API->>Verifier App - Steel Inc. Business API:steelincapi.com/presentations/available
Verifier App - Steel Inc. Business API->>Holder App - SMG Enterprise API:Domain&Challenge
Holder App - SMG Enterprise API->>Holder Service - SMG Wallet:smgWallet.com/presentations/issue?\"Domain&Challenge\"
Holder Service - SMG Wallet->>Holder Service - SMG Wallet:Generate VP containing the MTR
Holder Service - SMG Wallet->>Holder Storage - SMG EDV/KMS:smgEdv.com/credentials/sign?\"GeneratedVP\"
Holder Storage - SMG EDV/KMS->>Holder Storage - SMG EDV/KMS:Sign VP
Holder Storage - SMG EDV/KMS->>Holder Service - SMG Wallet:SignedVP
Holder Service - SMG Wallet->>Holder App - SMG Enterprise API:SignedVP
Holder App - SMG Enterprise API->>Verifier App - Steel Inc. Business API:steelincapi.com/presentations/submissions?\"SignedVP\"
Verifier App - Steel Inc. Business API->>Verifier App - Steel Inc. Business API:Check business rules
Verifier App - Steel Inc. Business API->>Verifier Service - Steel Industry Verifier:steelindustryverifier.com/presentations/verify
Verifier Service - Steel Industry Verifier->>Verifier Service - Steel Industry Verifier:Check proofs
Verifier Service - Steel Industry Verifier->>Issuer Service - Inspectors & Co Issuer:IandCoIssuer.com/credentials/revocationList?\"MTRVC\"
Issuer Service - Inspectors & Co Issuer->>Issuer Service - Inspectors & Co Issuer:Check revocation list
Issuer Service - Inspectors & Co Issuer->>Verifier Service - Steel Industry Verifier:revocationStatus=notRevoked
Verifier Service - Steel Industry Verifier->>Verifier App - Steel Inc. Business API:steelincapi.com/presentations/verified?\"MTRVC\"
Verifier App - Steel Inc. Business API->>Verifier App - Steel Inc. Business API:Check business rules
Verifier App - Steel Inc. Business API->>Verifier App - Steel Inc. Business API:Record verification result
Verifier App - Steel Inc. Business API->>Steel Inc:New Verification Result Notification
Verifier App - Steel Inc. Business API->>Holder App - SMG Enterprise API:steelincapi.com/presentations/verified?\"SignedVP\"
Holder App - SMG Enterprise API->>Holder - Steel Mills Global (SMG):Mill Test Report Verified
Contributed by:Transmute Industries
Author Email: nis@transmute.industries
Author Github: nissimsan
The editors are thankful to the contributions from the VC API Working Group