Add miniapp subscription settings management endpoints

This commit is contained in:
Egor
2025-10-10 06:30:38 +03:00
parent 7045412fe6
commit b5c2ad4c07
2 changed files with 1206 additions and 4 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -15,6 +15,114 @@ class MiniAppSubscriptionRequest(BaseModel):
init_data: str = Field(..., alias="initData")
class MiniAppSubscriptionSettingsRequest(BaseModel):
init_data: str = Field(..., alias="initData")
subscription_id: Optional[int] = Field(default=None, alias="subscriptionId")
class MiniAppSubscriptionServersUpdateRequest(BaseModel):
init_data: str = Field(..., alias="initData")
squads: Optional[List[str]] = None
servers: Optional[List[str]] = None
squad_uuids: Optional[List[str]] = Field(default=None, alias="squadUuids")
server_uuids: Optional[List[str]] = Field(default=None, alias="serverUuids")
subscription_id: Optional[int] = Field(default=None, alias="subscriptionId")
class MiniAppSubscriptionTrafficUpdateRequest(BaseModel):
init_data: str = Field(..., alias="initData")
traffic: Optional[int] = None
traffic_gb: Optional[int] = Field(default=None, alias="trafficGb")
subscription_id: Optional[int] = Field(default=None, alias="subscriptionId")
class MiniAppSubscriptionDevicesUpdateRequest(BaseModel):
init_data: str = Field(..., alias="initData")
devices: Optional[int] = None
device_limit: Optional[int] = Field(default=None, alias="deviceLimit")
subscription_id: Optional[int] = Field(default=None, alias="subscriptionId")
class MiniAppSubscriptionSettingsServer(BaseModel):
uuid: str
name: Optional[str] = None
price_kopeks: Optional[int] = None
price_label: Optional[str] = None
discount_percent: Optional[int] = None
is_connected: bool = False
is_available: bool = True
disabled_reason: Optional[str] = None
class MiniAppSubscriptionSettingsServers(BaseModel):
available: List[MiniAppSubscriptionSettingsServer] = Field(default_factory=list)
min: int = 0
max: int = 0
can_update: bool = True
hint: Optional[str] = None
class MiniAppSubscriptionSettingsTrafficOption(BaseModel):
value: Optional[int] = None
label: Optional[str] = None
price_kopeks: Optional[int] = None
price_label: Optional[str] = None
discount_percent: Optional[int] = None
is_current: bool = False
is_available: bool = True
description: Optional[str] = None
class MiniAppSubscriptionSettingsTraffic(BaseModel):
options: List[MiniAppSubscriptionSettingsTrafficOption] = Field(default_factory=list)
can_update: bool = True
current_value: Optional[int] = None
current_label: Optional[str] = None
class MiniAppSubscriptionSettingsDeviceOption(BaseModel):
value: int
label: Optional[str] = None
price_kopeks: Optional[int] = None
price_label: Optional[str] = None
class MiniAppSubscriptionSettingsDevices(BaseModel):
options: List[MiniAppSubscriptionSettingsDeviceOption] = Field(default_factory=list)
can_update: bool = True
min: int = 0
max: int = 0
step: int = 1
current: int = 0
class MiniAppSubscriptionSettingsCurrent(BaseModel):
servers: List[MiniAppConnectedServer] = Field(default_factory=list)
traffic_limit_gb: Optional[int] = None
traffic_limit_label: Optional[str] = None
device_limit: Optional[int] = None
class MiniAppSubscriptionSettings(BaseModel):
subscription_id: int
currency: str = "RUB"
current: MiniAppSubscriptionSettingsCurrent
servers: MiniAppSubscriptionSettingsServers
traffic: MiniAppSubscriptionSettingsTraffic
devices: MiniAppSubscriptionSettingsDevices
class MiniAppSubscriptionSettingsResponse(BaseModel):
success: bool = True
settings: MiniAppSubscriptionSettings
class MiniAppSubscriptionSettingsUpdateResponse(BaseModel):
success: bool = True
charged_amount_kopeks: int = 0
balance_kopeks: Optional[int] = None
class MiniAppSubscriptionUser(BaseModel):
telegram_id: int
username: Optional[str] = None