49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
|
|
"""Pydantic request models for PolyWeather auth-related endpoints."""
|
||
|
|
|
||
|
|
from typing import Optional
|
||
|
|
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
class TelegramLoginRequest(BaseModel):
|
||
|
|
id: int
|
||
|
|
first_name: Optional[str] = None
|
||
|
|
last_name: Optional[str] = None
|
||
|
|
username: Optional[str] = None
|
||
|
|
photo_url: Optional[str] = None
|
||
|
|
auth_date: int
|
||
|
|
hash: str = Field(..., min_length=10)
|
||
|
|
|
||
|
|
|
||
|
|
class TelegramBindTokenRequest(BaseModel):
|
||
|
|
token: str = Field(..., min_length=8)
|
||
|
|
|
||
|
|
|
||
|
|
class ReferralApplyRequest(BaseModel):
|
||
|
|
code: str = Field(..., min_length=3, max_length=32)
|
||
|
|
|
||
|
|
|
||
|
|
class AnalyticsEventRequest(BaseModel):
|
||
|
|
event_type: str = Field(..., min_length=3, max_length=64)
|
||
|
|
client_id: Optional[str] = Field(default=None, max_length=128)
|
||
|
|
session_id: Optional[str] = Field(default=None, max_length=128)
|
||
|
|
payload: dict = Field(default_factory=dict)
|
||
|
|
|
||
|
|
|
||
|
|
class UserFeedbackRequest(BaseModel):
|
||
|
|
category: str = Field(default="bug", min_length=2, max_length=40)
|
||
|
|
message: str = Field(..., min_length=3, max_length=5000)
|
||
|
|
source: str = Field(default="terminal", max_length=40)
|
||
|
|
contact: Optional[str] = Field(default=None, max_length=180)
|
||
|
|
context: dict = Field(default_factory=dict)
|
||
|
|
|
||
|
|
|
||
|
|
class GrantPointsRequest(BaseModel):
|
||
|
|
email: str = Field(..., min_length=3)
|
||
|
|
points: int = Field(..., gt=0, le=100000)
|
||
|
|
|
||
|
|
|
||
|
|
class FeedbackRewardRequest(BaseModel):
|
||
|
|
points: int = Field(..., gt=0, le=100000)
|
||
|
|
reason: str = Field(default="", max_length=500)
|