# Phanindra Baddula - Interview ## Context Users can have up to 4 documents: -ID front -ID back -Proof of address -Selfie If all 4 documents are verified, user is verified else user is unverified. User can resubmit for documents that have been rejected. ## Database Design Design tables to store user documents ## API Endpoint Design Design APIs for clients to query for user statuses Design APIs for clients to submit user documents Use 3rd party to verify documents 3rd party takes up to 24 hours to process documents 3rd party sends callbacks once verification is completed Task: How should we integrate with 3rd party verification system Relational Database User_Identity_doccuments User_ID bigint User_CreatedDate datetime User_ModifiedDate datetime User_Status int User_Doccument_Reference string Mongo_DB DoccumentID User_ID Files{ file_name{ mete_data{}, datetime, destription, status, cloud_reference }, } S3 / BlobStorage filename (GUID) API BackEnd MODELS User User_Id Files [ file_name , usrl, meta_data, ], status ENDPOINTS GET-Users Parameters -status( Select * from User_Identity_doccuments where status=parameter ) Header -JWT BODY PAGE_DATA Resposnse users:[users] Get-User Parameters -user_id( Select top 1 from User_Identity_doccuments where userid=parameter ) Header -JWT Resposnse user:user POST-User Body Files [ file_name{ mete_data{}, datetime, destription, statu, binary_image(base64) }, ] User_ID SQL INSERT INTO VALUES (USER_ID,CREATEDDATE,MODIFIEDATE,1,Object_id) User_Identity_doccuments POST-Update_User_Status PARAMETER - USER_ID - STATUS POST-Resubmit-Files Parameter -UserID BODY Files [ file_name{ mete_data{}, datetime, destription, statu, binary_image(base64) },