content: {-
     CoinAPI Market Data REST API
  
     No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
  
     OpenAPI Version: 3.0.4
     CoinAPI Market Data REST API API version: v1
     Contact: support@apibricks.io
     Generated by OpenAPI Generator (https://openapi-generator.tech)
  -}
  
  {-|
  Module : CoinAPIMarketDataREST.API.MetricsV1
  -}
  
  {-# LANGUAGE FlexibleContexts #-}
  {-# LANGUAGE FlexibleInstances #-}
  {-# LANGUAGE MonoLocalBinds #-}
  {-# LANGUAGE MultiParamTypeClasses #-}
  {-# LANGUAGE OverloadedStrings #-}
  {-# OPTIONS_GHC -fno-warn-name-shadowing -fno-warn-unused-binds -fno-warn-unused-imports #-}
  
  module CoinAPIMarketDataREST.API.MetricsV1 where
  
  import CoinAPIMarketDataREST.Core
  import CoinAPIMarketDataREST.MimeTypes
  import CoinAPIMarketDataREST.Model as M
  
  import qualified Data.Aeson as A
  import qualified Data.ByteString as B
  import qualified Data.ByteString.Lazy as BL
  import qualified Data.Data as P (Typeable, TypeRep, typeOf, typeRep)
  import qualified Data.Foldable as P
  import qualified Data.Map as Map
  import qualified Data.Maybe as P
  import qualified Data.Proxy as P (Proxy(..))
  import qualified Data.Set as Set
  import qualified Data.String as P
  import qualified Data.Text as T
  import qualified Data.Text.Encoding as T
  import qualified Data.Text.Lazy as TL
  import qualified Data.Text.Lazy.Encoding as TL
  import qualified Data.Time as TI
  import qualified Network.HTTP.Client.MultipartFormData as NH
  import qualified Network.HTTP.Media as ME
  import qualified Network.HTTP.Types as NH
  import qualified Web.FormUrlEncoded as WH
  import qualified Web.HttpApiData as WH
  
  import Data.Text (Text)
  import GHC.Base ((<|>))
  
  import Prelude ((==),(/=),($), (.),(<$>),(<*>),(>>=),Maybe(..),Bool(..),Char,Double,FilePath,Float,Int,Integer,String,fmap,undefined,mempty,maybe,pure,Monad,Applicative,Functor)
  import qualified Prelude as P
  
  -- * Operations
  
  
  -- ** MetricsV1
  
  -- *** v1MetricsAssetCurrentGet
  
  -- | @GET \/v1\/metrics\/asset\/current@
  -- 
  -- Current metrics for given asset
  -- 
  -- Get current asset metrics.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsAssetCurrentGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> CoinAPIMarketDataRESTRequest V1MetricsAssetCurrentGet MimeNoContent [V1GeneralData] accept
  v1MetricsAssetCurrentGet  _ =
    _mkRequest "GET" ["/v1/metrics/asset/current"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
  
  data V1MetricsAssetCurrentGet  
  
  -- | /Optional Param/ "metric_id" - Metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsAssetCurrentGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  
  -- | /Optional Param/ "asset_id" - Asset identifier (from the Metadata -> Assets)
  instance HasOptionalParam V1MetricsAssetCurrentGet AssetId where
    applyOptionalParam req (AssetId xs) =
      req `addQuery` toQuery ("asset_id", Just xs)
  
  -- | /Optional Param/ "asset_id_external" - Exchange asset identifier
  instance HasOptionalParam V1MetricsAssetCurrentGet AssetIdExternal where
    applyOptionalParam req (AssetIdExternal xs) =
      req `addQuery` toQuery ("asset_id_external", Just xs)
  
  -- | /Optional Param/ "exchange_id" - Exchange identifier (from the Metadata -> Exchanges)
  instance HasOptionalParam V1MetricsAssetCurrentGet ExchangeId where
    applyOptionalParam req (ExchangeId xs) =
      req `addQuery` toQuery ("exchange_id", Just xs)
  -- | @application/json@
  instance Produces V1MetricsAssetCurrentGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsAssetCurrentGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsAssetCurrentGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsAssetCurrentGet MimePlainText
  
  
  -- *** v1MetricsAssetHistoryGet
  
  -- | @GET \/v1\/metrics\/asset\/history@
  -- 
  -- Historical metrics for asset
  -- 
  -- Get asset metrics history.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsAssetHistoryGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> MetricId -- ^ "metricId" -  Metric identifier (from the Metrics -> Listing)
    -> ExchangeId -- ^ "exchangeId" -  Exchange identifier (from the Metadata -> Exchanges)
    -> CoinAPIMarketDataRESTRequest V1MetricsAssetHistoryGet MimeNoContent [V1MetricData] accept
  v1MetricsAssetHistoryGet  _ (MetricId metricId) (ExchangeId exchangeId) =
    _mkRequest "GET" ["/v1/metrics/asset/history"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
      `addQuery` toQuery ("metric_id", Just metricId)
      `addQuery` toQuery ("exchange_id", Just exchangeId)
  
  data V1MetricsAssetHistoryGet  
  
  -- | /Optional Param/ "asset_id" - Asset identifier (from the Metadata -> Assets)
  instance HasOptionalParam V1MetricsAssetHistoryGet AssetId where
    applyOptionalParam req (AssetId xs) =
      req `addQuery` toQuery ("asset_id", Just xs)
  
  -- | /Optional Param/ "asset_id_external" - Exchange asset identifier
  instance HasOptionalParam V1MetricsAssetHistoryGet AssetIdExternal where
    applyOptionalParam req (AssetIdExternal xs) =
      req `addQuery` toQuery ("asset_id_external", Just xs)
  
  -- | /Optional Param/ "time_start" - Starting time in ISO 8601
  instance HasOptionalParam V1MetricsAssetHistoryGet TimeStartDateTime where
    applyOptionalParam req (TimeStartDateTime xs) =
      req `addQuery` toQuery ("time_start", Just xs)
  
  -- | /Optional Param/ "time_end" - Ending time in ISO 8601
  instance HasOptionalParam V1MetricsAssetHistoryGet TimeEndDateTime where
    applyOptionalParam req (TimeEndDateTime xs) =
      req `addQuery` toQuery ("time_end", Just xs)
  
  -- | /Optional Param/ "time_format" - If set, returned values will be in unix timestamp format (valid values: unix_sec, unix_millisec, unix_microsec, unix_nanosec)
  instance HasOptionalParam V1MetricsAssetHistoryGet TimeFormat where
    applyOptionalParam req (TimeFormat xs) =
      req `addQuery` toQuery ("time_format", Just xs)
  
  -- | /Optional Param/ "period_id" - Identifier of requested timeseries period (e.g. `5SEC` or `2MTH`), default value is `1SEC`
  instance HasOptionalParam V1MetricsAssetHistoryGet PeriodId where
    applyOptionalParam req (PeriodId xs) =
      req `addQuery` toQuery ("period_id", Just xs)
  
  -- | /Optional Param/ "limit" - Amount of items to return (optional, mininum is 1, maximum is 100000, default value is 100, if the parameter is used then every 100 output items are counted as one request)
  instance HasOptionalParam V1MetricsAssetHistoryGet Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  -- | @application/json@
  instance Produces V1MetricsAssetHistoryGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsAssetHistoryGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsAssetHistoryGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsAssetHistoryGet MimePlainText
  
  
  -- *** v1MetricsAssetListingGet
  
  -- | @GET \/v1\/metrics\/asset\/listing@
  -- 
  -- Listing of all supported metrics for asset
  -- 
  -- Get data metrics for asset.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsAssetListingGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> CoinAPIMarketDataRESTRequest V1MetricsAssetListingGet MimeNoContent [V1ListingItem] accept
  v1MetricsAssetListingGet  _ =
    _mkRequest "GET" ["/v1/metrics/asset/listing"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
  
  data V1MetricsAssetListingGet  
  
  -- | /Optional Param/ "metric_id" - Metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsAssetListingGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  
  -- | /Optional Param/ "exchange_id" - Exchange identifier (from the Metadata -> Exchanges)
  instance HasOptionalParam V1MetricsAssetListingGet ExchangeId where
    applyOptionalParam req (ExchangeId xs) =
      req `addQuery` toQuery ("exchange_id", Just xs)
  
  -- | /Optional Param/ "chain_id" - Chain identifier
  instance HasOptionalParam V1MetricsAssetListingGet ChainId where
    applyOptionalParam req (ChainId xs) =
      req `addQuery` toQuery ("chain_id", Just xs)
  
  -- | /Optional Param/ "network_id" - Network identifier
  instance HasOptionalParam V1MetricsAssetListingGet NetworkId where
    applyOptionalParam req (NetworkId xs) =
      req `addQuery` toQuery ("network_id", Just xs)
  
  -- | /Optional Param/ "asset_id" - Asset identifier (from the Metadata -> Assets)
  instance HasOptionalParam V1MetricsAssetListingGet AssetId where
    applyOptionalParam req (AssetId xs) =
      req `addQuery` toQuery ("asset_id", Just xs)
  
  -- | /Optional Param/ "asset_id_external" - The asset external identifier
  instance HasOptionalParam V1MetricsAssetListingGet AssetIdExternal where
    applyOptionalParam req (AssetIdExternal xs) =
      req `addQuery` toQuery ("asset_id_external", Just xs)
  -- | @application/json@
  instance Produces V1MetricsAssetListingGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsAssetListingGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsAssetListingGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsAssetListingGet MimePlainText
  
  
  -- *** v1MetricsExchangeCurrentGet
  
  -- | @GET \/v1\/metrics\/exchange\/current@
  -- 
  -- Current metrics for given exchange
  -- 
  -- Get current exchange metrics values.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsExchangeCurrentGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> ExchangeId -- ^ "exchangeId" -  The exchange identifier (from the Metadata -> Exchanges)
    -> CoinAPIMarketDataRESTRequest V1MetricsExchangeCurrentGet MimeNoContent [V1GeneralData] accept
  v1MetricsExchangeCurrentGet  _ (ExchangeId exchangeId) =
    _mkRequest "GET" ["/v1/metrics/exchange/current"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
      `addQuery` toQuery ("exchange_id", Just exchangeId)
  
  data V1MetricsExchangeCurrentGet  
  
  -- | /Optional Param/ "metric_id" - The metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsExchangeCurrentGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  -- | @application/json@
  instance Produces V1MetricsExchangeCurrentGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsExchangeCurrentGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsExchangeCurrentGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsExchangeCurrentGet MimePlainText
  
  
  -- *** v1MetricsExchangeHistoryGet
  
  -- | @GET \/v1\/metrics\/exchange\/history@
  -- 
  -- Historical metrics for the exchange
  -- 
  -- Get exchange metrics history.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsExchangeHistoryGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> MetricId -- ^ "metricId" -  Metric identifier (from the Metrics -> Listing)
    -> ExchangeId -- ^ "exchangeId" -  Exchange identifier (from the Metadata -> Exchanges)
    -> CoinAPIMarketDataRESTRequest V1MetricsExchangeHistoryGet MimeNoContent [V1MetricData] accept
  v1MetricsExchangeHistoryGet  _ (MetricId metricId) (ExchangeId exchangeId) =
    _mkRequest "GET" ["/v1/metrics/exchange/history"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
      `addQuery` toQuery ("metric_id", Just metricId)
      `addQuery` toQuery ("exchange_id", Just exchangeId)
  
  data V1MetricsExchangeHistoryGet  
  
  -- | /Optional Param/ "time_start" - Starting time in ISO 8601
  instance HasOptionalParam V1MetricsExchangeHistoryGet TimeStartDateTime where
    applyOptionalParam req (TimeStartDateTime xs) =
      req `addQuery` toQuery ("time_start", Just xs)
  
  -- | /Optional Param/ "time_end" - Ending time in ISO 8601
  instance HasOptionalParam V1MetricsExchangeHistoryGet TimeEndDateTime where
    applyOptionalParam req (TimeEndDateTime xs) =
      req `addQuery` toQuery ("time_end", Just xs)
  
  -- | /Optional Param/ "time_format" - If set, returned values will be in unix timestamp format (valid values: unix_sec, unix_millisec, unix_microsec, unix_nanosec)
  instance HasOptionalParam V1MetricsExchangeHistoryGet TimeFormat where
    applyOptionalParam req (TimeFormat xs) =
      req `addQuery` toQuery ("time_format", Just xs)
  
  -- | /Optional Param/ "period_id" - Identifier of requested timeseries period (e.g. `5SEC` or `2MTH`), default value is `1SEC`
  instance HasOptionalParam V1MetricsExchangeHistoryGet PeriodId where
    applyOptionalParam req (PeriodId xs) =
      req `addQuery` toQuery ("period_id", Just xs)
  
  -- | /Optional Param/ "limit" - Amount of items to return (optional, mininum is 1, maximum is 100000, default value is 100, if the parameter is used then every 100 output items are counted as one request)
  instance HasOptionalParam V1MetricsExchangeHistoryGet Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  -- | @application/json@
  instance Produces V1MetricsExchangeHistoryGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsExchangeHistoryGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsExchangeHistoryGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsExchangeHistoryGet MimePlainText
  
  
  -- *** v1MetricsExchangeListingGet
  
  -- | @GET \/v1\/metrics\/exchange\/listing@
  -- 
  -- Listing of all supported exchange metrics
  -- 
  -- Get data metrics for exchange.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsExchangeListingGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> ExchangeId -- ^ "exchangeId" -  The exchange identifier (from the Metadata -> Exchanges)
    -> CoinAPIMarketDataRESTRequest V1MetricsExchangeListingGet MimeNoContent [V1ListingItem] accept
  v1MetricsExchangeListingGet  _ (ExchangeId exchangeId) =
    _mkRequest "GET" ["/v1/metrics/exchange/listing"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
      `addQuery` toQuery ("exchange_id", Just exchangeId)
  
  data V1MetricsExchangeListingGet  
  
  -- | /Optional Param/ "metric_id" - The metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsExchangeListingGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  -- | @application/json@
  instance Produces V1MetricsExchangeListingGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsExchangeListingGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsExchangeListingGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsExchangeListingGet MimePlainText
  
  
  -- *** v1MetricsListingGet
  
  -- | @GET \/v1\/metrics\/listing@
  -- 
  -- Listing of all supported metrics by CoinAPI
  -- 
  -- Get all data metrics.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsListingGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> CoinAPIMarketDataRESTRequest V1MetricsListingGet MimeNoContent [V1Metric] accept
  v1MetricsListingGet  _ =
    _mkRequest "GET" ["/v1/metrics/listing"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
  
  data V1MetricsListingGet  
  -- | @application/json@
  instance Produces V1MetricsListingGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsListingGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsListingGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsListingGet MimePlainText
  
  
  -- *** v1MetricsSymbolCurrentGet
  
  -- | @GET \/v1\/metrics\/symbol\/current@
  -- 
  -- Current metrics for given symbol
  -- 
  -- Get current symbol metrics.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsSymbolCurrentGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> CoinAPIMarketDataRESTRequest V1MetricsSymbolCurrentGet MimeNoContent [V1GeneralData] accept
  v1MetricsSymbolCurrentGet  _ =
    _mkRequest "GET" ["/v1/metrics/symbol/current"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
  
  data V1MetricsSymbolCurrentGet  
  
  -- | /Optional Param/ "metric_id" - Metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsSymbolCurrentGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  
  -- | /Optional Param/ "symbol_id" - Symbol identifier (from the Metadata -> Symbols)
  instance HasOptionalParam V1MetricsSymbolCurrentGet SymbolId where
    applyOptionalParam req (SymbolId xs) =
      req `addQuery` toQuery ("symbol_id", Just xs)
  
  -- | /Optional Param/ "exchange_id" - Exchange id (from the Metadata -> Exchanges)
  instance HasOptionalParam V1MetricsSymbolCurrentGet ExchangeId where
    applyOptionalParam req (ExchangeId xs) =
      req `addQuery` toQuery ("exchange_id", Just xs)
  -- | @application/json@
  instance Produces V1MetricsSymbolCurrentGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsSymbolCurrentGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsSymbolCurrentGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsSymbolCurrentGet MimePlainText
  
  
  -- *** v1MetricsSymbolHistoryGet
  
  -- | @GET \/v1\/metrics\/symbol\/history@
  -- 
  -- Historical metrics for symbol
  -- 
  -- Get symbol metrics history.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsSymbolHistoryGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> MetricId -- ^ "metricId" -  Metric identifier (from the Metrics -> Listing)
    -> SymbolId -- ^ "symbolId" -  Symbol identifier (from the Metadata -> Symbols)
    -> CoinAPIMarketDataRESTRequest V1MetricsSymbolHistoryGet MimeNoContent [V1MetricData] accept
  v1MetricsSymbolHistoryGet  _ (MetricId metricId) (SymbolId symbolId) =
    _mkRequest "GET" ["/v1/metrics/symbol/history"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
      `addQuery` toQuery ("metric_id", Just metricId)
      `addQuery` toQuery ("symbol_id", Just symbolId)
  
  data V1MetricsSymbolHistoryGet  
  
  -- | /Optional Param/ "time_start" - Starting time in ISO 8601
  instance HasOptionalParam V1MetricsSymbolHistoryGet TimeStartDateTime where
    applyOptionalParam req (TimeStartDateTime xs) =
      req `addQuery` toQuery ("time_start", Just xs)
  
  -- | /Optional Param/ "time_end" - Ending time in ISO 8601
  instance HasOptionalParam V1MetricsSymbolHistoryGet TimeEndDateTime where
    applyOptionalParam req (TimeEndDateTime xs) =
      req `addQuery` toQuery ("time_end", Just xs)
  
  -- | /Optional Param/ "time_format" - If set, returned values will be in unix timestamp format (valid values: unix_sec, unix_millisec, unix_microsec, unix_nanosec)
  instance HasOptionalParam V1MetricsSymbolHistoryGet TimeFormat where
    applyOptionalParam req (TimeFormat xs) =
      req `addQuery` toQuery ("time_format", Just xs)
  
  -- | /Optional Param/ "period_id" - Identifier of requested timeseries period (e.g. `5SEC` or `2MTH`), default value is `1SEC`
  instance HasOptionalParam V1MetricsSymbolHistoryGet PeriodId where
    applyOptionalParam req (PeriodId xs) =
      req `addQuery` toQuery ("period_id", Just xs)
  
  -- | /Optional Param/ "limit" - Amount of items to return (optional, mininum is 1, maximum is 100000, default value is 100, if the parameter is used then every 100 output items are counted as one request)
  instance HasOptionalParam V1MetricsSymbolHistoryGet Limit where
    applyOptionalParam req (Limit xs) =
      req `addQuery` toQuery ("limit", Just xs)
  -- | @application/json@
  instance Produces V1MetricsSymbolHistoryGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsSymbolHistoryGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsSymbolHistoryGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsSymbolHistoryGet MimePlainText
  
  
  -- *** v1MetricsSymbolListingGet
  
  -- | @GET \/v1\/metrics\/symbol\/listing@
  -- 
  -- Listing of all supported metrics for symbol
  -- 
  -- Get data metrics for symbol.
  -- 
  -- AuthMethod: 'AuthApiKeyAPIKey', 'AuthBasicJWT'
  -- 
  v1MetricsSymbolListingGet
    :: Accept accept -- ^ request accept ('MimeType')
    -> CoinAPIMarketDataRESTRequest V1MetricsSymbolListingGet MimeNoContent [V1ListingItem] accept
  v1MetricsSymbolListingGet  _ =
    _mkRequest "GET" ["/v1/metrics/symbol/listing"]
      `_hasAuthType` (P.Proxy :: P.Proxy AuthApiKeyAPIKey)
      `_hasAuthType` (P.Proxy :: P.Proxy AuthBasicJWT)
  
  data V1MetricsSymbolListingGet  
  
  -- | /Optional Param/ "metric_id" - Metric identifier (from the Metrics -> Listing)
  instance HasOptionalParam V1MetricsSymbolListingGet MetricId where
    applyOptionalParam req (MetricId xs) =
      req `addQuery` toQuery ("metric_id", Just xs)
  
  -- | /Optional Param/ "exchange_id" - Exchange identifier (from the Metadata -> Exchanges)
  instance HasOptionalParam V1MetricsSymbolListingGet ExchangeId where
    applyOptionalParam req (ExchangeId xs) =
      req `addQuery` toQuery ("exchange_id", Just xs)
  
  -- | /Optional Param/ "symbol_id" - Symbol identifier (from the Metadata -> Symbols)
  instance HasOptionalParam V1MetricsSymbolListingGet SymbolId where
    applyOptionalParam req (SymbolId xs) =
      req `addQuery` toQuery ("symbol_id", Just xs)
  -- | @application/json@
  instance Produces V1MetricsSymbolListingGet MimeJSON
  -- | @application/x-msgpack@
  instance Produces V1MetricsSymbolListingGet MimeXMsgpack
  -- | @text/json@
  instance Produces V1MetricsSymbolListingGet MimeTextJson
  -- | @text/plain@
  instance Produces V1MetricsSymbolListingGet MimePlainText
  
  