59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
|
|
from typing import Optional
|
|||
|
|
from pydantic import BaseModel, Field
|
|||
|
|
|
|||
|
|
# 滴答清单OAuth认证请求
|
|||
|
|
class DidaOAuthRequest(BaseModel):
|
|||
|
|
system_user_id: int = Field(..., description="系统用户ID")
|
|||
|
|
client_id: str = Field(..., description="滴答清单应用Client ID")
|
|||
|
|
client_secret: str = Field(..., description="滴答清单应用Client Secret")
|
|||
|
|
authorization_code: str = Field(..., description="OAuth授权码")
|
|||
|
|
redirect_uri: str = Field(..., description="OAuth回调地址(必须与授权时一致)")
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
json_schema_extra = {
|
|||
|
|
"example": {
|
|||
|
|
"system_user_id": 1000000001,
|
|||
|
|
"client_id": "your_client_id",
|
|||
|
|
"client_secret": "your_client_secret",
|
|||
|
|
"authorization_code": "auth_code_from_oauth_callback",
|
|||
|
|
"redirect_uri": "http://localhost:1420/dida-binding"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 滴答清单凭证刷新请求
|
|||
|
|
class DidaRefreshTokenRequest(BaseModel):
|
|||
|
|
system_user_id: int = Field(..., description="系统用户ID")
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
json_schema_extra = {
|
|||
|
|
"example": {
|
|||
|
|
"system_user_id": 1000000001
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 滴答清单绑定状态响应
|
|||
|
|
class DidaBindingStatusResponse(BaseModel):
|
|||
|
|
is_bound: bool = Field(..., description="是否已绑定")
|
|||
|
|
username: Optional[str] = Field(None, description="绑定的滴答清单账号")
|
|||
|
|
bound_at: Optional[str] = Field(None, description="绑定时间")
|
|||
|
|
token_expires_at: Optional[str] = Field(None, description="令牌过期时间")
|
|||
|
|
|
|||
|
|
# 滴答清单OAuth响应
|
|||
|
|
class DidaOAuthResponse(BaseModel):
|
|||
|
|
status: str = Field(..., description="状态: success, error")
|
|||
|
|
message: str = Field(..., description="提示消息")
|
|||
|
|
data: Optional[dict] = Field(None, description="额外数据")
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
json_schema_extra = {
|
|||
|
|
"example": {
|
|||
|
|
"status": "success",
|
|||
|
|
"message": "滴答清单账号绑定成功!",
|
|||
|
|
"data": {
|
|||
|
|
"username": "user@example.com",
|
|||
|
|
"expires_at": "2025-01-09T12:00:00"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|