57 lines
1.0 KiB
Python
57 lines
1.0 KiB
Python
from typing import Optional
|
|
from pydantic import BaseModel
|
|
from datetime import datetime
|
|
import enum
|
|
|
|
|
|
class KYCStatus(str, enum.Enum):
|
|
PENDING = "pending"
|
|
APPROVED = "approved"
|
|
REJECTED = "rejected"
|
|
|
|
|
|
class IDDocumentType(str, enum.Enum):
|
|
PASSPORT = "passport"
|
|
ID_CARD = "id_card"
|
|
DRIVERS_LICENSE = "drivers_license"
|
|
|
|
|
|
class KYCBase(BaseModel):
|
|
full_name: str
|
|
id_document_type: IDDocumentType
|
|
id_document_path: str
|
|
selfie_path: str
|
|
additional_document_path: Optional[str] = None
|
|
rejection_reason: Optional[str] = None
|
|
|
|
|
|
class KYCCreate(KYCBase):
|
|
user_id: int
|
|
|
|
|
|
class KYCUpdate(BaseModel):
|
|
status: Optional[KYCStatus] = None
|
|
rejection_reason: Optional[str] = None
|
|
|
|
|
|
class KYCInDBBase(KYCBase):
|
|
id: int
|
|
user_id: int
|
|
status: KYCStatus
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
orm_mode = True
|
|
|
|
|
|
class KYC(KYCInDBBase):
|
|
pass
|
|
|
|
|
|
class KYCApprove(BaseModel):
|
|
pass
|
|
|
|
|
|
class KYCReject(BaseModel):
|
|
rejection_reason: str |