coinbase-pro-0.7.0.0: src/lib/CoinbasePro/Unauthenticated/API.hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
module CoinbasePro.Unauthenticated.API
( products
, aggregateOrderBook
, fullOrderBook
, trades
, candles
, stats
, currencies
, time
) where
import Data.Proxy (Proxy (..))
import Data.Time.Clock (UTCTime)
import Servant.API ((:<|>) (..), (:>),
Capture, QueryParam,
QueryParam',
Required)
import Servant.Client (client)
import CoinbasePro.MarketData.AggregateOrderBook (AggregateOrderBook)
import CoinbasePro.MarketData.FullOrderBook (FullOrderBook)
import CoinbasePro.MarketData.Types (AggregateBookLevel (..),
CBTime,
FullBookLevel (..),
Product, Trade)
import CoinbasePro.Request (CBGet, CBRequest)
import CoinbasePro.Types (Candle,
CandleGranularity,
Currency, ProductId,
TwentyFourHourStats)
type Products = "products" :> CBGet [Product]
type ProductAggregateOrderBook = "products"
:> Capture "product" ProductId
:> "book"
:> QueryParam "level" AggregateBookLevel
:> CBGet AggregateOrderBook
type ProductFullOrderBook = "products"
:> Capture "product" ProductId
:> "book"
:> QueryParam "level" FullBookLevel
:> CBGet FullOrderBook
type Trades = "products"
:> Capture "product" ProductId
:> "trades"
:> CBGet [Trade]
type Candles = "products"
:> Capture "product" ProductId
:> "candles"
:> QueryParam "start" UTCTime
:> QueryParam "end" UTCTime
:> QueryParam' '[Required] "granularity" CandleGranularity
:> CBGet [Candle]
type Stats = "products"
:> Capture "product" ProductId
:> "stats"
:> CBGet TwentyFourHourStats
type Currencies = "currencies"
:> CBGet [Currency]
type Time = "time" :> CBGet CBTime
type API = Products
:<|> ProductAggregateOrderBook
:<|> ProductFullOrderBook
:<|> Trades
:<|> Candles
:<|> Stats
:<|> Currencies
:<|> Time
api :: Proxy API
api = Proxy
products :: CBRequest [Product]
aggregateOrderBook :: ProductId -> Maybe AggregateBookLevel -> CBRequest AggregateOrderBook
fullOrderBook :: ProductId -> Maybe FullBookLevel -> CBRequest FullOrderBook
trades :: ProductId -> CBRequest [Trade]
candles :: ProductId -> Maybe UTCTime -> Maybe UTCTime -> CandleGranularity -> CBRequest [Candle]
stats :: ProductId -> CBRequest TwentyFourHourStats
currencies :: CBRequest [Currency]
time :: CBRequest CBTime
products :<|> aggregateOrderBook :<|> fullOrderBook :<|> trades :<|> candles :<|> stats :<|> currencies :<|> time = client api