Pular para o conteúdo principal

SSR Routes → BFF (mapa de proxies)

Lista de todas as rotas server-side (/api/*) expostas pelo template front-web-base (React Router 7 SSR), o que cada uma faz e qual rota do BFF (ou serviço externo) ela alvo.

Use esta página em conjunto com:

Convenções

  • Método = método HTTP que o cliente do front envia para a rota SSR.
  • BFF target = caminho final que sai da rota SSR (resolvido contra API_BASE_URL).
  • Service ⇢ indica via qual service do core (@cactus-agents/*) a chamada passa.
  • = a rota não bate em nada externo (cache local, version check, etc.).
  • (externo) = não vai para o BFF Cactus (AWS Lambdas, AppsFlyer, refer-a-friend, Sticker API).

:::info Por que existe essa camada? O front-end nunca chama o BFF diretamente do browser. As rotas /api/* lêem o JWT do cookie HttpOnly e proxam para o BFF, evitando vazar token, permitindo cache server-side e padronizando tratamento de erros (extractApiError + proxyErrorResponse). :::


Auth

Front SSRMétodoO que fazBFF target
/api/auth/loginPOSTLogin (credenciais + 2FA + captcha + Incognia). Faz login + getUserProfile, seta cookies HttpOnly.POST /auth/loginGET /auth/user-profile
/api/auth/registerPOSTCadastro. Endpoint final é resolvido por resolveRegisterEndpoint() conforme registerTypeVersion e flags da brand.POST /bff/register-simplified ou POST /auth/register ou POST /auth/register/simplified ou POST /bff/social/{provider}/registerSimplified
/api/auth/logoutPOSTLogout do usuário.POST /auth/logout (Service ⇢ accounts.AuthService.logout())
/api/auth/logout-autoPOSTLogout automático (sessão expirada).POST /auth/logout-auto
/api/auth/profileGETLê o profile cacheado (ou bate no BFF).GET /auth/user-profile[?check_spa_again=1]
/api/auth/recheck-spaPOSTRevalida sessão pós-navegação SPA.GET /auth/user-profile?check_spa_again=1
/api/auth/refreshPOSTRenova JWT.POST /users/refresh-token
/api/auth/recoveryPOSTRecuperação de senha (multi-step). Step é selecionado pelo body.POST /auth/passwords/reset/options, …/by-email, …/by-sms, …/validate-code, …/confirm
/api/auth/social/:providerPOSTLogin social (troca token do provider por JWT Cactus).POST /bff/social/:provider
/api/auth/validate-documentPOSTValida CPF/documento antes do cadastro.POST /documents/validate
/api/logs/auth-logoutPOSTLog estruturado de logout client-side.— (apenas log local)

Validation (e-mail, SMS, docs, address, termos)

Front SSRMétodoO que fazBFF target
/api/validation/email/sendPOSTEnvia código de verificação por e-mail.POST /bff/users/send-email
/api/validation/email/verifyPOSTVerifica código de e-mail.POST /bff/users/validade-email-code (typo proposital no BFF)
/api/validation/email/changePATCHTroca e-mail do usuário.PATCH /bff/users/self-email
/api/validation/sms/sendPOSTEnvia código SMS.POST /bff/users/send-sms
/api/validation/sms/verifyPOSTVerifica código SMS.POST /bff/users/validade-sms-code (typo proposital no BFF)
/api/validation/sms/changePATCHTroca telefone do usuário.PATCH /bff/users/self-phone
/api/validation/docs/submitPATCHSubmete dados iniciais (KYC nível 1).PATCH /bff/users/add-initial-data
/api/validation/address/submitPATCHSubmete endereço do usuário.PATCH /bff/users/add-address
/api/validation/terms/acceptPATCHAceite de termos/contratos.PATCH /bff/users/self-contracts
/api/validation/link-confirmPOSTConfirma link de validação (e-mail).POST /bff/validate-confirmation
/api/address/lookup-by-postal-codePOSTLookup de CEP/postal code.POST /apicep

User (perfil, preferências, segurança)

Front SSRMétodoO que fazBFF target
/api/user/update-profilePATCHAtualiza dados do perfil.POST /users/update/{id} (Service ⇢ userService.updateProfile)
/api/user/update-addressPATCHAtualiza endereço.PATCH /bff/users/update-address
/api/user/add-phonePATCHAdiciona telefone.PATCH /bff/users/add-phone
/api/user/check-passwordPOSTVerifica senha atual.POST /bff/users/check-password
/api/user/change-passwordPOSTTroca senha.POST /users/change-password/{id}
/api/user/two-factorPATCHLiga/desliga 2FA.PATCH /bff/users/self-two-factor
/api/user/store-documentPOSTUpload de documento (KYC).POST /documents/{endpoint}
/api/user/update-marketingPATCHPreferências de marketing.PATCH /bff/users/self-mkt
/api/user/update-preferencesPATCHPreferências (metadata genérica — whitelist no core).PATCH /bff/users/update-user-info-metadata
/api/user/update-pending-dataPATCHAtualiza dados pendentes (pós-login).PATCH /bff/users/update-pending-data
/api/user/update-limitsPATCHAtualiza limites de jogo responsável.PATCH /bff/users/update-limits
/api/user/timeout-limitsPATCHPause/timeout de conta.PATCH /bff/users/timeout-limits
/api/user/self-exclusionPATCHAuto-exclusão.PATCH /bff/users/self-exclusion
/api/user/login-historyGETHistórico de logins paginado.GET /bff/users/login-history?page=N
/api/user/last-casino-gamesGETÚltimos jogos jogados pelo user.GET /bff/games/user-last-casino-games-dl
/api/user/zendesk-tokenGETToken Zendesk SSO.GET /bff/users/zendesk/create-or-update-user
/api/user/referralsPOSTLista convidados do user.POST /users/list-referrals
/api/user/indication-statsGETStats da campanha refer-a-friend v2.GET {referralCustomV2.apiUrl}/indication-stats/{userId} (externo)
/api/user/referral-indicatorGETIndicator legado refer-a-friend v1.GET {referralCustomV1.apiUrl}/refer-friend/indicator (externo)

Wallet

Front SSRMétodoO que fazBFF target
/api/wallet/refreshPOSTRecarrega wallet + rollover (graceful).GET /users/wallet + GET /bonus/rollover + GET /bonus/rollover-accomplished
/api/wallet/transactionsPOSTLista transações (filtro por tipo/período/página).POST /bff/transactions ou GET /transactions/cashback?… (quando type=cashback)
/api/wallet/actionPOSTAções de wallet: bonus-transfer ou cashback-transfer.POST /bonus/transfer ou POST /cashback/transfer
/api/wallet/receiptPOSTComprovante de saque (HTML/PDF).GET /withdraw/{id}/generate (client.proxyRaw)

Payments (depósito, saque, métodos, contas)

Front SSRMétodoO que fazBFF target
/api/payments/providersGETLista provedores de pagamento.GET /payment-providers
/api/payments/depositPOSTCria depósito.POST /wallet/add-credit
/api/payments/deposit-statusGETStatus de uma transação de depósito (polling).GET /wallet/charge/{transactionId}
/api/payments/withdrawPOSTSaque.POST /new-withdraws
/api/payments/bank-listGETLista de bancos.GET /bff/users/bank-list
/api/payments/couponGETResolve cupom.GET /coupons/{code}
/api/payments/pix-keyGET/POSTLê/atualiza chave PIX do user (BR).POST /pix-keys/user-key (get) / POST /pix-keys/update-user-key-v2 (update)
/api/payments/bank-accountPOSTHub multi-ação por body.type: get-pix / update-pix / get-mex / save-mex / get-generic / save-generic.POST /pix-keys/user-key, POST /pix-keys/update-user-key-v2, GET /mex-bank-accounts/user-account, POST /mex-bank-accounts/store, GET /generic-bank-accounts/user-account, POST /generic-bank-accounts/store

Games (catálogo, busca, start, votos, stats)

Front SSRMétodoO que fazBFF target
/api/games/listGETCatálogo paginado (category/provider/search). Cacheável (CDN + platform-cache).GET /casino-games/list/?…
/api/games/searchPOSTBusca legada (delega para getListPage).GET /casino-games/list/?…
/api/games/category/:slugGETLista de jogos de uma categoria (infinite-scroll, cache-first).GET /casino-games/list/?categories[]=:slug&…
/api/games/provider/:slugGETLista de jogos de um provider (infinite-scroll, cache-first).GET /casino-games/list/?providers[]=:slug&…
/api/games/by-slugsGETResolve N jogos por slug (catálogo cacheado + fallback getDetail).GET /casino-games?slug={slug} (fallback)
/api/games/startGETInicia uma sessão de jogo (autenticado).GET /start-game-v2?…
/api/games/top-winsGETTop wins do dia (data-lake).GET /bff/games/top-wins-dl
/api/games/statistics-dlGETStats DL de um jogo.GET /bff/games/statistics-dl?slug=…
/api/games/stats-batchPOSTStats de N slugs cache-only (zero BFF round-trip).(lê só do platform-cache)
/api/games/voteGET/POST/DELETEVotação em jogo (up/down).GET /casino-game-votes?casinoGameId=…, POST /casino-game-votes/store/, DELETE /casino-game-votes/destroy/{gameId}
/api/favoritesGET/PUTLê / toggle de favoritos.GET /bff/favorite-games, PUT /bff/favorite-games/toggle

:::note Endpoints de games consumidos só no SSR (sem /api/* correspondente) O catálogo é montado server-side via GamesCacheService no _layout loader. Endpoints adicionais usados internamente: GET /casino-games/home, GET /casino-games/page/{page}, GET /casino-games/list/base, GET /bff/games/last-wins, GET /bff/games/game-high-payers-dl. :::

Front SSRMétodoO que fazBFF target
/api/search/unifiedPOSTBusca unificada (casino + sportsbook).GET /casino-games/list/?… + GET /cactus-sportbook/search?…

Sports (Cactus Sportsbook First + Altenar + Betby)

Front SSRMétodoO que fazBFF target
/api/sports/searchGETBusca no sportsbook Cactus First.GET /cactus-sportbook/search?…
/api/sports/launchGETLaunch autenticado (First).GET /cactus-sportbook/launch
/api/sports/anonymous-launchGETLaunch anônimo (First).GET /cactus-sportbook/anonymous-launch
/api/sports/betby-jwtPOSTEmite JWT do Betby.POST /betby/get-jwt
/api/sports/altenar-tokenGETToken do Altenar.GET /alternar/token
/api/cactus-sportbook/*GETProxy transparente para qualquer subpath do Cactus Sportsbook (paridade com o legado Nuxt).GET /cactus-sportbook/{subPath} (client.proxyRaw)

KYC

Front SSRMétodoO que fazBFF target
/api/kyc/startGETInicia KYC (normal ou recovery).GET /bff/users/kyc?source=… ou GET /bff/users/kyc/recovery?…
/api/kyc/statusGETPolling de status do KYC.GET /bff/users/kyc/status?kyc_id=… ou GET /bff/users/kyc/status/recovery?…

Rewards / Gamification (REST)

Front SSRMétodoO que fazBFF target
/api/rewards/listPOSTLista rewards do user paginado.GET /bff/gamification/rewards?page=…&per_page=…&type=…
/api/rewards/redeemPOSTResgata um reward.POST /bff/gamification/redeem

:::note Gamification ≠ Smartico Os endpoints REST acima são da gamificação interna do Cactus (rewards/redeem). O Smartico é uma plataforma 3rd-party complementar que roda client-side via JS SDK — sem rotas SSR/BFF envolvidas. :::

Income Report (BR)

Front SSRMétodoO que fazBFF target
/api/income-report/available-yearsGETAnos disponíveis.GET /income-report/available-years
/api/income-report/generatePOSTGera relatório do ano.POST /income-report/generate
/api/income-report/status/:idGETPolling de status do relatório.GET /income-report/{id}

Álbum de Figurinhas (Sticker Book)

Bate na Sticker API (STICKER_API_URL), separada do BFF Cactus. Handshake via POST /auth/token antes de cada chamada autenticada.

Front SSRMétodoO que fazSticker API target
/api/album/bootstrapGETRefetch do estado completo do álbum (CSR).GET /campaigns/current, /users/me/progress, /users/me/stickers, /users/me/checkin
/api/album/checkinPOSTClaim do check-in (daily/completion).POST /users/me/checkin/claim?claimType=…
/api/album/claim-featuredPOSTResgata featured card.POST /users/me/featured/{featuredId}/redeem
/api/album/open-packPOSTAbre um pacote.POST /users/me/packs/open
/api/album/open-all-packsPOSTAbre todos os pacotes.POST /users/me/packs/open-all
/api/album/mission-typePOSTSeleciona missionType (casino/sportbook).GET /campaigns/current?missionType=… (mutação implícita via query param)

FTD Cashback (AWS Lambdas)

Front SSRMétodoO que fazTarget externo
/api/ftd-cashback/verifyPOSTVerifica elegibilidade FTD-cashback.POST {dark-verifier}.execute-api.sa-east-1.amazonaws.com/dark-verifier (AWS)
/api/ftd-cashback/send-cashbackPOSTDispara envio do cashback.POST {dark-freedom}.execute-api.sa-east-1.amazonaws.com/dark (AWS)

Tracking

Front SSRMétodoO que fazTarget externo
/api/tracking/appsflyerPOSTEncaminha evento S2S para o AppsFlyer.POST {appsFlyerConfig.s2sUrl} (AppsFlyer)

Infra / Dev / Cache

Front SSRMétodoO que fazBFF target
/api/versionGETVersão do app (build id) para cache-busting.
/api/clear-cacheGETForce-clear de cache do browser (compat legado Nuxt).
/api/cache/purgePOSTInvalida cache do worker proxy.POST {PROXY_CACHE_PURGE_URL} (worker interno)
/api/dev/cache-clearGET/POSTLimpa platform-cache local (só DEV).
/api/dev/cache-policyGETInspeciona políticas de cache (só DEV).
/api/dev/proxy*Forwarder genérico para o BFF (dev tool — DevApiExplorer).* /{path} arbitrário no BFF
/api/dev/visitor-infoGETInfo do visitor (geo/headers, só DEV).

Como manter essa página

  1. Toda rota nova em app/routes/api/** deve ser registrada em app/router/routes.ts e listada aqui.
  2. Quando o endpoint BFF mudar, atualize as duas páginas: aqui e api-map.
  3. Para rotas que usam um service do core, o BFF target real está no service.ts do package em front-cactus-core/packages/<pkg>/src/.

Última auditoria: 2026-06-02 — varredura completa de repos/front-web-base/app/routes/api/** + repos/front-cactus-core/packages/*/src/*service*.ts.