Essa área tem como objetivo descrever cenários de casos de uso comuns na utilização da API de Integração para que sirva de guia para desenvolvedores. Caso você tenha um cenário de uso diferente, entre em contato com nosso time de suporte através do nosso canal de atendimento: privacytools.com.br/help
Note |
---|
Aviso importante: A citação do termo “Consentimento” não tem relação direta com a base legal do consentimento prevista pela LGPD mas sim com a ação do usuário, titular do dado pessoal, em concordar ou discordar de eventuais finalidades propostas. A decisão quanto à base legal, embora usada a mesma nomenclatura, faz parte do fluxo de decisão da empresa. |
Warning |
---|
IMPORTANTE: Se você chegou até aqui e não sabe o que significa o “hashUser” e o “hashTemplate”, leia a sessão https://privacyts.atlassian.net/wiki/spaces/GSD/pages/5079309/API+-+Integra+es#Como-obter-o-hashTemplate%3F antes de prosseguir. |
Table of Contents |
---|
Cenário 1 - Coletando consentimentos de usuários (anônimos ou não)
Nesse cenário de integração você precisa coletar e armazenar consentimentos de usuários.
Info |
---|
Usuários anônimos ou não: A API trabalha com um $hashUser, ela não se preocupa se esse hash foi gerado para um usuário anônimo ou um usuário identificado, o funcionamento é o mesmo. |
Motivação: Através desse recurso a empresa possui a rastreabilidade dos consentimentos e possui meios de comprovação que os consentimentos foram coletados de maneira segura e eficiente.
Como fazer:
Opção 1 | Se você possui um termo de uso no seu site e gostaria de coletar um consentimento através de um botão de “Concordo/Discordo” Veja nos menus “Javascript” e “React” ao lado. |
Opção 2 | Se você quer pedir uma autorização qualquer através de uma popup, veja as opções nos menus “Javascript” e “React” ao lado. No caso da opção do SDK em que você quer construir sua própria popup de pedido de confirmação o serviço retornará um JSON com todos os atributos necessários que você precisa para exibir a popup. |
Opção 3 | Você não quer usar o nosso SDK e gostaria de implementar a sua própria chamada ao serviço para registros de consentimentos anônimos. HTTP GET em $base/public_api/consent/$hashTemplate/$hashUser/$consent $consent = true ou false Pronto! Para saber onde obter as variáveis acima acesse a página “API integrações” ao lado. |
Cenário 2 - Tenho uma base de dados com vários consentimentos já coletados, quero colocar todos eles no sistema para passar a gerencia-los por aí
Nesse caso você precisa fazer uma integração utilizando as API’s privadas de backend, não as API’s públicas de frontend.
Acesse o menu “ConformidadePrivacidade/Consentimentos/API integração” e escolha a aba “Integre com a sua aplicação”
Tome nota das chaves de integração, como o hash do Authorization, que pode ser Basic ou Oauth2(Bearer) e é de acordo com qual versão da api_external que a empresa estiver usando.
Na mesma tela você possui disponível a API de integração exposta no formato Swagger.IO. Caso queira estudar a documentação fora da plataforma acesse a página “Backend/Swagger” ao lado.
Registre (caso não tenha registrado ainda) a finalidade do consentimento que será importado e copie a chave do consentimento (hashTemplate). Criar os grupos e as finalidades, clique neste link de documentação.
Obs.: Para todos os campos string não há limite de caracteres.
Objeto para importação de um titular e seu consentimento, utilize o serviço abaixo:
Code Block |
---|
Endpoint: /external_api/consent/import Method: POST { "consentValue": true, "document": "string", "email": "string", "hashUser": "string", "metadata": [ { "name": "string", "value": "string" } ], "name": "string", "phone": "string", "templateHash": "string", "portalHash":"string", "sendEmailPortal":false } Returns: $consentHash |
hashUser - (string) - Você pode enviar um hashUser para novos titulares, serve para identificar o usuário.
consentDate - (string) - Data do consentimento. Formatos possíveis: "yyyy-MM-dd’T’HH:mm:ss.SSSZ", "MM/dd/yyyy", "dd/MM/yyyy", "MM/dd/yyyy hh:mm:ss", "dd/MM/yyyy HH:mm", "dd/MM/yyyy HH:mm:ss", “MM/dd/yyyy hh:mm:ss a”
metadata - Envio de metadados associados ao titular.
”name” - (string) - Nome do metadado.
”value” - (string) - Valor do metado.name - (string) - Nome do titular
email - (string) - Email do titular
document - (string) - CPF do titular
phone - (string) - Telefone do titular (opcional)
templateHash - (string) - Hash da finalidade do consentimento
consentValue - (boolean) - Envie um booleano (true/false) com o resultado do consentimento, se ele é positivo ou negativo.
portalHash - (string) - Hash do portal da privacidade que será usado para mandar email ao usuário. Caso você utilize esse módulo e queira que o sistema envie um email para o titular com um link pra poder criar a senha e ver os seus consentimentos.
sendEmailPortal - (string) - Envie ‘true’ para que o sistema envie o email do portal da privacidade
consentHash - Protocolo/recibo de confirmação do consentimento registrado. O retorno.
5. Após a chamada da importação acima o sistema irá procurar algum titular com o mesmo hashUser. Caso não encontre ele criará um novo titular com os dados pessoais submetidos e com o hashUser. Ao final do processo ele registrará o resultado do consentimento para a finalidade sugerida.
Obrigatoriedade dos campos do Body
Titular já existe na base de dados
Para identificar o Titular, pelo menos um dos campos deve ser informado: hashUser, document ou email. Se for informado mais de um destes campos, a busca por titular é feita nesta ordem: hashUser, document, email.
Titular não existe na base de dados (cadastro de titular)
Se o Titular não for encontrado pelos campos hashUser, document ou email, o sistema tentará fazer um novo cadastro. Neste caso, os campos obrigatórios são: name, email e document.
Registro de consentimento
Para registrar o consentimento, são obrigatórios: templateHash e consentValue. Se não informar estes dois campos, o titular é cadastrado (se não existir), porém não será registrado consentimento.
Response
Se for informado o templateHash e o consentValue, retorna o hash do consentimento
Senão, retorna o hash do Titular. Se for cadastro de Titular, o hash será o informado no campo hashUser. Se não informar hashUser, será gerado um baseado nos campos name, email, document e phone.
Descriminação de saída segundo o código:
200 (ok) =
se user.templateHash não é nulo e nem em branco e
user.consentValue não é nulo, retorna consent.hashConsent (string)
se não retorna person.hash (string)
400 (bad request) =
Caso user for nulo retorna "No valid templateHash" (string);
Caso user.hashUser não é nulo e não está em branco lista todas os consentimentos de pessoas referente a company e se a lista estiver vazia então user.name e user.email são obrigatórios caso contrário retorna "No valid user data. Required fields: name, email and document." (string);
Cenário 3 - Quero verificar se o usuário já deu consentimento, caso contrário solicitar consentimento
Esse tipo de cenário é útil em casos onde você quer validar se o seu usuário, normalmente logado, já aceitou algum termo específico do seu negócio, e caso negativo, mostrar algum alerta, bloqueio, ou mensagem solicitando a concordância.
Note |
---|
Nota importante: Do ponto de vista das regulamentações de privacidade e proteção de dados o “consentimento” (base legal) deve ser livre e inequívoca, não podendo ser exigida do usuário para que o serviço possa ser prestado. Tome cuidado para que não haja interpretação equivocada quanto ao uso da plataforma de consentimento em casos de bloqueio onde a base legal do “legítimo interesse” é a mais adequada. Em caso de dúvidas verifique com o jurídico da empresa. |
Passo 1 - Verificar se o usuário já deu o consentimento
O primeiro passo é a verificação se o usuário já fez o consentimento e qual foi a sua resposta. Você pode fazer isso tanto na sua aplicação backend, quanto na sua aplicação frontend.
Verificando via Backend | Verificando via Frontend | ||
---|---|---|---|
Para fazer a verificação via backend utilize o serviço abaixo. | Para fazer a verificação via frontend você pode utilizar o nosso SDK Javascript ou React.JS ou mesmo invocar o serviço em seu próprio código | ||
|
Passo 2 - Buscando o consentimento do titular
Agora que você já verificou se o titular consentiu ou não com a sua finalidade, é a hora de ir em busca do consentimento ou tomar outras ações caso você já tenha o consentimento. Esse fluxo de decisão faz parte do negócio do cliente e deve ser desenvolvido na plataforma correta.
Para realizar a coleta do consentimento leia o caso de uso 1 “Cenário 1 - Coletando consentimentos de usuários” nessa página.
Cenário 4 - Vários registros anônimos vinculados com um mesmo titular
Status | ||||
---|---|---|---|---|
|
Nesse caso temos a situação onde você possui a geração de diversos $hashUser anônimos mas no final do processo você quer vincular todos com o mesmo titular.
Como fazer:
Faça a geração do seu $hashUser anônimo para gravação de consentimentos e registre-os normalmente.
Quando for o momento de reidentificar um titular, utilize o serviço de backend '
${base}/consent/reidentify-id/$hashUser/{email}/{document}
'Caso o email e documento do titular não exista na base de dados ele irá criar um novo titular e depois ele irá reidentificar todos os consentimentos registrados com o $hashUser
Caso o titular já exista na base de dados ele irá apenas reidentificar todos os consentimentos registrados com o $hashUser que você enviou por parâmetro, mas o titular já cadastrado permanecerá com o $hashUser original.
Esse cenário 4 foi marcado como
Status | ||||
---|---|---|---|---|
|
Tip |
---|
Workaround: Utilize o novo serviço $base/getUser/$email/$document para obter os dados do titular e assim você poderá sobrescrever o $hashUser inutilizado pelo correto armazenado no sistema. |
Cenário 5 - Tenho diversos dispositivos e sistemas , o meu usuário precisa conceder o consentimento em todos eles?
Não. Se você utilizar o mesmo $hashUser não importa qual o dispositvo verificador, o estado do consentimento/autorização será o mesmo.
Por esse motivo recomendamos definir logo no início do projeto qual será a forma de criação do $hashUser em todos os sistemas que irão consultar consentimentos.
IMPORTANTE: Se você chegou até aqui e não sabe o que significa o “hashUser” e o “hashTemplate”, leia a sessão https://privacyts.atlassian.net/wiki/spaces/GSD/pages/5079309/API+-+Integra+es#Como-obter-o-hashTemplate%3F antes de prosseguir.
Cenário 6 - Meu formulário precisa registrar diversos consentimentos ao mesmo tempo, como fazer?
Considere o exemplo abaixo. Uma interface que precisa registrar 3 autorizações diferentes do usuário:
Autorização 1 - Finalidade obrigatória relacionada ao termo de uso e à prestação do servição em si.
Autorizações 2 e 3 - Outras finalidades opcionais que dependem do consentimento do usuário
Quando o usuário clicar em “Aceitar” você tem 2 alternativas:
Expand | ||
---|---|---|
| ||
Method: POST Params:
$consent = true ou false |
Expand | ||
---|---|---|
| ||
Method: GET $consent = true ou false |