"summary":"QueryScores queries all available autopilot heuristics, in addition to any\nactive combination of these heruristics, for the scores they would give to\nthe given nodes.",
"summary":"RegisterBlockEpochNtfn is a synchronous response-streaming RPC that\nregisters an intent for a client to be notified of blocks in the chain. The\nstream will return a hash and height tuple of a block for each new/stale\nblock in the chain. It is the client's responsibility to determine whether\nthe tuple returned is for a new or stale block in the chain.",
"description":"A client can also request a historical backlog of blocks from a particular\npoint. This allows clients to be idempotent by ensuring that they do not\nmissing processing a single block within the chain.",
"summary":"RegisterConfirmationsNtfn is a synchronous response-streaming RPC that\nregisters an intent for a client to be notified once a confirmation request\nhas reached its required number of confirmations on-chain.",
"description":"A client can specify whether the confirmation request should be for a\nparticular transaction by its hash or for an output script by specifying a\nzero hash.",
"summary":"RegisterSpendNtfn is a synchronous response-streaming RPC that registers an\nintent for a client to be notification once a spend request has been spent\nby a transaction that has confirmed on-chain.",
"description":"A client can specify whether the spend request should be for a particular\noutpoint or for an output script by specifying a zero outpoint.",
"description":"The transaction hash for which we should request a confirmation notification\nfor. If set to a hash of all zeros, then the confirmation notification will\nbe requested for the script instead."
},
"script":{
"type":"string",
"format":"byte",
"description":"An output script within a transaction with the hash above which will be used\nby light clients to match block filters. If the transaction hash is set to a\nhash of all zeros, then a confirmation notification will be requested for\nthis script instead."
},
"num_confs":{
"type":"integer",
"format":"int64",
"description":"The number of desired confirmations the transaction/output script should\nreach before dispatching a confirmation notification."
},
"height_hint":{
"type":"integer",
"format":"int64",
"description":"The earliest height in the chain for which the transaction/output script\ncould have been included in a block. This should in most cases be set to the\nbroadcast height of the transaction/output script."
}
}
},
"chainrpcOutpoint":{
"type":"object",
"properties":{
@ -129,6 +280,25 @@
}
}
},
"chainrpcSpendRequest":{
"type":"object",
"properties":{
"outpoint":{
"$ref":"#/definitions/chainrpcOutpoint",
"description":"The outpoint for which we should request a spend notification for. If set to\na zero outpoint, then the spend notification will be requested for the\nscript instead."
},
"script":{
"type":"string",
"format":"byte",
"description":"The output script for the outpoint above. This will be used by light clients\nto match block filters. If the outpoint is set to a zero outpoint, then a\nspend notification will be requested for this script instead."
},
"height_hint":{
"type":"integer",
"format":"int64",
"description":"The earliest height in the chain for which the outpoint/output script could\nhave been spent. This should in most cases be set to the broadcast height of\nthe outpoint/output script."
"summary":"CancelInvoice cancels a currently open invoice. If the invoice is already\ncanceled, this call will succeed. If the invoice is already settled, it will\nfail.",
"summary":"SubscribeSingleInvoice returns a uni-directional stream (server -\u003e client)\nto notify the client of state transitions of the specified invoice.\nInitially the current invoice state is always sent out.",
"description":"Hash corresponding to the (hold) invoice to subscribe to.",
"in":"path",
"required":true,
"type":"string",
"format":"byte"
}
],
"tags":[
"Invoices"
]
}
}
},
"definitions":{
"InvoiceInvoiceState":{
"type":"string",
@ -26,6 +164,63 @@
],
"default":"OPEN"
},
"invoicesrpcAddHoldInvoiceRequest":{
"type":"object",
"properties":{
"memo":{
"type":"string",
"description":"An optional memo to attach along with the invoice. Used for record keeping\npurposes for the invoice's creator, and will also be set in the description\nfield of the encoded payment request if the description_hash field is not\nbeing used."
},
"hash":{
"type":"string",
"format":"byte",
"title":"The hash of the preimage"
},
"value":{
"type":"string",
"format":"int64",
"description":"The fields value and value_msat are mutually exclusive.",
"title":"The value of this invoice in satoshis"
},
"value_msat":{
"type":"string",
"format":"int64",
"description":"The fields value and value_msat are mutually exclusive.",
"title":"The value of this invoice in millisatoshis"
},
"description_hash":{
"type":"string",
"format":"byte",
"description":"Hash (SHA-256) of a description of the payment. Used if the description of\npayment (memo) is too long to naturally fit within the description field\nof an encoded payment request."
},
"expiry":{
"type":"string",
"format":"int64",
"description":"Payment request expiry time in seconds. Default is 3600 (1 hour)."
},
"fallback_addr":{
"type":"string",
"description":"Fallback on-chain address."
},
"cltv_expiry":{
"type":"string",
"format":"uint64",
"description":"Delta to use for the time-lock of the CLTV extended to the final hop."
},
"route_hints":{
"type":"array",
"items":{
"$ref":"#/definitions/lnrpcRouteHint"
},
"description":"Route hints that can each be individually used to assist in reaching the\ninvoice's destination."
},
"private":{
"type":"boolean",
"format":"boolean",
"description":"Whether this invoice should include routing hints for private channels."
}
}
},
"invoicesrpcAddHoldInvoiceResp":{
"type":"object",
"properties":{
@ -35,9 +230,29 @@
}
}
},
"invoicesrpcCancelInvoiceMsg":{
"type":"object",
"properties":{
"payment_hash":{
"type":"string",
"format":"byte",
"description":"Hash corresponding to the (hold) invoice to cancel."
}
}
},
"invoicesrpcCancelInvoiceResp":{
"type":"object"
},
"invoicesrpcSettleInvoiceMsg":{
"type":"object",
"properties":{
"preimage":{
"type":"string",
"format":"byte",
"description":"Externally discovered pre-image that should be used to settle the hold\ninvoice."
"summary":"BuildRoute builds a fully specified route based on a list of hop public\nkeys. It retrieves the relevant channel policies from the graph in order to\ncalculate the correct fees and time locks.",
"summary":"EstimateRouteFee allows callers to obtain a lower bound w.r.t how much it\nmay cost to send an HTLC to the target end destination.",
"operationId":"EstimateRouteFee",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/routerrpcRouteFeeResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/routerrpcRouteFeeRequest"
}
}
],
"tags":[
"Router"
]
}
},
"/v2/router/route/send":{
"post":{
"summary":"SendToRouteV2 attempts to make a payment via the specified route. This method\ndiffers from SendPayment in that it allows users to specify a full route\nmanually. This can be used for things like rebalancing, and atomic swaps.",
"summary":"SendPaymentV2 attempts to route a payment described by the passed\nPaymentRequest to the final destination. The call returns a stream of\npayment updates.",
"description":"The hash of the payment to look up.",
"in":"path",
"required":true,
"type":"string",
"format":"byte"
},
{
"name":"no_inflight_updates",
"description":"If set, only the final payment update is streamed back. Intermediate updates\nthat show which htlcs are still in flight are suppressed.",
"in":"query",
"required":false,
"type":"boolean",
"format":"boolean"
}
],
"tags":[
"Router"
]
}
}
},
"definitions":{
"FailureFailureCode":{
"type":"string",
@ -482,6 +807,34 @@
}
}
},
"routerrpcBuildRouteRequest":{
"type":"object",
"properties":{
"amt_msat":{
"type":"string",
"format":"int64",
"description":"The amount to send expressed in msat. If set to zero, the minimum routable\namount is used."
},
"final_cltv_delta":{
"type":"integer",
"format":"int32",
"title":"CLTV delta from the current height that should be used for the timelock\nof the final hop"
},
"outgoing_chan_id":{
"type":"string",
"format":"uint64",
"description":"The channel id of the channel that must be taken to the first hop. If zero,\nany channel may be used."
},
"hop_pubkeys":{
"type":"array",
"items":{
"type":"string",
"format":"byte"
},
"description":"A list of hops that defines the route. This does not include the source hop\npubkey."
}
}
},
"routerrpcBuildRouteResponse":{
"type":"object",
"properties":{
@ -751,9 +1104,27 @@
}
}
},
"routerrpcResetMissionControlRequest":{
"type":"object"
},
"routerrpcResetMissionControlResponse":{
"type":"object"
},
"routerrpcRouteFeeRequest":{
"type":"object",
"properties":{
"dest":{
"type":"string",
"format":"byte",
"description":"The destination once wishes to obtain a routing fee quote to."
},
"amt_sat":{
"type":"string",
"format":"int64",
"description":"The amount one wishes to send to the target destination."
}
}
},
"routerrpcRouteFeeResponse":{
"type":"object",
"properties":{
@ -769,6 +1140,129 @@
}
}
},
"routerrpcSendPaymentRequest":{
"type":"object",
"properties":{
"dest":{
"type":"string",
"format":"byte",
"title":"The identity pubkey of the payment recipient"
},
"amt":{
"type":"string",
"format":"int64",
"description":"Number of satoshis to send.\n\nThe fields amt and amt_msat are mutually exclusive."
},
"amt_msat":{
"type":"string",
"format":"int64",
"description":"Number of millisatoshis to send.\n\nThe fields amt and amt_msat are mutually exclusive."
},
"payment_hash":{
"type":"string",
"format":"byte",
"title":"The hash to use within the payment's HTLC"
},
"final_cltv_delta":{
"type":"integer",
"format":"int32",
"description":"The CLTV delta from the current height that should be used to set the\ntimelock for the final hop."
},
"payment_request":{
"type":"string",
"description":"A bare-bones invoice for a payment within the Lightning Network. With the\ndetails of the invoice, the sender has all the data necessary to send a\npayment to the recipient. The amount in the payment request may be zero. In\nthat case it is required to set the amt field as well. If no payment request\nis specified, the following fields are required: dest, amt and payment_hash."
},
"timeout_seconds":{
"type":"integer",
"format":"int32",
"description":"An upper limit on the amount of time we should spend when attempting to\nfulfill the payment. This is expressed in seconds. If we cannot make a\nsuccessful payment within this time frame, an error will be returned.\nThis field must be non-zero."
},
"fee_limit_sat":{
"type":"string",
"format":"int64",
"description":"The maximum number of satoshis that will be paid as a fee of the payment.\nIf this field is left to the default value of 0, only zero-fee routes will\nbe considered. This usually means single hop routes connecting directly to\nthe destination. To send the payment without a fee limit, use max int here.\n\nThe fields fee_limit_sat and fee_limit_msat are mutually exclusive."
},
"fee_limit_msat":{
"type":"string",
"format":"int64",
"description":"The maximum number of millisatoshis that will be paid as a fee of the\npayment. If this field is left to the default value of 0, only zero-fee\nroutes will be considered. This usually means single hop routes connecting\ndirectly to the destination. To send the payment without a fee limit, use\nmax int here.\n\nThe fields fee_limit_sat and fee_limit_msat are mutually exclusive."
},
"outgoing_chan_id":{
"type":"string",
"format":"uint64",
"description":"Deprecated, use outgoing_chan_ids. The channel id of the channel that must\nbe taken to the first hop. If zero, any channel may be used (unless\noutgoing_chan_ids are set)."
},
"outgoing_chan_ids":{
"type":"array",
"items":{
"type":"string",
"format":"uint64"
},
"description":"The channel ids of the channels are allowed for the first hop. If empty,\nany channel may be used."
},
"last_hop_pubkey":{
"type":"string",
"format":"byte",
"description":"The pubkey of the last hop of the route. If empty, any hop may be used."
},
"cltv_limit":{
"type":"integer",
"format":"int32",
"description":"An optional maximum total time lock for the route. This should not exceed\nlnd's `--max-cltv-expiry` setting. If zero, then the value of\n`--max-cltv-expiry` is enforced."
},
"route_hints":{
"type":"array",
"items":{
"$ref":"#/definitions/lnrpcRouteHint"
},
"description":"Optional route hints to reach the destination through private channels."
},
"dest_custom_records":{
"type":"object",
"additionalProperties":{
"type":"string",
"format":"byte"
},
"description":"An optional field that can be used to pass an arbitrary set of TLV records\nto a peer which understands the new records. This can be used to pass\napplication specific data during the payment attempt. Record types are\nrequired to be in the custom range \u003e= 65536. When using REST, the values\nmust be encoded as base64."
},
"allow_self_payment":{
"type":"boolean",
"format":"boolean",
"description":"If set, circular payments to self are permitted."
},
"dest_features":{
"type":"array",
"items":{
"$ref":"#/definitions/lnrpcFeatureBit"
},
"description":"Features assumed to be supported by the final node. All transitive feature\ndependencies must also be set properly. For a given feature bit pair, either\noptional or remote may be set, but not both. If this field is nil or empty,\nthe router will try to load destination features from the graph as a\nfallback."
},
"max_parts":{
"type":"integer",
"format":"int64",
"description":"The maximum number of partial payments that may be use to complete the full\namount."
},
"no_inflight_updates":{
"type":"boolean",
"format":"boolean",
"description":"If set, only the final payment update is streamed back. Intermediate updates\nthat show which htlcs are still in flight are suppressed."
}
}
},
"routerrpcSendToRouteRequest":{
"type":"object",
"properties":{
"payment_hash":{
"type":"string",
"format":"byte",
"description":"The payment hash to use for the HTLC."
},
"route":{
"$ref":"#/definitions/lnrpcRoute",
"description":"Route that should be used to attempt to complete the payment."
"summary":"SubscribeChannelBackups allows a client to sub-subscribe to the most up to\ndate information concerning the state of all channel backups. Each time a\nnew channel is added, we return the new set of channels, along with a\nmulti-chan backup containing the backup info for all channels. Each time a\nchannel is closed, we send a new update, which contains new new chan back\nups, but the updated set of encrypted multi-chan backups with the closed\nchannel(s) removed.",
"title":"Stream result of lnrpcChanBackupSnapshot"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
"Lightning"
]
}
},
"/v1/channels/backup/verify":{
"post":{
"summary":"VerifyChanBackup allows a caller to verify the integrity of a channel backup\nsnapshot. This method will accept either a packed Single or a packed Multi.\nSpecifying both will result in an error.",
"summary":"lncli: `openchannel`\nOpenChannel attempts to open a singly funded channel specified in the\nrequest to a remote peer. Users are able to specify a target number of\nblocks that the funding transaction should be confirmed in, or a manual fee\nrate to us for the funding transaction. If neither are specified, then a\nlax block confirmation target is used. Each OpenStatusUpdate will return\nthe pending channel ID of the in-progress channel. Depending on the\narguments specified in the OpenChannelRequest, this pending channel ID can\nthen be used to manually progress the channel funding flow.",
"summary":"SubscribeChannelEvents creates a uni-directional stream from the server to\nthe client in which any updates relevant to the state of the channels are\nsent over. Events include new active channels, inactive channels, and closed\nchannels.",
"summary":"lncli: `debuglevel`\nDebugLevel allows a caller to programmatically set the logging verbosity of\nlnd. The logging can be targeted according to a coarse daemon-wide logging\nlevel, or in a granular fashion to specify the logging for a target\nsub-system.",
"operationId":"DebugLevel",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/lnrpcDebugLevelResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/lnrpcDebugLevelRequest"
}
}
],
"tags":[
"Lightning"
]
}
},
"/v1/fees":{
"get":{
"summary":"lncli: `feereport`\nFeeReport allows the caller to obtain a report detailing the current fee\nschedule enforced by the node globally for each channel.",
@ -526,6 +760,12 @@
"schema":{
"$ref":"#/definitions/lnrpcFeeReportResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
@ -533,6 +773,39 @@
]
}
},
"/v1/funding/step":{
"post":{
"summary":"FundingStateStep is an advanced funding related call that allows the caller\nto either execute some preparatory steps for a funding workflow, or\nmanually progress a funding workflow. The primary way a funding flow is\nidentified is via its pending channel ID. As an example, this method can be\nused to specify that we're expecting a funding flow for a particular\npending channel ID, for which we need to use specific parameters.\nAlternatively, this can be used to interactively drive PSBT signing for\nfunding for partially complete funding transactions.",
"operationId":"FundingStateStep",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/lnrpcFundingStateStepResp"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/lnrpcFundingTransitionMsg"
}
}
],
"tags":[
"Lightning"
]
}
},
"/v1/getinfo":{
"get":{
"summary":"lncli: `getinfo`\nGetInfo returns general information concerning the lightning node including\nit's identity pubkey, alias, the chains it is connected to, and information\nconcerning the number of open+pending channels.",
@ -543,6 +816,12 @@
"schema":{
"$ref":"#/definitions/lnrpcGetInfoResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
@ -560,6 +839,12 @@
"schema":{
"$ref":"#/definitions/lnrpcChannelGraph"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -587,6 +872,12 @@
"schema":{
"$ref":"#/definitions/lnrpcChannelEdge"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -614,6 +905,12 @@
"schema":{
"$ref":"#/definitions/lnrpcNetworkInfo"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
@ -631,6 +928,12 @@
"schema":{
"$ref":"#/definitions/lnrpcNodeInfo"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -665,6 +968,12 @@
"schema":{
"$ref":"#/definitions/lnrpcNodeMetricsResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -699,6 +1008,12 @@
"schema":{
"$ref":"#/definitions/lnrpcQueryRoutesResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -844,6 +1159,38 @@
]
}
},
"/v1/graph/subscribe":{
"get":{
"summary":"SubscribeChannelGraph launches a streaming RPC that allows the caller to\nreceive notifications upon any changes to the channel graph topology from\nthe point of view of the responding node. Events notified include: new\nnodes coming online, nodes updating their authenticated attributes, new\nchannels being advertised, updates in the routing policy for a directional\nchannel edge, and when channels are closed on-chain.",
"title":"Stream result of lnrpcGraphTopologyUpdate"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
"Lightning"
]
}
},
"/v1/invoice/{r_hash_str}":{
"get":{
"summary":"lncli: `lookupinvoice`\nLookupInvoice attempts to look up an invoice according to its payment hash.\nThe passed payment hash *must* be exactly 32 bytes, if not, an error is\nreturned.",
"summary":"SubscribePeerEvents creates a uni-directional stream from the server to\nthe client in which any events relevant to the state of peers are sent\nover. Events include peers going online and offline.",
"summary":"lncli: `disconnect`\nDisconnectPeer attempts to disconnect one peer from another identified by a\ngiven pubKey. In the case that we currently have a pending or active channel\nwith the target peer, then this action will be not be allowed.",
"summary":"lncli: `stop`\nStopDaemon will send a shutdown request to the interrupt handler, triggering\na graceful shutdown of the daemon.",
"operationId":"StopDaemon",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/lnrpcStopResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/lnrpcStopRequest"
}
}
],
"tags":[
"Lightning"
]
}
},
"/v1/switch":{
"post":{
"summary":"lncli: `fwdinghistory`\nForwardingHistory allows the caller to query the htlcswitch for a record of\nall HTLCs forwarded within the target time range, and integer offset\nwithin that time range. If no time-range is specified, then the first chunk\nof the past 24 hrs of forwarding history are returned.",
"summary":"lncli: `sendmany`\nSendMany handles a request for a transaction that creates multiple specified\noutputs in parallel. If neither target_conf, or sat_per_byte are set, then\nthe internal wallet will consult its fee model to determine a fee for the\ndefault confirmation target.",
"operationId":"SendMany",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/lnrpcSendManyResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/lnrpcSendManyRequest"
}
}
],
"tags":[
"Lightning"
]
}
},
"/v1/transactions/subscribe":{
"get":{
"summary":"SubscribeTransactions creates a uni-directional stream from the server to\nthe client in which any newly discovered transactions relevant to the\nwallet are sent over.",
"description":"The height from which to list transactions, inclusive. If this value is\ngreater than end_height, transactions will be read in reverse.",
"in":"query",
"required":false,
"type":"integer",
"format":"int32"
},
{
"name":"end_height",
"description":"The height until which to list transactions, inclusive. To include\nunconfirmed transactions, this value should be set to -1, which will\nreturn transactions from start_height until the current chain tip and\nunconfirmed transactions. If no end_height is provided, the call will\ndefault to this option.",
"in":"query",
"required":false,
"type":"integer",
"format":"int32"
}
],
"tags":[
"Lightning"
]
}
},
"/v1/utxos":{
"get":{
"summary":"lncli: `listunspent`\nDeprecated, use walletrpc.ListUnspent instead.",
@ -1372,6 +1978,12 @@
"schema":{
"$ref":"#/definitions/lnrpcListUnspentResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -1407,6 +2019,12 @@
"schema":{
"$ref":"#/definitions/lnrpcVerifyMessageResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
@ -2446,6 +3064,18 @@
"lnrpcConnectPeerResponse":{
"type":"object"
},
"lnrpcDebugLevelRequest":{
"type":"object",
"properties":{
"show":{
"type":"boolean",
"format":"boolean"
},
"level_spec":{
"type":"string"
}
}
},
"lnrpcDebugLevelResponse":{
"type":"object",
"properties":{
@ -2782,6 +3412,27 @@
"lnrpcFundingStateStepResp":{
"type":"object"
},
"lnrpcFundingTransitionMsg":{
"type":"object",
"properties":{
"shim_register":{
"$ref":"#/definitions/lnrpcFundingShim",
"description":"The funding shim to register. This should be used before any\nchannel funding has began by the remote party, as it is intended as a\npreparatory step for the full channel funding."
},
"shim_cancel":{
"$ref":"#/definitions/lnrpcFundingShimCancel",
"description":"Used to cancel an existing registered funding shim."
},
"psbt_verify":{
"$ref":"#/definitions/lnrpcFundingPsbtVerify",
"description":"Used to continue a funding flow that was initiated to be executed\nthrough a PSBT. This step verifies that the PSBT contains the correct\noutputs to fund the channel."
},
"psbt_finalize":{
"$ref":"#/definitions/lnrpcFundingPsbtFinalize",
"description":"Used to continue a funding flow that was initiated to be executed\nthrough a PSBT. This step finalizes the funded and signed PSBT, finishes\nnegotiation with the peer and finally publishes the resulting funding\ntransaction."
}
}
},
"lnrpcGetInfoResponse":{
"type":"object",
"properties":{
@ -4247,6 +4898,33 @@
}
}
},
"lnrpcSendManyRequest":{
"type":"object",
"properties":{
"AddrToAmount":{
"type":"object",
"additionalProperties":{
"type":"string",
"format":"int64"
},
"title":"The map from addresses to amounts"
},
"target_conf":{
"type":"integer",
"format":"int32",
"description":"The target number of blocks that this transaction should be confirmed\nby."
},
"sat_per_byte":{
"type":"string",
"format":"int64",
"description":"A manual fee rate set in sat/byte that should be used when crafting the\ntransaction."
},
"label":{
"type":"string",
"description":"An optional label for the transaction, limited to 500 characters."
}
}
},
"lnrpcSendManyResponse":{
"type":"object",
"properties":{
@ -4393,6 +5071,9 @@
}
}
},
"lnrpcStopRequest":{
"type":"object"
},
"lnrpcStopResponse":{
"type":"object"
},
@ -4569,23 +5250,19 @@
}
}
},
"runtimeStreamError":{
"runtimeError":{
"type":"object",
"properties":{
"grpc_code":{
"type":"integer",
"format":"int32"
"error":{
"type":"string"
},
"http_code":{
"code":{
"type":"integer",
"format":"int32"
},
"message":{
"type":"string"
},
"http_status":{
"type":"string"
},
"details":{
"type":"array",
"items":{
@ -4593,128 +5270,31 @@
}
}
}
}
},
"x-stream-definitions":{
"lnrpcChanBackupSnapshot":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/lnrpcChanBackupSnapshot"
},
"error":{
"$ref":"#/definitions/runtimeStreamError"
}
},
"title":"Stream result of lnrpcChanBackupSnapshot"
},
"lnrpcChannelAcceptRequest":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/lnrpcChannelAcceptRequest"
},
"error":{
"$ref":"#/definitions/runtimeStreamError"
}
},
"title":"Stream result of lnrpcChannelAcceptRequest"
},
"lnrpcChannelEventUpdate":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/lnrpcChannelEventUpdate"
},
"error":{
"$ref":"#/definitions/runtimeStreamError"
}
},
"title":"Stream result of lnrpcChannelEventUpdate"
},
"lnrpcCloseStatusUpdate":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/lnrpcCloseStatusUpdate"
},
"error":{
"$ref":"#/definitions/runtimeStreamError"
}
},
"title":"Stream result of lnrpcCloseStatusUpdate"
},
"lnrpcGraphTopologyUpdate":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/lnrpcGraphTopologyUpdate"
},
"error":{
"$ref":"#/definitions/runtimeStreamError"
}
},
"title":"Stream result of lnrpcGraphTopologyUpdate"
"summary":"ComputeInputScript generates a complete InputIndex for the passed\ntransaction with the signature as defined within the passed SignDescriptor.\nThis method should be capable of generating the proper input script for\nboth regular p2wkh output and p2wkh outputs nested within a regular p2sh\noutput.",
"description":"Note that when using this method to sign inputs belonging to the wallet,\nthe only items of the SignDescriptor that need to be populated are pkScript\nin the TxOut field, the value in that same field, and finally the input\nindex.",
"operationId":"ComputeInputScript",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcInputScriptResp"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcSignReq"
}
}
],
"tags":[
"Signer"
]
}
},
"/v2/signer/sharedkey":{
"post":{
"summary":"DeriveSharedKey returns a shared secret key by performing Diffie-Hellman key\nderivation between the ephemeral public key in the request and the node's\nkey specified in the key_loc parameter (or the node's identity private key\nif no key locator is specified):\nP_shared = privKeyNode * ephemeralPubkey\nThe resulting shared public key is serialized in the compressed format and\nhashed with sha256, resulting in the final key length of 256bit.",
"operationId":"DeriveSharedKey",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcSharedKeyResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcSharedKeyRequest"
}
}
],
"tags":[
"Signer"
]
}
},
"/v2/signer/signmessage":{
"post":{
"summary":"SignMessage signs a message with the key specified in the key locator. The\nreturned signature is fixed-size LN wire format encoded.",
"description":"The main difference to SignMessage in the main RPC is that a specific key is\nused to sign the message instead of the node identity private key.",
"operationId":"SignMessage",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcSignMessageResp"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcSignMessageReq"
}
}
],
"tags":[
"Signer"
]
}
},
"/v2/signer/signraw":{
"post":{
"summary":"SignOutputRaw is a method that can be used to generated a signature for a\nset of inputs/outputs to a transaction. Each request specifies details\nconcerning how the outputs should be signed, which keys they should be\nsigned with, and also any optional tweaks. The return value is a fixed\n64-byte signature (the same format as we use on the wire in Lightning).",
"description":"If we are unable to sign using the specified keys, then an error will be\nreturned.",
"operationId":"SignOutputRaw",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcSignResp"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcSignReq"
}
}
],
"tags":[
"Signer"
]
}
},
"/v2/signer/verifymessage":{
"post":{
"summary":"VerifyMessage verifies a signature over a message using the public key\nprovided. The signature must be fixed-size LN wire format encoded.",
"description":"The main difference to VerifyMessage in the main RPC is that the public key\nused to sign the message does not have to be a node known to the network.",
"operationId":"VerifyMessage",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcVerifyMessageResp"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcVerifyMessageReq"
}
}
],
"tags":[
"Signer"
]
}
}
},
"definitions":{
"protobufAny":{
"type":"object",
"properties":{
"type_url":{
"type":"string"
},
"value":{
"type":"string",
"format":"byte"
}
}
},
"runtimeError":{
"type":"object",
"properties":{
"error":{
"type":"string"
},
"code":{
"type":"integer",
"format":"int32"
},
"message":{
"type":"string"
},
"details":{
"type":"array",
"items":{
"$ref":"#/definitions/protobufAny"
}
}
}
},
"signrpcInputScript":{
"type":"object",
"properties":{
@ -75,6 +274,20 @@
}
}
},
"signrpcSharedKeyRequest":{
"type":"object",
"properties":{
"ephemeral_pubkey":{
"type":"string",
"format":"byte",
"description":"The ephemeral public key to use for the DH key derivation."
},
"key_loc":{
"$ref":"#/definitions/signrpcKeyLocator",
"description":"The optional key locator of the local key that should be used. If this\nparameter is not set then the node's identity private key will be used."
}
}
},
"signrpcSharedKeyResponse":{
"type":"object",
"properties":{
@ -124,6 +337,20 @@
}
}
},
"signrpcSignMessageReq":{
"type":"object",
"properties":{
"msg":{
"type":"string",
"format":"byte",
"description":"The message to be signed."
},
"key_loc":{
"$ref":"#/definitions/signrpcKeyLocator",
"description":"The key locator that identifies which key to use for signing."
}
}
},
"signrpcSignMessageResp":{
"type":"object",
"properties":{
@ -134,6 +361,23 @@
}
}
},
"signrpcSignReq":{
"type":"object",
"properties":{
"raw_tx_bytes":{
"type":"string",
"format":"byte",
"description":"The raw bytes of the transaction to be signed."
},
"sign_descs":{
"type":"array",
"items":{
"$ref":"#/definitions/signrpcSignDescriptor"
},
"description":"A set of sign descriptors, for each input to be signed."
}
}
},
"signrpcSignResp":{
"type":"object",
"properties":{
@ -162,6 +406,26 @@
}
}
},
"signrpcVerifyMessageReq":{
"type":"object",
"properties":{
"msg":{
"type":"string",
"format":"byte",
"description":"The message over which the signature is to be verified."
},
"signature":{
"type":"string",
"format":"byte",
"description":"The fixed-size LN wire encoded signature to be verified over the given\nmessage."
},
"pubkey":{
"type":"string",
"format":"byte",
"description":"The public key the signature has to be valid for."
"summary":"NextAddr returns the next unused address within the wallet.",
"operationId":"NextAddr",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/walletrpcAddrResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/walletrpcAddrRequest"
}
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/bumpfee":{
"post":{
"summary":"BumpFee bumps the fee of an arbitrary input within a transaction. This RPC\ntakes a different approach than bitcoind's bumpfee command. lnd has a\ncentral batching engine in which inputs with similar fee rates are batched\ntogether to save on transaction fees. Due to this, we cannot rely on\nbumping the fee on a specific transaction, since transactions can change at\nany point with the addition of new inputs. The list of inputs that\ncurrently exist within lnd's central batching engine can be retrieved\nthrough the PendingSweeps RPC.",
"description":"When bumping the fee of an input that currently exists within lnd's central\nbatching engine, a higher fee transaction will be created that replaces the\nlower fee transaction through the Replace-By-Fee (RBF) policy. If it\n\nThis RPC also serves useful when wanting to perform a Child-Pays-For-Parent\n(CPFP), where the child transaction pays for its parent's fee. This can be\ndone by specifying an outpoint within the low fee transaction that is under\nthe control of the wallet.\n\nThe fee preference can be expressed either as a specific fee rate or a delta\nof blocks in which the output should be swept on-chain within. If a fee\npreference is not explicitly specified, then an error is returned.\n\nNote that this RPC currently doesn't perform any validation checks on the\nfee preference being provided. For now, the responsibility of ensuring that\nthe new fee preference is sufficient is delegated to the user.",
"operationId":"BumpFee",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/walletrpcBumpFeeResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/walletrpcBumpFeeRequest"
}
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/estimatefee/{conf_target}":{
"get":{
"summary":"EstimateFee attempts to query the internal fee estimator of the wallet to\ndetermine the fee (in sat/kw) to attach to a transaction in order to\nachieve the confirmation target.",
"description":"The number of confirmations to shoot for when estimating the fee.",
"in":"path",
"required":true,
"type":"integer",
"format":"int32"
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/key":{
"post":{
"summary":"DeriveKey attempts to derive an arbitrary key specified by the passed\nKeyLocator.",
"operationId":"DeriveKey",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcKeyDescriptor"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/signrpcKeyLocator"
}
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/key/next":{
"post":{
"summary":"DeriveNextKey attempts to derive the *next* key within the key family\n(account in BIP43) specified. This method should return the next external\nchild within this branch.",
"operationId":"DeriveNextKey",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/signrpcKeyDescriptor"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/walletrpcKeyReq"
}
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/send":{
"post":{
"summary":"SendOutputs is similar to the existing sendmany call in Bitcoind, and\nallows the caller to create a transaction that sends to several outputs at\nonce. This is ideal when wanting to batch create a set of transactions.",
"summary":"ListSweeps returns a list of the sweep transactions our node has produced.\nNote that these sweeps may not be confirmed yet, as we record sweeps on\nbroadcast, not confirmation.",
"description":"Retrieve the full sweep transaction details. If false, only the sweep txids\nwill be returned.",
"in":"query",
"required":false,
"type":"boolean",
"format":"boolean"
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/sweeps/pending":{
"get":{
"summary":"PendingSweeps returns lists of on-chain outputs that lnd is currently\nattempting to sweep within its central batching engine. Outputs with similar\nfee rates are batched together in order to sweep them within a single\ntransaction.",
"description":"NOTE: Some of the fields within PendingSweepsRequest are not guaranteed to\nremain supported. This is an advanced API that depends on the internals of\nthe UtxoSweeper, so things may change.",
"summary":"PublishTransaction attempts to publish the passed transaction to the\nnetwork. Once this returns without an error, the wallet will continually\nattempt to re-broadcast the transaction on start up, until it enters the\nchain.",
"operationId":"PublishTransaction",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/walletrpcPublishResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"body",
"in":"body",
"required":true,
"schema":{
"$ref":"#/definitions/walletrpcTransaction"
}
}
],
"tags":[
"WalletKit"
]
}
},
"/v2/wallet/tx/label":{
"post":{
"summary":"LabelTransaction adds a label to a transaction. If the transaction already\nhas a label the call will fail unless the overwrite bool is set. This will\noverwrite the exiting transaction label. Labels must not be empty, and\ncannot exceed 500 characters.",
"summary":"ListUnspent returns a list of all utxos spendable by the wallet with a\nnumber of confirmations between the specified minimum and maximum.",
"summary":"LeaseOutput locks an output to the given ID, preventing it from being\navailable for any future coin selection attempts. The absolute time of the\nlock's expiration is returned. The expiration of the lock can be extended by\nsuccessive invocations of this RPC. Outputs can be unlocked before their\nexpiration through `ReleaseOutput`.",
"summary":"ReleaseOutput unlocks an output, allowing it to be available for coin\nselection if it remains unspent. The ID should match the one used to\noriginally lock the output.",
"description":"The input we're attempting to bump the fee of."
},
"target_conf":{
"type":"integer",
"format":"int64",
"description":"The target number of blocks that the input should be spent within."
},
"sat_per_byte":{
"type":"integer",
"format":"int64",
"description":"The fee rate, expressed in sat/byte, that should be used to spend the input\nwith."
},
"force":{
"type":"boolean",
"format":"boolean",
"description":"Whether this input must be force-swept. This means that it is swept even\nif it has a negative yield."
}
}
},
"walletrpcBumpFeeResponse":{
"type":"object"
},
@ -221,9 +689,57 @@
}
}
},
"walletrpcKeyReq":{
"type":"object",
"properties":{
"key_finger_print":{
"type":"integer",
"format":"int32",
"description":"Is the key finger print of the root pubkey that this request is targeting.\nThis allows the WalletKit to possibly serve out keys for multiple HD chains\nvia public derivation."
},
"key_family":{
"type":"integer",
"format":"int32",
"description":"The target key family to derive a key from. In other contexts, this is\nknown as the \"account\"."
}
}
},
"walletrpcLabelTransactionRequest":{
"type":"object",
"properties":{
"txid":{
"type":"string",
"format":"byte",
"description":"The txid of the transaction to label."
},
"label":{
"type":"string",
"description":"The label to add to the transaction, limited to 500 characters."
},
"overwrite":{
"type":"boolean",
"format":"boolean",
"description":"Whether to overwrite the existing label, if it is present."
}
}
},
"walletrpcLabelTransactionResponse":{
"type":"object"
},
"walletrpcLeaseOutputRequest":{
"type":"object",
"properties":{
"id":{
"type":"string",
"format":"byte",
"description":"An ID of 32 random bytes that must be unique for each distinct application\nusing this RPC which will be used to bound the output lease to."
},
"outpoint":{
"$ref":"#/definitions/lnrpcOutPoint",
"description":"The identifying outpoint of the output being leased."
}
}
},
"walletrpcLeaseOutputResponse":{
"type":"object",
"properties":{
@ -326,9 +842,44 @@
}
}
},
"walletrpcReleaseOutputRequest":{
"type":"object",
"properties":{
"id":{
"type":"string",
"format":"byte",
"description":"The unique ID that was used to lock the output."
},
"outpoint":{
"$ref":"#/definitions/lnrpcOutPoint",
"description":"The identifying outpoint of the output being released."
}
}
},
"walletrpcReleaseOutputResponse":{
"type":"object"
},
"walletrpcSendOutputsRequest":{
"type":"object",
"properties":{
"sat_per_kw":{
"type":"string",
"format":"int64",
"description":"The number of satoshis per kilo weight that should be used when crafting\nthis transaction."
},
"outputs":{
"type":"array",
"items":{
"$ref":"#/definitions/signrpcTxOut"
},
"description":"A slice of the outputs that should be created in the transaction produced."
},
"label":{
"type":"string",
"description":"An optional label for the transaction, limited to 500 characters."
}
}
},
"walletrpcSendOutputsResponse":{
"type":"object",
"properties":{
@ -339,6 +890,20 @@
}
}
},
"walletrpcTransaction":{
"type":"object",
"properties":{
"tx_hex":{
"type":"string",
"format":"byte",
"description":"The raw serialized transaction."
},
"label":{
"type":"string",
"description":"An optional label to save with the transaction. Limited to 500 characters."
"summary":"lncli: tower info\nGetInfo returns general information concerning the companion watchtower\nincluding its public key and URIs where the server is currently\nlistening for clients.",
"description":"Whether we should include sessions with the watchtower in the response.",
"in":"query",
"required":false,
"type":"boolean",
"format":"boolean"
}
],
"tags":[
"WatchtowerClient"
]
},
"post":{
"summary":"AddTower adds a new watchtower reachable at the given address and\nconsiders it for new sessions. If the watchtower already exists, then\nany new addresses included will be considered when dialing it for\nsession negotiations and backups.",
"summary":"GetTowerInfo retrieves information for a registered watchtower.",
"operationId":"GetTowerInfo",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/wtclientrpcTower"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"parameters":[
{
"name":"pubkey",
"description":"The identifying public key of the watchtower to retrieve information for.",
"in":"path",
"required":true,
"type":"string",
"format":"byte"
},
{
"name":"include_sessions",
"description":"Whether we should include sessions with the watchtower in the response.",
"in":"query",
"required":false,
"type":"boolean",
"format":"boolean"
}
],
"tags":[
"WatchtowerClient"
]
}
},
"/v2/watchtower/client/policy":{
"get":{
"summary":"Policy returns the active watchtower client policy configuration.",
"operationId":"Policy",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/wtclientrpcPolicyResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
"WatchtowerClient"
]
}
},
"/v2/watchtower/client/stats":{
"get":{
"summary":"Stats returns the in-memory statistics of the client since startup.",
"operationId":"Stats",
"responses":{
"200":{
"description":"A successful response.",
"schema":{
"$ref":"#/definitions/wtclientrpcStatsResponse"
}
},
"default":{
"description":"An unexpected error response",
"schema":{
"$ref":"#/definitions/runtimeError"
}
}
},
"tags":[
"WatchtowerClient"
]
}
},
"/v2/watchtower/client/{pubkey}":{
"delete":{
"summary":"RemoveTower removes a watchtower from being considered for future session\nnegotiations and from being used for any subsequent backups until it's added\nagain. If an address is provided, then this RPC only serves as a way of\nremoving the address from the watchtower instead.",
"description":"The identifying public key of the watchtower to remove.",
"in":"path",
"required":true,
"type":"string",
"format":"byte"
},
{
"name":"address",
"description":"If set, then the record for this address will be removed, indicating that is\nis stale. Otherwise, the watchtower will no longer be used for future\nsession negotiations and backups.",
"in":"query",
"required":false,
"type":"string"
}
],
"tags":[
"WatchtowerClient"
]
}
}
},
"definitions":{
"protobufAny":{
"type":"object",
"properties":{
"type_url":{
"type":"string"
},
"value":{
"type":"string",
"format":"byte"
}
}
},
"runtimeError":{
"type":"object",
"properties":{
"error":{
"type":"string"
},
"code":{
"type":"integer",
"format":"int32"
},
"message":{
"type":"string"
},
"details":{
"type":"array",
"items":{
"$ref":"#/definitions/protobufAny"
}
}
}
},
"wtclientrpcAddTowerRequest":{
"type":"object",
"properties":{
"pubkey":{
"type":"string",
"format":"byte",
"description":"The identifying public key of the watchtower to add."
},
"address":{
"type":"string",
"description":"A network address the watchtower is reachable over."