45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
API Token Schema
|
|
"""
|
|
from datetime import datetime
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.base_schema import CSTDatetime
|
|
|
|
|
|
class ApiTokenCreate(BaseModel):
|
|
"""创建API Token请求"""
|
|
name: str = Field(..., min_length=1, max_length=100, description="令牌名称")
|
|
expires_at: Optional[datetime] = Field(None, description="过期时间(不传表示永不过期)")
|
|
description: Optional[str] = Field(None, max_length=500, description="令牌描述")
|
|
|
|
|
|
class ApiTokenResponse(BaseModel):
|
|
"""API Token响应(列表展示用,不包含完整token)"""
|
|
id: str
|
|
name: str
|
|
token_prefix: str = Field(description="令牌前缀,用于识别")
|
|
expires_at: Optional[CSTDatetime] = None
|
|
last_used_at: Optional[CSTDatetime] = None
|
|
description: Optional[str] = None
|
|
is_active: bool
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|
|
|
|
class Config:
|
|
from_attributes = True
|
|
|
|
|
|
class ApiTokenCreateResponse(BaseModel):
|
|
"""创建API Token的响应(仅创建时返回一次完整token)"""
|
|
id: str
|
|
name: str
|
|
token: str = Field(description="完整的API Token(仅此一次展示,请妥善保存)")
|
|
token_prefix: str
|
|
expires_at: Optional[CSTDatetime] = None
|
|
description: Optional[str] = None
|
|
sys_create_datetime: Optional[CSTDatetime] = None
|