lnd.xprv/lnrpc/rest-annotations.yaml
Oliver Gugger 993167f14e
docs+lnrpc: enable bi-directional WebSockets
The grpc-gateway library that is used to transform REST calls into gRPC
uses a different method for reading a request body stream depending on
whether the RPC is a request-streaming one or not. We can't really find
out what kind of RPC the user is calling at runtime, so we add a new
parameter to the proxy that lists all request-streaming RPC calls.
In any case the client _has_ to send one request message initially to
kick off the request processing. Normally this can just be an empty
message. This can lead to problems if that empty message is not
expected by the gRPC server. But for the currently existing two
client-streaming RPCs this will only trigger a warning
(HTLC interceptor) or be ignored (channel acceptor).
2021-04-29 10:39:12 +02:00

340 lines
12 KiB
YAML

type: google.api.Service
config_version: 3
# Mapping for the grpc-gateway REST proxy.
# Please make sure to also update the `metadata.go` file when editing this file
# and adding a new client-streaming RPC!
http:
rules:
# rpc.proto
- selector: lnrpc.Lightning.WalletBalance
get: "/v1/balance/blockchain"
- selector: lnrpc.Lightning.ChannelBalance
get: "/v1/balance/channels"
- selector: lnrpc.Lightning.GetTransactions
get: "/v1/transactions"
- selector: lnrpc.Lightning.EstimateFee
get: "/v1/transactions/fee"
- selector: lnrpc.Lightning.SendCoins
post: "/v1/transactions"
body: "*"
- selector: lnrpc.Lightning.ListUnspent
get: "/v1/utxos"
- selector: lnrpc.Lightning.SubscribeTransactions
get: "/v1/transactions/subscribe"
- selector: lnrpc.Lightning.SendMany
post: "/v1/transactions/many"
body: "*"
- selector: lnrpc.Lightning.NewAddress
get: "/v1/newaddress"
- selector: lnrpc.Lightning.SignMessage
post: "/v1/signmessage"
body: "*"
- selector: lnrpc.Lightning.VerifyMessage
post: "/v1/verifymessage"
body: "*"
- selector: lnrpc.Lightning.ConnectPeer
post: "/v1/peers"
body: "*"
- selector: lnrpc.Lightning.DisconnectPeer
delete: "/v1/peers/{pub_key}"
- selector: lnrpc.Lightning.ListPeers
get: "/v1/peers"
- selector: lnrpc.Lightning.SubscribePeerEvents
get: "/v1/peers/subscribe"
- selector: lnrpc.Lightning.GetInfo
get: "/v1/getinfo"
- selector: lnrpc.Lightning.GetRecoveryInfo
get: "/v1/getrecoveryinfo"
- selector: lnrpc.Lightning.PendingChannels
get: "/v1/channels/pending"
- selector: lnrpc.Lightning.ListChannels
get: "/v1/channels"
- selector: lnrpc.Lightning.SubscribeChannelEvents
get: "/v1/channels/subscribe"
- selector: lnrpc.Lightning.ClosedChannels
get: "/v1/channels/closed"
- selector: lnrpc.Lightning.OpenChannelSync
post: "/v1/channels"
body: "*"
- selector: lnrpc.Lightning.OpenChannel
post: "/v1/channels/stream"
body: "*"
- selector: lnrpc.Lightning.FundingStateStep
post: "/v1/funding/step"
body: "*"
- selector: lnrpc.Lightning.ChannelAcceptor
post: "/v1/channels/acceptor"
body: "*"
- selector: lnrpc.Lightning.CloseChannel
delete: "/v1/channels/{channel_point.funding_txid_str}/{channel_point.output_index}"
- selector: lnrpc.Lightning.AbandonChannel
delete: "/v1/channels/abandon/{channel_point.funding_txid_str}/{channel_point.output_index}"
- selector: lnrpc.Lightning.SendPayment
post: "/v1/channels/transaction-stream"
body: "*"
- selector: lnrpc.Lightning.SendPaymentSync
post: "/v1/channels/transactions"
body: "*"
- selector: lnrpc.Lightning.SendToRoute
# deprecated, no REST endpoint
- selector: lnrpc.Lightning.SendToRouteSync
post: "/v1/channels/transactions/route"
body: "*"
- selector: lnrpc.Lightning.AddInvoice
post: "/v1/invoices"
body: "*"
- selector: lnrpc.Lightning.ListInvoices
get: "/v1/invoices"
- selector: lnrpc.Lightning.LookupInvoice
get: "/v1/invoice/{r_hash_str}"
- selector: lnrpc.Lightning.SubscribeInvoices
get: "/v1/invoices/subscribe"
- selector: lnrpc.Lightning.DecodePayReq
get: "/v1/payreq/{pay_req}"
- selector: lnrpc.Lightning.ListPayments
get: "/v1/payments"
- selector: lnrpc.Lightning.DeleteAllPayments
delete: "/v1/payments"
- selector: lnrpc.Lightning.DescribeGraph
get: "/v1/graph"
- selector: lnrpc.Lightning.GetNodeMetrics
get: "/v1/graph/nodemetrics"
- selector: lnrpc.Lightning.GetChanInfo
get: "/v1/graph/edge/{chan_id}"
- selector: lnrpc.Lightning.GetNodeInfo
get: "/v1/graph/node/{pub_key}"
- selector: lnrpc.Lightning.QueryRoutes
get: "/v1/graph/routes/{pub_key}/{amt}"
- selector: lnrpc.Lightning.GetNetworkInfo
get: "/v1/graph/info"
- selector: lnrpc.Lightning.StopDaemon
post: "/v1/stop"
body: "*"
- selector: lnrpc.Lightning.SubscribeChannelGraph
get: "/v1/graph/subscribe"
- selector: lnrpc.Lightning.DebugLevel
post: "/v1/debuglevel"
body: "*"
- selector: lnrpc.Lightning.FeeReport
get: "/v1/fees"
- selector: lnrpc.Lightning.UpdateChannelPolicy
post: "/v1/chanpolicy"
body: "*"
- selector: lnrpc.Lightning.ForwardingHistory
post: "/v1/switch"
body: "*"
- selector: lnrpc.Lightning.ExportChannelBackup
get: "/v1/channels/backup/{chan_point.funding_txid_str}/{chan_point.output_index}"
- selector: lnrpc.Lightning.ExportAllChannelBackups
get: "/v1/channels/backup"
- selector: lnrpc.Lightning.VerifyChanBackup
post: "/v1/channels/backup/verify"
body: "*"
- selector: lnrpc.Lightning.RestoreChannelBackups
post: "/v1/channels/backup/restore"
body: "*"
- selector: lnrpc.Lightning.SubscribeChannelBackups
get: "/v1/channels/backup/subscribe"
- selector: lnrpc.Lightning.BakeMacaroon
post: "/v1/macaroon"
body: "*"
- selector: lnrpc.Lightning.ListMacaroonIDs
get: "/v1/macaroon/ids"
- selector: lnrpc.Lightning.DeleteMacaroonID
delete: "/v1/macaroon/{root_key_id}"
- selector: lnrpc.Lightning.ListPermissions
get: "/v1/macaroon/permissions"
# walletunlocker.proto
- selector: lnrpc.WalletUnlocker.GenSeed
get: "/v1/genseed"
- selector: lnrpc.WalletUnlocker.InitWallet
post: "/v1/initwallet"
body: "*"
- selector: lnrpc.WalletUnlocker.UnlockWallet
post: "/v1/unlockwallet"
body: "*"
- selector: lnrpc.WalletUnlocker.ChangePassword
post: "/v1/changepassword"
body: "*"
# autopilotrpc/autopilot.proto
- selector: autopilotrpc.Autopilot.Status
get: "/v2/autopilot/status"
- selector: autopilotrpc.Autopilot.ModifyStatus
post: "/v2/autopilot/modify"
body: "*"
- selector: autopilotrpc.Autopilot.QueryScores
get: "/v2/autopilot/scores"
- selector: autopilotrpc.Autopilot.SetScores
post: "/v2/autopilot/scores"
body: "*"
# chainrpc/chainnotifier.proto
- selector: chainrpc.ChainNotifier.RegisterConfirmationsNtfn
post: "/v2/chainnotifier/register/confirmations"
body: "*"
- selector: chainrpc.ChainNotifier.RegisterSpendNtfn
post: "/v2/chainnotifier/register/spends"
body: "*"
- selector: chainrpc.ChainNotifier.RegisterBlockEpochNtfn
post: "/v2/chainnotifier/register/blocks"
body: "*"
# invoicesrpc/invoices.proto
- selector: invoicesrpc.Invoices.SubscribeSingleInvoice
get: "/v2/invoices/subscribe/{r_hash}"
- selector: invoicesrpc.Invoices.CancelInvoice
post: "/v2/invoices/cancel"
body: "*"
- selector: invoicesrpc.Invoices.AddHoldInvoice
post: "/v2/invoices/hodl"
body: "*"
- selector: invoicesrpc.Invoices.SettleInvoice
post: "/v2/invoices/settle"
body: "*"
# routerrpc/router.proto
- selector: routerrpc.Router.SendPaymentV2
post: "/v2/router/send"
body: "*"
- selector: routerrpc.Router.TrackPaymentV2
get: "/v2/router/track/{payment_hash}"
- selector: routerrpc.Router.EstimateRouteFee
post: "/v2/router/route/estimatefee"
body: "*"
- selector: routerrpc.Router.SendToRoute
# deprecated, no REST endpoint
- selector: routerrpc.Router.SendToRouteV2
post: "/v2/router/route/send"
body: "*"
- selector: routerrpc.Router.ResetMissionControl
post: "/v2/router/mc/reset"
body: "*"
- selector: routerrpc.Router.QueryMissionControl
get: "/v2/router/mc"
- selector: routerrpc.Router.GetMissionControlConfig
get: "/v2/router/mccfg"
- selector: routerroc.Router.SetMissionControlConfig
post: "/v2/router/mccfg"
body: "*"
- selector: routerrpc.Router.QueryProbability
get: "/v2/router/mc/probability/{from_node}/{to_node}/{amt_msat}"
- selector: routerrpc.Router.XImportMissionControl
post: "/v2/router/x/importhistory"
body: "*"
- selector: routerrpc.Router.BuildRoute
post: "/v2/router/route"
body: "*"
- selector: routerrpc.Router.SubscribeHtlcEvents
get: "/v2/router/htlcevents"
- selector: routerrpc.Router.SendPayment
# deprecated, no REST endpoint
- selector: routerrpc.Router.TrackPayment
# deprecated, no REST endpoint
- selector: routerrpc.HtlcInterceptor
post: "/v2/router/htlcinterceptor"
body: "*"
- selector: routerrpc.UpdateChanStatus
post: "/v2/router/updatechanstatus"
body: "*"
# signrpc/signer.proto
- selector: signrpc.Signer.SignOutputRaw
post: "/v2/signer/signraw"
body: "*"
- selector: signrpc.Signer.ComputeInputScript
post: "/v2/signer/inputscript"
body: "*"
- selector: signrpc.Signer.SignMessage
post: "/v2/signer/signmessage"
body: "*"
- selector: signrpc.Signer.VerifyMessage
post: "/v2/signer/verifymessage"
body: "*"
- selector: signrpc.Signer.DeriveSharedKey
post: "/v2/signer/sharedkey"
body: "*"
# stateservice.proto
- selector: lnrpc.State.SubscribeState
get: "/v1/state/subscribe"
# verrpc/verrpc.proto
- selector: verrpc.Versioner.GetVersion
get: "/v2/versioner/version"
# walletrpc/walletkit.proto
- selector: walletrpc.WalletKit.ListUnspent
post: "/v2/wallet/utxos"
- selector: walletrpc.WalletKit.LeaseOutput
post: "/v2/wallet/utxos/lease"
body: "*"
- selector: walletrpc.WalletKit.ReleaseOutput
post: "/v2/wallet/utxos/release"
body: "*"
- selector: walletrpc.WalletKit.ListLeases
post: "/v2/wallet/utxos/leases"
- selector: walletrpc.WalletKit.DeriveNextKey
post: "/v2/wallet/key/next"
body: "*"
- selector: walletrpc.WalletKit.DeriveKey
post: "/v2/wallet/key"
body: "*"
- selector: walletrpc.WalletKit.ImportPublicKey
post: "/v2/wallet/key/import"
body: "*"
- selector: walletrpc.WalletKit.NextAddr
post: "/v2/wallet/address/next"
body: "*"
- selector: walletrpc.WalletKit.PublishTransaction
post: "/v2/wallet/tx"
body: "*"
- selector: walletrpc.WalletKit.SendOutputs
post: "/v2/wallet/send"
body: "*"
- selector: walletrpc.WalletKit.EstimateFee
get: "/v2/wallet/estimatefee/{conf_target}"
- selector: walletrpc.WalletKit.PendingSweeps
get: "/v2/wallet/sweeps/pending"
- selector: walletrpc.WalletKit.BumpFee
post: "/v2/wallet/bumpfee"
body: "*"
- selector: walletrpc.WalletKit.ListSweeps
get: "/v2/wallet/sweeps"
- selector: walletrpc.WalletKit.LabelTransaction
post: "/v2/wallet/tx/label"
body: "*"
- selector: walletrpc.WalletKit.FundPsbt
post: "/v2/wallet/psbt/fund"
body: "*"
- selector: walletrpc.WalletKit.FinalizePsbt
post: "/v2/wallet/psbt/finalize"
body: "*"
- selector: walletrpc.WalletKit.ListAccounts
get: "/v2/wallet/accounts"
- selector: walletrpc.WalletKit.ImportAccount
post: "/v2/wallet/accounts/import"
body: "*"
# watchtowerrpc/watchtower.proto
- selector: watchtowerrpc.Watchtower.GetInfo
get: "/v2/watchtower/server"
# wtclientrpc/wtclient.proto
- selector: wtclientrpc.WatchtowerClient.AddTower
post: "/v2/watchtower/client"
body: "*"
- selector: wtclientrpc.WatchtowerClient.RemoveTower
delete: "/v2/watchtower/client/{pubkey}"
- selector: wtclientrpc.WatchtowerClient.ListTowers
get: "/v2/watchtower/client"
- selector: wtclientrpc.WatchtowerClient.GetTowerInfo
get: "/v2/watchtower/client/info/{pubkey}"
- selector: wtclientrpc.WatchtowerClient.Stats
get: "/v2/watchtower/client/stats"
- selector: wtclientrpc.WatchtowerClient.Policy
get: "/v2/watchtower/client/policy"