Skip to main content

Estrutura do Changelog

Cada versão é organizada em seções para facilitar a leitura:
  • Added: novos recursos e funcionalidades.
  • Changed: mudanças em recursos existentes.
  • Fixed: correções de bugs.
  • Removed: recursos ou funcionalidades removidos.
  • Deprecated: recursos ou funcionalidades que estão obsoletos e serão removidos em futuras versões.
  • Security: atualizações relacionadas à segurança.
  • Performance: melhorias de desempenho.
  • Documentation: atualizações na documentação.
  • Notes: notas adicionais sobre a versão, como links para pull requests, issues ou detalhes técnicos.
  • Contributors: lista de colaboradores que contribuíram para a versão, com links para seus perfis.
  • Other: outras mudanças que não se encaixam nas categorias acima.

v16.09.2026

Added
  • Paginação por cursor em todos os endpoints de listagem: GET /stores, GET /stores/:storeId/categories, GET /stores/:storeId/products, GET /stores/:storeId/coupons, GET /stores/:storeId/affiliates, GET /stores/:storeId/payments e GET /stores/:storeId/payments/filter.
  • Parâmetro cursor (string) para avançar na lista usando nextCursor da resposta anterior.
  • Parâmetros sortBy (campo) e order (asc/desc) para ordenação nos endpoints com cursor.
  • Respostas incluem nextCursor e hasMore no modo offset, permitindo migração sem recomeçar do zero.
Changed
  • Documentação de paginação em limitations.mdx atualizada com seção dedicada a cursor.
Contributors

v11.09.2026

Added
  • Rastreio de cliques de afiliados: endpoints públicos POST /stores/:storeId/clicks (registra clique com ref) e POST /stores/:storeId/clicks/verify (valida origem e marca o script instalado). Validação da Origin contra store.trackingDomain.
  • Campos de tracking na loja: trackingDomain, scriptInstalled e scriptInstalledAt retornados por GET /stores/:storeId e atualizáveis via PUT /stores/:storeId (STORE_UPDATE).
Changed
  • O link de afiliado passou a usar o trackingDomain da loja (fallback para o domínio da loja), permitindo rastreio em domínio externo.

v08.09.2026

Added
  • Nova seção Afiliados na referência da API: GET/POST /stores/:storeId/affiliates e PUT/DELETE /stores/:storeId/affiliates/:affiliateId, com commissionRules (DEFAULT/PRODUCT/CATEGORY/COUPON, menor position vence) e statistics=true para statistics/metrics.
  • GET /stores/:storeId/payments/:paymentId: pagamento completo com produtos (preço, estoque, categorias) e metadata (cupom em metadata.items[].coupon).
Changed
  • Todos os endpoints DELETE agora usam soft delete (deletedAt): o registro some das listagens, mas é preservado no banco (nunca mais remoção física).

v07.09.2026

Added
  • Toggle de ativar/desativar gateway de pagamento (Mercado Pago e Asaas) direto no card, sem precisar recadastrar as credenciais.
  • Nova rota de reativação no backend: POST /user/gateway com active: true e sem credenciais reativa a gateway usando as chaves já salvas.
  • Card colapsável de “Recebimento líquido por gateway” no editor de produto, agrupado por gateway (Mercado Pago/Asaas), com previsão de taxa e valor líquido por método.
  • Indicador “Receita Bruta” ao lado da “Receita Líquida” no dashboard.
  • Botão “Atualizar dados” no dashboard (ícone de refresh ao lado do seletor de loja) que recarrega lojas, pagamentos, categorias, produtos e cupons em paralelo, com spinner de ~450ms.
  • Realtime: atualização automática periódica em lojas (60s), categorias, produtos e cupons (30s).
  • Logos reais das gateways em public/images/gateways/ (Mercado Pago e Asaas) usados nos formulários do dashboard.
  • Asaas adicionada aos tipos dos SDKs (sdk-node-browser-bun e sdk-java-kotlin): novas opções ASAAS (gateway) e ASAAS_ORDER_PIX / ASAAS_ORDER_CARD / ASAAS_ORDER_BOLETO em PaymentCreateGateway.
  • Parcelamento no cartão no checkout (Asaas e Mercado Pago): seletor de parcelas limitado ao maxInstallments configurado pelo lojista no form do gateway (padrão 1, máximo 12).
  • Tabela de taxa por faixa de parcelas (installmentFees) no form do gateway: cada faixa de X até Y parcelas tem percent + fixed próprios, com até 12 faixas; validada no front end (destaque vermelho por linha) e no back end (sobreposição, min > max, limite).
  • GET /stores/:storeId/fees agora expõe maxInstallments e installmentFees por gateway, permitindo o checkout exibir as parcelas disponíveis e as taxas reais (valores e percentuais) configuradas.
  • Reautenticação step-up (código por e-mail, reutilizando o fluxo 2FA) para ações sensíveis do dashboard, como visualizar credenciais de gateway e alterar senha.
