Files

67 lines
3.2 KiB
C#

using System.Collections.Generic;
using System.Text.Json.Serialization;
namespace FinlyticCore.Dtos.Yahoo;
/// <summary>
/// Response object for Yahoo Finance chart API (/v8/finance/chart/{symbol}).
/// </summary>
public record YahooChartResponseDto(
[property: JsonPropertyName("chart")] YahooChartResultWrapperDto? Chart
);
public record YahooChartResultWrapperDto(
[property: JsonPropertyName("result")] List<YahooChartResultDto>? Result,
[property: JsonPropertyName("error")] object? Error
);
public record YahooChartResultDto(
[property: JsonPropertyName("meta")] YahooChartMetaDto? Meta,
[property: JsonPropertyName("timestamp")] List<long>? Timestamp,
[property: JsonPropertyName("indicators")] YahooChartIndicatorsDto? Indicators
);
public record YahooChartMetaDto(
[property: JsonPropertyName("currency")] string? Currency,
[property: JsonPropertyName("symbol")] string? Symbol,
[property: JsonPropertyName("exchangeName")] string? ExchangeName,
[property: JsonPropertyName("fullExchangeName")] string? FullExchangeName,
[property: JsonPropertyName("instrumentType")] string? InstrumentType,
[property: JsonPropertyName("firstTradeDate")] long? FirstTradeDate,
[property: JsonPropertyName("regularMarketTime")] long? RegularMarketTime,
[property: JsonPropertyName("hasPrePostMarketData")] bool? HasPrePostMarketData,
[property: JsonPropertyName("gmtoffset")] int? GmtOffset,
[property: JsonPropertyName("timezone")] string? Timezone,
[property: JsonPropertyName("exchangeTimezoneName")] string? ExchangeTimezoneName,
[property: JsonPropertyName("regularMarketPrice")] double? RegularMarketPrice,
[property: JsonPropertyName("fiftyTwoWeekHigh")] double? FiftyTwoWeekHigh,
[property: JsonPropertyName("fiftyTwoWeekLow")] double? FiftyTwoWeekLow,
[property: JsonPropertyName("regularMarketDayHigh")] double? RegularMarketDayHigh,
[property: JsonPropertyName("regularMarketDayLow")] double? RegularMarketDayLow,
[property: JsonPropertyName("regularMarketVolume")] long? RegularMarketVolume,
[property: JsonPropertyName("chartPreviousClose")] double? ChartPreviousClose,
[property: JsonPropertyName("previousClose")] double? PreviousClose,
[property: JsonPropertyName("scale")] int? Scale,
[property: JsonPropertyName("priceHint")] int? PriceHint,
[property: JsonPropertyName("dataGranularity")] string? DataGranularity,
[property: JsonPropertyName("range")] string? Range,
[property: JsonPropertyName("validRanges")] List<string>? ValidRanges
);
public record YahooChartIndicatorsDto(
[property: JsonPropertyName("quote")] List<YahooChartQuoteDto>? Quote,
[property: JsonPropertyName("adjclose")] List<YahooChartAdjCloseDto>? AdjClose
);
public record YahooChartQuoteDto(
[property: JsonPropertyName("open")] List<double?>? Open,
[property: JsonPropertyName("high")] List<double?>? High,
[property: JsonPropertyName("low")] List<double?>? Low,
[property: JsonPropertyName("close")] List<double?>? Close,
[property: JsonPropertyName("volume")] List<long?>? Volume
);
public record YahooChartAdjCloseDto(
[property: JsonPropertyName("adjclose")] List<double?>? AdjClose
);