Source code for veupath_chatbot.transport.http.schemas.steps

"""Step request/response DTOs."""

from pydantic import BaseModel, Field

from veupath_chatbot.platform.types import JSONObject, JSONValue
from veupath_chatbot.transport.http.schemas.plan import ColocationParams


[docs] class StepFilterResponse(BaseModel): """Filter attached to a step.""" name: str value: JSONValue disabled: bool = False
[docs] class StepFiltersResponse(BaseModel): """Container for step filters.""" filters: list[StepFilterResponse]
[docs] class StepAnalysisResponse(BaseModel): """Analysis configuration attached to a step.""" analysis_type: str = Field(alias="analysisType") parameters: JSONObject = Field(default_factory=dict) custom_name: str | None = Field(default=None, alias="customName") model_config = {"populate_by_name": True}
[docs] class StepReportResponse(BaseModel): """Report configuration attached to a step.""" report_name: str = Field(default="standard", alias="reportName") config: JSONObject = Field(default_factory=dict) model_config = {"populate_by_name": True}
[docs] class StepAnalysisRunResponse(BaseModel): """Result of running a step analysis.""" analysis: StepAnalysisResponse wdk: JSONObject | None = None
[docs] class StepReportRunResponse(BaseModel): """Result of running a step report.""" report: StepReportResponse wdk: JSONObject | None = None
[docs] class StepResponse(BaseModel): """Strategy step.""" id: str kind: str | None = None display_name: str = Field(alias="displayName") search_name: str | None = Field(default=None, alias="searchName") record_type: str | None = Field(default=None, alias="recordType") parameters: JSONObject | None = None operator: str | None = None colocation_params: ColocationParams | None = Field( default=None, alias="colocationParams" ) primary_input_step_id: str | None = Field(default=None, alias="primaryInputStepId") secondary_input_step_id: str | None = Field( default=None, alias="secondaryInputStepId" ) result_count: int | None = Field(default=None, alias="resultCount") wdk_step_id: int | None = Field(default=None, alias="wdkStepId") filters: list[StepFilterResponse] | None = None analyses: list[StepAnalysisResponse] | None = None reports: list[StepReportResponse] | None = None validation_error: str | None = Field(default=None, alias="validationError") model_config = {"populate_by_name": True}
[docs] class StepFilterRequest(BaseModel): """Request to set or update a step filter.""" value: JSONValue disabled: bool = False
[docs] class StepAnalysisRequest(BaseModel): """Request to run a step analysis.""" analysis_type: str = Field(alias="analysisType") parameters: JSONObject = Field(default_factory=dict) custom_name: str | None = Field(default=None, alias="customName") model_config = {"populate_by_name": True}
[docs] class StepReportRequest(BaseModel): """Request to run a step report.""" report_name: str = Field(default="standard", alias="reportName") config: JSONObject = Field(default_factory=dict) model_config = {"populate_by_name": True}
[docs] class PrimaryKeyPart(BaseModel): """A single part of a composite WDK primary key.""" name: str value: str
[docs] class RecordDetailRequest(BaseModel): """Request to fetch a single record by primary key.""" primary_key: list[PrimaryKeyPart] = Field(alias="primaryKey", min_length=1) model_config = {"populate_by_name": True}