wavecli activityList
List returns the unified wallet view selected by ListRequest.view: ACTIVITY (default) is the merged WalletEntry stream; VTXOS is the live VTXO inventory; ONCHAIN is the boarding-plus-sweep on-chain history. The body oneof on ListResponse discriminates the typed result so agents see a tagged union, not a polymorphic blob.
Endpoints
rpc List(ListRequest) returns (ListResponse)POST/v1/wallet/listExamples
wavecli activitywavecli activityconn, err := grpc.NewClient("localhost:10029",
grpc.WithTransportCredentials(insecure.NewCredentials()))
if err != nil {
log.Fatal(err)
}
defer conn.Close()
client := wavewalletrpc.NewWalletServiceClient(conn)
ctx := context.Background()
req := &wavewalletrpc.ListRequest{
View: wavewalletrpc.ListView_LIST_VIEW_ACTIVITY,
PendingOnly: false,
Limit: 20,
}
resp, err := client.List(ctx, req)
if err != nil {
log.Fatal(err)
}
fmt.Println(resp)import grpc
import wallet_pb2
import wallet_pb2_grpc
channel = grpc.insecure_channel('localhost:10029')
stub = wallet_pb2_grpc.WalletServiceStub(channel)
request = wallet_pb2.ListRequest(
view=wallet_pb2.LIST_VIEW_ACTIVITY,
pending_only=False,
limit=20,
)
response = stub.List(request)
print(response)const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const packageDefinition = protoLoader.loadSync('wallet.proto');
const { wavewalletrpc } = grpc.loadPackageDefinition(packageDefinition);
const client = new wavewalletrpc.WalletService(
'localhost:10029',
grpc.credentials.createInsecure(),
);
const request = {
"view": "LIST_VIEW_ACTIVITY",
"pending_only": false,
"limit": 20
};
// Calls wavewalletrpc.WalletService.List.
client.list(request, (err, response) => {
if (err) throw err;
console.log(response);
});curl -X POST http://localhost:10031/v1/wallet/list \
-H 'Content-Type: application/json' \
-d '{"view":"LIST_VIEW_ACTIVITY","pending_only":false,"limit":20}'const res = await fetch('http://localhost:10031/v1/wallet/list', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
"view": "LIST_VIEW_ACTIVITY",
"pending_only": false,
"limit": 20
}),
});
const listResponse = await res.json();RequestListRequest
ListRequest selects the wallet view and filters for WalletService.List.
| Field | Type | Description |
|---|---|---|
view | ListView | view selects which slice of wallet state to return. The default (LIST_VIEW_UNSPECIFIED) is treated as LIST_VIEW_ACTIVITY. WIRE-BREAKING CHANGE: this message intentionally renumbers the PR #440 fields (pending_only/kinds/limit/offset). wavewalletrpc has no deployed external consumers yet, so the cleaner shape with `view` at field 1 is preferred over a backwards-compatible append. Any binary built against PR #440's ListRequest must be recompiled. |
pending_only | bool | pending_only filters the returned entries to those still in flight. Applies to the ACTIVITY view; ignored for VTXOS and ONCHAIN. |
kinds | repeated EntryKind | kinds optionally narrows the response to specific entry categories. Applies to the ACTIVITY view; ignored for VTXOS and ONCHAIN. When empty, all kinds are returned. |
limit | uint32 | limit caps the response size. Zero means use the daemon default. |
offset | uint32 | offset is the pagination offset within the chosen view. It applies to the VTXOS and ONCHAIN views; the ACTIVITY view paginates by the opaque cursor below instead and ignores offset. |
cursor | string | cursor is the opaque pagination token for the ACTIVITY view. Empty starts from the newest entry; otherwise it is the next_cursor returned by the previous ActivityList page. It is stable across concurrent inserts, so paging never skips or duplicates rows. Ignored for the VTXOS and ONCHAIN views. |
ResponseListResponse
ListResponse carries the typed result of WalletService.List as a oneof discriminated by the requested view.
| Field | Type | Description |
|---|---|---|
activityoneof body | ActivityList | activity is set when the request view is ACTIVITY (the default): the merged, time-sorted WalletEntry stream. |
vtxosoneof body | VTXOInventory | vtxos is set when the request view is VTXOS: the live spendable VTXO inventory. |
onchainoneof body | OnchainHistory | onchain is set when the request view is ONCHAIN: the on-chain transaction history. |
ListViewenum
ListView selects which slice of wallet state List returns. The default (LIST_VIEW_UNSPECIFIED) is treated as LIST_VIEW_ACTIVITY for backwards feel: callers that don't care about the new shape keep getting the activity stream.
| Name | Number | Description |
|---|---|---|
LIST_VIEW_UNSPECIFIED | 0 | LIST_VIEW_UNSPECIFIED is the proto zero value; List treats it as LIST_VIEW_ACTIVITY. |
LIST_VIEW_ACTIVITY | 1 | LIST_VIEW_ACTIVITY returns the merged WalletEntry stream (send / recv / deposit / exit) across the swap subsystem, OOR sessions, the boarding ledger, and the unroll registry. |
LIST_VIEW_VTXOS | 2 | LIST_VIEW_VTXOS returns the live VTXO inventory (one row per spendable VTXO). |
LIST_VIEW_ONCHAIN | 3 | LIST_VIEW_ONCHAIN returns the on-chain transaction history (boarding deposits, boarding sweeps, leave outputs, round commitment txs that confirmed against this wallet). |
EntryKindenum
EntryKind tags each WalletEntry with the user-visible category of the underlying operation. Internal subtypes (same-Ark p2p vs real Lightning, OOR session correlators, round IDs) are deliberately not surfaced.
| Name | Number | Description |
|---|---|---|
ENTRY_KIND_UNSPECIFIED | 0 | ENTRY_KIND_UNSPECIFIED is the proto zero value used when the operation category is unknown. |
ENTRY_KIND_SEND | 1 | ENTRY_KIND_SEND is an outbound payment over any rail (Lightning, same-Ark, onchain, or credit). |
ENTRY_KIND_RECV | 2 | ENTRY_KIND_RECV is an inbound receive. |
ENTRY_KIND_DEPOSIT | 3 | ENTRY_KIND_DEPOSIT is a boarding deposit rolled into a VTXO. |
ENTRY_KIND_EXIT | 4 | ENTRY_KIND_EXIT is a cooperative leave or unilateral exit to on-chain funds. |
ActivityListmessage
ActivityList is the ACTIVITY-view body of ListResponse: the merged, time-sorted WalletEntry stream.
| Field | Type | Description |
|---|---|---|
entries | repeated WalletEntry | entries are the unified, time-sorted wallet operations. |
total | uint32 | total is the number of entries in this page. It is a page count, not a full-feed count: the feed is paged by an opaque cursor, so callers use has_more, not total, to decide whether to fetch again. |
has_more | bool | has_more reports whether more entries exist after this page. |
next_cursor | string | next_cursor is the opaque token to pass as ListRequest.cursor to fetch the next page. Empty when has_more is false. |
WalletEntrymessage
WalletEntry is the single flat row type returned by the ACTIVITY view of List and by SubscribeWallet. The shape is deliberately minimal: display clients should be able to render kind/status/amount/fee/phase directly without parsing daemon-specific swap or ledger internals. Power-user detail belongs in WalletInspectionService.InspectActivity.
| Field | Type | Description |
|---|---|---|
id | string | id is the stable identifier for this entry. Swap-backed SEND and RECV rows use the Lightning payment_hash. Credit-backed RECV rows use the credit operation id (see CreditReceive.operation_id); the payment_hash lives on recv progress/detail instead. EXIT rows use leave_job_id (or sweep txid); DEPOSIT rows use the boarding outpoint or txid. |
kind | EntryKind | kind is the user-visible category. |
status | EntryStatus | status is the coarse user-facing outcome: PENDING, COMPLETE, or FAILED. It mirrors the backing source's durable state and should not be reinterpreted by display clients. |
amount_sat | int64 | amount_sat is signed: positive values are incoming to the wallet, negative values are outgoing. |
fee_sat | int64 | fee_sat is the absolute fee paid (or pending) for this operation. |
counterparty | string | counterparty is a short, display-friendly identifier of the other side: a truncated invoice for Lightning, an ark peer address for OOR, a bech32 onchain address for exits, or "boarding" for deposits. |
created_at_unix | int64 | created_at_unix is the local creation timestamp in unix seconds. |
updated_at_unix | int64 | updated_at_unix is the last persisted update timestamp in unix seconds. List ACTIVITY and SubscribeWallet sort by this field, descending. |
note | string | note is the caller-supplied label captured at submit time, if any. |
failure_reason | string | failure_reason is populated only when status is FAILED. It is a single human-readable string, never a coded enum tree. |
request | WalletEntryRequest | request is the original payment request or destination associated with the entry, when the backing subsystem persists it. This is useful for expanded views and inspection; compact clients should not need to parse it to explain status or lifecycle. |
progress | WalletEntryProgress | progress carries lifecycle-specific metadata already normalized by the wallet service. Clients can render phase_label directly or switch on phase without inferring meaning from swap/ledger internals. |
failure_codeoptional | EntryFailureCode | failure_code is a stable, machine-readable classification of why a FAILED entry failed. It is set ONLY on FAILED entries; a non-failed entry omits the field entirely (presence-tracked), so its absence is the canonical "no failure" signal and ENTRY_FAILURE_CODE_UNSPECIFIED is never sent on the wire. failure_reason remains the human-readable supplement. |
EntryStatusenum
EntryStatus collapses every backing FSM into the three states user-facing surfaces actually need.
| Name | Number | Description |
|---|---|---|
ENTRY_STATUS_UNSPECIFIED | 0 | ENTRY_STATUS_UNSPECIFIED is the proto zero value used when the backing state has not been mapped yet. |
ENTRY_STATUS_PENDING | 1 | ENTRY_STATUS_PENDING means the operation is still in flight. |
ENTRY_STATUS_COMPLETE | 2 | ENTRY_STATUS_COMPLETE means the operation reached a durable success state. |
ENTRY_STATUS_FAILED | 3 | ENTRY_STATUS_FAILED means the operation reached a terminal failure state. |
WalletEntryRequestmessage
WalletEntryRequest describes the user-recognizable request that created a WalletEntry. It is a oneof because each operation is backed by exactly one request shape.
| Field | Type | Description |
|---|---|---|
lightning_invoiceoneof request | LightningInvoiceRequest | lightning_invoice is populated for Lightning send and receive entries. |
onchain_addressoneof request | OnchainAddressRequest | onchain_address is populated for deposit and exit entries. |
ark_addressoneof request | ArkAddressRequest | ark_address is populated for direct Ark send or receive entries. |
LightningInvoiceRequestmessage
LightningInvoiceRequest captures the Lightning request associated with an activity entry.
| Field | Type | Description |
|---|---|---|
invoice | string | invoice is the BOLT-11 payment request. |
payment_hash | string | payment_hash identifies the invoice and remains stable after the invoice itself is no longer convenient to display. |
OnchainAddressRequestmessage
OnchainAddressRequest captures the onchain address associated with an activity entry.
| Field | Type | Description |
|---|---|---|
address | string | address is the bech32 onchain address originally issued or targeted. |
ArkAddressRequestmessage
ArkAddressRequest captures the Ark address associated with an activity entry.
| Field | Type | Description |
|---|---|---|
address | string | address is the Ark address originally issued or targeted. |
WalletEntryProgressmessage
WalletEntryProgress carries lifecycle metadata normalized by the wallet service.
| Field | Type | Description |
|---|---|---|
phase | WalletEntryPhase | phase is the coarse lifecycle phase for this entry. |
phase_label | string | phase_label is a short lowercase label that clients can render as-is while they migrate to enum-based presentation. |
payment_hash | string | payment_hash is populated for Lightning-backed send/recv entries. |
txid | string | txid is populated when the backing ledger row has an onchain txid. |
confirmation_height | int32 | confirmation_height is populated once the source records it. |
vtxo_outpoint | string | vtxo_outpoint is populated when a swap observes the Ark vHTLC output. |
preimage | string | preimage is the hex-encoded Lightning payment preimage once the swap revealed it. For a completed Lightning-backed send this is the proof of payment for the paid invoice (sha256(preimage) == payment_hash); it is empty until the preimage is durably known and for non-Lightning entries. |
WalletEntryPhaseenum
WalletEntryPhase is a coarse, wallet-facing lifecycle phase. It is not a replacement for status; status answers whether the operation is pending, complete, or failed, while phase explains the current backing-system step.
| Name | Number | Description |
|---|---|---|
WALLET_ENTRY_PHASE_UNSPECIFIED | 0 | WALLET_ENTRY_PHASE_UNSPECIFIED is the proto zero value used when the backing subsystem has no lifecycle hint. |
WALLET_ENTRY_PHASE_REQUEST_CREATED | 1 | WALLET_ENTRY_PHASE_REQUEST_CREATED means the request was created but no payment has been observed. |
WALLET_ENTRY_PHASE_WAITING_FOR_PAYMENT | 2 | WALLET_ENTRY_PHASE_WAITING_FOR_PAYMENT means the wallet is waiting for an inbound payment or swap funding. |
WALLET_ENTRY_PHASE_PAYMENT_DETECTED | 3 | WALLET_ENTRY_PHASE_PAYMENT_DETECTED means the backing subsystem has detected a payment but it is not yet settled. |
WALLET_ENTRY_PHASE_SETTLING | 4 | WALLET_ENTRY_PHASE_SETTLING means the operation is being settled through Ark, Lightning, or onchain machinery. |
WALLET_ENTRY_PHASE_CONFIRMED | 5 | WALLET_ENTRY_PHASE_CONFIRMED means the backing operation is confirmed or otherwise durably complete. |
WALLET_ENTRY_PHASE_REFUNDING | 6 | WALLET_ENTRY_PHASE_REFUNDING means the operation is currently refunding. |
WALLET_ENTRY_PHASE_REFUNDED | 7 | WALLET_ENTRY_PHASE_REFUNDED means the refund path completed. |
WALLET_ENTRY_PHASE_FAILED | 8 | WALLET_ENTRY_PHASE_FAILED means the backing operation reached a terminal failed state. |
WALLET_ENTRY_PHASE_WAITING_FOR_CONFIRMATION | 9 | WALLET_ENTRY_PHASE_WAITING_FOR_CONFIRMATION means an onchain payment has been detected and is waiting for block confirmation. |
EntryFailureCodeenum
EntryFailureCode is a stable, machine-readable classification of why a FAILED WalletEntry failed. It complements the free-text failure_reason so clients can branch on failure cause without string matching.
| Name | Number | Description |
|---|---|---|
ENTRY_FAILURE_CODE_UNSPECIFIED | 0 | ENTRY_FAILURE_CODE_UNSPECIFIED is the zero value used for non-failed entries or when the cause is unknown. |
ENTRY_FAILURE_CODE_TIMED_OUT | 1 | ENTRY_FAILURE_CODE_TIMED_OUT means the operation exceeded the wallet deadline before reaching a terminal state. |
ENTRY_FAILURE_CODE_EXPIRED | 2 | ENTRY_FAILURE_CODE_EXPIRED means the swap expired before it was funded. |
ENTRY_FAILURE_CODE_REFUNDED | 3 | ENTRY_FAILURE_CODE_REFUNDED means an outbound payment was refunded back to the wallet. |
ENTRY_FAILURE_CODE_NEEDS_INTERVENTION | 4 | ENTRY_FAILURE_CODE_NEEDS_INTERVENTION means the swap reached an anomalous state requiring manual recovery. |
ENTRY_FAILURE_CODE_FAILED | 5 | ENTRY_FAILURE_CODE_FAILED is a generic terminal failure with no more specific classification. |
VTXOInventorymessage
VTXOInventory is the VTXOS-view body of ListResponse: the live spendable VTXO inventory.
| Field | Type | Description |
|---|---|---|
vtxos | repeated WalletVTXO | vtxos are the live spendable VTXOs in the wallet. Order is unspecified. |
total | uint32 | total is the count of all live VTXOs before limit/offset. |
WalletVTXOmessage
WalletVTXO is the wallet-facing view of one VTXO. Internal lifecycle detail (forfeiting flow, chain depth, etc.) is hidden; power-users can reach the full shape via `ark vtxos list`.
| Field | Type | Description |
|---|---|---|
outpoint | string | outpoint is the VTXO's outpoint in "txid:index" format. |
amount_sat | int64 | amount_sat is the value of the VTXO in satoshis. |
status | string | status is a short lowercase string: "live", "pending_forfeit", "forfeiting", "spending", "unilateral_exit". Internal terminal states (forfeited / spent / failed) are filtered out of the wallet view. |
batch_expiry | int32 | batch_expiry is the absolute block height at which the batch-level timelock expires. |
relative_expiry | uint32 | relative_expiry is the CSV delay (in blocks) for the unilateral exit path. |
commitment_txid | string | commitment_txid is the hex-encoded txid of the on-chain commitment transaction anchoring this VTXO's tree. |
OnchainHistorymessage
OnchainHistory is the ONCHAIN-view body of ListResponse: the on-chain transaction history.
| Field | Type | Description |
|---|---|---|
txs | repeated OnchainTx | txs are the on-chain transaction history rows: boarding deposits, boarding sweeps, leave outputs, round commitment txs that touched this wallet. Sorted newest first. |
total | uint32 | total is the count of matching rows before limit/offset. |
has_more | bool | has_more is true when another page is available. |
OnchainTxmessage
OnchainTx is the wallet-facing view of one on-chain transaction. It flattens the daemon's richer TransactionHistoryEntry shape to the fields a wallet user actually needs.
| Field | Type | Description |
|---|---|---|
txid | string | txid is the hex-encoded transaction id, when known. Some ledger rows (e.g. fee_paid) do not carry a txid; those entries surface with txid="" and the row is still informative. |
kind | string | kind is the high-level transaction type: "boarding", "sweep", "round", "oor", or "fee". |
amount_sat | int64 | amount_sat is the signed transaction amount in satoshis. Positive values are credits to this wallet; negative values are debits. |
fee_sat | int64 | fee_sat is the absolute fee paid (or pending) for this transaction, when known. |
status | string | status is a short lowercase string: "confirmed", "pending", "recorded", or a backing-specific lifecycle value. |
confirmation_height | int32 | confirmation_height is set when the source records a chain confirmation height. |
created_at_unix | int64 | created_at_unix is the local creation timestamp in unix seconds. |
description | string | description is a human-readable local note. |