api

package
v1.8.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 12, 2024 License: Apache-2.0 Imports: 41 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LogTypeNode = "node"
	LogTypeApp  = "app"
)

Variables

This section is empty.

Functions

func NewAPI

func NewAPI(svc service.Service, gormDB *gorm.DB, config config.Config, keys keys.Keys, albyOAuthSvc alby.AlbyOAuthService, eventPublisher events.EventPublisher) *api

Types

type API

type API interface {
	CreateApp(createAppRequest *CreateAppRequest) (*CreateAppResponse, error)
	UpdateApp(userApp *db.App, updateAppRequest *UpdateAppRequest) error
	DeleteApp(userApp *db.App) error
	GetApp(userApp *db.App) *App
	ListApps() ([]App, error)
	ListChannels(ctx context.Context) ([]Channel, error)
	GetChannelPeerSuggestions(ctx context.Context) ([]alby.ChannelPeerSuggestion, error)
	ResetRouter(key string) error
	ChangeUnlockPassword(changeUnlockPasswordRequest *ChangeUnlockPasswordRequest) error
	Stop() error
	GetNodeConnectionInfo(ctx context.Context) (*lnclient.NodeConnectionInfo, error)
	GetNodeStatus(ctx context.Context) (*lnclient.NodeStatus, error)
	ListPeers(ctx context.Context) ([]lnclient.PeerDetails, error)
	ConnectPeer(ctx context.Context, connectPeerRequest *ConnectPeerRequest) error
	DisconnectPeer(ctx context.Context, peerId string) error
	OpenChannel(ctx context.Context, openChannelRequest *OpenChannelRequest) (*OpenChannelResponse, error)
	CloseChannel(ctx context.Context, peerId, channelId string, force bool) (*CloseChannelResponse, error)
	UpdateChannel(ctx context.Context, updateChannelRequest *UpdateChannelRequest) error
	GetNewOnchainAddress(ctx context.Context) (string, error)
	GetUnusedOnchainAddress(ctx context.Context) (string, error)
	SignMessage(ctx context.Context, message string) (*SignMessageResponse, error)
	RedeemOnchainFunds(ctx context.Context, toAddress string, amount uint64, sendAll bool) (*RedeemOnchainFundsResponse, error)
	GetBalances(ctx context.Context) (*BalancesResponse, error)
	ListTransactions(ctx context.Context, limit uint64, offset uint64) (*ListTransactionsResponse, error)
	SendPayment(ctx context.Context, invoice string) (*SendPaymentResponse, error)
	CreateInvoice(ctx context.Context, amount int64, description string) (*MakeInvoiceResponse, error)
	LookupInvoice(ctx context.Context, paymentHash string) (*LookupInvoiceResponse, error)
	RequestMempoolApi(endpoint string) (interface{}, error)
	GetInfo(ctx context.Context) (*InfoResponse, error)
	GetMnemonic(unlockPassword string) (*MnemonicResponse, error)
	SetNextBackupReminder(backupReminderRequest *BackupReminderRequest) error
	Start(startRequest *StartRequest)
	Setup(ctx context.Context, setupRequest *SetupRequest) error
	SendPaymentProbes(ctx context.Context, sendPaymentProbesRequest *SendPaymentProbesRequest) (*SendPaymentProbesResponse, error)
	SendSpontaneousPaymentProbes(ctx context.Context, sendSpontaneousPaymentProbesRequest *SendSpontaneousPaymentProbesRequest) (*SendSpontaneousPaymentProbesResponse, error)
	GetNetworkGraph(ctx context.Context, nodeIds []string) (NetworkGraphResponse, error)
	SyncWallet() error
	GetLogOutput(ctx context.Context, logType string, getLogRequest *GetLogOutputRequest) (*GetLogOutputResponse, error)
	RequestLSPOrder(ctx context.Context, request *LSPOrderRequest) (*LSPOrderResponse, error)
	CreateBackup(unlockPassword string, w io.Writer) error
	RestoreBackup(unlockPassword string, r io.Reader) error
	GetWalletCapabilities(ctx context.Context) (*WalletCapabilitiesResponse, error)
}

