lgpd.md

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.md

Formato 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.

AspectoRequisito
EncodingUTF-8
Extensão.md
FrontmatterYAML válido entre delimitadores ---
Content-Typetext/markdown
Tamanho máximoSem 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.

CampoTipoObrigatórioDescrição
versionstringSimVersão da spec (ex: "1.0")
last_updatedstring (ISO date)SimData da última atualização do arquivo
controllerobjectSimDados do controlador (responsável pelo tratamento)
legal_basesarraySimBases legais utilizadas para tratamento
data_categoriesarraySimCategorias de dados pessoais coletados
retentionobjectSimPolítica de retenção e exclusão de dados
processorsarraySimTerceiros que processam dados
cookiesarraySimCookies utilizados pelo site
rights_urlstring (URL)SimURL 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.

SubcampoTipoObrigatórioDescrição
namestringSimRazão social ou nome do controlador
cnpjstringSimCNPJ formatado (XX.XXX.XXX/XXXX-XX)
emailstringSimEmail de contato para assuntos de privacidade
dpoobjectSimDados do Encarregado (DPO): name e email

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.

SubcampoTipoDescrição
typestringIdentificador da base legal (consent, legitimate_interest, contract, legal_obligation, etc.)
purposestringFinalidade específica do tratamento
dataarray of stringsDados 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.

SubcampoTipoDescrição
categorystringNome da categoria (identification, navigation, financial, etc.)
itemsarray of stringsDados específicos nesta categoria
retentionstringPerí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.

SubcampoTipoDescrição
defaultstringPeríodo padrão de retenção quando não especificado por categoria
deletion_processstringDescriçã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.

SubcampoTipoDescrição
namestringNome do processador/operador
purposestringFinalidade do compartilhamento
countrystringPaís onde os dados são processados (código ISO)
dpabooleanSe 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.

SubcampoTipoDescrição
namestringNome do cookie
purposestringFinalidade do cookie
typestringClassificação: necessary, analytics, marketing, functional
durationstringDuraçã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.md

Versionamento

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:

Perguntas Frequentes

Onde o arquivo lgpd.md deve ficar?
Na raiz do domínio em /lgpd.md ou em /.well-known/lgpd.md. O arquivo deve ser servido sobre HTTPS com Content-Type text/markdown; charset=utf-8.
Quais campos são obrigatórios?
versao, ultima_atualizacao, controlador (nome, cnpj), dpo (nome, email), dados_coletados (pelo menos um item com tipo, finalidade, base_legal e retencao) e direitos_titular (url_exercicio).
O lgpd.md substitui a política de privacidade?
Não. O arquivo complementa a política com dados estruturados e machine-readable. A política de privacidade continua sendo o documento legal exigido pelo Art. 9º da Lei 13.709/2018.
Como funciona o versionamento?
O campo versao segue versionamento semântico simplificado (MAJOR.MINOR). Mudanças incompatíveis incrementam MAJOR; novos campos opcionais incrementam MINOR. A versão atual é 1.0.