{
  "$schema": "https://govschema.org/spec/v0.3/govschema.schema.json",
  "govschemaVersion": "0.3.0",
  "id": "br/mg/detran/comunicacao-de-venda-de-veiculo",
  "version": "1.0.0",
  "title": "Brazil (Minas Gerais) Notice of Vehicle Sale (Comunicação de Venda)",
  "description": "The Departamento Estadual de Trânsito de Minas Gerais's (DETRAN-MG) 'Requerimento de Comunicação de Venda' — the seller-side notice a private vehicle owner in Minas Gerais files with DETRAN-MG after selling a vehicle, per art. 134 of the Código de Trânsito Brasileiro (CTB, Federal Law No. 9.503/1997). Filing this notice records the buyer's identity against the vehicle in DETRAN-MG's registry and releases the seller from civil/criminal liability for the vehicle from the sale date forward; it is distinct from the buyer's own follow-on step of bringing the notarized transfer document (CRV or ATPV-e) to a DETRAN-MG unit within 30 days to register the vehicle in their own name, which this document does not model (see VERIFICATION.md). Vehicle registration in Brazil is administered per state DETRAN, not federally, so this document is modelled as a subnational (BR-MG) schema, the same way this registry already classifies br/sp/jucesp/cnpj-registration-dbe and mx/semovi/alta-vehiculo-foraneo. DETRAN-MG's own online filing channel (protocolo.detran.mg.gov.br) requires an authenticated citizen login on every path tried; this document is instead derived directly from DETRAN-MG's own current, unauthenticated, directly downloadable PDF request form, cross-checked against an earlier edition of the same form and DETRAN-MG's own official explanatory booklet. GovSchema is independent and is not affiliated with, endorsed by, or operated by the Government of Brazil, the State of Minas Gerais, or DETRAN-MG.",
  "status": "draft",
  "jurisdiction": {
    "country": "BR",
    "level": "subnational",
    "subdivision": "BR-MG"
  },
  "authority": {
    "name": "Departamento Estadual de Trânsito de Minas Gerais",
    "abbreviation": "DETRAN-MG",
    "url": "https://www.detran.mg.gov.br"
  },
  "process": {
    "type": "amendment",
    "language": "pt-BR"
  },
  "source": {
    "url": "https://detran.mg.gov.br/publico/files/upload/REQUERIMENTO%20DE%20COMUNICA%C3%87%C3%83O%20DE%20VENDA.pdf",
    "retrievedAt": "2026-07-06",
    "documentRef": "Requerimento de Comunicação de Venda, Departamento Estadual de Trânsito de Minas Gerais (DETRAN-MG) — Superintendência de Veículos, edition dated 2026-01-29"
  },
  "verification": {
    "method": "manual-source-review-v1",
    "lastVerifiedAt": "2026-07-06",
    "verifiedBy": "GovSchema Engineering (Standards Engineer)",
    "nextReviewBy": "2027-01-06",
    "notes": "Source-derived reference schema closing the global DMV vertical's last open jurisdiction gap (CATALOG.md 'Known Gaps', Brazil). Fetched directly from detran.mg.gov.br (HTTP 200, application/pdf, no login/CAPTCHA/WAF); PDF metadata (Microsoft Word, CreationDate 2026-01-29) confirms this is a current edition. The form carries a genuine (non-scanned) text layer, extracted via pdfjs-dist@3.11.174 getTextContent() — doc.getFieldObjects() returned null and getAnnotations() returned an empty array, confirming no interactive AcroForm widgets, so every field here is a printed label plus a blank, read directly from the text layer. Cross-checked against an older edition of the same form (also fetched directly from detran.mg.gov.br, filename 'Requerimento.pdf', CreationDate 2022-05-24): field content and order are identical apart from the closing municipality/date block, confirming field stability across editions. DETRAN-MG's own live online filing wizard (protocolo.detran.mg.gov.br/veiculos/comunicacao-venda-veiculo/inserir-dados-responsavel) returns HTTP 302 to http://protocolo.detran.mg.gov.br/ssc/login/login on every path tried — an authenticated-citizen-login gate consistent with prior cycles' findings for DETRAN-SP (GOV-1483) and BR CNH (GOV-1400) — so this document was authored from the static PDF, not a live wizard walk. See VERIFICATION.md for the full sourcing method, the other Brazilian DMV candidates screened and rejected this cycle, and every disclosed interpretive judgment call."
  },
  "maturity": {
    "level": "structural-reference",
    "criteria": {
      "structuralReference": true,
      "verifiedSchema": false,
      "agentReadySchema": false,
      "executionTestedSchema": false
    },
    "method": "maturity-self-assessment-v1",
    "assertedBy": "GovSchema Engineering (Standards Engineer)",
    "assertedAt": "2026-07-06"
  },
  "license": "CC-BY-4.0",
  "fields": [
    {
      "name": "sellerFullName",
      "label": "Eu, ___",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The full legal name of the vehicle's current owner (the seller filing this notice).",
      "sourceRef": "'Eu, ____________________________________________________________________________ ,'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "sellerCpf",
      "label": "portador (a) do CPF",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The seller's CPF (Cadastro de Pessoas Físicas), Brazil's individual taxpayer registry number, in its standard masked format.",
      "sourceRef": "'portador (a) do CPF: _______________________ ,'",
      "validation": { "pattern": "^\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}$" }
    },
    {
      "name": "sellerRg",
      "label": "RG",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The seller's RG (Registro Geral) state identity card number.",
      "sourceRef": "'RG:_____________________________ ,'",
      "validation": { "maxLength": 20 }
    },
    {
      "name": "sellerRgIssuingAgency",
      "label": "Órgão expedidor",
      "type": "string",
      "required": true,
      "description": "The agency that issued the seller's RG (e.g. SSP, PC, IFP, DETRAN), which varies by issuing state and era and has no single closed list nationally.",
      "sourceRef": "'Órgão expedidor:____________ ,'",
      "validation": { "maxLength": 20 }
    },
    {
      "name": "sellerRgIssuingState",
      "label": "UF",
      "type": "enum",
      "required": true,
      "description": "The Brazilian state (UF) that issued the seller's RG.",
      "sourceRef": "'UF: _______,' (immediately after 'Órgão expedidor')",
      "validation": { "enum": ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"] }
    },
    {
      "name": "sellerStreetAddress",
      "label": "residente e domiciliado(a) na",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The seller's street address (logradouro).",
      "sourceRef": "'residente e domiciliado(a) na:_________________ ______________ ,'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "sellerAddressNumber",
      "label": "nº",
      "type": "string",
      "required": true,
      "description": "The seller's street address number.",
      "sourceRef": "'nº: ________ ,'",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "sellerAddressComplement",
      "label": "complemento",
      "type": "string",
      "required": false,
      "description": "An optional apartment/suite/unit qualifier for the seller's address, per this registry's established convention for Brazilian address forms (e.g. br/pf/passport-application).",
      "sourceRef": "'complemento: __________ ,'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "sellerAddressNeighborhood",
      "label": "bairro",
      "type": "string",
      "required": true,
      "description": "The seller's neighborhood/district (bairro).",
      "sourceRef": "'bairro: ______________ ,'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "sellerAddressCity",
      "label": "na cidade",
      "type": "string",
      "required": true,
      "description": "The city of the seller's address.",
      "sourceRef": "'na cidade: _________ ___ ________ ,'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "sellerAddressState",
      "label": "estado",
      "type": "enum",
      "required": true,
      "description": "The Brazilian state of the seller's address.",
      "sourceRef": "'estado: _________ ______ ,' (immediately after 'na cidade')",
      "validation": { "enum": ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"] }
    },
    {
      "name": "sellerAddressPostalCode",
      "label": "CEP",
      "type": "string",
      "required": true,
      "description": "The postal code (CEP) of the seller's address, in Brazil's standard masked format.",
      "sourceRef": "'CEP: ____________ ___ ,'",
      "validation": { "pattern": "^\\d{5}-\\d{3}$" }
    },
    {
      "name": "vehiclePlate",
      "label": "veículo de placa",
      "type": "string",
      "required": true,
      "description": "The license plate of the vehicle sold. Accepts either the legacy Brazilian plate format (3 letters + 4 digits) or the Mercosul format (3 letters + 1 digit + 1 letter + 2 digits) in one pattern, since the form itself does not specify a format and both remain in circulation during Brazil's ongoing Mercosul plate rollout.",
      "sourceRef": "'comunico que vendi o veículo de placa: _______________ ,'",
      "validation": { "pattern": "^[A-Z]{3}[0-9][A-Z0-9][0-9]{2}$" }
    },
    {
      "name": "saleDate",
      "label": "na data de",
      "type": "date",
      "required": true,
      "description": "The date the vehicle was sold to the buyer.",
      "sourceRef": "'na data de: ____________________ ,'"
    },
    {
      "name": "buyerFullName",
      "label": "para o Sr(a)",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The full legal name of the buyer the vehicle was sold to.",
      "sourceRef": "'para o Sr(a): ________________________________ ,'",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "buyerCpf",
      "label": "portador(a) do CPF",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The buyer's CPF, in its standard masked format.",
      "sourceRef": "'portador(a) do CPF: ____________________ ,' (buyer block)",
      "validation": { "pattern": "^\\d{3}\\.\\d{3}\\.\\d{3}-\\d{2}$" }
    },
    {
      "name": "buyerRg",
      "label": "RG",
      "type": "string",
      "required": true,
      "classification": "sensitive-pii",
      "description": "The buyer's RG state identity card number.",
      "sourceRef": "'RG: ________________ ,' (buyer block)",
      "validation": { "maxLength": 20 }
    },
    {
      "name": "buyerRgIssuingAgency",
      "label": "Órgão expedidor",
      "type": "string",
      "required": true,
      "description": "The agency that issued the buyer's RG.",
      "sourceRef": "'Órgão expedidor: ____________ ,' (buyer block)",
      "validation": { "maxLength": 20 }
    },
    {
      "name": "buyerRgIssuingState",
      "label": "UF",
      "type": "enum",
      "required": true,
      "description": "The Brazilian state (UF) that issued the buyer's RG.",
      "sourceRef": "'UF: ___________ ,' (immediately after buyer's 'Órgão expedidor')",
      "validation": { "enum": ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"] }
    },
    {
      "name": "buyerStreetAddress",
      "label": "residente e domiciliado(a) na",
      "type": "string",
      "required": true,
      "classification": "pii",
      "description": "The buyer's street address.",
      "sourceRef": "'residente e domiciliado(a) na: _____________________________ ,' (buyer block)",
      "validation": { "maxLength": 100 }
    },
    {
      "name": "buyerAddressNumber",
      "label": "nº",
      "type": "string",
      "required": true,
      "description": "The buyer's street address number.",
      "sourceRef": "'nº: ________ ,' (buyer block)",
      "validation": { "maxLength": 10 }
    },
    {
      "name": "buyerAddressComplement",
      "label": "complemento",
      "type": "string",
      "required": false,
      "description": "An optional apartment/suite/unit qualifier for the buyer's address.",
      "sourceRef": "'complemento: __________ ,' (buyer block)",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "buyerAddressNeighborhood",
      "label": "bairro",
      "type": "string",
      "required": true,
      "description": "The buyer's neighborhood/district.",
      "sourceRef": "'bairro: _____________ ,' (buyer block)",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "buyerAddressCity",
      "label": "na cidade de",
      "type": "string",
      "required": true,
      "description": "The city of the buyer's address.",
      "sourceRef": "'na cidade de: _____________ _________ ,'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "buyerAddressState",
      "label": "estado",
      "type": "enum",
      "required": true,
      "description": "The Brazilian state of the buyer's address.",
      "sourceRef": "'estado: ___________ ,' (immediately after buyer's 'na cidade de')",
      "validation": { "enum": ["AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO"] }
    },
    {
      "name": "buyerAddressPostalCode",
      "label": "CEP",
      "type": "string",
      "required": true,
      "description": "The postal code (CEP) of the buyer's address.",
      "sourceRef": "'CEP: __________________ ,' (buyer block)",
      "validation": { "pattern": "^\\d{5}-\\d{3}$" }
    },
    {
      "name": "saleValue",
      "label": "pelo valor de R$",
      "type": "number",
      "required": true,
      "description": "The sale price of the vehicle, in Brazilian reais.",
      "sourceRef": "'pelo valor de R$: ________________.'",
      "validation": { "minimum": 0 }
    },
    {
      "name": "signingMunicipality",
      "label": "Município",
      "type": "string",
      "required": true,
      "description": "The municipality where this notice is signed.",
      "sourceRef": "'_______________________________________________, ________/_________/__________  Município   data'",
      "validation": { "maxLength": 50 }
    },
    {
      "name": "signingDate",
      "label": "data",
      "type": "date",
      "required": true,
      "description": "The date this notice is signed.",
      "sourceRef": "'________/_________/__________  Município   data'"
    }
  ],
  "documents": [
    {
      "id": "authenticatedTransferDocumentFile",
      "label": "Cópia autenticada do CRV ou da ATPV-e, preenchidos e com firmas reconhecidas por autenticidade",
      "category": "supporting-evidence",
      "required": true,
      "belongsTo": "applicant",
      "constraints": {
        "mediaTypes": ["application/pdf", "image/jpeg"]
      },
      "sourceRef": "Cartilha Comunicação de Venda de Veículo, p.3 — 'Vendedor: Deverá providenciar cópia autenticada da ATPV-e ou do CRV, devidamente preenchidos, assinado por ambas as partes e com firmas reconhecidas por autenticidade.'"
    }
  ],
  "steps": [
    {
      "id": "seller_declaration",
      "title": "Dados do proprietário vendedor",
      "fields": [
        "sellerFullName",
        "sellerCpf",
        "sellerRg",
        "sellerRgIssuingAgency",
        "sellerRgIssuingState",
        "sellerStreetAddress",
        "sellerAddressNumber",
        "sellerAddressComplement",
        "sellerAddressNeighborhood",
        "sellerAddressCity",
        "sellerAddressState",
        "sellerAddressPostalCode"
      ],
      "next": "sale_details"
    },
    {
      "id": "sale_details",
      "title": "Dados da venda",
      "fields": [
        "vehiclePlate",
        "saleDate",
        "saleValue"
      ],
      "next": "buyer_details"
    },
    {
      "id": "buyer_details",
      "title": "Dados do comprador",
      "fields": [
        "buyerFullName",
        "buyerCpf",
        "buyerRg",
        "buyerRgIssuingAgency",
        "buyerRgIssuingState",
        "buyerStreetAddress",
        "buyerAddressNumber",
        "buyerAddressComplement",
        "buyerAddressNeighborhood",
        "buyerAddressCity",
        "buyerAddressState",
        "buyerAddressPostalCode"
      ],
      "next": "signing"
    },
    {
      "id": "signing",
      "title": "Local e data",
      "fields": [
        "signingMunicipality",
        "signingDate"
      ]
    }
  ]
}
