from pydantic import BaseModel from typing import * class DocRequest(BaseModel): doc_id: str class DocResponse(BaseModel): doc_id: str url: str version: Optional[str] = None scope: Optional[str] = None search_time: float class BatchDocRequest(BaseModel): doc_ids: List[str] class BatchDocResponse(BaseModel): results: Dict[str, str] missing: List[str] search_time: float class BM25KeywordRequest(BaseModel): keywords: Optional[str] = "" source: Optional[Literal["3GPP", "ETSI", "all"]] = "all" threshold: Optional[int] = 60 spec_type: Optional[Literal["TS", "TR"]] = None class KeywordRequest(BaseModel): keywords: Optional[str] = "" search_mode: Literal["quick", "deep"] case_sensitive: Optional[bool] = False source: Optional[Literal["3GPP", "ETSI", "all"]] = "all" spec_type: Optional[Literal["TS", "TR"]] = None mode: Optional[Literal["and", "or"]] = "and" class KeywordResponse(BaseModel): results: List[Dict[str, Any]] search_time: float