diff --git a/IEXSharp/Model/CoreData/StockFundamentals/Response/AdvancedFundamentalsResponse.cs b/IEXSharp/Model/CoreData/StockFundamentals/Response/AdvancedFundamentalsResponse.cs new file mode 100644 index 00000000..110b8772 --- /dev/null +++ b/IEXSharp/Model/CoreData/StockFundamentals/Response/AdvancedFundamentalsResponse.cs @@ -0,0 +1,190 @@ +using System; + +namespace IEXSharp.Model.CoreData.StockFundamentals.Response +{ + public class AdvancedFundamentalsResponse + { + public decimal? accountsPayable { get; set; } + public decimal? accountsPayableTurnover { get; set; } + public decimal? accountsReceivable { get; set; } + public decimal? accountsReceivableTurnover { get; set; } + public string asOfDate { get; set; } + public decimal? assetsCurrentCash { get; set; } + public decimal? assetsCurrentCashRestricted { get; set; } + public decimal? assetsCurrentDeferredCompensation { get; set; } + public decimal? assetsCurrentDeferredTax { get; set; } + public decimal? assetsCurrentDiscontinuedOperations { get; set; } + public decimal? assetsCurrentInvestments { get; set; } + public decimal? assetsCurrentLeasesOperating { get; set; } + public decimal? assetsCurrentLoansNet { get; set; } + public decimal? assetsCurrentOther { get; set; } + public decimal? assetsCurrentSeparateAccounts { get; set; } + public decimal? assetsCurrentUnadjusted { get; set; } + public decimal? assetsFixed { get; set; } + public decimal? assetsFixedDeferredCompensation { get; set; } + public decimal? assetsFixedDeferredTax { get; set; } + public decimal? assetsFixedDiscontinuedOperations { get; set; } + public decimal? assetsFixedLeasesOperating { get; set; } + public decimal? assetsFixedOperatingDiscontinuedOperations { get; set; } + public decimal? assetsFixedOperatingSubsidiaryUnconsolidated { get; set; } + public decimal? assetsFixedOreo { get; set; } + public decimal? assetsFixedOther { get; set; } + public decimal? assetsFixedUnconsolidated { get; set; } + public decimal? assetsUnadjusted { get; set; } + public decimal? capex { get; set; } + public decimal? capexAcquisition { get; set; } + public decimal? capexMaintenance { get; set; } + public decimal? cashConversionCycle { get; set; } + public decimal? cashFlowFinancing { get; set; } + public decimal? cashFlowInvesting { get; set; } + public decimal? cashFlowOperating { get; set; } + public decimal? cashFlowShareRepurchase { get; set; } + public decimal? cashLongTerm { get; set; } + public decimal? cashOperating { get; set; } + public decimal? cashPaidForIncomeTaxes { get; set; } + public decimal? cashPaidForInterest { get; set; } + public decimal? cashRestricted { get; set; } + public decimal? chargeAfterTax { get; set; } + public decimal? chargeAfterTaxDiscontinuedOperations { get; set; } + public decimal? chargesAfterTaxOther { get; set; } + public string cik { get; set; } + public decimal? creditLossProvision { get; set; } + public DateTime dataGenerationDate { get; set; } + public decimal? daysInAccountsPayable { get; set; } + public decimal? daysInInventory { get; set; } + public decimal? daysInRevenueDeferred { get; set; } + public decimal? daysRevenueOutstanding { get; set; } + public decimal? debtFinancial { get; set; } + public decimal? debtShortTerm { get; set; } + public decimal? depreciationAndAmortizationAccumulated { get; set; } + public decimal? depreciationAndAmortizationCashFlow { get; set; } + public decimal? dividendsPreferred { get; set; } + public decimal? dividendsPreferredRedeemableMandatorily { get; set; } + public decimal? earningsRetained { get; set; } + public decimal? ebitReported { get; set; } + public decimal? ebitdaReported { get; set; } + public decimal? equityShareholder { get; set; } + public decimal? equityShareholderOther { get; set; } + public decimal? equityShareholderOtherDeferredCompensation { get; set; } + public decimal? equityShareholderOtherEquity { get; set; } + public decimal? equityShareholderOtherMezzanine { get; set; } + public decimal? expenses { get; set; } + public decimal? expensesAcquisitionMerger { get; set; } + public decimal? expensesCompensation { get; set; } + public decimal? expensesDepreciationAndAmortization { get; set; } + public decimal? expensesDerivative { get; set; } + public decimal? expensesDiscontinuedOperations { get; set; } + public decimal? expensesDiscontinuedOperationsReits { get; set; } + public decimal? expensesEnergy { get; set; } + public decimal? expensesForeignCurrency { get; set; } + public decimal? expensesInterest { get; set; } + public decimal? expensesInterestFinancials { get; set; } + public decimal? expensesInterestMinority { get; set; } + public decimal? expensesLegalRegulatoryInsurance { get; set; } + public decimal? expensesNonOperatingCompanyDefinedOther { get; set; } + public decimal? expensesNonOperatingOther { get; set; } + public decimal? expensesNonOperatingSubsidiaryUnconsolidated { get; set; } + public decimal? expensesNonRecurringOther { get; set; } + public decimal? expensesOperating { get; set; } + public decimal? expensesOperatingOther { get; set; } + public decimal? expensesOperatingSubsidiaryUnconsolidated { get; set; } + public decimal? expensesOreo { get; set; } + public decimal? expensesOreoReits { get; set; } + public decimal? expensesOtherFinancing { get; set; } + public decimal? expensesRestructuring { get; set; } + public decimal? expensesSga { get; set; } + public decimal? expensesStockCompensation { get; set; } + public decimal? expensesWriteDown { get; set; } + public decimal? ffo { get; set; } + public string figi { get; set; } + public DateTime filingDate { get; set; } + public string filingType { get; set; } + public int fiscalQuarter { get; set; } + public int fiscalYear { get; set; } + public decimal? goodwillAmortizationCashFlow { get; set; } + public decimal? goodwillAmortizationIncomeStatement { get; set; } + public decimal? goodwillAndIntangiblesNetOther { get; set; } + public decimal? goodwillNet { get; set; } + public decimal? incomeFromOperations { get; set; } + public decimal? incomeNet { get; set; } + public decimal? incomeNetPerRevenue { get; set; } + public decimal? incomeNetPerWabso { get; set; } + public decimal? incomeNetPerWabsoSplitAdjusted { get; set; } + public decimal? incomeNetPerWabsoSplitAdjustedYoyDeltaPercent { get; set; } + public decimal? incomeNetPerWadso { get; set; } + public decimal? incomeNetPerWadsoSplitAdjusted { get; set; } + public decimal? incomeNetPerWadsoSplitAdjustedYoyDeltaPercent { get; set; } + public decimal? incomeNetPreTax { get; set; } + public decimal? incomeNetYoyDelta { get; set; } + public decimal? incomeOperating { get; set; } + public decimal? incomeOperatingDiscontinuedOperations { get; set; } + public decimal? incomeOperatingOther { get; set; } + public decimal? incomeOperatingSubsidiaryUnconsolidated { get; set; } + public decimal? incomeOperatingSubsidiaryUnconsolidatedAfterTax { get; set; } + public decimal? incomeTax { get; set; } + public decimal? incomeTaxCurrent { get; set; } + public decimal? incomeTaxDeferred { get; set; } + public decimal? incomeTaxDiscontinuedOperations { get; set; } + public decimal? incomeTaxOther { get; set; } + public decimal? incomeTaxRate { get; set; } + public decimal? interestMinority { get; set; } + public decimal? inventory { get; set; } + public decimal? inventoryTurnover { get; set; } + public decimal? liabilities { get; set; } + public decimal? liabilitiesCurrent { get; set; } + public decimal? liabilitiesNonCurrentAndInterestMinorityTotal { get; set; } + public decimal? liabilitiesNonCurrentDebt { get; set; } + public decimal? liabilitiesNonCurrentDeferredCompensation { get; set; } + public decimal? liabilitiesNonCurrentDeferredTax { get; set; } + public decimal? liabilitiesNonCurrentDiscontinuedOperations { get; set; } + public decimal? liabilitiesNonCurrentLeasesOperating { get; set; } + public decimal? liabilitiesNonCurrentLongTerm { get; set; } + public decimal? liabilitiesNonCurrentOperatingDiscontinuedOperations { get; set; } + public decimal? liabilitiesNonCurrentOther { get; set; } + public decimal? nibclDeferredCompensation { get; set; } + public decimal? nibclDeferredTax { get; set; } + public decimal? nibclDiscontinuedOperations { get; set; } + public decimal? nibclLeasesOperating { get; set; } + public decimal? nibclOther { get; set; } + public decimal? nibclRestructuring { get; set; } + public decimal? nibclRevenueDeferred { get; set; } + public decimal? nibclRevenueDeferredTurnover { get; set; } + public decimal? nibclSeparateAccounts { get; set; } + public decimal? oci { get; set; } + public DateTime periodEndDate { get; set; } + public decimal? ppAndENet { get; set; } + public decimal? pricePerEarnings { get; set; } + public decimal? pricePerEarningsPerRevenueYoyDeltaPercent { get; set; } + public decimal? profitGross { get; set; } + public decimal? profitGrossPerRevenue { get; set; } + public decimal? researchAndDevelopmentExpense { get; set; } + public decimal? reserves { get; set; } + public decimal? reservesInventory { get; set; } + public decimal? reservesLifo { get; set; } + public decimal? reservesLoanLoss { get; set; } + public decimal? revenue { get; set; } + public decimal? revenueCostOther { get; set; } + public decimal? revenueIncomeInterest { get; set; } + public decimal? revenueOther { get; set; } + public decimal? revenueSubsidiaryUnconsolidated { get; set; } + public decimal? salesCost { get; set; } + public decimal? sharesIssued { get; set; } + public decimal? sharesOutstandingPeDateBs { get; set; } + public decimal? sharesTreasury { get; set; } + public decimal? stockCommon { get; set; } + public decimal? stockPreferred { get; set; } + public decimal? stockPreferredEquity { get; set; } + public decimal? stockPreferredMezzanine { get; set; } + public decimal? stockTreasury { get; set; } + public string symbol { get; set; } + public decimal? wabso { get; set; } + public decimal? wabsoSplitAdjusted { get; set; } + public decimal? wadso { get; set; } + public decimal? wadsoSplitAdjusted { get; set; } + public string id { get; set; } + public string key { get; set; } + public string subkey { get; set; } + public long date { get; set; } + public long updated { get; set; } + } +} \ No newline at end of file diff --git a/IEXSharp/Service/Cloud/CoreData/StockFundamentals/IStockFundamentalsService.cs b/IEXSharp/Service/Cloud/CoreData/StockFundamentals/IStockFundamentalsService.cs index d30675f0..a3555291 100644 --- a/IEXSharp/Service/Cloud/CoreData/StockFundamentals/IStockFundamentalsService.cs +++ b/IEXSharp/Service/Cloud/CoreData/StockFundamentals/IStockFundamentalsService.cs @@ -9,6 +9,16 @@ namespace IEXSharp.Service.Cloud.CoreData.StockFundamentals { public interface IStockFundamentalsService { + /// + /// + /// Only included with paid subscription plans. + /// Financial information is limited for some financial firms. + /// + /// + /// + /// + Task> AdvancedFundamentalsAsync(string symbol, Period period = Period.Quarter); + /// /// /// Only included with paid subscription plans. diff --git a/IEXSharp/Service/Cloud/CoreData/StockFundamentals/StockFundamentalsService.cs b/IEXSharp/Service/Cloud/CoreData/StockFundamentals/StockFundamentalsService.cs index a52c41f2..fea719b5 100644 --- a/IEXSharp/Service/Cloud/CoreData/StockFundamentals/StockFundamentalsService.cs +++ b/IEXSharp/Service/Cloud/CoreData/StockFundamentals/StockFundamentalsService.cs @@ -18,6 +18,21 @@ internal StockFundamentalsService(ExecutorREST executor) this.executor = executor; } + public async Task> AdvancedFundamentalsAsync(string symbol, Period period = Period.Quarter) + { + const string urlPattern = "time-series/fundamentals/[symbol]/[period]"; + + var qsb = new QueryStringBuilder(); + + var pathNvc = new NameValueCollection + { + {"symbol", symbol}, + {"period", period.GetDescriptionFromEnum()} + }; + + return await executor.ExecuteAsync(urlPattern, pathNvc, qsb); + } + public async Task> BalanceSheetAsync(string symbol, Period period = Period.Quarter, int last = 1) { diff --git a/IEXSharpTest/Cloud/CoreData/StockFundamentalsTest.cs b/IEXSharpTest/Cloud/CoreData/StockFundamentalsTest.cs index b35538f1..b3b8ed6c 100644 --- a/IEXSharpTest/Cloud/CoreData/StockFundamentalsTest.cs +++ b/IEXSharpTest/Cloud/CoreData/StockFundamentalsTest.cs @@ -23,14 +23,29 @@ public void Setup() }; } + [Test] + [TestCase("BEDU", Period.Annual)] + [TestCase("BEDU", Period.Quarter)] + [TestCase("CCM", Period.Quarter)] + [TestCase("AAPL", Period.Quarter)] + [TestCase("FB", Period.Quarter)] + public async Task AdvancedFundamentalsAsyncTest(string symbol, Period period = Period.Quarter) + { + var response = await sandBoxClient.StockFundamentals.AdvancedFundamentalsAsync(symbol, period); + + Assert.IsNull(response.ErrorMessage); + Assert.IsNotNull(response.Data); + Assert.IsNotNull(response.Data.accountsPayable); + } + + [Test] [TestCase("BEDU", Period.Annual, 1)] [TestCase("BEDU", Period.Quarter, 1)] [TestCase("CCM", Period.Quarter, 1)] [TestCase("AAPL", Period.Quarter, 1)] [TestCase("FB", Period.Quarter, 2)] - public async Task BalanceSheetAsyncTest(string symbol, Period period = Period.Quarter, - int last = 1) + public async Task BalanceSheetAsyncTest(string symbol, Period period = Period.Quarter, int last = 1) { var response = await sandBoxClient.StockFundamentals.BalanceSheetAsync(symbol, period, last); Assert.IsNull(response.ErrorMessage);