Ir al contenido

Endpoints API

Backend: tcgcards-api corriendo en Cloud Run. Todos los endpoints REST. Prefix: /api/v1.

URL prod: https://tcgcards-api-1033181994095.us-central1.run.app

Hay 4 tipos de auth distintos según el endpoint:

TipoCómo se envíaQuién la usa
noneEndpoints públicos (catálogo, feeds)
user JWTAuthorization: Bearer <jwt>Login con Google → JWT propio firmado HS256
adminuser JWT + user.isAdmin === trueSolo admins del marketplace
admin tokenX-Admin-Token: <token>Endpoints de catálogo sync — usa ADMIN_TOKEN env var
internal authX-Internal-Auth: <secret>Server-to-server (Next.js → API). Usa INTERNAL_AUTH_SECRET
internal cronX-Internal-Cron-Secret: <secret>Solo Cloud Scheduler. Usa INTERNAL_CRON_SECRET
MétodoPathAuthDescripción
GET/api/v1/healthnoneHealthcheck (devuelve status de conexión Mongo)
GET/api/v1/tcgsnoneLista TCGs habilitados
GET/api/v1/tcgs/:slugnoneTCG específico
GET/api/v1/tcgs/:slug/raritiesnoneRarezas disponibles
GET/api/v1/setsnoneLista paginada ?tcg=
GET/api/v1/sets/:idnoneSet específico
GET/api/v1/cardsnoneBusca/filtra cards con facetas
GET/api/v1/cards/suggestnoneAutocomplete
GET/api/v1/cards/:idnoneCard específica
GET/api/v1/cards/:id/listingsnoneListings activos de esa card
GET/api/v1/cards/:id/recent-salesnoneÚltimas 5 ventas
GET/api/v1/sitemap/cardsnoneCards para sitemap XML
GET/api/v1/sitemap/usersnoneUsernames públicos para sitemap
MétodoPathAuthDescripción
GET/api/v1/listingsnoneBúsqueda general (admin-grade)
GET/api/v1/listings/cardsnoneFeed público de listings tipo card
GET/api/v1/listings/cards/facetsnoneFacetas
GET/api/v1/listings/bulknoneFeed público de challa
GET/api/v1/listings/bulk/facetsnoneFacetas challa
GET/api/v1/listings/sealednoneFeed público de sellado
GET/api/v1/listings/sealed/facetsnoneFacetas sellado
GET/api/v1/accessoriesnoneFeed de accesorios
GET/api/v1/accessories/facetsnoneFacetas accesorios
GET/api/v1/listings/customnoneCustom listings (legacy)
GET/api/v1/listings/:id/publicnoneListing público
GET/api/v1/listings/:idnoneListing detallado
POST/api/v1/listingsuser JWT + activeCrea listing
PATCH/api/v1/listings/:iduser JWT + activeActualiza listing propio
DELETE/api/v1/listings/:iduser JWTElimina listing propio
GET/api/v1/users/me/listingsuser JWTMis listings con filtros
GET/api/v1/users/me/listings/facetsuser JWTFacetas de mis listings
POST/api/v1/users/me/listings/bulkuser JWTAcción bulk: pause/activate/mark_sold/delete
GET/api/v1/users/:username/listingsnoneListings públicos de un seller
GET/api/v1/users/:username/listings/facetsnoneFacetas del seller
MétodoPathAuthDescripción
GET/api/v1/me/cartuser JWTMi carrito enriquecido
POST/api/v1/me/cart/itemsuser JWT + activeAgrega item
PATCH/api/v1/me/cart/items/:listingIduser JWT + activeActualiza cantidad (0 = elimina)
DELETE/api/v1/me/cart/items/:listingIduser JWT + activeElimina item
DELETE/api/v1/me/cartuser JWT + activeVacía carrito
MétodoPathAuthDescripción
POST/api/v1/orders/checkoutuser JWT + activeCrea orden + MP preference
GET/api/v1/orders/:iduser JWTDetalle (buyer o seller)
POST/api/v1/orders/:id/resume-paymentuser JWT + activeReanuda pago si quedó en awaiting_payment
PATCH/api/v1/orders/:id/acceptuser JWT (seller)Acepta
PATCH/api/v1/orders/:id/shipuser JWT (seller)Marca como enviado
PATCH/api/v1/orders/:id/completeuser JWT (buyer)Confirma recepción
PATCH/api/v1/orders/:id/canceluser JWTCancela
GET/api/v1/orders/:id/whatsappuser JWTDevuelve WhatsApp de la contraparte si activó esa preferencia
GET/api/v1/me/orders/buyeruser JWTMis compras
GET/api/v1/me/orders/selleruser JWTMis ventas
MétodoPathAuthDescripción
GET/api/v1/me/unread-countuser JWT# de chats sin leer
GET/api/v1/me/conversationsuser JWTMis conversaciones recientes
GET/api/v1/conversations/:orderId/messagesuser JWTMensajes de la orden
POST/api/v1/conversations/:orderId/messagesuser JWTEnvía mensaje (rate-limited)
MétodoPathAuthDescripción
POST/api/v1/orders/:orderId/reviewuser JWTDeja review (después de completar)
GET/api/v1/orders/:orderId/reviewuser JWTMi review en esa orden
GET/api/v1/users/:username/reviewsnoneReviews recibidas por un seller
MétodoPathAuthDescripción
POST/api/v1/orders/:id/disputeuser JWTAbre dispute (buyer o seller)
GET/api/v1/orders/:id/disputeuser JWTDetalle dispute
POST/api/v1/orders/:id/dispute/responseuser JWTResponde dispute (la otra parte)
GET/api/v1/admin/disputesadminCola de disputes
GET/api/v1/admin/disputes/:idadminDetalle admin
POST/api/v1/admin/disputes/:id/resolveadminResuelve (outcome + adminNote)
MétodoPathAuthDescripción
POST/api/v1/reportsuser JWTReporta listing o user
GET/api/v1/admin/reportsadminLista agrupada
GET/api/v1/admin/reports/:idadminDetalle
MétodoPathAuthDescripción
POST/api/v1/uploads/signuser JWTFirma URL para subir a Cloudinary. kind: listing / proof / avatar / dispute / banner / dispute_response
MétodoPathAuthDescripción
GET/api/v1/bannersnoneBanners activos
GET/api/v1/admin/bannersadminTodos (admin)
GET/api/v1/admin/banners/:idadminDetalle
POST/api/v1/admin/bannersadminCrea
PATCH/api/v1/admin/banners/:idadminActualiza
POST/api/v1/admin/banners/reorderadminReordena
POST/api/v1/admin/banners/:id/publishadminPublica
POST/api/v1/admin/banners/:id/unpublishadminDespublica
POST/api/v1/admin/banners/:id/archiveadminArchiva
POST/api/v1/admin/banners/:id/restoreadminRestaura
MétodoPathAuthDescripción
GET/api/v1/me/walletuser JWTMi balance
GET/api/v1/me/wallet/entriesuser JWTMi ledger
GET/api/v1/admin/wallet-systemadminBalance + últimas 50 del system wallet
POST/api/v1/admin/wallet-system/owner-drawadminOwner extrae fondos del system wallet
GET/api/v1/admin/users/:userId/walletadminWallet de un user (auditado)
POST/api/v1/admin/users/:userId/wallet/creditadminAcredita
POST/api/v1/admin/users/:userId/wallet/debitadminDebita
POST/api/v1/admin/reconcileadminReconciliación manual
MétodoPathAuthDescripción
GET/api/v1/me/bank-accountuser JWTMi cuenta (encrypted)
PUT/api/v1/me/bank-accountuser JWTCrea/actualiza
DELETE/api/v1/me/bank-accountuser JWTElimina
GET/api/v1/admin/users/:userId/bank-accountadminDecrypted (auditado)
MétodoPathAuthDescripción
POST/api/v1/me/withdrawalsuser JWTSolicita retiro
GET/api/v1/me/withdrawalsuser JWTMis retiros
GET/api/v1/admin/withdrawalsadminLista cola
GET/api/v1/admin/withdrawals/:idadminDetalle
POST/api/v1/admin/withdrawals/:id/completeadminMarca como pagado
POST/api/v1/admin/withdrawals/:id/canceladminCancela
MétodoPathAuthDescripción
POST/api/v1/webhooks/mpMP signatureWebhook de Mercado Pago. Maneja approvals/rejects/late refunds
MétodoPathAuthDescripción
POST/api/v1/admin/moderation/hide-listingadminOculta listing
POST/api/v1/admin/moderation/unhide-listingadminRestaura listing
POST/api/v1/admin/moderation/warn-useradminAdvierte user
POST/api/v1/admin/moderation/suspend-useradminSuspende (7/30/90/null días)
POST/api/v1/admin/moderation/unsuspend-useradminLevanta suspensión
POST/api/v1/admin/moderation/ban-useradminBanea permanente
POST/api/v1/admin/moderation/unban-useradminDesbanea
POST/api/v1/admin/moderation/dismiss-reportadminDesestima 1 report
POST/api/v1/admin/moderation/dismiss-target-reportsadminDesestima todos los reports de un target
MétodoPathAuthDescripción
GET/api/v1/admin/overviewadminDashboard overview
GET/api/v1/admin/ordersadminBúsqueda de órdenes
GET/api/v1/admin/orders/:idadminDetalle
GET/api/v1/admin/usersadminCola moderation
GET/api/v1/admin/users/:username/moderationadminInfo moderation

