# blockfrost-api Core types and Servant API definitions. ## Exploring data types All data types have a `ToSample` instance for [servant-docs](https://hackage.haskell.org/package/servant-docs) which can be used to get a sample response in `cabal repl`: ``` haskell λ: import Data.Proxy λ: import Servant.Docs λ: Just block = toSample (Proxy :: Proxy Block) λ: _blockHash block BlockHash "4ea1ba291e8eef538635a53e59fddba7810d1679631cc3aed7c8e6c4091a516a" ``` ## Lenses Instead of using long record names, it is recommended to use provided lenses and a [lens](https://hackage.haskell.org/package/lens) or similar package. ``` haskell λ: import Control.Lens (^.) λ: import Blockfrost.Lens λ: block ^. epoch Just (Epoch 425) ``` ## Monetary values Ada values and values of assets are represented using [`Discrete`](https://hackage.haskell.org/package/safe-money/docs/Money.html#t:Discrete) type from [safe-money](https://hackage.haskell.org/package/safe-money) library. We use a type alias `type Lovelaces = Money.Discrete "ADA" "lovelace"` for Ada values and [`SomeDiscrete`](https://hackage.haskell.org/package/safe-money/docs/Money.html#t:SomeDiscrete) for asset values. This should allow working with monetary values safely, preventing summing different currencies. See the [blog post](https://ren.zone/articles/safe-money) by the library author. ``` haskell λ: block ^. fees Just (Discrete "ADA" 1000000%1 592661) ```