Main non-admin routes
GET /api/productsPOST /api/checkout/cryptoPOST /api/checkout/crypto/verifyPOST /api/checkout/dsports-cashGET /api/dsports-cashGET /api/dsports-cash/ledgerGET /api/commerceGET /api/v1/exchange-rate(authenticated;401without a session)POST /api/webhooks/revenuecatGET /api/v1/product_entitlement_mappingPOST /api/v1/user/set-pinPOST /api/v1/user/verify-pinGET /api/v1/cards/{id}/provenance/api/v1/marketplace/*(published in OpenAPI)POST /api/v1/kyc/link-token,POST /api/v1/kyc/session/complete,GET /api/v1/user/kyc-status
Runtime behavior highlights
- Product endpoints return active catalog entities suitable for client storefront rendering. Retired Frontline Pack / Frontline Pass products stay hidden even if a row is reactivated.
- Checkout endpoints initialize and verify purchase attempts before final persistence. Pack purchase confirmation is
POST /api/checkout/crypto/verify.PUT /api/packs/{id}/purchasealways returns410 GONE. - Webhook path reconciles provider-side purchase state into app-side records.
- dsports-cash endpoints expose tier/balance and purchase lifecycle behavior.
- Marketplace
listings/minealiasesme/listings.POST /listingsrequiresx-listing-pin-token. - List and detail marketplace GETs declare optional bearer auth.
featuredandprice-suggestionstay anonymous. - Listing a pack still in
processingreturns409 PACK_NOT_LISTABLE. An opened pack returns409 PACK_ALREADY_OPENED. - Auction
reservePriceis optional and auction-only. Missed reserve ends asended-reserve-not-met. - Card provenance is public and assembled from existing ownership, sale, and mint rows.
Side effects and dependencies
- Successful purchases update purchase models and can affect wallet/inventory-visible state.
- Entitlement mapping endpoints provide external integration interoperability.
Known caveats
- External provider latency can produce temporary states between initiation and final verification.
- Reconciliation scripts may be used for historical purchase correction.
Exclusions
- Admin stock override and privileged catalog mutation paths are excluded.
