{-# OPTIONS_HADDOCK hide #-}
module Blockfrost.API
( BlockfrostAPI (..)
, BlockfrostV0API (..)
, CommonAPI (..)
, CardanoAPI (..)
, IPFSAPI (..)
, NutLinkAPI (..)
, module Blockfrost.API.Cardano
, api
, api0
, ServantBlockfrostAPI
, BlockfrostAuth
, Project (..)
, Form (..)
) where
import Data.Proxy (Proxy (..))
import Servant.API
import Servant.API.Generic
import Blockfrost.API.Cardano
import Blockfrost.API.Common
import Blockfrost.API.IPFS
import Blockfrost.API.NutLink
import Blockfrost.Auth
import Blockfrost.Types
import Blockfrost.Util.Tag (Tag)
import Blockfrost.Util.UserAgent (UserAgent)
type BlockfrostAuth = ProjectAuth '[APIKeyInHeader "project_id"] Project
newtype BlockfrostAPI route =
BlockfrostAPI
{
forall route.
BlockfrostAPI route
-> route
:- ("api"
:> ("v0"
:> (BlockfrostAuth
:> (UserAgent :> ToServantApi BlockfrostV0API))))
_apiV0 :: route
:- "api"
:> "v0"
:> BlockfrostAuth
:> UserAgent
:> ToServantApi BlockfrostV0API
} deriving ((forall x. BlockfrostAPI route -> Rep (BlockfrostAPI route) x)
-> (forall x. Rep (BlockfrostAPI route) x -> BlockfrostAPI route)
-> Generic (BlockfrostAPI route)
forall x. Rep (BlockfrostAPI route) x -> BlockfrostAPI route
forall x. BlockfrostAPI route -> Rep (BlockfrostAPI route) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall route x. Rep (BlockfrostAPI route) x -> BlockfrostAPI route
forall route x. BlockfrostAPI route -> Rep (BlockfrostAPI route) x
$cfrom :: forall route x. BlockfrostAPI route -> Rep (BlockfrostAPI route) x
from :: forall x. BlockfrostAPI route -> Rep (BlockfrostAPI route) x
$cto :: forall route x. Rep (BlockfrostAPI route) x -> BlockfrostAPI route
to :: forall x. Rep (BlockfrostAPI route) x -> BlockfrostAPI route
Generic)
data BlockfrostV0API route =
BlockfrostV0API
{
forall route.
BlockfrostV0API route -> route :- ToServantApi CommonAPI
_common :: route :- ToServantApi CommonAPI
, forall route.
BlockfrostV0API route -> route :- ToServantApi CardanoAPI
_cardano :: route :- ToServantApi CardanoAPI
, forall route.
BlockfrostV0API route -> route :- ("ipfs" :> ToServantApi IPFSAPI)
_ipfs :: route :- "ipfs" :> ToServantApi IPFSAPI
, forall route.
BlockfrostV0API route
-> route
:- ("nutlink" :> (Tag "Nut.link" :> ToServantApi NutLinkAPI))
_nutLink :: route :- "nutlink" :> Tag "Nut.link" :> ToServantApi NutLinkAPI
} deriving ((forall x. BlockfrostV0API route -> Rep (BlockfrostV0API route) x)
-> (forall x.
Rep (BlockfrostV0API route) x -> BlockfrostV0API route)
-> Generic (BlockfrostV0API route)
forall x. Rep (BlockfrostV0API route) x -> BlockfrostV0API route
forall x. BlockfrostV0API route -> Rep (BlockfrostV0API route) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall route x.
Rep (BlockfrostV0API route) x -> BlockfrostV0API route
forall route x.
BlockfrostV0API route -> Rep (BlockfrostV0API route) x
$cfrom :: forall route x.
BlockfrostV0API route -> Rep (BlockfrostV0API route) x
from :: forall x. BlockfrostV0API route -> Rep (BlockfrostV0API route) x
$cto :: forall route x.
Rep (BlockfrostV0API route) x -> BlockfrostV0API route
to :: forall x. Rep (BlockfrostV0API route) x -> BlockfrostV0API route
Generic)
data CardanoAPI route =
CardanoAPI
{
forall route.
CardanoAPI route
-> route
:- ("accounts"
:> (Tag "Cardano \187 Accounts" :> ToServantApi AccountsAPI))
_accounts
:: route
:- "accounts"
:> Tag "Cardano » Accounts"
:> ToServantApi AccountsAPI
, forall route.
CardanoAPI route
-> route
:- ("addresses"
:> (Tag "Cardano \187 Addresses" :> ToServantApi AddressesAPI))
_addresses
:: route
:- "addresses"
:> Tag "Cardano » Addresses"
:> ToServantApi AddressesAPI
, forall route.
CardanoAPI route
-> route
:- ("assets"
:> (Tag "Cardano \187 Assets" :> ToServantApi AssetsAPI))
_assets
:: route
:- "assets"
:> Tag "Cardano » Assets"
:> ToServantApi AssetsAPI
, forall route.
CardanoAPI route
-> route
:- ("blocks"
:> (Tag "Cardano \187 Blocks" :> ToServantApi BlocksAPI))
_blocks
:: route
:- "blocks"
:> Tag "Cardano » Blocks"
:> ToServantApi BlocksAPI
, forall route.
CardanoAPI route
-> route
:- ("epochs"
:> (Tag "Cardano \187 Epochs" :> ToServantApi EpochsAPI))
_epochs
:: route
:- "epochs"
:> Tag "Cardano » Epochs"
:> ToServantApi EpochsAPI
, forall route.
CardanoAPI route
-> route
:- ("genesis"
:> (Tag "Cardano \187 Ledger" :> ToServantApi LedgerAPI))
_ledger
:: route
:- "genesis"
:> Tag "Cardano » Ledger"
:> ToServantApi LedgerAPI
, forall route.
CardanoAPI route
-> route
:- ("mempool"
:> (Tag "Cardano \187 Mempool" :> ToServantApi MempoolAPI))
_mempool
:: route
:- "mempool"
:> Tag "Cardano » Mempool"
:> ToServantApi MempoolAPI
, forall route.
CardanoAPI route
-> route
:- ("metadata"
:> (Tag "Cardano \187 Metadata" :> ToServantApi MetadataAPI))
_metadata
:: route
:- "metadata"
:> Tag "Cardano » Metadata"
:> ToServantApi MetadataAPI
, forall route.
CardanoAPI route
-> route
:- ("network"
:> (Tag "Cardano \187 Network" :> ToServantApi NetworkAPI))
_network
:: route
:- "network"
:> Tag "Cardano » Network"
:> ToServantApi NetworkAPI
, forall route.
CardanoAPI route
-> route
:- ("pools" :> (Tag "Cardano \187 Pools" :> ToServantApi PoolsAPI))
_pools
:: route
:- "pools"
:> Tag "Cardano » Pools"
:> ToServantApi PoolsAPI
, forall route.
CardanoAPI route
-> route
:- ("scripts"
:> (Tag "Cardano \187 Scripts" :> ToServantApi ScriptsAPI))
_scripts
:: route
:- "scripts"
:> Tag "Cardano » Scripts"
:> ToServantApi ScriptsAPI
, forall route.
CardanoAPI route
-> route
:- ("txs"
:> (Tag "Cardano \187 Transactions"
:> ToServantApi TransactionsAPI))
_transactions
:: route
:- "txs"
:> Tag "Cardano » Transactions"
:> ToServantApi TransactionsAPI
, forall route.
CardanoAPI route
-> route
:- (Summary "Submit a transaction"
:> (Description
"Submit an already serialized transaction to the network."
:> (Tag "Cardano \187 Transactions"
:> ("tx"
:> ("submit"
:> (ReqBody '[CBOR] CBORString :> Post '[JSON] TxHash))))))
_txSubmit
:: route
:- Summary "Submit a transaction"
:> Description "Submit an already serialized transaction to the network."
:> Tag "Cardano » Transactions"
:> "tx"
:> "submit"
:> ReqBody '[CBOR] CBORString
:> Post '[JSON] TxHash
, forall route.
CardanoAPI route
-> route
:- ("utils"
:> (Tag "Cardano \187 Utilities" :> ToServantApi UtilsAPI))
_utils
:: route
:- "utils"
:> Tag "Cardano » Utilities"
:> ToServantApi UtilsAPI
} deriving ((forall x. CardanoAPI route -> Rep (CardanoAPI route) x)
-> (forall x. Rep (CardanoAPI route) x -> CardanoAPI route)
-> Generic (CardanoAPI route)
forall x. Rep (CardanoAPI route) x -> CardanoAPI route
forall x. CardanoAPI route -> Rep (CardanoAPI route) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall route x. Rep (CardanoAPI route) x -> CardanoAPI route
forall route x. CardanoAPI route -> Rep (CardanoAPI route) x
$cfrom :: forall route x. CardanoAPI route -> Rep (CardanoAPI route) x
from :: forall x. CardanoAPI route -> Rep (CardanoAPI route) x
$cto :: forall route x. Rep (CardanoAPI route) x -> CardanoAPI route
to :: forall x. Rep (CardanoAPI route) x -> CardanoAPI route
Generic)
type ServantBlockfrostAPI = ToServantApi BlockfrostAPI
api :: Proxy (ToServantApi BlockfrostAPI)
api :: Proxy (ToServantApi BlockfrostAPI)
api = Proxy BlockfrostAPI -> Proxy (ToServantApi BlockfrostAPI)
forall (routes :: * -> *).
GenericServant routes AsApi =>
Proxy routes -> Proxy (ToServantApi routes)
genericApi (Proxy BlockfrostAPI
forall {k} (t :: k). Proxy t
Proxy :: Proxy BlockfrostAPI)
api0 :: Proxy (ToServantApi BlockfrostV0API)
api0 :: Proxy (ToServantApi BlockfrostV0API)
api0 = Proxy BlockfrostV0API -> Proxy (ToServantApi BlockfrostV0API)
forall (routes :: * -> *).
GenericServant routes AsApi =>
Proxy routes -> Proxy (ToServantApi routes)
genericApi (Proxy BlockfrostV0API
forall {k} (t :: k). Proxy t
Proxy :: Proxy BlockfrostV0API)