kych

OAuth 2.0 API for Swiyu to enable Taler integration of Swiyu for KYC (experimental)
Log | Files | Refs

swiyu_taler_sequence_diagram.txt (2538B)


      1 sequenceDiagram
      2     title Swiyu-Taler Interaction
      3     
      4     participant Browser
      5     participant TalerWallet
      6     participant Exchange
      7     participant Oauth2Gateway
      8     participant SwiyuVerifier
      9     participant SwiyuWallet
     10 
     11     TalerWallet ->> Exchange: Initiate KYC-required operation
     12     Exchange -->> TalerWallet: Send verification link
     13     TalerWallet ->> Browser: Open link
     14     Browser ->> Exchange: Select verification method (Swiyu)
     15 
     16     note over Exchange,Oauth2Gateway: Exchange initiates KYC verification process
     17     Exchange ->> Oauth2Gateway: POST /setup/$CLIENT_ID
     18     Oauth2Gateway -->> Exchange: $NONCE
     19     Exchange ->> Browser: Send /authorize endpoint
     20     
     21     Browser ->> Oauth2Gateway: GET /authorize/$NONCE...
     22     Oauth2Gateway ->> SwiyuVerifier: POST /management/api/verifications
     23     SwiyuVerifier -->> Oauth2Gateway: $VERIFICATION_URL, $REQUEST_ID
     24     Oauth2Gateway -->> Browser: Send $VERIFICATION_URL
     25     
     26     Browser ->> Oauth2Gateway: Poll Verification Status
     27     Browser ->> SwiyuWallet: Open $VERIFICATION_URL
     28     SwiyuWallet ->> SwiyuVerifier: GET /oid4vp/api/request-object/{request_id} (DCQL Query)
     29     SwiyuVerifier -->> SwiyuWallet: verification presentation definition
     30     SwiyuWallet ->> SwiyuVerifier: GET verifier_metadata
     31     SwiyuVerifier -->> SwiyuWallet: return metadata
     32     SwiyuWallet ->> SwiyuWallet: Grant Permission
     33     SwiyuWallet ->> SwiyuVerifier: POST /oid4vp/api/request-object/{request_id}/response-data (VP Token)
     34 
     35     note over Oauth2Gateway,Exchange: Oauth2Gateway receives webhook and retrieves swiyu wallet response
     36     SwiyuVerifier ->> Oauth2Gateway: POST /notification {verification_id, timestamp}
     37     Oauth2Gateway ->> SwiyuVerifier: GET /management/api/verifications/{verification_id}
     38     SwiyuVerifier -->> Oauth2Gateway: {state: SUCCESS/FAILED, wallet_response}
     39     Oauth2Gateway -->> Browser: Notify verification result
     40     Oauth2Gateway ->> Exchange: POST /oauth2gw/kyc/notify/$CLIENT_ID {status}
     41 
     42     note over Exchange,Oauth2Gateway: Exchange retrieves the final proof (Verifiable Credential)
     43     Exchange ->> Oauth2Gateway: POST /token
     44     Oauth2Gateway -->> Exchange: Access token
     45     Exchange ->> Oauth2Gateway: GET /info (with access token)
     46     Oauth2Gateway ->> SwiyuVerifier: GET /management/api/verifications/{verificationId}
     47     SwiyuVerifier -->> Oauth2Gateway: Send proof (Verifiable Credential)
     48     Oauth2Gateway -->> Exchange: Send proof (in response body)
     49 
     50     Exchange -->> TalerWallet: Notify success
     51     TalerWallet ->> Exchange: Retry original operation
     52