Files
2026-06-08 18:14:59 +08:00

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