{"service":"eutrcaho-api","endpoints":{"/health":"database readiness","/docs":"OpenAPI UI","/auth/register":"register","/auth/login":"login","/iam/profile":"get/put profile (Bearer JWT)","/iam/preferences":"get/put preferences (Bearer JWT)","/iam/roles":"list plan roles (Bearer JWT; read-only — changes via Membership)","/iam/addresses":"list/create addresses (Bearer JWT)","/iam/addresses/{address_id}":"put/delete address (Bearer JWT)","/iam/addresses/{address_id}/set-default":"set default address (Bearer JWT)","/catalog/cards":"search/list catalog cards {items,total} (Bearer JWT)","/catalog/cards/{card_id}":"get catalog card (Bearer JWT)","/catalog/cards/{card_id}/context":"owned/wishlist context badges (Bearer JWT)","/catalog/reported-missing":"list user missing set/card reports (Bearer JWT)","/catalog/missing-reports":"submit missing set/card report (Bearer JWT)","/catalog/import/session":"parse checklist and stage rows for chunked import (catalog.import)","/catalog/import/session/{id}/process":"process next chunk of staged import (catalog.import)","/ownership/cards/{card_id}/catalog":"link/unlink owned card to catalog (Bearer JWT)","/ownership/collections":"list/create collections (Bearer JWT)","/ownership/collections/{collection_id}":"get/put/patch/delete collection (Bearer JWT)","/ownership/collections/{collection_id}/set-default":"set default collection (Bearer JWT)","/ownership/cards":"list/create owned cards (Bearer JWT; ?collection_id=)","/ownership/cards/{card_id}":"get/put/patch/delete owned card (Bearer JWT)","/ownership/cards/{card_id}/move-to-wishlist":"move owned card to wishlist (Bearer JWT)","/ownership/cards/bulk-move-to-wishlist":"bulk move owned cards to wishlist (Bearer JWT)","/ownership/cards/catalog-link-preview":"preview catalog matches for owned cards (Bearer JWT)","/ownership/cards/bulk-link-catalog":"bulk link owned cards to catalog (Bearer JWT)","/ownership/cards/{card_id}/images":"list/create card images (Bearer JWT)","/ownership/cards/{card_id}/images/{image_id}":"get/put/patch/delete image (Bearer JWT)","/ownership/cards/{card_id}/images/{image_id}/set-primary":"set primary image (Bearer JWT)","/storage/config":"image storage provider config (no secrets)","/storage/upload":"upload image bytes via API (Bearer JWT; avoids R2 CORS)","/storage/upload-url":"presigned upload URL when supported (Bearer JWT)","/api/wishlists":"list/create wishlists (Bearer JWT)","/api/wishlists/{wishlist_id}":"get/patch/delete wishlist (Bearer JWT)","/api/wishlists/{wishlist_id}/items":"list/create wishlist items (Bearer JWT)","/api/wishlist-items/{item_id}":"get/patch/delete item; pause/activate/fulfill/archive","/api/wishlist-matches":"list matches (Bearer JWT)","/api/wishlist-matches/{match_id}":"patch; dismiss/mark-viewed/mark-acted","/api/.../run-matching":"trigger match scan (stub until listings exist)","/api/listings":"list/create listings (owned card, catalog link, or manual snapshot)","/api/listings/{listing_id}":"get/patch/delete draft listing","/api/listings/{listing_id}/publish|unpublish|mark-sold-external|cancel":"listing lifecycle","/api/my/listings/{listing_id}/mark-sold-external":"mark sold outside platform (listings hub)","/api/listings/{listing_id}/sale-terms|auction-terms|trade-terms":"offer terms","/api/bids":"place auction bid; listing bid history","/api/listings/{listing_id}/offers":"create/list offers (seller list)","/api/my/offers/sent|received|{offer_id}":"buyer/seller offer inbox","/api/my/offers/{offer_id}/accept|reject|withdraw|counter|accept-counter":"offer actions","/api/trades":"trade proposals with cards","/api/listings/{listing_id}/negotiations":"negotiation summary","/api/my/home-summary":"signed-in home dashboard counts (Bearer JWT)","/api/me/negotiations":"my bids, offers, trades","/api/negotiations/{id}?type=bid|offer|trade":"negotiation detail","/api/listings/{id}/checkout":"buy now checkout session; /api/checkout/{id}/confirm","/api/my/transactions":"list; /{id} detail; /{id}/activities timeline","/api/my/transactions/{id}/cancel|mark-paid|mark-shipped|mark-delivered|complete":"lifecycle","/api/transactions/from-listing|from-purchase-offer|from-auction-win|from-trade":"create (body: source_id)","/api/transactions":"legacy list (same as /my/transactions)","/api/payments/checkout":"provider checkout session (does not capture)","/api/payments":"create payment { transaction_id, provider, payment_method }","/api/payments/{id}/authorize|capture|fail":"dev/manual escrow ops (blocked in production)","/api/payments/webhooks/stripe":"verified Stripe webhooks","/api/payments/webhooks/{provider}":"dummy JSON webhooks (non-production)","/api/payments/dummy/{id}/succeed|fail":"simulate capture/fail (non-production)","/api/payouts/{id}":"read payout status (release via provider transfer only)","/api/payments/{id}/refunds":"refund CRUD","/api/payments/{id}/events":"payment audit trail","/api/transactions/{id}/ledger-entries":"financial ledger (capture, fees, payout, refund)","/api/transactions/{id}/shipments/initialize":"create shipments + legs (sale=1 direct, trade=2)","/api/transactions/{id}/shipments":"list shipments with nested legs","/api/transactions/{id}/shipping-summary":"aggregated shipping + leg counts","/api/shipments/{id}/legs/{leg_id}/select-method|confirm-addresses|mark-shipped|mark-delivered":"per-hop leg lifecycle","/api/shipments POST":"manual shipment; routing_type direct|via_intermediary|via_verifier","/api/shipping-methods":"carrier/service catalog","/api/my/shipping-profiles":"seller shipping profiles CRUD (Bearer JWT)","/api/shipping/estimate":"shipping cost estimate for listing","/api/my/carrier-preferences":"buyer carrier preferences","/api/listings/{listing_id}/finalize-auction":"shortcut → from-auction-win","/api/negotiations/{id}/convert-to-transaction":"legacy alias for from-*"}}