Changed
  • Desativar uma gateway agora preserva as credenciais cadastradas, permitindo reativar sem redigitar as chaves (antes apagava as credenciais).
  • Botão de gateway renomeado de “Remover” para “Desativar” refletindo o novo comportamento.
  • MetricCard do dashboard com altura e alinhamento uniformes (h-full min-h-[92px], mt-auto para o trend), grid de 6 colunas para comportar o novo card de Receita Bruta.
  • Imagens das gateways reorganizadas de public/images/banner/ para public/images/gateways/, com nomes normalizados (mp.jpg → mercadopago.jpg, assas.png → asaas.png).
  • Logos das gateways no card de recebimento do produto com arredondamento médio (rounded-md).
  • Sessões mais estáveis: tolerância de 90s de graça no AUTH2 e troca de IP não destrói mais a sessão (apenas marca como suspeita para reautenticação).
  • Preço cobrado em pagamento com cartão agora usa a faixa de parcelas do installmentCount (installmentFees) em vez da taxa plana de fees.card, persistindo metadata.gateway.card.installmentCount no pagamento — o valor cobrado passa a bater com o exibido no checkout.
  • O número de parcelas escolhido é o que vale em todas as gateways: a API valida o installmentCount contra o maxInstallments da loja e recusa acima do limite (novos códigos 400 INVALID_INSTALLMENT_COUNT e 400 MAX_INSTALLMENTS_EXCEEDED, sem message — padrão da rota).
  • As gateways de cartão (Asaas e Mercado Pago) aplicam o installmentCount escolhido em todos os fluxos: a Asaas divide o total igualmente nas N× (inclusive na fatura hospedada, antes só no cartão tokenizado) e o Mercado Pago limita o checkout ao número escolhido (max_installments).
Fixed
  • Erro de hidratação do React causado por <button> dentro de <button> no cabeçalho dos cards de gateway (switch agora é irmão do botão de expandir, não filho).
  • Métodos de pagamento duplicados no card de “Recebimento líquido” (aliases PIX/BANK_TRANSFER, CARD/CREDIT_CARD, BOLETO/TICKET) agora deduplicados por label.
  • Taxa menor que 1 centavo (ex.: 0,99% de R0,50)agoraexibidacomo"<R 0,50) agora exibida como "< R 0,01” em vez de desaparecer/ficar zerada.
  • Reativação de gateway sem credenciais cadastradas agora devolve erro claro (GATEWAY_NOT_FOUND / GATEWAY_NO_CREDENTIALS).
  • Checkout cartão: cada opção de parcela calculava o valor com a taxa da seleção atual (e não da própria faixa), exibindo valores errados ao alternar 1x/2x/… — corrigido para totalForInstallments(n) com a faixa de n.
  • Checkout 500: ReferenceError: Cannot access 'discountAmount' before initialization ao aplicar cupom (declaração movida antes de totalForInstallments).
  • Faixas de parcelas duplicadas/sobrepostas agora bloqueadas no save do gateway (400 INVALID_DATA no back end + destaque vermelho no form).
  • Step-up: mensagens de erro nunca mais exibem códigos crus (TOO_MANY_REQUESTS etc.) — fallback amigável em português.
