"""Pydantic request/response schemas for the /v1 HTTP API (REQ-007/008).""" from __future__ import annotations from datetime import date, datetime from typing import Optional from uuid import UUID from pydantic import BaseModel class BuyIntentRequest(BaseModel): intent_id: str trading_date: date symbol: str qty: Optional[float] = None allocated_capital: Optional[float] = None entry_price: Optional[float] = None strategy_id: Optional[str] = None sell_strategy_id: Optional[str] = None portfolio_id: Optional[str] = None forced_close_at: Optional[datetime] = None class SellIntentRequest(BaseModel): intent_id: str slot_id: UUID reason: str = "discretionary_sell" sell_strategy_id: Optional[str] = None class IntentResponse(BaseModel): intent_id: str status: str slot_id: Optional[UUID] = None reason: Optional[str] = None class SlotSnapshot(BaseModel): slot_id: UUID trading_date: date status: str symbol: Optional[str] = None qty: Optional[float] = None avg_price: Optional[float] = None entry_price: Optional[float] = None allocated_capital: Optional[float] = None strategy_id: Optional[str] = None sell_strategy_id: Optional[str] = None forced_close_at: Optional[datetime] = None class CapacityResponse(BaseModel): idle_count: int holding_count: int pending_count: int total_slots: int scarcity_ratio: float class HealthResponse(BaseModel): status: str = "ok"