Chepuhagram/srv/app/api/schemas.py

83 lines
2.0 KiB
Python

from pydantic import BaseModel
from typing import Optional
class SetPublicKey(BaseModel):
public_key: str
class RefreshRequest(BaseModel):
refresh_token: str
class LoginRequest(BaseModel):
username: str
password: str
totp_code: Optional[str] = None
class SetupAccount(BaseModel):
first_name: str
last_name: str
public_key: str
encrypted_private_key: str
class UserPublic(BaseModel):
id: int
username: str
first_name: Optional[str] = None
last_name: Optional[str] = None
public_key: Optional[str] = None
class Config:
from_attributes = True
class UpdateMe(BaseModel):
username: Optional[str] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
about: Optional[str] = None
class UpdateEncryptedPrivateKey(BaseModel):
encrypted_private_key: str
class ChangePassword(BaseModel):
current_password: str
new_password: str
class UpdatePrivacySettings(BaseModel):
show_email: Optional[bool] = None
show_phone: Optional[bool] = None
show_avatar: Optional[bool] = None
show_about: Optional[bool] = None
show_username: Optional[bool] = None
show_last_online: Optional[bool] = None
class TOTPVerifyRequest(BaseModel):
code: str
class UserProfile(BaseModel):
id: int
username: Optional[str] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
about: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
avatar_url: Optional[str] = None
public_key: Optional[str] = None
online: bool = False
last_online: Optional[str] = None
show_avatar: bool = False
totp_enabled: bool = False
class Config:
from_attributes = True
class UserContactResponse(BaseModel):
id: str
name: str
username: str
public_key: Optional[str] = None
class Config:
from_attributes = True