type App

type App struct {
	ID            uint       `json:"id"`
	Name          string     `json:"name"`
	Description   string     `json:"description"`
	NostrPubkey   string     `json:"nostrPubkey"`
	CreatedAt     time.Time  `json:"createdAt"`
	UpdatedAt     time.Time  `json:"updatedAt"`
	LastEventAt   *time.Time `json:"lastEventAt"`
	ExpiresAt     *time.Time `json:"expiresAt"`
	Scopes        []string   `json:"scopes"`
	MaxAmountSat  uint64     `json:"maxAmount"`
	BudgetUsage   uint64     `json:"budgetUsage"`
	BudgetRenewal string     `json:"budgetRenewal"`
	Isolated      bool       `json:"isolated"`
	Balance       uint64     `json:"balance"`
	Metadata      Metadata   `json:"metadata,omitempty"`
}

type BackupReminderRequest

type BackupReminderRequest struct {
	NextBackupReminder string `json:"nextBackupReminder"`
}

type BalancesResponse

type BalancesResponse = lnclient.BalancesResponse

type BasicBackupRequest

type BasicBackupRequest struct {
	UnlockPassword string `json:"unlockPassword"`
}

type BasicRestoreWailsRequest

type BasicRestoreWailsRequest struct {
	UnlockPassword string `json:"unlockPassword"`
}

type Boostagram added in v1.5.0

type Boostagram struct {
	AppName        string `json:"appName"`
	Name           string `json:"name"`
	Podcast        string `json:"podcast"`
	URL            string `json:"url"`
	Episode        string `json:"episode,omitempty"`
	FeedId         string `json:"feedId,omitempty"`
	ItemId         string `json:"itemId,omitempty"`
	Timestamp      int64  `json:"ts,omitempty"`
	Message        string `json:"message,omitempty"`
	SenderId       string `json:"senderId"`
	SenderName     string `json:"senderName"`
	Time           string `json:"time"`
	Action         string `json:"action"`
	ValueMsatTotal int64  `json:"valueMsatTotal"`
}

type ChangeUnlockPasswordRequest

type ChangeUnlockPasswordRequest struct {
	CurrentUnlockPassword string `json:"currentUnlockPassword"`
	NewUnlockPassword     string `json:"newUnlockPassword"`
}

type Channel added in v1.4.0

type Channel struct {
	LocalBalance                             int64       `json:"localBalance"`
	LocalSpendableBalance                    int64       `json:"localSpendableBalance"`
	RemoteBalance                            int64       `json:"remoteBalance"`
	Id                                       string      `json:"id"`
	RemotePubkey                             string      `json:"remotePubkey"`
	FundingTxId                              string      `json:"fundingTxId"`
	Active                                   bool        `json:"active"`
	Public                                   bool        `json:"public"`
	InternalChannel                          interface{} `json:"internalChannel"`
	Confirmations                            *uint32     `json:"confirmations"`
	ConfirmationsRequired                    *uint32     `json:"confirmationsRequired"`
	ForwardingFeeBaseMsat                    uint32      `json:"forwardingFeeBaseMsat"`
	UnspendablePunishmentReserve             uint64      `json:"unspendablePunishmentReserve"`
	CounterpartyUnspendablePunishmentReserve uint64      `json:"counterpartyUnspendablePunishmentReserve"`
	Error                                    *string     `json:"error"`
	Status                                   string      `json:"status"`
	IsOutbound                               bool        `json:"isOutbound"`
}

type CloseChannelResponse

type CloseChannelResponse = lnclient.CloseChannelResponse

type ConnectPeerRequest

type ConnectPeerRequest = lnclient.ConnectPeerRequest

type CreateAppRequest

