Files
thefux d098139120 fix: return structured error envelope from POST /v1/wallet/topup
The topup endpoint was the only token-redemption path that returned a
plain string under  — the X-Cashu (chat completions) and bearer
(API key minting) paths both return the structured envelope
.

All three paths already share , so the
topup path classified the error into type/code/status/message but then
discarded  and , putting only the message string in .

This commit makes topup reuse
(already used by the bearer path) so clients get the same /
on every redemption endpoint and can branch on / uniformly
instead of topup being a special case that only exposes the HTTP status.

Changes:
- balance.py: import and use ;
  unclassified 500 also returns structured /
- errors.md: document that all three paths now expose type/code;
  update the topup error example to show the structured envelope
- endpoints.md: fix stale success response (was {balance, amount_added,
  currency}; actual shape is {msats: int})
- test_balance.py: assert full structured envelope (type, code, message)
  instead of just the plain-string detail
- test_wallet_topup.py, test_error_handling_edge_cases.py,
  test_swap_fee_retry.py: handle detail-as-dict in integration tests
2026-08-12 18:02:25 +00:00
..
2026-01-24 17:55:45 +08:00
2026-01-24 17:55:45 +08:00
2026-01-24 17:55:45 +08:00