eb4d0e035e
Add structure for outgoing payments. Saving payment in DB after successful payment send. Add RPC call for listing all payments.
434 lines
9.1 KiB
Protocol Buffer
434 lines
9.1 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
import "google/api/annotations.proto";
|
|
|
|
package lnrpc;
|
|
|
|
service Lightning {
|
|
rpc WalletBalance(WalletBalanceRequest) returns (WalletBalanceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/balance/blockchain"
|
|
};
|
|
}
|
|
rpc ChannelBalance(ChannelBalanceRequest) returns (ChannelBalanceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/balance/channels"
|
|
};
|
|
}
|
|
|
|
rpc GetTransactions(GetTransactionsRequest) returns (TransactionDetails) {
|
|
option (google.api.http) = {
|
|
get: "/v1/transactions"
|
|
};
|
|
}
|
|
rpc SendCoins(SendCoinsRequest) returns (SendCoinsResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/transactions"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc SubscribeTransactions(GetTransactionsRequest) returns (stream Transaction);
|
|
|
|
rpc SendMany(SendManyRequest) returns (SendManyResponse);
|
|
|
|
rpc NewAddress(NewAddressRequest) returns (NewAddressResponse);
|
|
rpc NewWitnessAddress(NewWitnessAddressRequest) returns (NewAddressResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/newaddress"
|
|
};
|
|
}
|
|
|
|
rpc ConnectPeer(ConnectPeerRequest) returns (ConnectPeerResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/peers"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc ListPeers(ListPeersRequest) returns (ListPeersResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/peers"
|
|
};
|
|
}
|
|
rpc GetInfo(GetInfoRequest) returns (GetInfoResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/getinfo"
|
|
};
|
|
}
|
|
|
|
// TODO(roasbeef): merge with below with bool?
|
|
rpc PendingChannels(PendingChannelRequest) returns (PendingChannelResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/channels/pending"
|
|
};
|
|
}
|
|
rpc ListChannels(ListChannelsRequest) returns (ListChannelsResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/channels"
|
|
};
|
|
}
|
|
rpc OpenChannelSync(OpenChannelRequest) returns (ChannelPoint) {
|
|
option (google.api.http) = {
|
|
post: "/v1/channels"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc OpenChannel(OpenChannelRequest) returns (stream OpenStatusUpdate);
|
|
|
|
rpc CloseChannel(CloseChannelRequest) returns (stream CloseStatusUpdate) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/channels/{channel_point.funding_txid}/{channel_point.output_index}/{force}"
|
|
};
|
|
}
|
|
|
|
rpc SendPayment(stream SendRequest) returns (stream SendResponse);
|
|
|
|
rpc SendPaymentSync(SendRequest) returns (SendResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/channels/transactions"
|
|
body: "*"
|
|
};
|
|
}
|
|
|
|
rpc AddInvoice(Invoice) returns (AddInvoiceResponse) {
|
|
option (google.api.http) = {
|
|
post: "/v1/invoices"
|
|
body: "*"
|
|
};
|
|
}
|
|
rpc ListInvoices(ListInvoiceRequest) returns (ListInvoiceResponse) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/{pending_only}"
|
|
};
|
|
}
|
|
rpc LookupInvoice(PaymentHash) returns (Invoice) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/{r_hash_str}"
|
|
};
|
|
}
|
|
rpc SubscribeInvoices(InvoiceSubscription) returns (stream Invoice) {
|
|
option (google.api.http) = {
|
|
get: "/v1/invoices/subscribe"
|
|
};
|
|
}
|
|
|
|
rpc ShowRoutingTable(ShowRoutingTableRequest) returns (ShowRoutingTableResponse);
|
|
|
|
rpc ListPayments(ListPaymentsRequest) returns (ListPaymentsResponse){
|
|
option (google.api.http) = {
|
|
get: "/v1/payments"
|
|
};
|
|
};
|
|
|
|
rpc DeleteAllPayments(DeleteAllPaymentsRequest) returns (DeleteAllPaymentsResponse) {
|
|
option (google.api.http) = {
|
|
delete: "/v1/payments"
|
|
};
|
|
};
|
|
}
|
|
|
|
|
|
message Transaction {
|
|
string tx_hash = 1;
|
|
double amount = 2;
|
|
int32 num_confirmations = 3;
|
|
string block_hash = 4;
|
|
int32 block_height = 5;
|
|
int64 time_stamp = 6;
|
|
int64 total_fees = 7;
|
|
}
|
|
message GetTransactionsRequest {
|
|
}
|
|
message TransactionDetails {
|
|
repeated Transaction transactions = 1;
|
|
}
|
|
|
|
message SendRequest {
|
|
bytes dest = 1;
|
|
string dest_string = 2;
|
|
|
|
int64 amt = 3;
|
|
|
|
bytes payment_hash = 4;
|
|
string payment_hash_string = 5;
|
|
|
|
bool fast_send = 6;
|
|
}
|
|
message SendResponse {
|
|
// TODO(roasbeef): info about route? stats?
|
|
}
|
|
|
|
message ChannelPoint {
|
|
bytes funding_txid = 1;
|
|
string funding_txid_str = 2;
|
|
uint32 output_index = 3;
|
|
}
|
|
|
|
message LightningAddress {
|
|
string pubkey = 1;
|
|
string host = 2;
|
|
}
|
|
|
|
message SendManyRequest {
|
|
map<string, int64> AddrToAmount = 1;
|
|
}
|
|
message SendManyResponse {
|
|
string txid = 1;
|
|
}
|
|
|
|
message SendCoinsRequest {
|
|
string addr = 1;
|
|
int64 amount = 2;
|
|
}
|
|
message SendCoinsResponse {
|
|
string txid = 1;
|
|
}
|
|
|
|
message NewAddressRequest {
|
|
enum AddressType {
|
|
WITNESS_PUBKEY_HASH = 0;
|
|
NESTED_PUBKEY_HASH = 1;
|
|
PUBKEY_HASH = 2;
|
|
}
|
|
AddressType type = 1;
|
|
}
|
|
message NewWitnessAddressRequest {}
|
|
message NewAddressResponse {
|
|
string address = 1;
|
|
}
|
|
|
|
message ConnectPeerRequest {
|
|
LightningAddress addr = 1;
|
|
}
|
|
message ConnectPeerResponse {
|
|
int32 peer_id = 1;
|
|
}
|
|
|
|
message HTLC {
|
|
bool incoming = 1;
|
|
int64 amount = 2;
|
|
bytes hash_lock = 3;
|
|
uint32 expiration_height = 4;
|
|
uint32 revocation_delay = 5;
|
|
}
|
|
|
|
message ActiveChannel {
|
|
string remote_pubkey = 1;
|
|
string channel_point = 2;
|
|
|
|
int64 capacity = 3;
|
|
int64 local_balance = 4;
|
|
int64 remote_balance = 5;
|
|
|
|
int64 unsettled_balance = 6;
|
|
int64 total_satoshis_sent = 7;
|
|
int64 total_satoshis_received = 8;
|
|
uint64 num_updates = 9;
|
|
|
|
repeated HTLC pending_htlcs = 10;
|
|
// TODO(roasbeef): other stuffs
|
|
}
|
|
|
|
message ListChannelsRequest {}
|
|
message ListChannelsResponse {
|
|
repeated ActiveChannel channels = 11;
|
|
}
|
|
|
|
message Peer {
|
|
string pub_key = 1;
|
|
int32 peer_id = 2;
|
|
string address = 3;
|
|
|
|
uint64 bytes_sent = 4;
|
|
uint64 bytes_recv = 5;
|
|
|
|
int64 sat_sent = 6;
|
|
int64 sat_recv = 7;
|
|
|
|
bool inbound = 8;
|
|
}
|
|
|
|
message ListPeersRequest {}
|
|
message ListPeersResponse {
|
|
repeated Peer peers = 1;
|
|
}
|
|
|
|
message GetInfoRequest{}
|
|
message GetInfoResponse {
|
|
string identity_pubkey = 1;
|
|
|
|
uint32 num_pending_channels = 2;
|
|
uint32 num_active_channels = 3;
|
|
|
|
uint32 num_peers = 4;
|
|
|
|
uint32 block_height = 5;
|
|
|
|
bool synced_to_chain = 6;
|
|
bool testnet = 7;
|
|
}
|
|
|
|
message ConfirmationUpdate {
|
|
bytes block_sha = 1;
|
|
int32 block_height = 2;
|
|
|
|
uint32 num_confs_left = 3;
|
|
}
|
|
|
|
message ChannelOpenUpdate {
|
|
ChannelPoint channel_point = 1;
|
|
}
|
|
|
|
message ChannelCloseUpdate {
|
|
bytes closing_txid = 1;
|
|
|
|
bool success = 2;
|
|
}
|
|
|
|
message CloseChannelRequest {
|
|
ChannelPoint channel_point = 1;
|
|
int64 time_limit = 2;
|
|
bool force = 3;
|
|
}
|
|
message CloseStatusUpdate {
|
|
oneof update {
|
|
PendingUpdate close_pending = 1;
|
|
ConfirmationUpdate confirmation = 2;
|
|
ChannelCloseUpdate chan_close = 3;
|
|
}
|
|
}
|
|
|
|
message PendingUpdate {
|
|
bytes txid = 1;
|
|
}
|
|
|
|
message OpenChannelRequest {
|
|
int32 target_peer_id = 1;
|
|
|
|
bytes node_pubkey = 2;
|
|
|
|
string node_pubkey_string = 3;
|
|
|
|
int64 local_funding_amount = 4;
|
|
int64 remote_funding_amount = 5;
|
|
|
|
int64 commission_size = 6;
|
|
|
|
uint32 num_confs = 7;
|
|
}
|
|
message OpenStatusUpdate {
|
|
oneof update {
|
|
PendingUpdate chan_pending = 1;
|
|
ConfirmationUpdate confirmation = 2;
|
|
ChannelOpenUpdate chan_open = 3;
|
|
}
|
|
}
|
|
|
|
enum ChannelStatus {
|
|
ALL = 0;
|
|
OPENING = 1;
|
|
CLOSING = 2;
|
|
}
|
|
message PendingChannelRequest {
|
|
ChannelStatus status = 1;
|
|
}
|
|
message PendingChannelResponse {
|
|
message PendingChannel {
|
|
int32 peer_id = 1;
|
|
|
|
string identity_key = 2;
|
|
string channel_point = 3;
|
|
|
|
int64 capacity = 4;
|
|
int64 local_balance = 5;
|
|
int64 remote_balance = 6;
|
|
|
|
string closing_txid = 7;
|
|
|
|
ChannelStatus status = 8;
|
|
}
|
|
|
|
repeated PendingChannel pending_channels = 1;
|
|
}
|
|
|
|
message WalletBalanceRequest {
|
|
bool witness_only = 1;
|
|
}
|
|
message WalletBalanceResponse {
|
|
double balance = 1;
|
|
}
|
|
|
|
message ChannelBalanceRequest {
|
|
}
|
|
message ChannelBalanceResponse {
|
|
int64 balance = 1;
|
|
}
|
|
|
|
message RoutingTableLink {
|
|
string id1 = 1;
|
|
string id2 = 2;
|
|
string outpoint = 3;
|
|
int64 capacity = 4;
|
|
double weight = 5;
|
|
}
|
|
|
|
message ShowRoutingTableRequest {
|
|
}
|
|
|
|
message ShowRoutingTableResponse {
|
|
repeated RoutingTableLink channels = 1;
|
|
}
|
|
|
|
message Invoice {
|
|
string memo = 1;
|
|
bytes receipt = 2;
|
|
|
|
bytes r_preimage = 3;
|
|
bytes r_hash = 4;
|
|
|
|
int64 value = 5;
|
|
|
|
bool settled = 6;
|
|
|
|
int64 creation_date = 7;
|
|
int64 settle_date = 8;
|
|
}
|
|
message AddInvoiceResponse {
|
|
bytes r_hash = 1;
|
|
}
|
|
message PaymentHash {
|
|
string r_hash_str = 1;
|
|
bytes r_hash = 2;
|
|
}
|
|
message ListInvoiceRequest {
|
|
bool pending_only = 1;
|
|
}
|
|
message ListInvoiceResponse {
|
|
repeated Invoice invoices = 1;
|
|
}
|
|
|
|
message InvoiceSubscription {}
|
|
|
|
|
|
message Payment {
|
|
string r_hash = 1;
|
|
|
|
int64 value = 2;
|
|
|
|
int64 creation_date = 3;
|
|
repeated string path = 4;
|
|
int64 fee = 5;
|
|
}
|
|
|
|
message ListPaymentsRequest {
|
|
}
|
|
|
|
message ListPaymentsResponse {
|
|
repeated Payment payments = 1;
|
|
}
|
|
|
|
message DeleteAllPaymentsRequest {
|
|
}
|
|
|
|
message DeleteAllPaymentsResponse {
|
|
} |