Especificação lgpd.md
Versão 1.0 — Documento normativo do padrão aberto para declaração de conformidade LGPD.
Localização do Arquivo
O arquivo lgpd.md deve estar acessível em uma das seguintes URLs do seu domínio:
/.well-known/lgpd.md— localização preferencial, seguindo a convenção RFC 8615 para well-known URIs/lgpd.md— localização alternativa na raiz do site
Ferramentas de auditoria tentam primeiro /.well-known/lgpd.md. Se não encontrado, buscam na raiz. Recomendamos servir em ambos os caminhos quando possível.
# Localização preferencial (RFC 8615)
/.well-known/lgpd.md
# Localização alternativa (raiz do site)
/lgpd.mdFormato do Arquivo
O arquivo usa formato Markdown com frontmatter YAML. O frontmatter contém todos os dados estruturados da declaração de conformidade. O corpo do Markdown (após o frontmatter) é opcional e pode conter notas adicionais em texto livre.
O frontmatter é delimitado por --- no início e no fim. Todo o conteúdo entre os delimitadores é YAML válido e deve seguir o schema definido nesta especificação.
| Aspecto | Requisito |
|---|---|
| Encoding | UTF-8 |
| Extensão | .md |
| Frontmatter | YAML válido entre delimitadores --- |
| Content-Type | text/markdown |
| Tamanho máximo | Sem limite formal (recomendado < 50KB) |
Campos do Frontmatter
Todos os campos listados abaixo são obrigatórios, exceto quando indicado. O schema JSON valida a presença e o formato de cada campo.
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| version | string | Sim | Versão da spec (ex: "1.0") |
| last_updated | string (ISO date) | Sim | Data da última atualização do arquivo |
| controller | object | Sim | Dados do controlador (responsável pelo tratamento) |
| legal_bases | array | Sim | Bases legais utilizadas para tratamento |
| data_categories | array | Sim | Categorias de dados pessoais coletados |
| retention | object | Sim | Política de retenção e exclusão de dados |
| processors | array | Sim | Terceiros que processam dados |
| cookies | array | Sim | Cookies utilizados pelo site |
| rights_url | string (URL) | Sim | URL para exercício de direitos do titular |
controller
Identifica o controlador de dados — a pessoa jurídica ou física responsável pelas decisões sobre o tratamento de dados pessoais no site.
| Subcampo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Sim | Razão social ou nome do controlador |
| cnpj | string | Sim | CNPJ formatado (XX.XXX.XXX/XXXX-XX) |
| string | Sim | Email de contato para assuntos de privacidade | |
| dpo | object | Sim | Dados do Encarregado (DPO): name e email |
legal_bases
Array de objetos descrevendo cada base legal utilizada para tratamento de dados. A LGPD define 10 bases legais no Art. 7º — declare aqui quais se aplicam ao seu site e para qual finalidade.
| Subcampo | Tipo | Descrição |
|---|---|---|
| type | string | Identificador da base legal (consent, legitimate_interest, contract, legal_obligation, etc.) |
| purpose | string | Finalidade específica do tratamento |
| data | array of strings | Dados pessoais tratados sob esta base |
data_categories
Categoriza os dados pessoais coletados pelo site. Cada categoria agrupa itens relacionados e define o período de retenção específico para aquele grupo.
| Subcampo | Tipo | Descrição |
|---|---|---|
| category | string | Nome da categoria (identification, navigation, financial, etc.) |
| items | array of strings | Dados específicos nesta categoria |
| retention | string | Período de retenção para esta categoria |
retention
Define a política geral de retenção de dados e o processo de exclusão. Complementa os períodos específicos declarados em cada data_categories.
| Subcampo | Tipo | Descrição |
|---|---|---|
| default | string | Período padrão de retenção quando não especificado por categoria |
| deletion_process | string | Descrição do processo de exclusão (manual, automatizado, etc.) |
processors
Lista de terceiros (operadores) que processam dados pessoais em nome do controlador. Inclui subprocessadores como provedores de cloud, serviços de email e ferramentas de analytics.
| Subcampo | Tipo | Descrição |
|---|---|---|
| name | string | Nome do processador/operador |
| purpose | string | Finalidade do compartilhamento |
| country | string | País onde os dados são processados (código ISO) |
| dpa | boolean | Se existe acordo de processamento de dados (DPA) assinado |
cookies
Declara todos os cookies utilizados pelo site, incluindo cookies de sessão, analytics e terceiros. Cada cookie deve ter finalidade e duração explícitas.
| Subcampo | Tipo | Descrição |
|---|---|---|
| name | string | Nome do cookie |
| purpose | string | Finalidade do cookie |
| type | string | Classificação: necessary, analytics, marketing, functional |
| duration | string | Duração do cookie (session, 30 days, 1 year, etc.) |
rights_url
URL onde o titular de dados pode exercer seus direitos previstos no Art. 18 da LGPD: acesso, correção, exclusão, portabilidade, revogação de consentimento, entre outros.
Deve apontar para uma página funcional — formulário, email ou sistema de tickets. Ferramentas de auditoria verificam se a URL retorna HTTP 200.
Validação do Schema
O padrão lgpd.md inclui um JSON Schema que valida a estrutura e os tipos de todos os campos do frontmatter. Use-o para garantir que seu arquivo está correto antes do deploy.
O schema está disponível para download em /schema e pode ser integrado ao seu pipeline de CI/CD.
Exemplos de validação:
# Validar com ajv-cli
npx ajv validate -s schema.json -d lgpd.md
# Validar com yq + jq
yq -o=json lgpd.md | jq --argfile schema schema.json \
'if . | [paths] | length > 0 then "valid" else "invalid" end'
# Validar no CI (GitHub Actions)
- name: Validate lgpd.md
run: npx ajv validate -s schema.json -d lgpd.mdVersionamento
A spec segue versionamento semântico simplificado (MAJOR.MINOR). O campo version no frontmatter indica qual versão da spec o arquivo implementa.
- MAJOR — mudanças incompatíveis: campos removidos, formatos alterados, semântica modificada
- MINOR — adições retrocompatíveis: novos campos opcionais, novos valores aceitos em enums
A versão atual é 1.0. Ferramentas de validação devem aceitar qualquer arquivo com version "1.x" como compatível com o schema atual.
# Campo version no frontmatter
version: "1.0"
# Formato: MAJOR.MINOR
# MAJOR: breaking changes (campos removidos, formato alterado)
# MINOR: adições retrocompatíveis (novos campos opcionais)Exemplo Completo
Abaixo, um arquivo lgpd.md completo com todos os campos obrigatórios preenchidos. Use como referência para criar o seu. Mais exemplos por tipo de site estão disponíveis em /exemplos.
---
version: "1.0"
last_updated: "2025-01-15"
controller:
name: "Empresa Exemplo Ltda"
cnpj: "12.345.678/0001-90"
email: "[email protected]"
dpo:
name: "Maria Silva"
email: "[email protected]"
legal_bases:
- type: "consent"
purpose: "Envio de newsletter"
data: ["email"]
- type: "legitimate_interest"
purpose: "Analytics de navegação"
data: ["ip", "user_agent"]
- type: "contract"
purpose: "Prestação do serviço contratado"
data: ["name", "email", "cpf"]
data_categories:
- category: "identification"
items: ["name", "email", "cpf"]
retention: "5 years after contract end"
- category: "navigation"
items: ["ip", "user_agent", "pages_visited"]
retention: "90 days"
retention:
default: "While account is active + 5 years"
deletion_process: "Automated via scheduled job"
processors:
- name: "AWS"
purpose: "Cloud hosting"
country: "US"
dpa: true
- name: "Resend"
purpose: "Transactional email"
country: "US"
dpa: true
cookies:
- name: "_session"
purpose: "Session management"
type: "necessary"
duration: "session"
- name: "_ga"
purpose: "Google Analytics"
type: "analytics"
duration: "2 years"
rights_url: "https://exemplo.com.br/privacidade/direitos"
---Última atualização: