Erro ao escrever em campos privados

Bom dia, tudo bem? Estou com problema na hora de integrar com a API do Master Data, estou tentando criar uma tabela dentro do mesmo para inserir um e-mail que será recebido de um formulário no front. Entretanto, estou recebendo o seguinte erro:

Já configurei para as informações serem editáveis:

Fala grande,

Vá até o master data, entre na entidade e habilite os campos necessários para consulta e sobrescrita.

Opa Carlos, tudo certo? Obrigado por estar respondendo aqui também… Infelizmente ainda persistiu o erro… Estou usando a documentação do “Create new document” - Master Data 1, será que pode ser a URL que estou informando?

Estou utilizando o Postman para retornar os dados

esta é a URL que estou informando: https://jpworkspace--modular.myvtex.com/api/dataentities/CodigoCupomCheckout/documents

image

Após fornecer as permissões necessárias… Você salvou e indexou a entidade? Esse processo é obrigatório, tá?

Sim, para consultar determinado campo vamos utilizar api de https://developers.vtex.com/vtex-rest-api/reference/search-1 do mdv1. Você deve obter um resultado parecido com esse na sua url final

https://jpworkspace--modular.vtexcommercestable.com.br/api/dataentities/ACRONIMO/search?_fields=CAMPO

ressalto que o exemplo acima usando search é para consulta, ou seja, método get.

Substituir “acronimo” pelo da sua entidade.
image

Substituir “campo” pelo campo que deseja retornar.

Uma observação importante é que quando você for inserir essa requisição no seu código ela deve ser passada de forma relativa caso esteja no mesmo domínio, caso contrário vai acusar cors.

Exemplo:

fetch('/api/dataentities/ACRONIMO/search?_fields=CAMPO')
...

Após sua tabela configurada e os campos com permissão de sobrescrita, deixo abaixo um exemplo simples que você pode utilizar para enviar os dados.

let email = "carlos@gmail.com"

fetch('/api/dataentities/ACRONIMO/documents', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ email })
})
  .then((response) => {
    console.log('oba, seu e-mail foi enviado com sucesso jp-prud');
  })
  .catch((error) => {
    console.error('Error:', error);
  });
1 Like

Um ponto importante, quais dados você está deixando público?
Eu vi um campo EMAIL ai, não se esqueça que isso pode abrir diversas brechas de segurança e de LGPD com os dados do usuário.
Vale entender melhor o contexto, para realmente ter certeza de que esse é o melhor caminho.
De todo jeito, temos o safe data , será que ele não serve no contexto que você precisa?

Bom dia Carlos, tudo certo ?

Consegui resolver a aplicação após esta explicação. O problema estava relacionado com o “ACRONIMO” que eu estava inserindo, no caso, eu estava colocando o “CodigoCupomCheckout”… Para resolver, defini na URL o acrônimo da minha entidade, que neste caso, era “EM”.

Muito obrigado pela paciência e ajuda :wink:

1 Like

Olá Hansen, tudo bem?

Muito interessante esta documentação que você encaminhou, mas acredito que não seja a solução, neste caso, o meu contexto é o seguinte:

Dentro do carrinho, eu gostaria de criar uma funcionalidade de captura de emails, após isto, eu iria gerar um cupom de desconto para o cliente e com o email inserido, poderia estar enviando notificações promocionais.

Você acha que esta funcionalidade encaixa-se com a utilização do Safe Data?

Olha só, uma pergunta, pq q vc está capturando um email em uma nova tabela? Sendo que já existe a tabela de clientes no MasterData?
A tabela CL.

Você pode criar algum campo nela para utilizar isso, além do mais, essa configuração que vc fez, deixa exposto todos os emails que tem nessa tabela, para qualquer pessoa.


você vai ter um problema gigante de LGPD e de possivel vazamento de lista de email.

Nunca deixe um campo tão sensivel como email, para leitura sem credenciais.

Se vc criar um campo novo dentro da tabela de clientes, e popular ela, vc pode utilizar o safedata.
De verdade, eu recomendo FORTEMENTE a não deixar esse campo aberto para pesquisa e gravar sem credenciais.

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.