type CreateAppRequest struct {
	Name          string   `json:"name"`
	Pubkey        string   `json:"pubkey"`
	MaxAmountSat  uint64   `json:"maxAmount"`
	BudgetRenewal string   `json:"budgetRenewal"`
	ExpiresAt     string   `json:"expiresAt"`
	Scopes        []string `json:"scopes"`
	ReturnTo      string   `json:"returnTo"`
	Isolated      bool     `json:"isolated"`
	Metadata      Metadata `json:"metadata,omitempty"`
}

type CreateAppResponse

type CreateAppResponse struct {
	PairingUri    string `json:"pairingUri"`
	PairingSecret string `json:"pairingSecretKey"`
	Pubkey        string `json:"pairingPublicKey"`
	Id            uint   `json:"id"`
	Name          string `json:"name"`
	ReturnTo      string `json:"returnTo"`
}

type GetLogOutputRequest

type GetLogOutputRequest struct {
	MaxLen int `query:"maxLen"`
}

type GetLogOutputResponse

type GetLogOutputResponse struct {
	Log string `json:"logs"`
}

type InfoResponse

type InfoResponse struct {
	BackendType          string    `json:"backendType"`
	SetupCompleted       bool      `json:"setupCompleted"`
	OAuthRedirect        bool      `json:"oauthRedirect"`
	Running              bool      `json:"running"`
	Unlocked             bool      `json:"unlocked"`
	AlbyAuthUrl          string    `json:"albyAuthUrl"`
	NextBackupReminder   string    `json:"nextBackupReminder"`
	AlbyUserIdentifier   string    `json:"albyUserIdentifier"`
	AlbyAccountConnected bool      `json:"albyAccountConnected"`
	Version              string    `json:"version"`
	Network              string    `json:"network"`
	EnableAdvancedSetup  bool      `json:"enableAdvancedSetup"`
	StartupError         string    `json:"startupError"`
	StartupErrorTime     time.Time `json:"startupErrorTime"`
}

type LSPOrderRequest added in v1.3.0

type LSPOrderRequest struct {
	Amount  uint64 `json:"amount"`
	LSPType string `json:"lspType"`
	LSPUrl  string `json:"lspUrl"`
	Public  bool   `json:"public"`
}

type LSPOrderResponse added in v1.3.0

type LSPOrderResponse struct {
	Invoice           string `json:"invoice"`
	Fee               uint64 `json:"fee"`
	InvoiceAmount     uint64 `json:"invoiceAmount"`
	IncomingLiquidity uint64 `json:"incomingLiquidity"`
	OutgoingLiquidity uint64 `json:"outgoingLiquidity"`
}

type ListAppsResponse

type ListAppsResponse struct {
	Apps []App `json:"apps"`
}

type ListTransactionsResponse

type ListTransactionsResponse = []Transaction

type LookupInvoiceResponse

type LookupInvoiceResponse = Transaction

type MakeInvoiceRequest

type MakeInvoiceRequest struct {
	Amount      int64  `json:"amount"`
	Description string `json:"description"`
}

type MakeInvoiceResponse

type MakeInvoiceResponse = Transaction

type Metadata added in v1.5.0

type Metadata = map[string]interface{}

type MnemonicRequest added in v1.5.0

type MnemonicRequest struct {
	UnlockPassword string `json:"unlockPassword"`
}

type MnemonicResponse added in v1.5.0

type MnemonicResponse struct {
	Mnemonic string `json:"mnemonic"`
}

type NetworkGraphResponse

type NetworkGraphResponse = lnclient.NetworkGraphResponse

type OnchainBalanceResponse

type OnchainBalanceResponse = lnclient.OnchainBalanceResponse

type OpenChannelRequest

type OpenChannelRequest = lnclient.OpenChannelRequest

type OpenChannelResponse

type OpenChannelResponse = lnclient.OpenChannelResponse

type RedeemOnchainFundsRequest

type RedeemOnchainFundsRequest struct {
	ToAddress string `json:"toAddress"`
	Amount    uint64 `json:"amount"`
	SendAll   bool   `json:"sendAll"`
}

