# Privado - Interaction with service Toni's flow: 1. The exchange does a proof request for an specific user: - challenge (to ensure the ZKP includes this value) - user reference - callback url (to get notified when the proof is ready) 2. The user will be notified by system that the exchange want do a proof with his/her data. The user can give consent or not 3. [Approved] Privado Network will ask Identity system to generate a proof that includes the challenge 4. [Approved] The Proof will be generated - Toni, which proof will be generated? kyc or kycBySignatures? - Ideally the full ZKP should be generated, but it the proof is not ready, then whe should return the signed one. We may add a field to the response to say with kind of signature we are returning. - We need save this new proof? - I really don't know, this is a decision we have to take, maybe talking with Silvia. - When we can use the new proof? - What do you mean by new proof? 5. [Approved] Privado Network will call `callback url` to send the proof to exchange 6. [Approved] The exchange will be able to validate the proof by calling a Privado Network endpoint (that will wrap the Identity System validation endpoin t) 7. [Denied] Will call thje `callback url` to notify that the user does not give consent to share his/her proof. Everything can be saved on database ## Questions ### Question to Silvia and Rafal It’s not a problem there so many proofs to an user? It’s not necessary know the proof generated on onboarding? We need save the new proof generated? ### Challenge - Nowadays, the system is using the hardcoded challenge `1234567`. The way to generate proof is the same if the challenge change? Yes - We need provide some endpoint to save this challenge to endpoint, think about the VASP onboarding process? ### Missing - What has to be done between point 3 and 5? generate new proof? Yes ## Private endpoints ### GET /v1/interactions/?token=token&vasp_id=vasp_id return a list of done interactions of an user ### POST /v1/users/consent/?token=token ```json= { "consent": "yes|no" } ``` Give the consent to share a proof of owner token (user). This endpoint will going to dispatch or not the creation of new proof [3 and 4 points]. To do that, the user should be logged in the wallet (?). - [ ] Do we have a page to user consent the use of his/her data? - [ ] Not yet - [ ] Maybe we need create a token with a big OTT - [ ] The expiration of this token must be decided. ## Public endpoints ### POST /v1/proof/request/ ProofRequest GivenConsent NotGivenConsent ProofShared body: ```json= { "userReference": "", "challenge": 12345, "callback": "url" } ``` This endpoint will going to dispatch the email to the user asking for give consent - [ ] Define email template ### POST /v1/proof/verify/ body: ```json= { "proof": "" } ``` ###### tags: `privado`