feat(core): update DTOs, Trade Republic client, Yahoo scrapers, and dynamic settings

This commit is contained in:
2026-08-14 23:55:02 +02:00
parent 3d8af3940b
commit 4f733bf8c3
511 changed files with 1990 additions and 1080548 deletions
@@ -0,0 +1,109 @@
using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.TradeRepublic;
public record TradeRepublicCompanyDto(
[property: JsonPropertyName("name")] string Name = "",
[property: JsonPropertyName("description")] string? Description = null,
[property: JsonPropertyName("yearFounded")] int? YearFounded = null,
[property: JsonPropertyName("tickerSymbol")] string? TickerSymbol = null,
[property: JsonPropertyName("peRatioSnapshot")] decimal? PeRatioSnapshot = null,
[property: JsonPropertyName("pbRatioSnapshot")] decimal? PbRatioSnapshot = null,
[property: JsonPropertyName("dividendYieldSnapshot")] decimal? DividendYieldSnapshot = null,
[property: JsonPropertyName("earningsCall")] string? EarningsCall = null,
[property: JsonPropertyName("marketCapSnapshot")] decimal? MarketCapSnapshot = null,
[property: JsonPropertyName("marketCapCurrency")] string? MarketCapCurrency = null,
[property: JsonPropertyName("dailyCloseYearSD")] decimal? DailyCloseYearSd = null,
[property: JsonPropertyName("beta")] decimal? Beta = null,
[property: JsonPropertyName("countryCode")] string? CountryCode = null,
[property: JsonPropertyName("ceoName")] string? CeoName = null,
[property: JsonPropertyName("cfoName")] string? CfoName = null,
[property: JsonPropertyName("cooName")] string? CooName = null,
[property: JsonPropertyName("employeeCount")] long? EmployeeCount = null,
[property: JsonPropertyName("eps")] decimal? Eps = null,
[property: JsonPropertyName("epsCurrency")] string? EpsCurrency = null
);
public record TradeRepublicSimilarStockTagDto(
[property: JsonPropertyName("type")] string Type = "",
[property: JsonPropertyName("id")] string Id = "",
[property: JsonPropertyName("name")] string Name = "",
[property: JsonPropertyName("icon")] string? Icon = null
);
public record TradeRepublicSimilarStockDto(
[property: JsonPropertyName("isin")] string Isin = "",
[property: JsonPropertyName("name")] string Name = "",
[property: JsonPropertyName("tags")] List<TradeRepublicSimilarStockTagDto>? Tags = null
);
public record TradeRepublicDividendDto(
[property: JsonPropertyName("id")] string Id = "",
[property: JsonPropertyName("paymentDate")] string? PaymentDate = null,
[property: JsonPropertyName("recordDate")] string? RecordDate = null,
[property: JsonPropertyName("exDate")] string? ExDate = null,
[property: JsonPropertyName("amount")] decimal? Amount = null,
[property: JsonPropertyName("amountCurrency")] string? AmountCurrency = null,
[property: JsonPropertyName("yield")] decimal? Yield = null,
[property: JsonPropertyName("type")] string? Type = null
);
public record TradeRepublicEventDto(
[property: JsonPropertyName("id")] string Id = "",
[property: JsonPropertyName("title")] string? Title = null,
[property: JsonPropertyName("timestamp")] long? Timestamp = null,
[property: JsonPropertyName("description")] string? Description = null,
[property: JsonPropertyName("webcastUrl")] string? WebcastUrl = null,
[property: JsonPropertyName("dividend")] TradeRepublicDividendDto? Dividend = null,
[property: JsonPropertyName("type")] string? Type = null
);
public record TradeRepublicTargetPriceDto(
[property: JsonPropertyName("averageCurrency")] string? AverageCurrency = null,
[property: JsonPropertyName("average")] decimal? Average = null,
[property: JsonPropertyName("highCurrency")] string? HighCurrency = null,
[property: JsonPropertyName("high")] decimal? High = null,
[property: JsonPropertyName("lowCurrency")] string? LowCurrency = null,
[property: JsonPropertyName("low")] decimal? Low = null
);
public record TradeRepublicRecommendationsDto(
[property: JsonPropertyName("buy")] int? Buy = null,
[property: JsonPropertyName("outperform")] int? Outperform = null,
[property: JsonPropertyName("hold")] int? Hold = null,
[property: JsonPropertyName("underperform")] int? Underperform = null,
[property: JsonPropertyName("sell")] int? Sell = null
);
public record TradeRepublicAnalystRatingDto(
[property: JsonPropertyName("targetPrice")] TradeRepublicTargetPriceDto? TargetPrice = null,
[property: JsonPropertyName("recommendations")] TradeRepublicRecommendationsDto? Recommendations = null
);
public record TradeRepublicAggregatedDividendDto(
[property: JsonPropertyName("periodStartDate")] string? PeriodStartDate = null,
[property: JsonPropertyName("projected")] bool? Projected = null,
[property: JsonPropertyName("yieldValue")] decimal? YieldValue = null,
[property: JsonPropertyName("amount")] decimal? Amount = null,
[property: JsonPropertyName("amountCurrency")] string? AmountCurrency = null,
[property: JsonPropertyName("count")] int? Count = null,
[property: JsonPropertyName("projectedCount")] int? ProjectedCount = null,
[property: JsonPropertyName("price")] decimal? Price = null,
[property: JsonPropertyName("priceCurrency")] string? PriceCurrency = null
);
public record TradeRepublicStockDetailsResponse(
[property: JsonPropertyName("isin")] string Isin = "",
[property: JsonPropertyName("company")] TradeRepublicCompanyDto? Company = null,
[property: JsonPropertyName("similarStocks")] List<TradeRepublicSimilarStockDto>? SimilarStocks = null,
[property: JsonPropertyName("expectedDividend")] TradeRepublicDividendDto? ExpectedDividend = null,
[property: JsonPropertyName("dividends")] List<TradeRepublicDividendDto>? Dividends = null,
[property: JsonPropertyName("totalDivendendCount")] int? TotalDivendendCount = null,
[property: JsonPropertyName("events")] List<TradeRepublicEventDto>? Events = null,
[property: JsonPropertyName("pastEvents")] List<TradeRepublicEventDto>? PastEvents = null,
[property: JsonPropertyName("analystRating")] TradeRepublicAnalystRatingDto? AnalystRating = null,
[property: JsonPropertyName("hasKpis")] bool? HasKpis = null,
[property: JsonPropertyName("aggregatedDividends")] List<TradeRepublicAggregatedDividendDto>? AggregatedDividends = null,
[property: JsonPropertyName("dividendFrequency")] string? DividendFrequency = null
);