type RedeemOnchainFundsResponse

type RedeemOnchainFundsResponse struct {
	TxId string `json:"txId"`
}

type ResetRouterRequest

type ResetRouterRequest struct {
	Key string `json:"key"`
}

type SendPaymentProbesRequest

type SendPaymentProbesRequest struct {
	Invoice string `json:"invoice"`
}

debug api

type SendPaymentProbesResponse

type SendPaymentProbesResponse struct {
	Error string `json:"error"`
}

type SendPaymentResponse

type SendPaymentResponse = Transaction

type SendSpontaneousPaymentProbesRequest

type SendSpontaneousPaymentProbesRequest struct {
	Amount uint64 `json:"amount"`
	NodeId string `json:"nodeId"`
}

type SendSpontaneousPaymentProbesResponse

type SendSpontaneousPaymentProbesResponse struct {
	Error string `json:"error"`
}

type SetupRequest

type SetupRequest struct {
	LNBackendType  string `json:"backendType"`
	UnlockPassword string `json:"unlockPassword"`

	// Breez / Greenlight
	Mnemonic             string `json:"mnemonic"`
	GreenlightInviteCode string `json:"greenlightInviteCode"`
	NextBackupReminder   string `json:"nextBackupReminder"`

	// Breez fields
	BreezAPIKey string `json:"breezApiKey"`

	// LND fields
	LNDAddress      string `json:"lndAddress"`
	LNDCertFile     string `json:"lndCertFile"`
	LNDMacaroonFile string `json:"lndMacaroonFile"`
	LNDCertHex      string `json:"lndCertHex"`
	LNDMacaroonHex  string `json:"lndMacaroonHex"`

	// Phoenixd fields
	PhoenixdAddress       string `json:"phoenixdAddress"`
	PhoenixdAuthorization string `json:"phoenixdAuthorization"`

	// Cashu fields
	CashuMintUrl string `json:"cashuMintUrl"`
}

type SignMessageRequest

type SignMessageRequest struct {
	Message string `json:"message"`
}

type SignMessageResponse

type SignMessageResponse struct {
	Message   string `json:"message"`
	Signature string `json:"signature"`
}

type StartRequest

type StartRequest struct {
	UnlockPassword string `json:"unlockPassword"`
}

type Transaction added in v1.2.0

type Transaction struct {
	Type            string      `json:"type"`
	Invoice         string      `json:"invoice"`
	Description     string      `json:"description"`
	DescriptionHash string      `json:"descriptionHash"`
	Preimage        *string     `json:"preimage"`
	PaymentHash     string      `json:"paymentHash"`
	Amount          uint64      `json:"amount"`
	FeesPaid        uint64      `json:"feesPaid"`
	CreatedAt       string      `json:"createdAt"`
	SettledAt       *string     `json:"settledAt"`
	AppId           *uint       `json:"appId"`
	Metadata        Metadata    `json:"metadata,omitempty"`
	Boostagram      *Boostagram `json:"boostagram,omitempty"`
}

TODO: camelCase

type UnlockRequest

type UnlockRequest struct {
	UnlockPassword  string  `json:"unlockPassword"`
	TokenExpiryDays *uint64 `json:"tokenExpiryDays"`
}

type UpdateAppRequest

type UpdateAppRequest struct {
	Name          string   `json:"name"`
	MaxAmountSat  uint64   `json:"maxAmount"`
	BudgetRenewal string   `json:"budgetRenewal"`
	ExpiresAt     string   `json:"expiresAt"`
	Scopes        []string `json:"scopes"`
	Metadata      Metadata `json:"metadata,omitempty"`
}

type UpdateChannelRequest

type UpdateChannelRequest = lnclient.UpdateChannelRequest

type User

type User struct {
	Email string `json:"email"`
}

type WalletCapabilitiesResponse

type WalletCapabilitiesResponse struct {
	Scopes            []string `json:"scopes"`
	Methods           []string `json:"methods"`
	NotificationTypes []string `json:"notificationTypes"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL