user_orders and user_fills are event-driven only — no snapshot. Seed
current state from REST, then attach the stream for live events.
Step 1 - seed from REST
Step 2 - subscribe (wallet-keyed → use user, not market)
Step 3 - apply lifecycle events.
user_orders frames have type ∈ {"placed", "resized", "canceled"}. Maintain an order
map keyed by orderId:
Step 4 - attribute fills
Eachuser_fills frame is one maker fill against your resting order. makerFee is signed, a
leading - means a rebate. Join a fill to its placement via sequenceNumber: a fill at seq S
belongs to the latest placedresized for the same (side, price) with
sequenceNumber <= S.
Privacy: there’s no identity proof, subscribing to any wallet returns exactly what you’d read from chain yourself. Use it to show a customer their own data; it is not a private feed. For every wallet’s LO activity on a market instead of one wallet, subscribe to the market-keyedlimit_orderschannel, same payload, plus a top-levelmaker, minus the per-wallet filtering.