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("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 /// /// 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