guzhi/app/schemas/third_party_api.py
2025-10-01 20:27:20 +08:00

55 lines
2.3 KiB
Python

from typing import Dict, Any, Optional, List
from pydantic import BaseModel, Field
class BaseAPIRequest(BaseModel):
"""基础API请求模型"""
provider: str = Field(..., description="API提供商", example="chinaz")
endpoint: str = Field(..., description="端点名称", example="icp_info")
params: Dict[str, Any] = Field(default_factory=dict, description="请求参数")
timeout: Optional[int] = Field(30, description="超时时间(秒)")
class ChinazAPIRequest(BaseModel):
"""站长之家API请求模型"""
company_name: str = Field(..., description="公司名称", example="百度在线网络技术(北京)有限公司")
chinaz_ver: Optional[str] = Field("1", description="API版本", example="1")
timeout: Optional[int] = Field(30, description="超时时间(秒)")
class XiaohongshuNoteRequest(BaseModel):
"""小红书笔记详情请求"""
note_id: str = Field(..., description="笔记ID", example="68d2c71d000000000e00e9ea")
class APIResponse(BaseModel):
"""API响应模型"""
success: bool = Field(..., description="请求是否成功")
data: Dict[str, Any] = Field(..., description="响应数据")
message: Optional[str] = Field(None, description="响应消息")
provider: Optional[str] = Field(None, description="API提供商")
endpoint: Optional[str] = Field(None, description="端点名称")
class APIProviderInfo(BaseModel):
"""API提供商信息"""
name: str = Field(..., description="提供商名称")
base_url: str = Field(..., description="基础URL")
description: Optional[str] = Field(None, description="描述")
endpoints: List[str] = Field(default_factory=list, description="可用端点")
class APIEndpointInfo(BaseModel):
"""API端点信息"""
name: str = Field(..., description="端点名称")
path: str = Field(..., description="请求路径")
method: str = Field(..., description="HTTP方法")
description: Optional[str] = Field(None, description="描述")
required_params: List[str] = Field(default_factory=list, description="必需参数")
optional_params: List[str] = Field(default_factory=list, description="可选参数")
class APIListResponse(BaseModel):
"""API列表响应"""
providers: List[APIProviderInfo] = Field(..., description="API提供商列表")
total_providers: int = Field(..., description="提供商总数")