Documentation
  • Changelog atualizado com o novo fluxo de ativar/desativar gateways, card de recebimento líquido, botão de atualizar no dashboard e organização dos logos.
  • api-reference/payment/post.mdx com a tabela completa de gateways/métodos (<PROVEDOR>_ORDER_<MÉTODO>), exemplos para Asaas (PIX) e documentação das respostas (QR code, init_point/invoiceUrl, pixQrCode).
  • api-reference/payment/filter.mdx com ASAAS no parâmetro de filtro gateway (EFI_BANK marcado como legado).
  • api-reference/store/fees.mdx esclarecendo que as taxas retornadas são as definidas pelo lojista (não o custo cobrado pela gateway), conforme configurado no dashboard.
  • api-reference/store/fees.mdx atualizado com os novos campos maxInstallments e installmentFees (faixas de parcelas) por gateway.
  • api-reference/payment/post.mdx documentando o parcelamento no cartão via metadata.gateway.card.installmentCount (limite maxInstallments, taxa por faixa aplicada sobre o total e persistência do installmentCount no pagamento), com exemplo de cartão parcelado em 6x.
  • api-reference/payment/post.mdx atualizado com o comportamento final do parcelamento: escolhido vale em Asaas (fatura hospedada e tokenizado) e Mercado Pago (limitado ao escolhido), recusa acima do limite e novos códigos INVALID_INSTALLMENT_COUNT / MAX_INSTALLMENTS_EXCEEDED (tabela de erros).
  • Changelog atualizado com a validação de parcelas, aplicação nas duas gateways e cobertura de testes (unitários de ASAAS_SERVICE/MERCADOPAGO_SERVICE + rotas).
  • Repos de SDK atualizados com Asaas (SDK Node/Browser/Bun: tipos PaymentGateway/PaymentCreateGateway + campos init_point, pixQrCode, copyPastePix; SDK Java: enums + README corrigido).
  • README do SDK Java: valor desatualizado MERCADOPAGO_SERVICE_PIX corrigido para MERCADOPAGO_ORDER_PIX.
Contributors

v20.04.2026

Added
  • Serviço centralizado SendPush na API para unificar o envio de notificações Firebase.
  • Suporte a envio de push com token, tokens, url, route, type e data no mesmo payload.
  • Abertura automática do pagamento específico ao clicar na notificação, usando paymentId no fluxo do dashboard.
Changed
  • Fluxo de assinatura atualizado para disparar notificação push e e-mail de plano ativado com o mesmo padrão de contexto.
  • Push de pagamento atualizado para abrir diretamente a aba de pagamentos e focar o pagamento correspondente.
  • Service worker do site ajustado para respeitar url, route e hash ao abrir notificações.
  • Frontend do Firebase ajustado para redirecionar notificações em foreground com o mesmo comportamento do service worker.
Fixed
  • Correção do clique em notificações para evitar abertura genérica da página inicial quando existe destino específico.
  • Normalização automática de campos do payload de push para evitar envio de valores não suportados pelo FCM.
Documentation
  • Changelog atualizado com a refatoração do fluxo de push e a integração de abertura direta do pagamento via notificação.
Contributors

v19.04.2026

Added
  • Novo controle de bônus de renovação na assinatura: ao contratar um novo plano, o usuário pode receber os dias restantes como bônus, com limite máximo de 7 dias.
  • Ajuste no seed da API para ativar apenas a assinatura padrão definida em SEED_ACTIVE_PLAN, sem recriar usuário ou loja.
  • Melhorias visuais no card de assinatura do dashboard, com ícones nos campos de plano, vencimento e status.
Changed
  • Lógica de assinatura atualizada para calcular dias bônus com base no vencimento atual da assinatura ativa.
  • Card de assinatura do dashboard simplificado para exibir apenas o status baseado no vencimento.
Contributors

v18.04.2026

Added
  • Suporte ao campo opcional metadata (JSON) no model de categorias da API.
  • Persistência e retorno de metadata nos fluxos de criação, edição e consulta de categorias (POST, PUT, GET e GET por ID).
  • Campo de metadata em formato JSON no painel de categorias (Site) para criar e editar usando editor Monaco, com validação de sintaxe em tempo real.
  • Novo sistema automático de reversão de stock e cupom quando pagamentos não são concluídos.
  • Função utility revertPaymentAllocation() para reverter atomicamente a alocação de stock e useLimit de cupons.
  • Integração de reversão automática no fluxo de expiração de pagamentos (após 24h sem confirmação).
  • Integração de reversão automática no webhook do Mercado Pago para status: REJECTED, CANCELLED, REFUNDED, CHARGED_BACK.
