# Use Case 4.1 Obtain one or more cards from a (Q)EAA Issuer
## Overview
| Aspect | Description |
|------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Summary** | The user adds one or more cards to their NL Wallet and/or updates one or more cards, by starting issuance flow at the issuer.
Depending on the flow the issuer uses, the user first shares data with the issuer using PIN (disclosure based issuance),
proceeds directly to the offered cards (pre-authorized code flow), or authenticates and/or gives consent at the issuer in the browser (authorization code flow, HAIP).
The user then confirms issuance of the offered cards with PIN. |
| **Goal** | Obtaining and/or updating cards from a (Q)EAA Issuer. |
| **Preconditions** |
- The App holds the requested data (disclosure based issuance only).
|
| **Postconditions** | - Card(s) is/are issued to and stored in the App.
- The disclosure event is added in the history.
- The issuance event or card renewed is added in the history
|
| **Triggered by** | - User invokes a universal link that contains the URL to a (Q)EAA Issuer.
- User scan a QR [UC9.9 Scan QR](UC2.1_SetupRemotePinAndBiometricsUnlock.md)
- User opens an OpenID4VCI credential offer from the issuer (via QR or universal link).
|
| **Additional Documentation** | - [PIN Validation](../../architecture/use-cases/pin-validation.md)
- [Issuance](../../architecture/use-cases/issuance-with-openid4vci.md)
- [Disclosure Based Issuance](../../architecture/use-cases/disclosure-based-issuance.md)
|
| **Possible errors** | - [No Internet](../errors.md#no-internet)
- [Server Unreachable](../errors.md#server-unreachable)
- [Session Expired](../errors.md#session-expired)
- [Known Issuer Error](../errors.md#known-issuer-error)
- [Unknown Issuer Error](../errors.md#unknown-issuer-error)
|
| **Logical test cases** | - [LTC2 Issuance fails](../logical-test-cases.md#ltc2)
- [LTC4 Reject issued attributes](../logical-test-cases.md#ltc4)
- [LTC5 Disclosure based Issuance](../logical-test-cases.md#ltc5)
- [LTC7 Cross-device generic issuance](../logical-test-cases.md#ltc7)
- [LTC8 Reject disclosure of attributes](../logical-test-cases.md#ltc8)
- [LTC9 No cards to be issued](../logical-test-cases.md#ltc9)
- [LTC11 Renew card](../logical-test-cases.md#ltc11)
- [LTC82 Pre-authorized code flow issuance](../logical-test-cases.md#ltc82)
- [LTC83 Authorization code flow issuance](../logical-test-cases.md#ltc83)
- [LTC84 Authorization code flow issuance with consent](../logical-test-cases.md#ltc84)
|
---
## Flow
| # | Description | Next |
|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------|
| **1** | **PRIMARY SCENARIO** | |
| **1.1** | **System retrieves data request or credential offer from issuer and displays loading indicator**- Message: Data is being retrieved
- Actions: Stop
- Duration: 0.0 - 1.0 seconds
| |
| 1.1a | User selects Stop | 9 |
| 1.1b | Case: Wallet does not contain requested attribute | 12 |
| 1.1c | Error: No internet | Error flow: [No Internet](../errors.md#no-internet) |
| 1.1d | Error: Server unreachable | Error flow: [Server Unreachable](../errors.md#server-unreachable) |
| 1.1e | Error: Unknown issuer error | Error flow: [Unknown Issuer Error](../errors.md#unknown-issuer-error) |
| 1.1f | Error: Known issuer error | Error flow: [Known Issuer Error](../errors.md#known-issuer-error) |
| 1.1g | Case: Credential offer contains a pre-authorized code (issuer has already determined the cards) | 2 |
| 1.1h | Case: Credential offer requires authentication and/or consent in the browser (authorization code flow, HAIP) | 3 |
| 1.1i | Case: Universal link contains a disclosure based issuance request (issuer first requests data from the wallet) | 1.2 |
| **1.2** | **System displays screen 'Share Details to get cards'**- Message: Do you want to share details with [organization] to get your cards?
- Actions: Share, View Data, Stop, Help
| |
| 1.2a | User selects Share | 1.3 |
| 1.2b | User selects View Data | 4 |
| 1.2c | User selects Stop | 9 |
| 1.2d | User selects Help | Show placeholder 'under construction' |
| **1.3** | **System executes partial flow [PF2.4 Confirm a protected action](../partial-flows/PF2.4_ConfirmProtectedAction.md)** | |
| 1.3a | Result: Confirm | 1.4 |
| 1.3b | Result: Cancel | 9 |
| 1.3c | Result: Back | Back |
| **1.4** | **System retrieves cards for issuance, while displaying loading indicator**- Data is being retrieved
- Actions: Stop
- Duration: 0.1 - 1.5 seconds
| |
| 1.4a | Case: Cards can be retrieved | 1.5 |
| 1.4b | Case: Issuer has no cards to issue to this user | 11 |
| 1.4c | Error: No internet | Error flow: [No Internet](../errors.md#no-internet) |
| 1.4d | Error: Server unreachable | Error flow: [Server Unreachable](../errors.md#server-unreachable) |
| 1.4e | Error: Session expired | Error flow: [Session Expired](../errors.md#session-expired) |
| 1.4f | User selects Stop | 9 |
| **1.5** | **System displays screen 'Add cards'**- Message: Do you want to add/update these cards?
- Lists cards to be added
- Lists cards to be renewed
- Actions: Add Card(s), View Data, Stop, Help
| |
| 1.5a | User selects Add Card(s) | 1.6 |
| 1.5b | User selects View Data | 8 |
| 1.5c | User selects Stop | 9 |
| 1.5d | User selects Help | Show placeholder 'under construction' |
| **1.6** | **System executes partial flow [PF2.4 Confirm a protected action](../partial-flows/PF2.4_ConfirmProtectedAction.md)** | |
| 1.6a | Result: Confirm | 1.7 |
| 1.6b | Result: Cancel | 9 |
| 1.6c | Result: Back | Back |
| **1.7** | **System displays screen 'Card added'**- Message: Card added
- Actions: To my overview, Close
| |
| 1.7a | User selects To my overview | Go to: [UC7.1 Show all available cards](UC7.1_ShowAllAvailableCards.md) |
| 1.7b | User selects Close | Go to: [UC7.1 Show all available cards](UC7.1_ShowAllAvailableCards.md) |
| 1.7c | Error: No internet | Error flow: [No Internet](../errors.md#no-internet) |
| 1.7d | Error: Server unreachable | Error flow: [Server Unreachable](../errors.md#server-unreachable) |
| **2** | **PRE-AUTHORIZED CODE FLOW** | |
| **2.1** | **System redeems the pre-authorized code and retrieves the offered cards, while displaying loading indicator**- Message: Data is being retrieved
- Actions: Stop
- Duration: 0.1 - 1.5 seconds
| |
| 2.1a | Case: Cards can be retrieved | 1.5 |
| 2.1b | Case: Issuer has no cards to issue to this user | 11 |
| 2.1c | Error: Pre-authorized code already used or expired
→ System displays screen 'QR code no longer valid' | Error flow: [Session Expired](../errors.md#session-expired) |
| 2.1d | Error: No internet | Error flow: [No Internet](../errors.md#no-internet) |
| 2.1e | Error: Server unreachable | Error flow: [Server Unreachable](../errors.md#server-unreachable) |
| 2.1f | Error: Unknown issuer error | Error flow: [Unknown Issuer Error](../errors.md#unknown-issuer-error) |
| 2.1g | User selects Stop | 9 |
| **3** | **AUTHORIZATION CODE FLOW (HAIP)** | |
| **3.1** | **System opens the browser for authentication and/or consent at the issuer and awaits its response**- Message: Continue in the browser to get your data
- The issuer may authenticate the user, ask the user to consent to the issuance (possibly showing a preview of the offered cards), or both
- Actions: Stop
| |
| 3.1a | Event: Browser returns control to System, authentication successful and/or consent given | 1.4 |
| 3.1b | User selects Stop | 9 |
| **4** | **GET SHARING DETAILS** | |
| **4.1** | **System displays screen 'About sharing'**- Message: About sharing with [organization]
- Actions: Read about [organization], View card details (per card), Read the agreement, Back
| |
| 4.1b | User selects About [organization] | 6 |
| 4.1a | User selects View card details | 4.2 |
| 4.1c | User selects Read the agreement | 7 |
| 4.1d | User selects Back | Back |
| **4.2** | **System displays screen 'Requested data'**- Message: # from [Card Title]
- Requested data
- Actions: Details Incorrect, Help, Back
| |
| 4.2a | User selects Details Incorrect | 5 |
| 4.2b | User selects Help | Show placeholder 'under construction' |
| 4.2c | User selects Back | Back |
| **5** | **WHEN DETAILS ARE INCORRECT** | |
| **5.1** | **System displays screen 'Details incorrect'**- Message: Details Incorrect?
- Actions: Back
| |
| 5.1a | User selects Back | Back |
| **6** | **GET ISSUER ORGANIZATION DETAILS** | |
| **6.1** | **System displays screen 'About organization screen'**- Message: About [Organization]
- Organization data
- Actions: Help, Back
| |
| 6.1a | User selects Help | Show placeholder 'under construction' |
| 6.1b | User selects Back | Back |
| **7** | **GET SHARING AGREEMENT DETAILS** | |
| **7.1** | **System displays screen 'Agreements'**- Message: these agreements apply to the sharing action.
- Agreements summary.
- Actions: Privacy policy, Back
| |
| 7.1a | User selects Privacy policy
→ System opens browser and suspends app | |
| 7.1b | User selects Back | Back |
| **8** | **GET CARD TO ISSUE DETAILS** | |
| **8.1** | **System displays screen 'Card data'**- Actions: Details Incorrect, Back
| |
| 8.1a | User selects Details Incorrect | 5 |
| 8.1b | User selects Back | Back |
| 8.1c | User selects Help | Show placeholder 'under construction' |
| **9** | **STOP** | |
| **9.1** | **System displays screen 'Confirm stop'**- Are you sure you want to stop?
- Actions: Yes Stop, No, Report Problem
| |
| 9.1a | User selects Yes stop | 9.2 |
| 9.1b | User selects No | Back |
| 9.1c | User selects Report a problem | 10 |
| **9.2** | **System displays screen 'Sharing stopped'**- Are you sure you want to stop?
- Actions: Yes Stop, No, Report Problem
| |
| 9.2a | User selects Yes stop | End |
| 9.2b | User selects No | Back |
| **10** | **REPORT PROBLEM** | |
| **10.1** | **System displays screen 'Report problem'**- Message: Report Problem
- Options: problems
- Actions: Back
| |
| 10.1a | User selects Back | Back |
| 10.1b | User selects Problem option | 10.2 |
| **10.2** | **System displays screen 'Under construction'** | |
| 10.2a | User selects Back | Back |
| **11** | **WHEN NO CARDS AVAILABLE** | |
| **11.1** | **System displays screen 'No cards found'**- Message: No cards to add from issuer
- Actions: Close, Help
| |
| 11.1a | User selects Close | Go to: [UC7.1 Show all available cards](UC7.1_ShowAllAvailableCards.md) |
| 11.1b | User selects Help | Show placeholder 'under construction' |
| **12** | **WHEN WALLET DOES NOT CONTAIN REQUESTED ATTRIBUTES** | |
| **12.1** | **System displays screen 'Missing data'**- Message: See at verifier what is missing, add and try again
- Actions: Close, See details, Help
| |
| 12.1a | User selects Close | 10.2 |
| 12.1b | User selects See details | 12.2 |
| 12.1c | User selects Help | Show placeholder 'under construction' |
| **12.2** | **System displays bottom sheet 'Error details' with list of all requested attributes** | |
| 12.2a | User selects Close | 12.1 |