28 lines
623 B
Python
28 lines
623 B
Python
"""Pydantic schemas for S/R level endpoints."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Literal
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class SRLevelResult(BaseModel):
|
|
"""A single support/resistance level."""
|
|
|
|
id: int
|
|
price_level: float
|
|
type: Literal["support", "resistance"]
|
|
strength: int = Field(ge=0, le=100)
|
|
detection_method: Literal["volume_profile", "pivot_point", "merged"]
|
|
created_at: datetime
|
|
|
|
|
|
class SRLevelResponse(BaseModel):
|
|
"""Envelope-ready S/R levels response."""
|
|
|
|
symbol: str
|
|
levels: list[SRLevelResult]
|
|
count: int
|