## DTC Anoncred Issuance Workflow
1. User installs Mobile App
2. User uses Mobile App to scan passport using OCR and NFC and authenticate with a liveness check
3. Mobile App establishes connection with DTC Issuer Agent
4. Mobile App sends ICAO DTC to DTC Issuer Agent via self-attested presentation
5. DTC Issuer Agent requests check of validity of ICAO DTC from ICAO DTC PKD service
6. ICAO DTC PKD service responds with validity result
7. DTC Issuer Agent offers a DTC Anoncred credential to the Mobile App
8. Mobile App presents the offer to the User
9. User accepts the credential offer on the Mobile App
```plantuml
skinparam backgroundColor #fff
skinparam handwritten false
skinparam BoxPadding 10
skinparam ParticipantPadding 10
skinparam NoteFontSize 24
skinparam NoteBorderColor #f80
skinparam NoteBackgroundColor #fea
skinparam sequenceArrowThickness 1
skinparam sequence {
BoxFontSize 36
BoxBorderColor #555
BoxBackgroundColor #fbfbfb
ActorFontColor #333
ActorFontSize 24
ActorFontName Arial
ActorBorderColor #555
ActorBackgroundColor #ccc
ParticipantFontName Arial
ParticipantFontSize 24
ParticipantFontColor #333
ParticipantBorderColor #555
ParticipantBackgroundColor #eee
LifeLineBorderColor #ccc
LifeLineBackgroundColor #000
ArrowFontSize 24
ArrowColor #f80
DividerFontSize 24
}
actor User
participant "Mobile App" as Mobile
participant "DTC Issuer Agent" as Issuer
participant Auctorizium
User -> Mobile: Install
Mobile -> Mobile: Scan Passport, Liveness Check
Mobile -> Mobile: Encode ICAO DTC
note over Mobile: ICAO DTC stored on Mobile App
Mobile -> Issuer: Connect
Mobile -> Issuer: Send ICAO DTC
note over Issuer: ICAO DTC stored on\nDTC Issuer Agent\n(temporarily)
note over Issuer: Passport attributes\nstored on\nDTC Issuer Agent
Issuer -> Auctorizium: ICAO DTC validity request
note over Auctorizium: Does Auctorizium store\nany information?
Auctorizium -> Issuer: ICAO DTC validity result
Issuer -> Mobile: Offer DTC Anoncred credential
Mobile -> User: Display DTC\nAnoncred credential offer
User -> Mobile: User accepts credential
note over Mobile: DTC Anoncred credential\nstored on Mobile App
```
## Airline ID Issuance Workflow
1. User opens Airline Website in a browser
2. User clicks on "Create an Account"
3. Airline Website requests an invitation from the Airline Server Agent
4. Airline Server Agent returns invitation
5. Airline Website presents a QR code to the user
6. User scans the QR code with their Mobile App
7. Mobile App connects to the Airline Server Agent
8. Airline Website presents a user profile form
9. User fills out the user profile information and clicks "Submit"
10. Airline Website submits data to the Airline Server Agent and requests issuance of Airline ID credential
11. Airline Server Agent uses the data to offer an Airline ID credential to the Mobile App
12. Mobile App presents the offer to the User
13. User clicks accept in the Mobile App and the Airline ID credential is added to their wallet
14. User is redirected to account page on the Airline Website
```plantuml
skinparam backgroundColor #fff
skinparam handwritten false
skinparam BoxPadding 10
skinparam ParticipantPadding 10
skinparam NoteFontSize 24
skinparam NoteBorderColor #f80
skinparam NoteBackgroundColor #fea
skinparam sequenceArrowThickness 1
skinparam sequence {
BoxFontSize 36
BoxBorderColor #555
BoxBackgroundColor #fbfbfb
ActorFontColor #333
ActorFontSize 24
ActorFontName Arial
ActorBorderColor #555
ActorBackgroundColor #ccc
ParticipantFontName Arial
ParticipantFontSize 24
ParticipantFontColor #333
ParticipantBorderColor #555
ParticipantBackgroundColor #eee
LifeLineBorderColor #ccc
LifeLineBackgroundColor #000
ArrowFontSize 24
ArrowColor #f80
DividerFontSize 24
}
actor User
participant "Mobile App" as Mobile
participant "Airline Website" as Website
participant "Airline Server Agent" as Issuer
User -> Website: Open Website
Website -> Website: User clicks "Create Account"
Website -> Issuer: Requests invitation
Issuer -> Website: Returns invitation
Website -> Website: Displays QR code
Mobile -> Website: Scan QR code
Mobile -> Issuer: Connect
Website -> Website: Displays user profile form
User -> Website: User submits\nuser profile data
Website -> Issuer: User data submitted,\nAirline ID credential requested
note over Issuer: User data stored\non Airline Server Agent
Issuer -> Mobile: Offer Airline ID credential
Mobile -> User: Display Airline\nID credential offer
User -> Mobile: User accepts credential
note over Mobile: Airline ID credential\nstored on Mobile App
Website -> User: User redirected to account page
```
## Airline Website Login Workflow
1. User opens Airline Website in a browser
2. User clicks on "Log In"
3. Airline Website requests an invitation from the Airline Server Agent
4. Airline Server Agent returns invitation
5. Airline Website presents a QR code to the user
6. User scans the QR code with their Mobile App
7. Mobile App connects to the Airline Server Agent
8. Airline Server Agent sends a presentation request to the Mobile App requesting the Airline ID credential
9. Mobile App displays the presentation request to the User
10. User accepts the presentation request
11. Mobile App sends the presentation to the Airline Server Agent
12. Airline Server Agent verifies the credential
13. Airline Server Agent sends the result to the Airline Website
14. Airline Website redirects User to the account page (or displays an error message)
```plantuml
skinparam backgroundColor #fff
skinparam handwritten false
skinparam BoxPadding 10
skinparam ParticipantPadding 10
skinparam NoteFontSize 24
skinparam NoteBorderColor #f80
skinparam NoteBackgroundColor #fea
skinparam sequenceArrowThickness 1
skinparam sequence {
BoxFontSize 36
BoxBorderColor #555
BoxBackgroundColor #fbfbfb
ActorFontColor #333
ActorFontSize 24
ActorFontName Arial
ActorBorderColor #555
ActorBackgroundColor #ccc
ParticipantFontName Arial
ParticipantFontSize 24
ParticipantFontColor #333
ParticipantBorderColor #555
ParticipantBackgroundColor #eee
LifeLineBorderColor #ccc
LifeLineBackgroundColor #000
ArrowFontSize 24
ArrowColor #f80
DividerFontSize 24
}
actor User
participant "Mobile App" as Mobile
participant "Airline Website" as Website
participant "Airline Server Agent" as Issuer
User -> Website: Open Website
Website -> Website: User clicks "Log In"
Website -> Issuer: Requests invitation
Issuer -> Website: Returns invitation
Website -> Website: Displays QR code
Mobile -> Website: Scan QR code
Mobile -> Issuer: Connect
Issuer -> Mobile: Request Airline ID credential
Mobile -> User: Request sharing of Airline\nID credential
User -> Mobile: Authorize sharing of Airline\nID credential
Mobile -> Issuer: Present Airline\nID credential
Issuer -> Issuer: Interpret Airline\nID credential
note over Issuer: Airline ID\npresentation stored\n on Airline Server\nAgent (optional)
Issuer -> Website: Send Airline ID details
Website -> User: User redirected to account page
```
## Boarding Pass Workflow
1. User selects a flight from their list of flights on the account page
2. Airline Website displays any additional flight details and presents two options, "Seamless" or "Not Seamless"
3. User selects an option
4. Regardless of which choice is selected, Airline Website requests a verification of the DTC Anoncred from the Airline Server Agent. The verification requested varies based on which choice was made.
5. Airline Website uses API to poll the Airline Server Agent for the verification result
6. Airline Server Agent requests DTC Anoncred credential from the Mobile App
7. Mobile App presents request to User
8. User consents to share a DTC Anoncred presentation
9. Mobile App sends a DTC Anoncred presentation to the Airline Server Agent
10. Airline Server Agent parses details of DTC Anoncred presentation
11. Airline Server Agent sends DTC Anoncred data to the Airline Website (in response to one of the polling requests in #5)
12. Airline Website displays DTC and flight details and a form to collect any fields that the user needs to provide (need to confirm if there are any details here).
13. After all data is collected, Airline Website submits data to Airline Server Agent and requests issuance of a Boarding Pass credential to the User
14. Airline Server Agent offers a Boarding Pass credential to the Mobile App
15. Mobile App presents the offer to the User
16. User clicks accept in the Mobile App and the Boarding Pass credential is added to their wallet
```plantuml
skinparam backgroundColor #fff
skinparam handwritten false
skinparam BoxPadding 10
skinparam ParticipantPadding 10
skinparam NoteFontSize 24
skinparam NoteBorderColor #f80
skinparam NoteBackgroundColor #fea
skinparam sequenceArrowThickness 1
skinparam sequence {
BoxFontSize 36
BoxBorderColor #555
BoxBackgroundColor #fbfbfb
ActorFontColor #333
ActorFontSize 24
ActorFontName Arial
ActorBorderColor #555
ActorBackgroundColor #ccc
ParticipantFontName Arial
ParticipantFontSize 24
ParticipantFontColor #333
ParticipantBorderColor #555
ParticipantBackgroundColor #eee
LifeLineBorderColor #ccc
LifeLineBackgroundColor #000
ArrowFontSize 24
ArrowColor #f80
DividerFontSize 24
}
actor User
participant "Mobile App" as Mobile
participant "Airline Website" as Website
participant "Airline Server Agent" as Issuer
User -> Website: Selects flight from list
Website -> User: Displays "Seamless" choice
User -> Website: User makes a selection
Website -> Issuer: Submits verification request\nfor DTC Anoncred
Website -> Issuer: Poll for\nverification result
Issuer -> Mobile: Request DTC\nAnoncred credential
Mobile -> User: Request sharing of DTC\nAnoncred credential
User -> Mobile: Authorize sharing of DTC\nAnoncred credential
Mobile -> Issuer: Present DTC\nAnoncred credential
Issuer -> Issuer: Interpret DTC\nAnoncred credential
note over Issuer: DTC Anoncred\npresentation stored\n on Airline Server\nAgent (optional)
Issuer -> Website: Send passport details
Website -> Website: Collect and store\nadditional details
note over Website: User passport and\ntravel details stored\non Airline Server Agent
Website -> Issuer: Request to issue\nBoarding Pass\ncredential to User
Issuer -> Mobile: Offer Boarding\nPass credential
Mobile -> User: Display Boarding Pass\ncredential offer
User -> Mobile: User accepts credential
note over Mobile: Boarding Pass credential\nstored on Mobile App
```
## Boarding Pass Verification Workflow
1. Verifier displays an invitation URL as a QR code
2. User scans QR code with Mobile App
3. Mobile App connects to Verifier Agent
4. Verifier Agent requests Boarding Pass credential
5. Mobile App displays the presentation request to the User
6. User consents to share the Boarding Pass credential
7. Mobile App sends the Boarding Pass credential to the Verifier Agent
8. Verifier Agent interprets the presentation
9. Both Mobile App and Verifier Agent display the verification result. The Mobile Verifier Agent has two display options, Lounge Access and Plane Boarding
```plantuml
skinparam backgroundColor #fff
skinparam handwritten false
skinparam BoxPadding 10
skinparam ParticipantPadding 10
skinparam NoteFontSize 24
skinparam NoteBorderColor #f80
skinparam NoteBackgroundColor #fea
skinparam sequenceArrowThickness 1
skinparam sequence {
BoxFontSize 36
BoxBorderColor #555
BoxBackgroundColor #fbfbfb
ActorFontColor #333
ActorFontSize 24
ActorFontName Arial
ActorBorderColor #555
ActorBackgroundColor #ccc
ParticipantFontName Arial
ParticipantFontSize 24
ParticipantFontColor #333
ParticipantBorderColor #555
ParticipantBackgroundColor #eee
LifeLineBorderColor #ccc
LifeLineBackgroundColor #000
ArrowFontSize 24
ArrowColor #f80
DividerFontSize 24
}
actor User
participant "Mobile App" as Mobile
participant "Verifier Agent" as Verifier
Verifier -> Verifier: Display QR code
Mobile -> Verifier: Scan QR code
Mobile -> Verifier: Connect
Verifier -> Mobile: Request Boarding\nPass credential
Mobile -> User: Request sharing of Boarding\nPass credential
User -> Mobile: Authorize sharing of Boarding\nPass credential
Mobile -> Verifier: Present Boarding\nPass credential
Verifier -> Verifier: Interpret Boarding\nPass credential
Verifier -> Mobile: Both agents display verification result
note over Verifier: Boarding Pass\npresentation stored\n on Verifier\nAgent (optional)
```