using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.Yahoo;
///
/// Root response object for Yahoo Finance quoteSummary API (/v10/finance/quoteSummary/{symbol}).
///
public record YahooQuoteSummaryResponseDto(
[property: JsonPropertyName("quoteSummary")] YahooQuoteSummaryResultDto? QuoteSummary
);
public record YahooQuoteSummaryResultDto(
[property: JsonPropertyName("result")] List? Result,
[property: JsonPropertyName("error")] object? Error
);
///
/// Contains module blocks requested via the modules query parameter.
///
public record YahooQuoteSummaryModulesDto(
[property: JsonPropertyName("quoteType")] YahooQuoteTypeDto? QuoteType, // <--- HIER HINZUGEFÜGT
[property: JsonPropertyName("assetProfile")] YahooAssetProfileDto? AssetProfile,
[property: JsonPropertyName("financialData")] YahooFinancialDataDto? FinancialData,
[property: JsonPropertyName("defaultKeyStatistics")] YahooDefaultKeyStatisticsDto? DefaultKeyStatistics,
[property: JsonPropertyName("summaryDetail")] YahooSummaryDetailDto? SummaryDetail,
[property: JsonPropertyName("incomeStatementHistory")] YahooFinancialStatementHistoryDto? IncomeStatementHistory,
[property: JsonPropertyName("incomeStatementHistoryQuarterly")] YahooFinancialStatementHistoryDto? IncomeStatementHistoryQuarterly,
[property: JsonPropertyName("balanceSheetHistory")] YahooFinancialStatementHistoryDto? BalanceSheetHistory,
[property: JsonPropertyName("balanceSheetHistoryQuarterly")] YahooFinancialStatementHistoryDto? BalanceSheetHistoryQuarterly,
[property: JsonPropertyName("cashflowStatementHistory")] YahooFinancialStatementHistoryDto? CashflowStatementHistory,
[property: JsonPropertyName("cashflowStatementHistoryQuarterly")] YahooFinancialStatementHistoryDto? CashflowStatementHistoryQuarterly,
[property: JsonPropertyName("calendarEvents")] YahooCalendarEventsDto? CalendarEvents
);
#region Module DTOs
public record YahooQuoteTypeDto(
[property: JsonPropertyName("shortName")] string? ShortName,
[property: JsonPropertyName("longName")] string? LongName,
[property: JsonPropertyName("symbol")] string? Symbol
);
///
/// Asset profile details including address, industry, sector, officers, and corporate governance risks.
///
public record YahooAssetProfileDto(
[property: JsonPropertyName("address1")] string? Address1,
[property: JsonPropertyName("address2")] string? Address2,
[property: JsonPropertyName("city")] string? City,
[property: JsonPropertyName("state")] string? State,
[property: JsonPropertyName("zip")] string? Zip,
[property: JsonPropertyName("country")] string? Country,
[property: JsonPropertyName("phone")] string? Phone,
[property: JsonPropertyName("website")] string? Website,
[property: JsonPropertyName("industry")] string? Industry,
[property: JsonPropertyName("industryKey")] string? IndustryKey,
[property: JsonPropertyName("industryDisp")] string? IndustryDisp,
[property: JsonPropertyName("sector")] string? Sector,
[property: JsonPropertyName("sectorKey")] string? SectorKey,
[property: JsonPropertyName("sectorDisp")] string? SectorDisp,
[property: JsonPropertyName("longBusinessSummary")] string? LongBusinessSummary,
[property: JsonPropertyName("fullTimeEmployees")] int? FullTimeEmployees,
[property: JsonPropertyName("companyOfficers")] List? CompanyOfficers,
[property: JsonPropertyName("auditRisk")] int? AuditRisk,
[property: JsonPropertyName("boardRisk")] int? BoardRisk,
[property: JsonPropertyName("compensationRisk")] int? CompensationRisk,
[property: JsonPropertyName("shareHolderRightsRisk")] int? ShareHolderRightsRisk,
[property: JsonPropertyName("overallRisk")] int? OverallRisk,
[property: JsonPropertyName("governanceEpochDate")] long? GovernanceEpochDate,
[property: JsonPropertyName("compensationAsOfEpochDate")] long? CompensationAsOfEpochDate
);
public record YahooCompanyOfficerDto(
[property: JsonPropertyName("name")] string? Name,
[property: JsonPropertyName("age")] int? Age,
[property: JsonPropertyName("title")] string? Title,
[property: JsonPropertyName("yearBorn")] int? YearBorn,
[property: JsonPropertyName("fiscalYear")] int? FiscalYear,
[property: JsonPropertyName("totalPay")] YahooValueDto? TotalPay,
[property: JsonPropertyName("exercisedValue")] YahooValueDto? ExercisedValue,
[property: JsonPropertyName("unexercisedValue")] YahooValueDto? UnexercisedValue
);
///
/// Financial metrics including target prices, debt to equity, margins, and cash flow indicators.
///
public record YahooFinancialDataDto(
[property: JsonPropertyName("currentPrice")] YahooValueDto? CurrentPrice,
[property: JsonPropertyName("targetHighPrice")] YahooValueDto? TargetHighPrice,
[property: JsonPropertyName("targetLowPrice")] YahooValueDto? TargetLowPrice,
[property: JsonPropertyName("targetMeanPrice")] YahooValueDto? TargetMeanPrice,
[property: JsonPropertyName("targetMedianPrice")] YahooValueDto? TargetMedianPrice,
[property: JsonPropertyName("recommendationMean")] YahooValueDto? RecommendationMean,
[property: JsonPropertyName("recommendationKey")] string? RecommendationKey,
[property: JsonPropertyName("numberOfAnalystOpinions")] YahooValueDto? NumberOfAnalystOpinions,
[property: JsonPropertyName("totalCash")] YahooValueDto? TotalCash,
[property: JsonPropertyName("totalCashPerShare")] YahooValueDto? TotalCashPerShare,
[property: JsonPropertyName("ebitda")] YahooValueDto? Ebitda,
[property: JsonPropertyName("totalDebt")] YahooValueDto? TotalDebt,
[property: JsonPropertyName("quickRatio")] YahooValueDto? QuickRatio,
[property: JsonPropertyName("currentRatio")] YahooValueDto? CurrentRatio,
[property: JsonPropertyName("totalRevenue")] YahooValueDto? TotalRevenue,
[property: JsonPropertyName("debtToEquity")] YahooValueDto? DebtToEquity,
[property: JsonPropertyName("revenuePerShare")] YahooValueDto? RevenuePerShare,
[property: JsonPropertyName("returnOnAssets")] YahooValueDto? ReturnOnAssets,
[property: JsonPropertyName("returnOnEquity")] YahooValueDto? ReturnOnEquity,
[property: JsonPropertyName("grossProfits")] YahooValueDto? GrossProfits,
[property: JsonPropertyName("freeCashflow")] YahooValueDto? FreeCashflow,
[property: JsonPropertyName("operatingCashflow")] YahooValueDto? OperatingCashflow,
[property: JsonPropertyName("revenueGrowth")] YahooValueDto? RevenueGrowth,
[property: JsonPropertyName("grossMargins")] YahooValueDto? GrossMargins,
[property: JsonPropertyName("ebitdaMargins")] YahooValueDto? EbitdaMargins,
[property: JsonPropertyName("operatingMargins")] YahooValueDto? OperatingMargins,
[property: JsonPropertyName("profitMargins")] YahooValueDto? ProfitMargins,
[property: JsonPropertyName("financialCurrency")] string? FinancialCurrency
);
///
/// Key statistics including valuation ratios (P/E, Enterprise Value, Short Ratio, Shares Outstanding).
///
public record YahooDefaultKeyStatisticsDto(
[property: JsonPropertyName("priceToBook")] YahooValueDto? PriceToBook,
[property: JsonPropertyName("enterpriseValue")] YahooValueDto? EnterpriseValue,
[property: JsonPropertyName("forwardPE")] YahooValueDto? ForwardPE,
[property: JsonPropertyName("profitMargins")] YahooValueDto? ProfitMargins,
[property: JsonPropertyName("floatShares")] YahooValueDto? FloatShares,
[property: JsonPropertyName("sharesOutstanding")] YahooValueDto? SharesOutstanding,
[property: JsonPropertyName("sharesShort")] YahooValueDto? SharesShort,
[property: JsonPropertyName("sharesShortPriorMonth")] YahooValueDto? SharesShortPriorMonth,
[property: JsonPropertyName("sharesShortPreviousMonthDate")] YahooValueDto? SharesShortPreviousMonthDate,
[property: JsonPropertyName("dateShortInterest")] YahooValueDto? DateShortInterest,
[property: JsonPropertyName("sharesPercentSharesOut")] YahooValueDto? SharesPercentSharesOut,
[property: JsonPropertyName("heldPercentInsiders")] YahooValueDto? HeldPercentInsiders,
[property: JsonPropertyName("heldPercentInstitutions")] YahooValueDto? HeldPercentInstitutions,
[property: JsonPropertyName("shortRatio")] YahooValueDto? ShortRatio,
[property: JsonPropertyName("shortPercentOfFloat")] YahooValueDto? ShortPercentOfFloat,
[property: JsonPropertyName("beta")] YahooValueDto? Beta,
[property: JsonPropertyName("category")] string? Category,
[property: JsonPropertyName("bookValue")] YahooValueDto? BookValue,
[property: JsonPropertyName("priceToSalesTrailing12Months")] YahooValueDto? PriceToSalesTrailing12Months,
[property: JsonPropertyName("lastFiscalYearEnd")] YahooValueDto? LastFiscalYearEnd,
[property: JsonPropertyName("nextFiscalYearEnd")] YahooValueDto? NextFiscalYearEnd,
[property: JsonPropertyName("mostRecentQuarter")] YahooValueDto? MostRecentQuarter,
[property: JsonPropertyName("earningsQuarterlyGrowth")] YahooValueDto? EarningsQuarterlyGrowth,
[property: JsonPropertyName("netIncomeToCommon")] YahooValueDto? NetIncomeToCommon,
[property: JsonPropertyName("trailingEps")] YahooValueDto? TrailingEps,
[property: JsonPropertyName("forwardEps")] YahooValueDto? ForwardEps,
[property: JsonPropertyName("pegRatio")] YahooValueDto? PegRatio,
[property: JsonPropertyName("enterpriseToRevenue")] YahooValueDto? EnterpriseToRevenue,
[property: JsonPropertyName("enterpriseToEbitda")] YahooValueDto? EnterpriseToEbitda,
[property: JsonPropertyName("52WeekChange")] YahooValueDto? FiftyTwoWeekChange,
[property: JsonPropertyName("SandP52WeekChange")] YahooValueDto? SandP52WeekChange
);
///
/// Summary details including dividends, 52-week ranges, and market capitalization.
///
public record YahooSummaryDetailDto(
[property: JsonPropertyName("maxAge")] long? MaxAge,
[property: JsonPropertyName("priceHint")] YahooValueDto? PriceHint,
[property: JsonPropertyName("previousClose")] YahooValueDto? PreviousClose,
[property: JsonPropertyName("open")] YahooValueDto? Open,
[property: JsonPropertyName("dayLow")] YahooValueDto? DayLow,
[property: JsonPropertyName("dayHigh")] YahooValueDto? DayHigh,
[property: JsonPropertyName("regularMarketPreviousClose")] YahooValueDto? RegularMarketPreviousClose,
[property: JsonPropertyName("regularMarketOpen")] YahooValueDto? RegularMarketOpen,
[property: JsonPropertyName("regularMarketDayLow")] YahooValueDto? RegularMarketDayLow,
[property: JsonPropertyName("regularMarketDayHigh")] YahooValueDto? RegularMarketDayHigh,
[property: JsonPropertyName("dividendRate")] YahooValueDto? DividendRate,
[property: JsonPropertyName("dividendYield")] YahooValueDto? DividendYield,
[property: JsonPropertyName("exDividendDate")] YahooValueDto? ExDividendDate,
[property: JsonPropertyName("payoutRatio")] YahooValueDto? PayoutRatio,
[property: JsonPropertyName("fiveYearAvgDividendYield")] YahooValueDto? FiveYearAvgDividendYield,
[property: JsonPropertyName("beta")] YahooValueDto? Beta,
[property: JsonPropertyName("trailingPE")] YahooValueDto? TrailingPE,
[property: JsonPropertyName("forwardPE")] YahooValueDto? ForwardPE,
[property: JsonPropertyName("volume")] YahooValueDto? Volume,
[property: JsonPropertyName("regularMarketVolume")] YahooValueDto? RegularMarketVolume,
[property: JsonPropertyName("averageVolume")] YahooValueDto? AverageVolume,
[property: JsonPropertyName("averageVolume10days")] YahooValueDto? AverageVolume10days,
[property: JsonPropertyName("averageDailyVolume10Day")] YahooValueDto? AverageDailyVolume10Day,
[property: JsonPropertyName("bid")] YahooValueDto? Bid,
[property: JsonPropertyName("ask")] YahooValueDto? Ask,
[property: JsonPropertyName("bidSize")] YahooValueDto? BidSize,
[property: JsonPropertyName("askSize")] YahooValueDto? AskSize,
[property: JsonPropertyName("marketCap")] YahooValueDto? MarketCap,
[property: JsonPropertyName("fiftyTwoWeekLow")] YahooValueDto? FiftyTwoWeekLow,
[property: JsonPropertyName("fiftyTwoWeekHigh")] YahooValueDto? FiftyTwoWeekHigh,
[property: JsonPropertyName("priceToSalesTrailing12Months")] YahooValueDto? PriceToSalesTrailing12Months,
[property: JsonPropertyName("currency")] string? Currency
);
///
/// Historical financial statements container.
///
public record YahooFinancialStatementHistoryDto(
[property: JsonPropertyName("incomeStatementHistory")] List? IncomeStatementHistory,
[property: JsonPropertyName("balanceSheetStatements")] List? BalanceSheetStatements,
[property: JsonPropertyName("cashflowStatements")] List? CashflowStatements
);
public record YahooIncomeStatementDto(
[property: JsonPropertyName("endDate")] YahooValueDto? EndDate,
[property: JsonPropertyName("totalRevenue")] YahooValueDto? TotalRevenue,
[property: JsonPropertyName("costOfRevenue")] YahooValueDto? CostOfRevenue,
[property: JsonPropertyName("grossProfit")] YahooValueDto? GrossProfit,
[property: JsonPropertyName("researchDevelopment")] YahooValueDto? ResearchDevelopment,
[property: JsonPropertyName("sellingGeneralAdministrative")] YahooValueDto? SellingGeneralAdministrative,
[property: JsonPropertyName("totalOperatingExpenses")] YahooValueDto? TotalOperatingExpenses,
[property: JsonPropertyName("operatingIncome")] YahooValueDto? OperatingIncome,
[property: JsonPropertyName("totalOtherIncomeExpenseNet")] YahooValueDto? TotalOtherIncomeExpenseNet,
[property: JsonPropertyName("ebit")] YahooValueDto? Ebit,
[property: JsonPropertyName("interestExpense")] YahooValueDto? InterestExpense,
[property: JsonPropertyName("incomeBeforeTax")] YahooValueDto? IncomeBeforeTax,
[property: JsonPropertyName("incomeTaxExpense")] YahooValueDto? IncomeTaxExpense,
[property: JsonPropertyName("netIncome")] YahooValueDto? NetIncome,
[property: JsonPropertyName("netIncomeApplicableToCommonShares")] YahooValueDto? NetIncomeApplicableToCommonShares
);
public record YahooBalanceSheetStatementDto(
[property: JsonPropertyName("endDate")] YahooValueDto? EndDate,
[property: JsonPropertyName("cash")] YahooValueDto? Cash,
[property: JsonPropertyName("shortTermInvestments")] YahooValueDto? ShortTermInvestments,
[property: JsonPropertyName("netReceivables")] YahooValueDto? NetReceivables,
[property: JsonPropertyName("inventory")] YahooValueDto? Inventory,
[property: JsonPropertyName("otherCurrentAssets")] YahooValueDto? OtherCurrentAssets,
[property: JsonPropertyName("totalCurrentAssets")] YahooValueDto? TotalCurrentAssets,
[property: JsonPropertyName("longTermInvestments")] YahooValueDto? LongTermInvestments,
[property: JsonPropertyName("propertyPlantEquipment")] YahooValueDto? PropertyPlantEquipment,
[property: JsonPropertyName("goodWill")] YahooValueDto? GoodWill,
[property: JsonPropertyName("intangibleAssets")] YahooValueDto? IntangibleAssets,
[property: JsonPropertyName("otherAssets")] YahooValueDto? OtherAssets,
[property: JsonPropertyName("totalAssets")] YahooValueDto? TotalAssets,
[property: JsonPropertyName("accountsPayable")] YahooValueDto? AccountsPayable,
[property: JsonPropertyName("shortLongTermDebt")] YahooValueDto? ShortLongTermDebt,
[property: JsonPropertyName("otherCurrentLiabilities")] YahooValueDto? OtherCurrentLiabilities,
[property: JsonPropertyName("totalCurrentLiabilities")] YahooValueDto? TotalCurrentLiabilities,
[property: JsonPropertyName("longTermDebt")] YahooValueDto? LongTermDebt,
[property: JsonPropertyName("otherLiabilities")] YahooValueDto? OtherLiabilities,
[property: JsonPropertyName("totalLiab")] YahooValueDto? TotalLiab,
[property: JsonPropertyName("commonStock")] YahooValueDto? CommonStock,
[property: JsonPropertyName("retainedEarnings")] YahooValueDto? RetainedEarnings,
[property: JsonPropertyName("treasuryStock")] YahooValueDto? TreasuryStock,
[property: JsonPropertyName("otherStockholderEquity")] YahooValueDto? OtherStockholderEquity,
[property: JsonPropertyName("totalStockholderEquity")] YahooValueDto? TotalStockholderEquity
);
public record YahooCashflowStatementDto(
[property: JsonPropertyName("endDate")] YahooValueDto? EndDate,
[property: JsonPropertyName("netIncome")] YahooValueDto? NetIncome,
[property: JsonPropertyName("depreciation")] YahooValueDto? Depreciation,
[property: JsonPropertyName("changeToNetincome")] YahooValueDto? ChangeToNetincome,
[property: JsonPropertyName("changeToAccountReceivables")] YahooValueDto? ChangeToAccountReceivables,
[property: JsonPropertyName("changeToLiabilities")] YahooValueDto? ChangeToLiabilities,
[property: JsonPropertyName("changeToInventory")] YahooValueDto? ChangeToInventory,
[property: JsonPropertyName("changeToOperatingActivities")] YahooValueDto? ChangeToOperatingActivities,
[property: JsonPropertyName("totalCashFromOperatingActivities")] YahooValueDto? TotalCashFromOperatingActivities,
[property: JsonPropertyName("capitalExpenditures")] YahooValueDto? CapitalExpenditures,
[property: JsonPropertyName("investments")] YahooValueDto? Investments,
[property: JsonPropertyName("otherCashflowsFromInvestingActivities")] YahooValueDto? OtherCashflowsFromInvestingActivities,
[property: JsonPropertyName("totalCashflowsFromInvestingActivities")] YahooValueDto? TotalCashflowsFromInvestingActivities,
[property: JsonPropertyName("dividendsPaid")] YahooValueDto? DividendsPaid,
[property: JsonPropertyName("netBorrowings")] YahooValueDto? NetBorrowings,
[property: JsonPropertyName("otherCashflowsFromFinancingActivities")] YahooValueDto? OtherCashflowsFromFinancingActivities,
[property: JsonPropertyName("totalCashFromFinancingActivities")] YahooValueDto? TotalCashFromFinancingActivities,
[property: JsonPropertyName("changeInCashAndCashEquivalents")] YahooValueDto? ChangeInCashAndCashEquivalents
);
///
/// Corporate calendar dates including upcoming earnings calls and ex-dividend dates.
///
public record YahooCalendarEventsDto(
[property: JsonPropertyName("earnings")] YahooEarningsCalendarDto? Earnings,
[property: JsonPropertyName("exDividendDate")] YahooValueDto? ExDividendDate,
[property: JsonPropertyName("dividendDate")] YahooValueDto? DividendDate
);
public record YahooEarningsCalendarDto(
[property: JsonPropertyName("earningsDate")] List? EarningsDate,
[property: JsonPropertyName("earningsAverage")] YahooValueDto? EarningsAverage,
[property: JsonPropertyName("earningsLow")] YahooValueDto? EarningsLow,
[property: JsonPropertyName("earningsHigh")] YahooValueDto? EarningsHigh,
[property: JsonPropertyName("revenueAverage")] YahooValueDto? RevenueAverage,
[property: JsonPropertyName("revenueLow")] YahooValueDto? RevenueLow,
[property: JsonPropertyName("revenueHigh")] YahooValueDto? RevenueHigh
);
#endregion