diff --git a/docs/en/announcements/2026/june/2026-06-11-native-personal-data-management-in-master-data-v2.md b/docs/en/announcements/2026/june/2026-06-11-native-personal-data-management-in-master-data-v2.md new file mode 100644 index 0000000000..3cf8d3d828 --- /dev/null +++ b/docs/en/announcements/2026/june/2026-06-11-native-personal-data-management-in-master-data-v2.md @@ -0,0 +1,15 @@ +--- +title: 'Native personal data management in Master Data v2' +createdAt: 2026-06-11T00:00:00.000Z +updatedAt: 2026-06-11T00:00:00.000Z +contentType: updates +productTeam: Storage +slugEN: 2026-06-11-native-personal-data-management-in-master-data-v2 +locale: en +announcementSynopsisEN: '' +tags: + - New feature + - Master Data +--- + +> ⚠️ Content in translation. diff --git a/docs/es/announcements/2026/junio/2026-06-11-gestion-nativa-de-datos-personales-en-master-data-v2.md b/docs/es/announcements/2026/junio/2026-06-11-gestion-nativa-de-datos-personales-en-master-data-v2.md new file mode 100644 index 0000000000..618ba69f3c --- /dev/null +++ b/docs/es/announcements/2026/junio/2026-06-11-gestion-nativa-de-datos-personales-en-master-data-v2.md @@ -0,0 +1,15 @@ +--- +title: 'Gestión nativa de datos personales en Master Data v2' +createdAt: 2026-06-11T00:00:00.000Z +updatedAt: 2026-06-11T00:00:00.000Z +contentType: updates +productTeam: Storage +slugEN: 2026-06-11-native-personal-data-management-in-master-data-v2 +locale: es +announcementSynopsisES: '' +tags: + - Nueva funcionalidad + - Master Data +--- + +> ⚠️ Contenido en traducción. diff --git a/docs/pt/announcements/2026/junho/2026-06-11-gestao-nativa-de-dados-pessoais-no-master-data-v2.md b/docs/pt/announcements/2026/junho/2026-06-11-gestao-nativa-de-dados-pessoais-no-master-data-v2.md new file mode 100644 index 0000000000..1aaa9f5a5a --- /dev/null +++ b/docs/pt/announcements/2026/junho/2026-06-11-gestao-nativa-de-dados-pessoais-no-master-data-v2.md @@ -0,0 +1,32 @@ +--- +title: 'Gestão nativa de dados pessoais no Master Data v2' +createdAt: 2026-06-11T00:00:00.000Z +updatedAt: 2026-06-11T00:00:00.000Z +contentType: updates +productTeam: Storage +slugEN: 2026-06-11-native-personal-data-management-in-master-data-v2 +locale: pt +announcementSynopsisPT: 'O Master Data v2 agora trata dados pessoais de forma nativa, com criptografia em repouso, mascaramento automático na leitura e suporte a solicitações de titulares de dados.' +tags: + - Nova funcionalidade + - Master Data +--- + +A gestão nativa de dados pessoais já está disponível no Master Data v2. Cada entidade de dados pode agora declarar quais campos contêm dados pessoais e quem é o titular dessas informações, ativando criptografia em repouso, mascaramento automático na leitura e suporte a fluxos de solicitação de titulares. + +## O que mudou? + +Anteriormente, lojas que armazenavam dados pessoais no Master Data v2 precisavam implementar suas próprias camadas de criptografia, mascaramento e controle de acesso. Esses comportamentos passam agora a ser nativos da plataforma: + +- **Configuração por entidade:** cada entidade de dados pode declarar quais campos contêm dados pessoais e qual campo identifica o titular (`SubjectIdField`). +- **Criptografia e residência de dados:** os valores dos campos pessoais são armazenados separadamente, com criptografia e regras específicas de residência. +- **Mascaramento por padrão:** operações de leitura retornam os campos pessoais com valores mascarados (por exemplo, `j***@****.com`). Para obter os valores originais é preciso enviar um parâmetro específico na requisição. +- **Vínculo com o titular:** cada documento com dados pessoais fica associado ao titular declarado, o que viabiliza o atendimento a direitos como acesso, portabilidade e esquecimento. + +> ℹ️ A funcionalidade está disponível apenas para entidades do Master Data v2. Entidades do Master Data v1 não são compatíveis. + +## O que precisa ser feito? + +O Master Data v2 e as entidades de dados continuam funcionando como antes. + +Para começar a usar a funcionalidade de gestão de dados pessoais, os times técnicos da loja precisam configurar quais campos de cada entidade contêm dados pessoais e ajustar as integrações de leitura e busca afetadas pelo mascaramento. Os passos completos estão no guia [Managing personal data in Master Data v2](https://developers.vtex.com/docs/guides/managing-personal-data-in-master-data-v2). diff --git a/public/navigation.json b/public/navigation.json index 21f50db10a..60e4f29cea 100644 --- a/public/navigation.json +++ b/public/navigation.json @@ -236,6 +236,37 @@ "children": [] } ] + }, + { + "name": { + "en": "June", + "es": "Junio", + "pt": "Junho" + }, + "slug": { + "en": "june", + "es": "junio", + "pt": "junho" + }, + "origin": "", + "type": "category", + "children": [ + { + "name": { + "en": "Native personal data management in Master Data v2", + "es": "Gestión nativa de datos personales en Master Data v2", + "pt": "Gestão nativa de dados pessoais no Master Data v2" + }, + "slug": { + "en": "2026-06-11-native-personal-data-management-in-master-data-v2", + "es": "2026-06-11-gestion-nativa-de-datos-personales-en-master-data-v2", + "pt": "2026-06-11-gestao-nativa-de-dados-pessoais-no-master-data-v2" + }, + "origin": "", + "type": "markdown", + "children": [] + } + ] } ] }, @@ -40446,6 +40477,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Catalog specification value 0 is omitted from product specification payload", + "es": "El valor 0 de la especificación del catálogo se omite en la carga útil de la especificación del producto", + "pt": "O valor 0 da especificação do catálogo é omitido da carga útil da especificação do produto" + }, + "slug": { + "en": "catalog-specification-value-0-is-omitted-from-product-specification-payload", + "es": "el-valor-0-de-la-especificacion-del-catalogo-se-omite-en-la-carga-util-de-la-especificacion-del-producto", + "pt": "o-valor-0-da-especificacao-do-catalogo-e-omitido-da-carga-util-da-especificacao-do-produto" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Catalog translations not reflecting on the frontend", @@ -43913,6 +43959,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Address Form's Map Marker component does not update the complete address", + "es": "El componente «Marcador de mapa» del formulario de direcciones no actualiza la dirección completa", + "pt": "O componente “Marcador no mapa” do formulário de endereço não atualiza o endereço completo" + }, + "slug": { + "en": "address-forms-map-marker-component-does-not-update-the-complete-address", + "es": "el-componente-marcador-de-mapa-del-formulario-de-direcciones-no-actualiza-la-direccion-completa", + "pt": "o-componente-marcador-no-mapa-do-formulario-de-endereco-nao-atualiza-o-endereco-completo" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Address in orderForm with excessive size for multiples cities separated by \"::\"", @@ -44048,6 +44109,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Attachments lost after item split when using checkout-graphql addToCart", + "es": "Se pierden los archivos adjuntos tras dividir un artículo al utilizar «checkout-graphql addToCart»", + "pt": "Anexos perdidos após a divisão do item ao usar o checkout-graphql addToCart" + }, + "slug": { + "en": "attachments-lost-after-item-split-when-using-checkoutgraphql-addtocart", + "es": "se-pierden-los-archivos-adjuntos-tras-dividir-un-articulo-al-utilizar-checkoutgraphql-addtocart", + "pt": "anexos-perdidos-apos-a-divisao-do-item-ao-usar-o-checkoutgraphql-addtocart" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Available addresses list on Checkout UI missing data for newly created address", @@ -45308,6 +45384,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Extra gifts remain in cart when main item exceeds available stock", + "es": "Los regalos adicionales permanecen en el carrito cuando el artículo principal supera las existencias disponibles", + "pt": "Os presentes adicionais permanecem no carrinho quando o item principal excede o estoque disponível" + }, + "slug": { + "en": "extra-gifts-remain-in-cart-when-main-item-exceeds-available-stock", + "es": "los-regalos-adicionales-permanecen-en-el-carrito-cuando-el-articulo-principal-supera-las-existencias-disponibles", + "pt": "os-presentes-adicionais-permanecem-no-carrinho-quando-o-item-principal-excede-o-estoque-disponivel" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Failure to add data in the \"deliver to another address\" step causes the \"go to payment\" button to disappear", @@ -46838,6 +46929,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Security Code persistence in UI form when changing from a saved card to a new card", + "es": "El código de seguridad permanece en el formulario de la interfaz de usuario al cambiar de una tarjeta guardada a una nueva", + "pt": "Persistência do código de segurança no formulário da interface do usuário ao mudar de um cartão salvo para um novo cartão" + }, + "slug": { + "en": "security-code-persistence-in-ui-form-when-changing-from-a-saved-card-to-a-new-card", + "es": "el-codigo-de-seguridad-permanece-en-el-formulario-de-la-interfaz-de-usuario-al-cambiar-de-una-tarjeta-guardada-a-una-nueva", + "pt": "persistencia-do-codigo-de-seguranca-no-formulario-da-interface-do-usuario-ao-mudar-de-um-cartao-salvo-para-um-novo-cartao" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Seller selection algorithm doesn't consider the real availability of the item to choose the best option", @@ -47755,6 +47861,21 @@ "origin": "", "type": "category", "children": [ + { + "name": { + "en": "\"Select a Block\" Does Not Work Correctly When Page Extensions Load Lazily in Site Editor", + "es": "La opción «Seleccionar un bloque» no funciona correctamente cuando las extensiones de página se cargan de forma diferida en el editor del sitio", + "pt": "A opção \"Selecionar um bloco\" não funciona corretamente quando as extensões de página são carregadas de forma diferida no Editor do site" + }, + "slug": { + "en": "select-a-block-does-not-work-correctly-when-page-extensions-load-lazily-in-site-editor", + "es": "la-opcion-seleccionar-un-bloque-no-funciona-correctamente-cuando-las-extensiones-de-pagina-se-cargan-de-forma-diferida-en-el-editor-del-sitio", + "pt": "a-opcao-selecionar-um-bloco-nao-funciona-corretamente-quando-as-extensoes-de-pagina-sao-carregadas-de-forma-diferida-no-editor-do-site" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Advanced store settings being registered globally insted of by binding", @@ -49976,6 +50097,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Mercado Livre Multi-Origin - orders allocated to inactive stock", + "es": "Mercado Livre Orígenes múltiples: pedidos asignados a existencias inactivas", + "pt": "Mercado Livre Multi-Origem - pedidos alocados ao estoque inativo" + }, + "slug": { + "en": "mercado-livre-multiorigin-orders-allocated-to-inactive-stock", + "es": "mercado-livre-origenes-multiples-pedidos-asignados-a-existencias-inactivas", + "pt": "mercado-livre-multiorigem-pedidos-alocados-ao-estoque-inativo" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Mercado Livre Os atributos seller_package_height, seller_package_width, seller_package_length e seller_package_weight são obrigatórios.", @@ -51465,6 +51601,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Autocomplete history searches with the \"/\" character are breaking the search result page", + "es": "Las búsquedas en el historial de autocompletado con el carácter «/» están provocando errores en la página de resultados de búsqueda", + "pt": "As pesquisas no histórico de autocompletar com o caractere \"/\" estão prejudicando a página de resultados da pesquisa" + }, + "slug": { + "en": "autocomplete-history-searches-with-the-character-are-breaking-the-search-result-page", + "es": "las-busquedas-en-el-historial-de-autocompletado-con-el-caracter-estan-provocando-errores-en-la-pagina-de-resultados-de-busqueda", + "pt": "as-pesquisas-no-historico-de-autocompletar-com-o-caractere-estao-prejudicando-a-pagina-de-resultados-da-pesquisa" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Autocomplete not answering to cold starts", @@ -52158,13 +52309,13 @@ { "name": { "en": "Intelligent Search Synonyms does not re-create deleted synonyms", - "es": "La búsqueda inteligente de sinónimos no vuelve a crear los sinónimos eliminados.", - "pt": "O Intelligent Search Synonyms não recria sinônimos excluídos" + "es": "La función «Búsqueda inteligente de sinónimos» no vuelve a crear los sinónimos eliminados", + "pt": "A função \"Pesquisa inteligente de sinônimos\" não recria sinônimos excluídos" }, "slug": { "en": "intelligent-search-synonyms-does-not-recreate-deleted-synonyms", - "es": "la-busqueda-inteligente-de-sinonimos-no-vuelve-a-crear-los-sinonimos-eliminados", - "pt": "o-intelligent-search-synonyms-nao-recria-sinonimos-excluidos" + "es": "la-funcion-busqueda-inteligente-de-sinonimos-no-vuelve-a-crear-los-sinonimos-eliminados", + "pt": "a-funcao-pesquisa-inteligente-de-sinonimos-nao-recria-sinonimos-excluidos" }, "origin": "", "type": "markdown", @@ -55849,6 +56000,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Category mapping spreadsheet does not include offers in WaitingReview", + "es": "La hoja de cálculo de asignación de categorías no incluye las ofertas en «En espera de revisión»", + "pt": "A planilha de mapeamento de categorias não inclui ofertas em \"Aguardando revisão\"" + }, + "slug": { + "en": "category-mapping-spreadsheet-does-not-include-offers-in-waitingreview", + "es": "la-hoja-de-calculo-de-asignacion-de-categorias-no-incluye-las-ofertas-en-en-espera-de-revision", + "pt": "a-planilha-de-mapeamento-de-categorias-nao-inclui-ofertas-em-aguardando-revisao" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Create seller with Additional Information is returning an error", @@ -56104,6 +56270,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Search filter not working outside the first page in received SKU section", + "es": "El filtro de búsqueda no funciona más allá de la primera página en la sección de SKU recibidos", + "pt": "O filtro de pesquisa não funciona fora da primeira página na seção de SKUs recebidos" + }, + "slug": { + "en": "search-filter-not-working-outside-the-first-page-in-received-sku-section", + "es": "el-filtro-de-busqueda-no-funciona-mas-alla-de-la-primera-pagina-en-la-seccion-de-sku-recibidos", + "pt": "o-filtro-de-pesquisa-nao-funciona-fora-da-primeira-pagina-na-secao-de-skus-recebidos" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Seller group creation does not add selected sellers", @@ -58117,6 +58298,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Scenarios Involving Goodwill Following an Order Modification", + "es": "Situaciones relacionadas con el fondo de comercio tras una modificación de la orden", + "pt": "Cenários envolvendo ágio após uma modificação de pedido" + }, + "slug": { + "en": "scenarios-involving-goodwill-following-an-order-modification", + "es": "situaciones-relacionadas-con-el-fondo-de-comercio-tras-una-modificacion-de-la-orden", + "pt": "cenarios-envolvendo-agio-apos-uma-modificacao-de-pedido" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Seller's order invoiced with problem in the payment capture", @@ -59635,6 +59831,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Error when processing the second refund or cancellation with the same value as the first", + "es": "Se ha producido un error al procesar el segundo reembolso o la segunda cancelación con el mismo importe que el primero", + "pt": "Erro ao processar o segundo reembolso ou cancelamento com o mesmo valor do primeiro" + }, + "slug": { + "en": "error-when-processing-the-second-refund-or-cancellation-with-the-same-value-as-the-first", + "es": "se-ha-producido-un-error-al-procesar-el-segundo-reembolso-o-la-segunda-cancelacion-con-el-mismo-importe-que-el-primero", + "pt": "erro-ao-processar-o-segundo-reembolso-ou-cancelamento-com-o-mesmo-valor-do-primeiro" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Error when settling transaction with 2 cards - MercadoPagoV1", @@ -61000,6 +61211,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Payment rule not applied due to BIN issuer mismatch", + "es": "No se ha aplicado la regla de pago debido a una discrepancia en el código BIN del emisor", + "pt": "Regra de pagamento não aplicada devido à incompatibilidade do BIN do emissor" + }, + "slug": { + "en": "payment-rule-not-applied-due-to-bin-issuer-mismatch", + "es": "no-se-ha-aplicado-la-regla-de-pago-debido-a-una-discrepancia-en-el-codigo-bin-del-emisor", + "pt": "regra-de-pagamento-nao-aplicada-devido-a-incompatibilidade-do-bin-do-emissor" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Payment rule requiresAuthentication attribute is ignored by gateway (cannot be enforced/overridden via API)", @@ -61045,6 +61271,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Payment Stuck in \"Received\" Status — Transaction does not progress to \"Approved\" status", + "es": "El pago se ha quedado en el estado «Recibido»: la transacción no pasa al estado «Aprobado»", + "pt": "Pagamento preso no status \"Recebido\" — A transação não avança para o status \"Aprovado\"" + }, + "slug": { + "en": "payment-stuck-in-received-status-transaction-does-not-progress-to-approved-status", + "es": "el-pago-se-ha-quedado-en-el-estado-recibido-la-transaccion-no-pasa-al-estado-aprobado", + "pt": "pagamento-preso-no-status-recebido-a-transacao-nao-avanca-para-o-status-aprovado" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Payments Admin Defense Mode settings page fails to load (permissions and GET /admin/iframe/transactions/settings 500)", @@ -62546,16 +62787,31 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Sales App redirects to /payment after entering salesperson code (ignores current step in Checkout)", + "es": "La aplicación de ventas redirige a /payment tras introducir el código del comercial (sin tener en cuenta el paso actual del proceso de pago)", + "pt": "O aplicativo de vendas redireciona para /payment após a inserção do código do vendedor (ignorando a etapa atual do checkout)" + }, + "slug": { + "en": "sales-app-redirects-to-payment-after-entering-salesperson-code-ignores-current-step-in-checkout", + "es": "la-aplicacion-de-ventas-redirige-a-payment-tras-introducir-el-codigo-del-comercial-sin-tener-en-cuenta-el-paso-actual-del-proceso-de-pago", + "pt": "o-aplicativo-de-vendas-redireciona-para-payment-apos-a-insercao-do-codigo-do-vendedor-ignorando-a-etapa-atual-do-checkout" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Sales App When attempting to pay with digit or scan card, the CVV field can't be filled", "es": "Aplicación de ventas Al intentar pagar con tarjeta digital o escaneada, no se puede rellenar el campo del CVV", - "pt": "Aplicativo de vendas Ao tentar pagar com cartão digital ou digitalizado, não é possível preencher o campo CVV" + "pt": "Aplicativo de vendas Ao tentar pagar com cartão digital ou digitalizado, o campo CVV não pode ser preenchido" }, "slug": { "en": "sales-app-when-attempting-to-pay-with-digit-or-scan-card-the-cvv-field-cant-be-filled", "es": "aplicacion-de-ventas-al-intentar-pagar-con-tarjeta-digital-o-escaneada-no-se-puede-rellenar-el-campo-del-cvv", - "pt": "aplicativo-de-vendas-ao-tentar-pagar-com-cartao-digital-ou-digitalizado-nao-e-possivel-preencher-o-campo-cvv" + "pt": "aplicativo-de-vendas-ao-tentar-pagar-com-cartao-digital-ou-digitalizado-o-campo-cvv-nao-pode-ser-preenchido" }, "origin": "", "type": "markdown", @@ -67399,6 +67655,21 @@ "type": "markdown", "children": [] }, + { + "name": { + "en": "Sitemap retains ghost products from categories removed via full cleanup", + "es": "El mapa del sitio conserva los productos fantasma de las categorías eliminadas mediante una limpieza completa", + "pt": "O mapa do site mantém produtos fantasmas de categorias removidas por meio de uma limpeza completa" + }, + "slug": { + "en": "sitemap-retains-ghost-products-from-categories-removed-via-full-cleanup", + "es": "el-mapa-del-sitio-conserva-los-productos-fantasma-de-las-categorias-eliminadas-mediante-una-limpieza-completa", + "pt": "o-mapa-do-site-mantem-produtos-fantasmas-de-categorias-removidas-por-meio-de-uma-limpeza-completa" + }, + "origin": "", + "type": "markdown", + "children": [] + }, { "name": { "en": "Sitemap returns \"Error fetching sitemap data\"",