Changelog
Changes to the .proto definitions, newest first. Dates are the dates the change landed in the canonical proto source.
The proto files served from
/protoand the per-service docs on this site track these changes. The auto-generated API Reference lags until it is regenerated — when in doubt, the liverpc.discovermethod on a running Hydra App is authoritative.
2026-05-19
Swap — counterparty invoice-window handling and convergence retry in the simple-swap flow (server-side behavior; no request/response shape change for clients).
2026-05-10 — Payment timing (CLTV) overhaul
Breaking field renames on the Node API payment RPCs. If you send keysend payments or create invoices, update your code.
Node
SendChannelPaymentRequest:expiry_timeout_secs→cltv_buffer_secs. (KeySend has no separate invoice-validity knob; the buffer alone bounds the HTLC.)EstimateSendPaymentFeeRequest:expiry_timeout_secs→cltv_buffer_secs; new optionalmax_total_cltv_secs(clamp the route's max-total-CLTV; for atomic-swap-correct timing pass the invoice'scltv_buffer_secs, otherwise omit).SendPaymentRequest: same change asEstimateSendPaymentFeeRequest.CreateInvoiceRequest:expiry_timeout_secskeeps its meaning (BOLT-11x— invoice validity window) and gains a new optionalcltv_buffer_secs(BOLT-11c— extra HTLC lifetime past invoice expiry the receiver requires).EstimatePayInvoiceFeeRequest,PayInvoiceRequest,EstimatePayEmptyInvoiceFeeRequest,PayEmptyInvoiceRequest: new optionalmax_total_cltv_secs.
Payment
Invoice: new fieldmin_final_cltv_expiry_secs— the minimum CLTV buffer (seconds) the receiver requires for the incoming HTLC. The HTLC's effective deadline isexpiry_timestamp + min_final_cltv_expiry_secs.
2026-05-06 — Lease API: read-only discovery
Liquidity — four new read-only RPCs (no funds move):
GetLiquidityServiceInfo— server-wide capacity bounds, durations, per-asset fee config, and the LP's per-network node pubkeys.GetLeaseableAssetInfo— per-asset liquidity bounds + fee ratio for one(network, asset).GetLeases— the caller's active leases on a network.GetLeaseExpiries— lease expiry per(channel_id, asset_id)from the local cache (no LP round-trip).
Also: ChannelReleaseOperation.CooperativeClose gained asset_ids — empty closes every asset channel; otherwise only the listed ones.
2026-05-05 — Lease API: tx_fee_rate removed (breaking)
Liquidity / Swap — the liquidity service now prices the underlying transaction work itself. The client no longer supplies a chain fee rate.
RequestChannelLiquidityRequest: removedtx_fee_rate(remaining fields renumbered).RequestChannelReleaseRequest: removedtx_fee_rate(remaining fields renumbered).ReceivingChannelLease(swap): removedtx_fee_rate(remaining fields renumbered).
Action required: delete
tx_fee_rate/txFeeRate/TxFeeRatefrom any Lease request you build. Sending it now returns-32602 unknown field 'txFeeRate'. The Lease API examples have been updated.
2026-05-03 — Channel close flag + client order IDs
Channel
AssetChannelStatus.Closedgainedforce_closed(bool).false= cooperative close (in lithium the channel slot can be reused for further deposits);true= unilateral / disputed close (slot is permanently dead — open a new channel).
Orderbook
CreateOrderRequestgained optionalclient_order_id(max 64 chars). When set and unique among your open orders, the orderbook stores it, returns the originalorder_idon retries with the same value (idempotent order creation), and exposes it on subsequent reads.Ordergained optionalclient_order_id.- New RPC
GetOrderByClientId— fetch an order by theclient_order_idyou supplied at creation. SwapRoleenum reordered:SWAP_ROLE_TAKERmoved from0to3.SWAP_ROLE_UNSPECIFIEDis0. If you persisted raw enum integers, re-map them.
2026-04-29 — Swappable-amount estimation
Swap — new RPC EstimateSimpleSwappableAmounts: given two currencies, returns the smallest and largest amounts that can currently be simple-swapped, accounting for wallet balances, orderbook liquidity, and the LP's leaseable capacity. Returns an empty amounts field when the pair has no orderbook liquidity; all-zero fields when the pair has liquidity but no swap is currently feasible.
2026-04-27 — New SimpleSwap estimate variant
Swap — SimpleSwapEstimate gained the InsufficientSendingBalance variant ({ available: DecimalString }). Distinct from NoLiquidity: the market is fine, but the wallet has nothing to send (no active channel and no usable on-chain funds after fees). If you match/switch on the estimate one-of, add a branch for it.
Earlier
The 2026-04 reconciliation aligned every doc with the then-current proto, including the rename of the old RentalService to LiquidityService (the Lease API). The rental_* JSON-RPC namespace no longer exists — it is liquidity_*. See the Lease API.
How this list is maintained
Each entry corresponds to a proto-touching commit in the Hydra App source. When the protos in /proto are refreshed, this page and the affected per-service docs are updated together. The single source of truth for a running server is its rpc.discover output — see JSON-RPC: Discovering methods.