Changed
  • Fluxo de categorias no frontend atualizado para enviar payload com metadata junto aos demais campos.
  • Cliente de API do site para categorias atualizado para aceitar metadata opcional em criação e atualização.
  • Chave de cache de categorias mantida no padrão original (stores:{storeId}:categories) após ajustes no rollout.
  • Fluxo de expiração de pagamento (paymentQueue) agora reverte stock e cupom antes de marcar como EXPIRED.
  • Webhook do Mercado Pago agora detecta automaticamente falhas de pagamento e reverte alocações correspondentes.
Fixed
  • Correção crítica: Stock e cupons NÃO eram revertidos quando pagamentos falhavam, resultando em inconsistência de dados.
  • Implementação de reversão transacional para garantir consistência mesmo em falhas parciais.
Documentation
  • Referência da API de categorias atualizada para incluir o campo metadata nos endpoints:
    • api-reference/category/post
    • api-reference/category/put
    • api-reference/category/get
    • api-reference/category/get-by-id
  • Exemplos de request/response de categoria revisados para refletir payload e retorno com metadata.
  • Documentação de limites de produtos e cupons atualizada para refletir comportamento de reversão em pagamentos não-aprovados.
Contributors

v16.04.2026

Added
  • Novo endpoint privado de filtros para pagamentos: GET /stores/:storeId/payments/filter.
  • Suporte a filtros combináveis por campos do pagamento: id, uuid, status, name, email, cpf, price, coupon, gateway, shipment, etc, paginação e ordenação.
  • Suporte a filtros de metadata com caminho aninhado (dot notation), por exemplo: metadataKey=items.0.product.sold&metadataValue=19.
Changed
  • Controller de filtros de pagamentos ajustado para tratar metadata aninhada com maior consistência.
  • Lógica de filtro de metadata consolidada para evitar sobrescrita entre critérios (metadataKey, metadataValue).
  • Navegação da documentação atualizada para incluir a nova página api-reference/payment/filter na seção de Pagamentos.
  • Ajuste de nomenclatura e formatação para manter consistência com outras páginas de API.
Contributors

v15.04.2026

Added
  • Novas rotas autenticadas de push token na API: POST /user/push-token (registro) e DELETE /user/push-token (remoção).
  • Novo fluxo de boas-vindas via Firebase no registro de token: ao cadastrar um token válido, o sistema envia uma notificação inicial de confirmação.
  • Persistência de tokens em user.metadata.pushTokens com atualização do cache Redis do usuário após alterações.
Changed
  • Lógica de registro de push token atualizada para evitar duplicidade, manter até 3 tokens por usuário e priorizar os tokens mais recentes.
  • Service Worker de notificações do site revisado para suportar melhor payloads Firebase em background e exibição mais completa (title/body/icon/image/badge).
  • Adicionado tratamento de clique em notificação no Service Worker para focar janela existente ou abrir a URL enviada no payload.
Fixed
  • Ajustes no fluxo de exibição de push em background para reduzir casos em que a notificação não aparecia corretamente em alguns payloads.
Documentation
  • Changelog atualizado com as melhorias de notificações push (API + Site) implementadas nesta data.
Contributors

v15.03.2026

Added
  • Atualização dos models User e Store para suportar URLs de webhook (API)
  • Refatoração do upload de imagens para usar blob server interno e atualização dos componentes relacionados (Site)
  • Aprimoramento da gestão de webhooks com melhor controle de estado e feedback ao usuário (Site)
Changed
  • Ajuste no package.json da API e do Site para nova versão 15.03.2026
  • Ajuste no controle de sessão e logging de erros nos controllers de autenticação (API)
Fixed
  • Correção de logging de erro e ajuste no skip de recuperação de sessão nos controllers de autenticação (API)
Documentation
  • Atualização de versão e dependências nos pacotes (API e Site)
Contributors

v14.03.2026

Added
  • Nova estrutura de documentação para Webhooks: seção própria, endpoints GET/POST/DELETE documentados separadamente.
  • Documentação de payload criptografado e exemplo de decifragem no tutorial.
