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="提供商总数")