From f23da7ea75c5d20833033f544a3410e666022010 Mon Sep 17 00:00:00 2001 From: Matthias Date: Thu, 24 Oct 2024 06:05:19 +0200 Subject: [PATCH] feat: Add initial data-download api schema --- freqtrade/rpc/api_server/api_schemas.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/freqtrade/rpc/api_server/api_schemas.py b/freqtrade/rpc/api_server/api_schemas.py index db8654539..e57f0aa71 100644 --- a/freqtrade/rpc/api_server/api_schemas.py +++ b/freqtrade/rpc/api_server/api_schemas.py @@ -1,9 +1,15 @@ from datetime import date, datetime from typing import Any -from pydantic import AwareDatetime, BaseModel, RootModel, SerializeAsAny +from pydantic import ( + AwareDatetime, + BaseModel, + RootModel, + SerializeAsAny, + model_validator, +) -from freqtrade.constants import IntOrInf +from freqtrade.constants import DL_DATA_TIMEFRAMES, IntOrInf from freqtrade.enums import MarginMode, OrderTypeValues, SignalDirection, TradingMode from freqtrade.ft_types import ValidExchangesType @@ -482,6 +488,21 @@ class PairListsPayload(ExchangeModePayloadMixin, BaseModel): stake_currency: str +class DownloadDataPayload(ExchangeModePayloadMixin, BaseModel): + pairs: list[str] + stake_currency: str + timeframes: Optional[list[str]] = DL_DATA_TIMEFRAMES + days: Optional[int] = None + timerange: Optional[str] = None + + @model_validator(mode="before") + def check_mutually_exclusive(cls, values): + timeframes, days = values.get("timerange"), values.get("days") + if timeframes and days: + raise ValueError("Only one of timeframes or days can be provided, not both.") + return values + + class FreqAIModelListResponse(BaseModel): freqaimodels: list[str]