import pydantic class UserAgentModel(pydantic.BaseModel): deviceType: str appVersion: str osVersion: str timezone: str release: int = None screen: str pushDeviceType: str arch: str = None locale: str buildNumber: int deviceName: str deviceLocale: str class HelloPayloadModel(pydantic.BaseModel): clientSessionId: int mt_instanceid: str = None userAgent: UserAgentModel deviceId: str class RequestCodePayloadModel(pydantic.BaseModel): phone: str type: str @pydantic.field_validator('phone') def validate_phone(cls, v): """Валидация номера телефона""" if not v.replace("+", "").replace(" ", "").replace("-", "").isdigit(): raise ValueError('phone must be digits') return v @pydantic.field_validator('type') def validate_type(cls, v): """Валидация типа запроса""" if not v in ("START_AUTH", "RESEND"): raise ValueError('type must be valid') return v class VerifyCodePayloadModel(pydantic.BaseModel): verifyCode: str authTokenType: str token: str class LoginPayloadModel(pydantic.BaseModel): interactive: bool token: str class PingPayloadModel(pydantic.BaseModel): interactive: bool class AssetsPayloadModel(pydantic.BaseModel): sync: int type: str class GetCallHistoryPayloadModel(pydantic.BaseModel): forward: bool count: int class MessageModel(pydantic.BaseModel): isLive: bool detectShare: bool elements: list attaches: list = None cid: int text: str = None class SendMessagePayloadModel(pydantic.BaseModel): # TODO: пишем сервер макса в 2 ночи и не понимаем как это валидировать (блять) userId: int = None chatId: int = None message: MessageModel class SyncFoldersPayloadModel(pydantic.BaseModel): folderSync: int class SearchChatsPayloadModel(pydantic.BaseModel): chatIds: list class SearchByPhonePayloadModel(pydantic.BaseModel): phone: str class GetCallTokenPayloadModel(pydantic.BaseModel): userId: int value: str class TypingPayloadModel(pydantic.BaseModel): chatId: int type: str = None class SearchUsersPayloadModel(pydantic.BaseModel): contactIds: list class ComplainReasonsGetPayloadModel(pydantic.BaseModel): complainSync: int