from pydantic import BaseModel from typing import * class DocRequest(BaseModel): doc_id: str class DocResponse(BaseModel): doc_id: str url: str version: str 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] = "" threshold: Optional[int] = 60 release: Optional[str] = None working_group: Optional[str] = None spec_type: Optional[Literal["TS", "TR"]] = None class KeywordRequest(BaseModel): keywords: Optional[str] = "" search_mode: Literal["quick", "deep"] case_sensitive: Optional[bool] = False release: Optional[str] = None working_group: Optional[str] = None spec_type: Optional[Literal["TS", "TR"]] = None mode: Optional[Literal["and", "or"]] = "and" class KeywordResponse(BaseModel): results: List[Dict[str, Any]] search_time: float