# 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)
},