Estos endpoints son para sincronización del catálogo desde TCGplayer. Usan X-Admin-Token.

MétodoPathAuthDescripción
GET/api/v1/admin/statsadmin tokenStats por TCG
POST/api/v1/admin/sync/:tcgadmin tokenDispara sync (fire-and-forget)
MétodoPathAuthDescripción
POST/api/v1/users/upsertinternal authCrea/actualiza user desde Next.js auth bridge
GET/api/v1/users/meuser JWTMi perfil
PATCH/api/v1/users/meuser JWTEdita perfil
GET/api/v1/users/by-id/:idnonePerfil público por id
GET/api/v1/users/:usernamenonePerfil público por username
POST/api/v1/users/me/acknowledge-warninguser JWTReconoce advertencia
GET/api/v1/users/me/can-deleteuser JWTVerifica si puede eliminar cuenta
DELETE/api/v1/users/meuser JWTElimina cuenta (soft delete)
MétodoPathAuthDescripción
POST/api/v1/internal/cron/orders-tickcron secretTick de órdenes (auto-cancel / auto-complete)
POST/api/v1/internal/cron/orders-awaiting-payment-cleanupcron secretCancela órdenes con timeout
POST/api/v1/internal/cron/wallet-reconcilecron secretReconcilia wallet
POST/api/v1/internal/cron/refunds-reconcilecron secretReconcilia refunds
  • Rate limits globales: 600 req/min. Endpoints con limiter propio: uploads, listings POST, chat, reviews.
  • Amounts: siempre CLP centavos (integer). Nunca pesos. Mostrarse con formatPriceCents().
  • Paginación:
    • ?page=N (offset-based) para queries simples.
    • ?cursor=<iso> o ?offset=<iso> (cursor-based) para feeds grandes.
  • Timestamps: ISO 8601 UTC.
  • Phone format: 569XXXXXXXX (E.164 Chile, privado).