hydra-node
Safe HaskellNone
LanguageGHC2021

Hydra.API.HTTPServer

Contents

Synopsis

Documentation

newtype DraftCommitTxResponse tx Source #

Constructors

DraftCommitTxResponse 

Fields

Instances

Instances details
IsTx tx => FromJSON (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

IsTx tx => ToJSON (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep (DraftCommitTxResponse tx) :: Type -> Type Source #

Show tx => Show (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

IsTx tx => FromCBOR (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

fromCBOR :: Decoder s (DraftCommitTxResponse tx)

label :: Proxy (DraftCommitTxResponse tx) -> Text

IsTx tx => ToCBOR (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: DraftCommitTxResponse tx -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (DraftCommitTxResponse tx) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [DraftCommitTxResponse tx] -> Size

Eq tx => Eq (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (DraftCommitTxResponse tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (DraftCommitTxResponse tx) = D1 ('MetaData "DraftCommitTxResponse" "Hydra.API.HTTPServer" "hydra-node-2.3.0-1cgalYNmLJQC1YXlYVq7mp" 'True) (C1 ('MetaCons "DraftCommitTxResponse" 'PrefixI 'True) (S1 ('MetaSel ('Just "commitTx") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 tx)))

data DraftCommitTxRequest tx Source #

Constructors

SimpleCommitRequest 

Fields

FullCommitRequest 

Fields

Instances

Instances details
(FromJSON tx, FromJSON (UTxOType tx)) => FromJSON (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

parseJSON :: Value -> Parser (DraftCommitTxRequest tx)

parseJSONList :: Value -> Parser [DraftCommitTxRequest tx]

omittedField :: Maybe (DraftCommitTxRequest tx)

(ToJSON tx, ToJSON (UTxOType tx)) => ToJSON (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep (DraftCommitTxRequest tx) :: Type -> Type Source #

(Show tx, Show (UTxOType tx)) => Show (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

IsTx tx => FromCBOR (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

fromCBOR :: Decoder s (DraftCommitTxRequest tx)

label :: Proxy (DraftCommitTxRequest tx) -> Text

IsTx tx => ToCBOR (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: DraftCommitTxRequest tx -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (DraftCommitTxRequest tx) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [DraftCommitTxRequest tx] -> Size

(Eq tx, Eq (UTxOType tx)) => Eq (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (DraftCommitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (DraftCommitTxRequest tx) = D1 ('MetaData "DraftCommitTxRequest" "Hydra.API.HTTPServer" "hydra-node-2.3.0-1cgalYNmLJQC1YXlYVq7mp" 'False) (C1 ('MetaCons "SimpleCommitRequest" 'PrefixI 'True) (S1 ('MetaSel ('Just "utxoToCommit") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (UTxOType tx))) :+: C1 ('MetaCons "FullCommitRequest" 'PrefixI 'True) (S1 ('MetaSel ('Just "blueprintTx") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 tx) :*: (S1 ('MetaSel ('Just "utxo") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (UTxOType tx)) :*: S1 ('MetaSel ('Just "changeAddress") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 (Maybe AddressInEra)))))

newtype SubmitTxRequest tx Source #

Constructors

SubmitTxRequest 

Fields

Instances

Instances details
FromJSON tx => FromJSON (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

parseJSON :: Value -> Parser (SubmitTxRequest tx)

parseJSONList :: Value -> Parser [SubmitTxRequest tx]

omittedField :: Maybe (SubmitTxRequest tx)

ToJSON tx => ToJSON (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toJSON :: SubmitTxRequest tx -> Value

toEncoding :: SubmitTxRequest tx -> Encoding

toJSONList :: [SubmitTxRequest tx] -> Value

toEncodingList :: [SubmitTxRequest tx] -> Encoding

omitField :: SubmitTxRequest tx -> Bool

Show tx => Show (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

(Typeable tx, FromCBOR tx) => FromCBOR (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

fromCBOR :: Decoder s (SubmitTxRequest tx)

label :: Proxy (SubmitTxRequest tx) -> Text

(Typeable tx, ToCBOR tx) => ToCBOR (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: SubmitTxRequest tx -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (SubmitTxRequest tx) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [SubmitTxRequest tx] -> Size

Eq tx => Eq (SubmitTxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

data TransactionSubmitted Source #

Constructors

TransactionSubmitted 

Instances

Instances details
FromJSON TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToJSON TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep TransactionSubmitted :: Type -> Type Source #

Show TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

FromCBOR TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToCBOR TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: TransactionSubmitted -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy TransactionSubmitted -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [TransactionSubmitted] -> Size

Eq TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep TransactionSubmitted Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep TransactionSubmitted = D1 ('MetaData "TransactionSubmitted" "Hydra.API.HTTPServer" "hydra-node-2.3.0-1cgalYNmLJQC1YXlYVq7mp" 'False) (C1 ('MetaCons "TransactionSubmitted" 'PrefixI 'False) (U1 :: Type -> Type))

newtype SideLoadSnapshotRequest tx Source #

Constructors

SideLoadSnapshotRequest 

Fields

Instances

Instances details
IsTx tx => FromJSON (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

IsTx tx => ToJSON (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep (SideLoadSnapshotRequest tx) :: Type -> Type Source #

IsTx tx => Show (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

IsTx tx => FromCBOR (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

fromCBOR :: Decoder s (SideLoadSnapshotRequest tx)

label :: Proxy (SideLoadSnapshotRequest tx) -> Text

IsTx tx => ToCBOR (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: SideLoadSnapshotRequest tx -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (SideLoadSnapshotRequest tx) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [SideLoadSnapshotRequest tx] -> Size

IsTx tx => Eq (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (SideLoadSnapshotRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep (SideLoadSnapshotRequest tx) = Rep (ConfirmedSnapshot tx)

newtype SubmitL2TxRequest tx Source #

Request to submit a transaction to the head

Constructors

SubmitL2TxRequest 

Fields

Instances

Instances details
FromJSON tx => FromJSON (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

parseJSON :: Value -> Parser (SubmitL2TxRequest tx)

parseJSONList :: Value -> Parser [SubmitL2TxRequest tx]

omittedField :: Maybe (SubmitL2TxRequest tx)

ToJSON tx => ToJSON (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toJSON :: SubmitL2TxRequest tx -> Value

toEncoding :: SubmitL2TxRequest tx -> Encoding

toJSONList :: [SubmitL2TxRequest tx] -> Value

toEncodingList :: [SubmitL2TxRequest tx] -> Encoding

omitField :: SubmitL2TxRequest tx -> Bool

Show tx => Show (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

(Typeable tx, FromCBOR tx) => FromCBOR (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

fromCBOR :: Decoder s (SubmitL2TxRequest tx)

label :: Proxy (SubmitL2TxRequest tx) -> Text

(Typeable tx, ToCBOR tx) => ToCBOR (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: SubmitL2TxRequest tx -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy (SubmitL2TxRequest tx) -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [SubmitL2TxRequest tx] -> Size

Eq tx => Eq (SubmitL2TxRequest tx) Source # 
Instance details

Defined in Hydra.API.HTTPServer

data SubmitL2TxResponse Source #

Response for transaction submission

Constructors

SubmitTxConfirmed Integer

Transaction was included in a confirmed snapshot

SubmitTxInvalidResponse Text

Transaction was rejected due to validation errors

SubmitTxRejectedResponse Text

Transaction was rejected due to node out of sync

SubmitTxSubmitted

Transaction was accepted but not yet confirmed

Instances

Instances details
FromJSON SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToJSON SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep SubmitL2TxResponse :: Type -> Type Source #

Show SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

FromCBOR SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToCBOR SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: SubmitL2TxResponse -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy SubmitL2TxResponse -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [SubmitL2TxResponse] -> Size

Eq SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep SubmitL2TxResponse Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep SubmitL2TxResponse = D1 ('MetaData "SubmitL2TxResponse" "Hydra.API.HTTPServer" "hydra-node-2.3.0-1cgalYNmLJQC1YXlYVq7mp" 'False) ((C1 ('MetaCons "SubmitTxConfirmed" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Integer)) :+: C1 ('MetaCons "SubmitTxInvalidResponse" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text))) :+: (C1 ('MetaCons "SubmitTxRejectedResponse" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)) :+: C1 ('MetaCons "SubmitTxSubmitted" 'PrefixI 'False) (U1 :: Type -> Type)))

jsonContent :: ResponseHeaders Source #

cborContent :: ResponseHeaders Source #

data OperationTimedOut Source #

Response body sent when an operation was accepted but did not finish within the API transaction timeout.

Constructors

OperationTimedOut 

Fields

Instances

Instances details
FromJSON OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToJSON OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

Generic OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

Associated Types

type Rep OperationTimedOut :: Type -> Type Source #

Show OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

FromCBOR OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

ToCBOR OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

Methods

toCBOR :: OperationTimedOut -> Encoding

encodedSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy OperationTimedOut -> Size

encodedListSizeExpr :: (forall t. ToCBOR t => Proxy t -> Size) -> Proxy [OperationTimedOut] -> Size

Eq OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep OperationTimedOut Source # 
Instance details

Defined in Hydra.API.HTTPServer

type Rep OperationTimedOut = D1 ('MetaData "OperationTimedOut" "Hydra.API.HTTPServer" "hydra-node-2.3.0-1cgalYNmLJQC1YXlYVq7mp" 'False) (C1 ('MetaCons "OperationTimedOut" 'PrefixI 'True) (S1 ('MetaSel ('Just "tag") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text) :*: S1 ('MetaSel ('Just "timeoutMessage") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedStrict) (Rec0 Text)))

responseEncodingFor :: Request -> ApiEncoding Source #

Which encoding the client wants for the response, negotiated via the Accept header. Anything but application/cbor (including no header) yields JSON.

requestEncodingFor :: Request -> ApiEncoding Source #

Which encoding the request body uses, negotiated via the Content-Type header. Anything but application/cbor (including no header) is treated as JSON.

respondApi :: (ToJSON a, ToCBOR a) => ApiEncoding -> Status -> a -> Response Source #

Respond in the given encoding, with matching Content-Type.

httpApp Source #

Arguments

:: forall tx. IsChainState tx 
=> Tracer IO APIServerLog 
-> Value

Pre-rendered effective configuration (served at GET /config).

-> Chain tx IO 
-> Environment 
-> PParams LedgerEra 
-> IO (NodeState tx)

Get latest NodeState.

-> IO CommitInfo

A means to get commit info.

-> IO [TxIdType tx]

Get the pending commits (deposits)

-> (ClientInput tx -> IO ())

Callback to yield a ClientInput to the main event loop.

-> ApiTransactionTimeout

Timeout for transaction submission

-> TChan (Either (TimedServerOutput tx) (ClientMessage tx))

Channel to listen for events

-> Application 

Hydra HTTP server

respondPParams :: ApiEncoding -> PParams LedgerEra -> Response Source #

Respond with protocol parameters; the ledger PParams have no plain ToCBOR instance, so the CBOR case goes through the ledger's EncCBOR.

Handlers

handleDraftCommitUtxo Source #

Arguments

:: forall tx. IsChainState tx 
=> Tracer IO APIServerLog 
-> Environment 
-> PParams LedgerEra 
-> Chain tx IO 
-> IO (NodeState tx)

Get latest NodeState.

-> IO CommitInfo

A means to get commit info.

-> ApiEncoding

Request body encoding.

-> ApiEncoding

Response encoding.

-> ByteString

Request body.

-> IO Response 

Handle request to obtain a draft commit tx.

handleRecoverCommitUtxo :: forall tx. IsChainState tx => (ClientInput tx -> IO ()) -> ApiTransactionTimeout -> TChan (Either (TimedServerOutput tx) (ClientMessage tx)) -> Text -> ApiEncoding -> ByteString -> IO Response Source #

Handle request to recover a pending deposit.

handleSubmitUserTx Source #

Arguments

:: forall tx. (FromJSON tx, FromCBOR tx) 
=> Chain tx IO 
-> ApiEncoding

Request body encoding.

-> ApiEncoding

Response encoding.

-> ByteString

Request body.

-> IO Response 

Handle request to submit a cardano transaction.

handleDecommit :: forall tx. (FromJSON tx, FromCBOR tx) => (ClientInput tx -> IO ()) -> ApiTransactionTimeout -> TChan (Either (TimedServerOutput tx) (ClientMessage tx)) -> ApiEncoding -> ApiEncoding -> ByteString -> IO Response Source #

handleSideLoadSnapshot :: forall tx. IsChainState tx => (ClientInput tx -> IO ()) -> ApiTransactionTimeout -> TChan (Either (TimedServerOutput tx) (ClientMessage tx)) -> ApiEncoding -> ApiEncoding -> ByteString -> IO Response Source #

Handle request to side load confirmed snapshot.

handleSubmitL2Tx :: forall tx. IsChainState tx => (ClientInput tx -> IO ()) -> ApiTransactionTimeout -> TChan (Either (TimedServerOutput tx) (ClientMessage tx)) -> ApiEncoding -> ApiEncoding -> ByteString -> IO Response Source #

Handle request to submit a transaction to the head.

badRequest :: IsChainState tx => ApiEncoding -> PostTxError tx -> Response Source #

notFound :: ApiEncoding -> Response Source #