type: google.api.Service
config_version: 3

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
      # request streaming RPC, REST not supported
    - 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
    - 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.QueryProbability
      get: "/v2/router/mc/probability/{from_node}/{to_node}/{amt_msat}"
    - 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
      # request streaming RPC, REST not supported

    # 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: "*"

    # 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.DeriveNextKey
      post: "/v2/wallet/key/next"
      body: "*"
    - selector: walletrpc.WalletKit.DeriveKey
      post: "/v2/wallet/key"
      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: "*"

    # 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"