Source code for app.schemas.flow

"""
Flow schemas for API validation
"""

from pydantic import BaseModel, Field
from typing import Dict, Any, List, Optional
from datetime import datetime


class FlowBase(BaseModel):
    """Base flow schema"""
    name: str = Field(..., min_length=1, max_length=255)
    description: Optional[str] = None
    config: Dict[str, Any] = Field(default_factory=dict)
    target_nodes: List[str] = Field(default_factory=list)
    flow_metadata: Dict[str, Any] = Field(default_factory=dict)


[docs] class FlowCreate(FlowBase): """Schema for creating a flow""" pass
[docs] class FlowUpdate(BaseModel): """Schema for updating a flow""" name: Optional[str] = Field(None, min_length=1, max_length=255) description: Optional[str] = None config: Optional[Dict[str, Any]] = None target_nodes: Optional[List[str]] = None flow_metadata: Optional[Dict[str, Any]] = None
[docs] class FlowResponse(FlowBase): """Schema for flow responses""" id: str deployed: bool deployed_at: Optional[datetime] version: int created_at: datetime updated_at: datetime model_config = { "from_attributes": True }
[docs] class FlowDeploy(BaseModel): """Schema for flow deployment""" target_nodes: Optional[List[str]] = Field(None, description="Specific nodes to deploy to") force: bool = Field(False, description="Force deployment even if already deployed")