Changed
  • Navegação da documentação reorganizada: webhooks não aparecem mais em lojas, mas em grupo próprio.
  • Tutorial de webhooks revisado para alinhar com a API real e o formato criptografado.
  • Ajuste nos exemplos e explicações para refletir a implementação real do backend.
Removed
  • Removido campo/menção a webhooks da resposta de loja na documentação.
  • Arquivo antigo de webhooks dentro de stores removido.
Contributors

v13.03.2026

Added
  • Revisão do job de expiração de planos (billing.job.js) para garantir compatibilidade com a estrutura atual de assinaturas baseada em UserSubscriptionHistory.
  • Validação da lógica de assinatura ativa usando getPrimarySubscription e conferência dos critérios de expiração e notificações.
  • Função minimalista para setar plano do usuário (setUserPlan).
  • Refatoração do helper ACTIVE_SUBSCRIPTION para lógica direta e enxuta.
  • Validação e documentação dos códigos de erro do endpoint de criação de loja.
  • Ajuste no frontend: tratamento de erros no modal de criação de loja agora impede feedback de sucesso indevido.
Changed
  • Documentação do fluxo de assinatura e expiração revisada via IA.
  • Refatoração dos schedulers e filas: nomes de jobs e filas padronizados para evitar conflitos e garantir processamento correto.
  • Limpeza automática de jobs concluídos e falhados agora é padrão em todas as filas (removeOnComplete/removeOnFail).
  • Atualização dos métodos de agendamento para usar apenas as opções essenciais, centralizando a configuração de limpeza no core da fila.
  • Atualização do webhook de assinatura para usar a nova assinatura do ACTIVE_SUBSCRIPTION.
  • Padronização dos retornos de status e códigos de erro no backend de lojas.
Fixed
  • E-mails de expiração e expiração de plano revisados e corrigidos, agora enviados com novo design padronizado.
  • Correção do job de expiração para processar assinaturas já vencidas, não apenas ativas.
  • Atualização direta do metadata do histórico de assinatura, sem dependência de função externa.
  • Correção do switch/case de erros no modal de criação de loja para garantir UX correta.
  • Ajuste de classes Tailwind para evitar warnings de build.
Contributors

v11.03.2026

Added
  • Suporte a múltiplos métodos de pagamento via Mercado Pago: PIX e Cartão de Crédito (MERCADOPAGO_SERVICE_PIX, MERCADOPAGO_SERVICE_CARD).
  • Campo feeAppliedTo nas credenciais do gateway para definir em quais métodos de pagamento a taxa é aplicada (ex: apenas cartão, apenas pix, ou ambos).
  • Estrutura padronizada de resposta de pagamento com objetos service e payment separados.
  • Registro do campo gatewayMethod nos metadados internos do pagamento para rastreabilidade.
Changed
  • Lógica de cálculo de taxa (feePercentage) agora considera feeAppliedTo — a taxa só é aplicada se o método de pagamento estiver listado.
  • Resposta da API de pagamento reestruturada: agora retorna { service, payment } em vez de dados planos.
  • Pagamentos gratuitos agora retornam service.type: "FREE_PAYMENT" para consistência com os demais fluxos.
  • Gateway de cartão migrado para Checkout Pro do Mercado Pago com exclusão de métodos não desejados via excluded_payment_types e excluded_payment_methods.
Fixed
  • Correção de bug onde MERCADOPAGO_SERVICE não retornava o resultado do axios por ausência de return.
  • Correção de bug onde value.gateway era sobrescrito com gatewayType, fazendo o serviço sempre cair no fluxo UNSUPPORTED_PAYMENT_TYPE.
  • Correção do campo gateway salvo no banco para usar o enum correto do Prisma (MERCADOPAGO) em vez do método completo.
  • Remoção de default_payment_method_id: "credit_card" que causava erro invalid default_payment_method_id na API do Mercado Pago.
Documentation
  • Nova página de referência para o endpoint POST /stores/:storeId/payments com exemplos de requisição, snippets cURL e respostas documentadas para PIX, Cartão e pagamento gratuito.
Contributors

v08.03.2026

Added
  • Changelog atualizado para documentar os novos schedulers automáticos (UserDelete, Billing) e a tradução de todas as mensagens de scheduler/fila para inglês.
  • Opção para configurar taxa (%) repassada ao cliente ao usar gateways de pagamento (frontend e backend).
  • Campo feePercentage agora pode ser definido por gateway e salvo nas credenciais criptografadas.
  • Aplicação automática da taxa no valor final do pagamento, tanto na API pública quanto na admin.
  • Registro dos campos gatewayFeePercentage e gatewayFeeAmount nos metadados do pagamento.
  • IDs e htmlFor dos campos do modal de gateways agora seguem o padrão gateway-TIPO-campo para compatibilidade e acessibilidade.
  • Mensagens de validação dos gateways exibidas em português, tanto no frontend quanto no backend.
Changed
  • Estrutura dos metadados de pagamento na API admin agora está idêntica à pública para taxas de gateway.
  • Validação aprimorada para garantir que feePercentage seja respeitado e aplicado corretamente.
  • Dashboard de pagamentos agora exibe os pagamentos mais recentes por padrão, mesmo na opção “Todos”.
  • Ajuste nos checkboxes de métodos de pagamento para garantir compatibilidade com o backend e scripts de validação.
Fixed
  • Correção de erro de reatribuição de variável (finalPrice) no controller de pagamento admin.
  • Ajustes para garantir consistência entre API pública e admin na lógica de taxas.
  • Correção de erro TypeError: Cannot read properties of undefined (reading 'split') ao salvar gateways sem id nos inputs.
  • Checagem extra para ignorar elementos sem id no script de gateways.
  • Aplicação de optional chaining (?.) para evitar erros de acesso a propriedades indefinidas.
  • Checagem de lint/type em API e site para garantir ausência de erros críticos.
Contributors

v05.03.2026

Added
  • Aba dedicada Changelog na navegação principal da documentação.
  • Estrutura inicial para registro contínuo de versões e mudanças.
  • Copiar o ID de usuário no modal do perfil para facilitar a integração com outras ferramentas.
  • Suporte a ordenação de categorias com campo position no backend.
  • Novo endpoint privado PUT /stores/:storeId/categories/reorder para salvar a ordem por lista de IDs.
  • Ações de painel para organizar categorias com Mover para cima e Mover para baixo.
  • Suporte a ordenação de produtos, cupons e lojas com campo position no backend.
  • Novos endpoints privados PUT /stores/:storeId/products/reorder, PUT /stores/:storeId/coupons/reorder e PUT /stores/reorder.
  • Ações de painel para organizar produtos, cupons e lojas com Mover para cima e Mover para baixo.
Changed
  • Ajuste de navegação para separar atualizações da aba de tutoriais.
  • Melhoria no agrupamento da documentação para facilitar descoberta de mudanças recentes.
  • GET /stores/:storeId/categories agora retorna categorias na ordem de position.
  • GET /stores/:storeId/categories/:categoryId e respostas de criação/edição de categoria agora incluem position.
  • GET /stores, GET /stores/:storeId/products e GET /stores/:storeId/coupons agora retornam dados na ordem de position.
  • Respostas de criação/edição e detalhes de produtos, cupons e lojas agora incluem position.
Fixed
  • Correção de links quebrados relacionados a tutoriais de integração.
  • Correção de inconsistências na nomenclatura de versões anteriores.
  • Correção de formatação em seções de changelog anteriores.
  • Erros de rotas que era privada e agora é pública.
Documentation
  • Atualização da documentação para incluir o changelog e instruções de uso.
  • Novos tutoriais de integração adicionados à documentação, como Mercado Pago, EFI Bank (apenas as abas).
  • Documentação da API de categorias atualizada com o campo position.
  • Nova página da API para reordenação: api-reference/category/reorder.
  • Documentação da API de produtos, cupons e lojas atualizada com o campo position.
  • Novas páginas de reordenação: api-reference/product/reorder, api-reference/coupon/reorder e api-reference/store/reorder.
Notes
  • Esta é a versão inicial do changelog, e as versões anteriores estão sendo documentadas retroativamente.
  • As versões anteriores estão sendo revisadas para garantir que todas as mudanças significativas sejam registradas.
  • O changelog será atualizado regularmente com cada nova versão lançada, e as versões anteriores serão revisadas para garantir que todas as mudanças significativas sejam registradas.
Contributors