from typing import Any, Optional from pydantic import BaseModel class ManifestParameter(BaseModel): name: str location: str type: str required: bool = False description: Optional[str] = None default: Optional[Any] = None resolved_value: Optional[Any] = None class ManifestFile(BaseModel): field_name: str filename: str class ProcessorManifest(BaseModel): api_name: Optional[str] = None api_description: Optional[str] = None url: str method: str = "POST" body_type: str = "json" # "json" | "form" | "multipart" headers: Optional[dict[str, str]] = None parameters: Optional[list[ManifestParameter]] = None body: Optional[dict[str, Any]] = None query_params: Optional[dict[str, str]] = None path_params: Optional[dict[str, str]] = None files: Optional[list[ManifestFile]] = None