{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://layouts.tjrj.jus.br/sfe/rtd/v3.0.0/layout_schema.json",
  "title": "Layout SFE/RTD v3.0.0",
  "description": "Contrato JSON do Selo de Fiscalizacao Eletronico para a atribuicao Registro de Titulos e Documentos (RTD) da CGJ-RJ. Sucessor do schema_RTD_2.00.xsd. JSON Schema draft-07.",
  "type": "object",
  "additionalProperties": false,
  "required": ["remessa"],
  "properties": {
    "$schema": {
      "type": "string",
      "format": "uri",
      "description": "URI canonica do schema (auto-discovery)."
    },
    "remessa": { "$ref": "#/$defs/Remessa" }
  },

  "$defs": {

    "Remessa": {
      "type": "object",
      "title": "Envelope da remessa RTD",
      "description": "Envelope canonico de transmissao de atos RTD. Substitui o elemento TitulosDocumentos/Remessa do XML 2.00.",
      "additionalProperties": false,
      "required": [
        "id",
        "versaoLayout",
        "codigoServico",
        "tipoOperacao",
        "ambiente",
        "software",
        "dataGeracao"
      ],
      "properties": {
        "id": {
          "type": "string",
          "format": "uuid",
          "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
          "description": "Identificador unico da remessa, em UUID v4. Usado para idempotencia. Substitui Remessa/@Id do XML 2.00 (que era numerico)."
        },
        "versaoLayout": {
          "type": "string",
          "pattern": "^\\d+\\.\\d+\\.\\d+$",
          "description": "Versao semantica do layout. Para esta especificacao: 3.0.0."
        },
        "codigoServico": {
          "type": "string",
          "pattern": "^\\d{1,5}$",
          "description": "Codigo do servico extrajudicial emissor (CodServico do XML 2.00)."
        },
        "tipoOperacao": {
          "type": "string",
          "enum": ["INCLUSAO", "ALTERACAO"],
          "description": "Operacao da remessa. INCLUSAO substitui 'I'; ALTERACAO substitui 'A'."
        },
        "ambiente": {
          "type": "string",
          "enum": ["HOMOLOGACAO", "PRODUCAO"],
          "description": "Ambiente alvo. HOMOLOGACAO substitui 'HML'; PRODUCAO substitui 'PRD'."
        },
        "software": {
          "type": "object",
          "title": "Software emissor",
          "additionalProperties": false,
          "required": ["nome", "versao"],
          "properties": {
            "nome": { "type": "string", "minLength": 2, "maxLength": 100, "description": "Nome do software emissor." },
            "versao": { "type": "string", "minLength": 1, "maxLength": 50, "description": "Versao do software emissor." }
          }
        },
        "dataGeracao": {
          "type": "string",
          "format": "date-time",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}([.,]\\d+)?(Z|[+-]\\d{2}:\\d{2})$",
          "description": "Instante de geracao da remessa, ISO 8601 com offset (ex.: 2026-05-07T13:21:45-03:00)."
        },
        "atos": {
          "type": "array",
          "minItems": 0,
          "maxItems": 5000,
          "description": "Lista de atos da remessa (max. 5000). Cada item discriminado por tipoAto.",
          "items": { "$ref": "#/$defs/Ato" }
        },
        "justificativasAusencia": {
          "type": "array",
          "minItems": 0,
          "description": "Datas em que nenhum ato foi praticado pelo servico. Substitui JustificativaAtoNaoPraticado.",
          "items": { "$ref": "#/$defs/JustificativaAusencia" }
        }
      }
    },

    "JustificativaAusencia": {
      "type": "object",
      "title": "Justificativa de ato nao praticado",
      "description": "Substitui JustificativaAtoNaoPraticado do XML 2.00. Indica datas em que o servico nao praticou nenhum ato sujeito a transmissao.",
      "additionalProperties": false,
      "required": ["data"],
      "properties": {
        "data": {
          "type": "string",
          "format": "date",
          "description": "Data em que nenhum ato foi praticado (ISO 8601)."
        },
        "motivo": {
          "type": "string",
          "minLength": 2,
          "maxLength": 250,
          "description": "Motivo descritivo (ex.: FERIADO_NACIONAL, RECESSO, AUSENCIA_DEMANDA). Campo novo na v3.0.0 (XML 2.00 nao tinha)."
        }
      }
    },

    "Ato": {
      "type": "object",
      "title": "Item de ato",
      "description": "Estrutura discriminada: tipoAto identifica o ato; dadosAto carrega o payload especifico.",
      "additionalProperties": false,
      "required": ["tipoAto", "dadosAto"],
      "properties": {
        "tipoAto": {
          "type": "string",
          "enum": [
            "REGISTRO_TITULO_DOCUMENTO",
            "AVERBACAO_TITULO_DOCUMENTO",
            "CANCELAMENTO_TITULO_DOCUMENTO",
            "NOTIFICACAO_EXTRAJUDICIAL",
            "REGISTRO_MIDIA_CONSERVACAO",
            "REGISTRO_CUSTODIA_TEMPORARIA",
            "AUTENTICACAO_MIDIA",
            "AUTENTICACAO_COPIA",
            "CERTIDAO_TITULO_DOCUMENTO",
            "CERTIDAO_GENERICA",
            "VISTO",
            "FOLHA_ADICIONAL_COMPLEMENTO",
            "COMPLEMENTO_EMOLUMENTOS",
            "REVALIDACAO_CUSTODIA_TEMPORARIA",
            "DESCARTE_CUSTODIA_TEMPORARIA",
            "DIGITALIZACAO_DOCUMENTO",
            "DUT_ELETRONICO",
            "APOSTILAMENTO",
            "ENCERRAMENTO_LIVRO",
            "INFORMACAO_VERBAL",
            "ALTERACAO_EMOLUMENTOS"
          ]
        },
        "dadosAto": { "type": "object" }
      },
      "oneOf": [
        { "properties": { "tipoAto": { "const": "REGISTRO_TITULO_DOCUMENTO" }, "dadosAto": { "$ref": "#/$defs/RegistroTituloDocumento" } } },
        { "properties": { "tipoAto": { "const": "AVERBACAO_TITULO_DOCUMENTO" }, "dadosAto": { "$ref": "#/$defs/AverbacaoTituloDocumento" } } },
        { "properties": { "tipoAto": { "const": "CANCELAMENTO_TITULO_DOCUMENTO" }, "dadosAto": { "$ref": "#/$defs/CancelamentoTituloDocumento" } } },
        { "properties": { "tipoAto": { "const": "NOTIFICACAO_EXTRAJUDICIAL" }, "dadosAto": { "$ref": "#/$defs/NotificacaoExtrajudicial" } } },
        { "properties": { "tipoAto": { "const": "REGISTRO_MIDIA_CONSERVACAO" }, "dadosAto": { "$ref": "#/$defs/RegistroMidiaConservacao" } } },
        { "properties": { "tipoAto": { "const": "REGISTRO_CUSTODIA_TEMPORARIA" }, "dadosAto": { "$ref": "#/$defs/RegistroCustodiaTemporaria" } } },
        { "properties": { "tipoAto": { "const": "AUTENTICACAO_MIDIA" }, "dadosAto": { "$ref": "#/$defs/AutenticacaoMidia" } } },
        { "properties": { "tipoAto": { "const": "AUTENTICACAO_COPIA" }, "dadosAto": { "$ref": "#/$defs/AutenticacaoCopia" } } },
        { "properties": { "tipoAto": { "const": "CERTIDAO_TITULO_DOCUMENTO" }, "dadosAto": { "$ref": "#/$defs/CertidaoTituloDocumento" } } },
        { "properties": { "tipoAto": { "const": "CERTIDAO_GENERICA" }, "dadosAto": { "$ref": "#/$defs/CertidaoGenerica" } } },
        { "properties": { "tipoAto": { "const": "VISTO" }, "dadosAto": { "$ref": "#/$defs/Visto" } } },
        { "properties": { "tipoAto": { "const": "FOLHA_ADICIONAL_COMPLEMENTO" }, "dadosAto": { "$ref": "#/$defs/FolhaAdicionalComplemento" } } },
        { "properties": { "tipoAto": { "const": "COMPLEMENTO_EMOLUMENTOS" }, "dadosAto": { "$ref": "#/$defs/ComplementoEmolumentos" } } },
        { "properties": { "tipoAto": { "const": "REVALIDACAO_CUSTODIA_TEMPORARIA" }, "dadosAto": { "$ref": "#/$defs/RevalidacaoCustodiaTemporaria" } } },
        { "properties": { "tipoAto": { "const": "DESCARTE_CUSTODIA_TEMPORARIA" }, "dadosAto": { "$ref": "#/$defs/DescarteCustodiaTemporaria" } } },
        { "properties": { "tipoAto": { "const": "DIGITALIZACAO_DOCUMENTO" }, "dadosAto": { "$ref": "#/$defs/DigitalizacaoDocumento" } } },
        { "properties": { "tipoAto": { "const": "DUT_ELETRONICO" }, "dadosAto": { "$ref": "#/$defs/DUTEletronico" } } },
        { "properties": { "tipoAto": { "const": "APOSTILAMENTO" }, "dadosAto": { "$ref": "#/$defs/Apostilamento" } } },
        { "properties": { "tipoAto": { "const": "ENCERRAMENTO_LIVRO" }, "dadosAto": { "$ref": "#/$defs/EncerramentoLivro" } } },
        { "properties": { "tipoAto": { "const": "INFORMACAO_VERBAL" }, "dadosAto": { "$ref": "#/$defs/InformacaoVerbal" } } },
        { "properties": { "tipoAto": { "const": "ALTERACAO_EMOLUMENTOS" }, "dadosAto": { "$ref": "#/$defs/AlteracaoEmolumentos" } } }
      ]
    },

    "AtoBase": {
      "type": "object",
      "title": "Campos comuns de ato selado",
      "description": "Campos compartilhados por atos selados (categoria=ATO_SELADO). Substitui o complexType Ato do XSD 2.00.",
      "properties": {
        "categoria": {
          "type": "string",
          "const": "ATO_SELADO",
          "description": "Categoria do ato. ATO_SELADO usa selo SFE; alternativas: TRANSMISSAO_NAO_SELADA (CCT) ou OPERACAO."
        },
        "dataPratica": {
          "type": "string",
          "format": "date",
          "description": "Data da pratica do ato (ISO 8601). Substitui DataPratica (dd/mm/aaaa)."
        },
        "selo": {
          "type": "string",
          "pattern": "^[A-Z]{4}\\d{5}$",
          "description": "Selo SFE no formato 4 letras + 5 digitos (ex.: EABC12345)."
        },
        "aleatorio": {
          "type": "string",
          "pattern": "^[A-Z]{3}$",
          "description": "Aleatorio do selo SFE (3 letras maiusculas)."
        },
        "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
        "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
        "dataInicioEficacia": {
          "type": "string",
          "format": "date",
          "description": "Data inicial da eficacia (uso restrito a Certidao Eletronica). Substitui DataInicioEficacia."
        },
        "dataFimEficacia": {
          "type": "string",
          "format": "date",
          "description": "Data final da eficacia (uso restrito a Certidao Eletronica). Substitui DataFimEficacia."
        },
        "indCertidaoEletronica": {
          "type": "boolean",
          "description": "Indica certidao eletronica. No XML 2.00 so aceitava 'S' (presente)."
        },
        "indAtoEletronico": {
          "type": "boolean",
          "description": "Indica ato eletronico (gera URLs/hashes). Substitui IndAtoEletronico 'S'/'N'."
        },
        "urlPdfAto": {
          "type": "string",
          "format": "uri",
          "minLength": 2,
          "maxLength": 2083,
          "description": "URL publica do PDF/A do ato (obrigatoria se indAtoEletronico=true)."
        },
        "hashPdfAto": {
          "type": "string",
          "pattern": "^[A-Fa-f0-9]{64}$",
          "description": "SHA-256 (64 hex) do PDF/A do ato."
        },
        "urlDossie": {
          "type": "string",
          "format": "uri",
          "minLength": 2,
          "maxLength": 2083,
          "description": "URL publica do dossie do ato eletronico."
        },
        "hashDossie": {
          "type": "string",
          "pattern": "^[A-Fa-f0-9]{64}$",
          "description": "SHA-256 (64 hex) do dossie."
        }
      }
    },

    "TransmissaoBase": {
      "type": "object",
      "title": "Campos comuns de transmissao nao selada",
      "description": "Campos compartilhados por transmissoes nao seladas (categoria=TRANSMISSAO_NAO_SELADA). Substitui o complexType Transmissao do XSD 2.00.",
      "properties": {
        "categoria": {
          "type": "string",
          "const": "TRANSMISSAO_NAO_SELADA",
          "description": "Categoria do ato. TRANSMISSAO_NAO_SELADA usa CCT em vez de selo."
        },
        "dataPratica": {
          "type": "string",
          "format": "date",
          "description": "Data da pratica da transmissao (ISO 8601)."
        },
        "cct": {
          "type": "string",
          "pattern": "^[A-Z]{4}\\d{5}$",
          "description": "Codigo de Controle de Transmissao (CCT). Mesmo formato do selo (4 letras + 5 digitos)."
        },
        "indAtoEletronico": { "type": "boolean", "description": "Indica ato eletronico." },
        "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
        "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
        "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
        "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" }
      }
    },

    "ReferenciaAto": {
      "type": "object",
      "title": "Referencia a outro ato selado",
      "description": "Agrupamento dos campos coesos CodServicoAto* / SeloAto* / AleatorioAto* do XML 2.00.",
      "additionalProperties": false,
      "properties": {
        "codigoServico": { "type": "string", "pattern": "^\\d{1,5}$", "description": "Codigo do servico do ato referenciado." },
        "selo": { "type": "string", "pattern": "^[A-Z]{3,4}\\d{5}$", "description": "Selo do ato referenciado (FormatoSeloOriginal: 8 ou 9 caracteres)." },
        "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$", "description": "Aleatorio do ato referenciado." }
      }
    },

    "Participante": {
      "type": "object",
      "title": "Participante do ato",
      "description": "Pessoa fisica ou juridica que figura no ato extrajudicial. Substitui tpParticipantes/Participante do XSD 2.00.",
      "additionalProperties": false,
      "required": ["tipoParticipante", "tipoPessoa", "nome"],
      "properties": {
        "tipoParticipante": {
          "type": "integer",
          "minimum": 1,
          "maximum": 999,
          "description": "Codigo do tipo de participante (ex.: 17=Apresentante, 16=Requerente, 2=Comprador, 183=Vendedor PJ). Conforme tabela de referencia n. 2 da CGJ-RJ. Preservado como integer (chave externa)."
        },
        "tipoPessoa": {
          "type": "string",
          "enum": ["FISICA", "JURIDICA"],
          "description": "Tipo de pessoa. FISICA substitui 'F'; JURIDICA substitui 'J'."
        },
        "nome": {
          "type": "string",
          "minLength": 2,
          "maxLength": 250,
          "description": "Nome da pessoa fisica ou razao social da pessoa juridica."
        },
        "cpfCnpj": {
          "type": "string",
          "pattern": "^\\d{11}$|^\\d{14}$",
          "description": "CPF (11 digitos) ou CNPJ (14 digitos), apenas digitos. No XML 2.00 aceitava mascara; aqui exigido sem mascara."
        },
        "justificativaAusenciaCpfCnpj": {
          "type": "string",
          "enum": ["NAO_POSSUI", "NAO_DECLARADO", "ESTRANGEIRO"],
          "description": "Motivo de ausencia do CPF/CNPJ. NAO_POSSUI=1, NAO_DECLARADO=2, ESTRANGEIRO=3 do XSD."
        }
      }
    },

    "AtoVinculado": {
      "type": "object",
      "title": "Vinculo a outro ato",
      "description": "Vinculo entre o ato corrente e outro ato extrajudicial. Substitui tpAtosVinculados/AtoVinculado do XSD 2.00.",
      "additionalProperties": false,
      "required": ["tipoVinculo"],
      "properties": {
        "tipoVinculo": {
          "type": "string",
          "enum": [
            "ATO_COMPLEMENTO_EMOLUMENTOS",
            "ATO_REFERENCIA",
            "ATO_DEMAIS_VIAS",
            "ATO_DE_ACERVO"
          ],
          "description": "Tipo do vinculo. ATO_COMPLEMENTO_EMOLUMENTOS=M, ATO_REFERENCIA=R, ATO_DEMAIS_VIAS=B, ATO_DE_ACERVO=A. Fonte: XSD 2.00 (tpAtosVinculados.TipoVinculo) + PDF Layout_RTD_2.00 secao 5.23."
        },
        "codigoServico": { "type": "string", "pattern": "^\\d{1,5}$", "description": "Codigo do servico onde o ato vinculado foi praticado (tabela 6 da CGJ-RJ)." },
        "selo": { "type": "string", "pattern": "^[A-Z]{3,4}\\d{5}$", "description": "Selo do ato vinculado (FormatoSeloOriginal)." },
        "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$", "description": "Aleatorio do ato vinculado." },
        "tipoSelo": {
          "type": "string",
          "enum": ["FISICO", "ELETRONICO"],
          "description": "Modalidade do selo. FISICO=F (adesivo Casa da Moeda); ELETRONICO=E (SFE)."
        },
        "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$", "description": "CCT do ato vinculado, quando se tratar de transmissao nao selada." },
        "dataPratica": { "type": "string", "format": "date", "description": "Data da pratica do ato vinculado (ISO 8601)." },
        "numeroProtocolo": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero de protocolo/registro do ato vinculado." }
      }
    },

    "DocumentoRegistrado": {
      "type": "object",
      "title": "Documento ou titulo registrado",
      "description": "Conjunto coeso dos atributos que descrevem o documento ou titulo objeto do ato RTD (TipoTitulo, DataDocumento, Descricao, valor declarado).",
      "additionalProperties": false,
      "required": ["tipoTitulo", "valorDeclarado"],
      "properties": {
        "tipoTitulo": {
          "type": "integer",
          "minimum": 1,
          "maximum": 999,
          "description": "Codigo numerico do tipo do documento ou titulo apresentado. Tabela de referencia n. 4 (Tipos de Documento ou Titulo) da CGJ-RJ. Preservado como integer (chave externa pre-existente)."
        },
        "descricaoTipoTitulo": {
          "type": "string",
          "minLength": 2,
          "maxLength": 250,
          "description": "Descricao livre do tipo de titulo. Obrigatoria quando tipoTitulo corresponder a 'Diversos' (regra de negocio servidor)."
        },
        "valorDeclarado": {
          "type": "boolean",
          "description": "Indica se o titulo possui valor declarado. Substitui ValorDeclarado 'S'/'N'."
        },
        "dataDocumento": {
          "type": "string",
          "format": "date",
          "description": "Data de assinatura do documento apresentado (ISO 8601)."
        }
      }
    },

    "RegistroLivro": {
      "type": "object",
      "title": "Registro em livro de RTD",
      "description": "Identificacao do livro/folha/numero de ato em que o registro foi lavrado.",
      "additionalProperties": false,
      "required": ["numeroProtocolo", "livro"],
      "properties": {
        "numeroProtocolo": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Numero de protocolo do ato."
        },
        "livro": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Numero do livro de registro do ato (ex.: A-30, B-12)."
        },
        "folha": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Numero da folha inicial utilizada no ato."
        },
        "numeroAto": {
          "type": "string",
          "minLength": 1,
          "maxLength": 25,
          "description": "Numero utilizado no registro do ato."
        },
        "demaisVias": {
          "type": "integer",
          "minimum": 0,
          "maximum": 999,
          "description": "Quantidade de demais vias do ato. No XML 2.00 era string com pattern \\d{1,3}; aqui integer."
        },
        "tipoLivro": {
          "type": "string",
          "enum": [
            "LIVRO_A_REGISTRO_INTEGRAL",
            "LIVRO_B_REGISTRO_SUMARIO",
            "LIVRO_C_REGISTRO_PARCIAL",
            "LIVRO_D_REGISTRO_FACULTATIVO_PESSOAS",
            "LIVRO_E_REGISTRO_PROCURACAO"
          ],
          "description": "Classificacao semantica do livro RTD (campo opcional, derivavel do prefixo). LIVRO_A=registro integral; LIVRO_B=registro sumario; LIVRO_C=registro parcial de documentos; LIVRO_D=registro facultativo de pessoas; LIVRO_E=registro de procuracoes. Fonte: Lei 6.015/1973 (Registros Publicos) Titulo IV."
        }
      }
    },

    "Emolumentos": {
      "type": "object",
      "title": "Emolumentos do ato",
      "description": "Cotacao dos emolumentos. Substitui tpEmolumentos do XSD 2.00. Para tipoCobranca em {JUSTICA_GRATUITA, SEM_COBRANCA, NIHIL}, todos os valores e itens devem ser suprimidos (validacao de negocio servidor).",
      "additionalProperties": false,
      "required": ["tipoCobranca"],
      "properties": {
        "tipoCobranca": {
          "type": "string",
          "enum": ["JUSTICA_GRATUITA", "COM_COBRANCA", "SEM_COBRANCA", "NIHIL"],
          "description": "Modalidade de cobranca. JUSTICA_GRATUITA=JG, COM_COBRANCA=CC, SEM_COBRANCA=SC, NIHIL=NH. Fonte: Manual MAS CGJ-RJ + Lei 6.281/2012 art. 2."
        },
        "valorTotalEmolumentos": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor total dos emolumentos (ex.: 48.56)." },
        "fetj": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "FETJ (20% sobre o somatorio dos emolumentos, Lei 3.217/1999)." },
        "fundperj": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "FUNDPERJ (5%, Lei 4.664/2005)." },
        "funperj": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "FUNPERJ (5%, Lei Complementar 111/2006)." },
        "funarpen": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "FUNARPEN-RJ (4%)." },
        "ressag": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "RESSAG (2% - ressarcimento de gratuidade)." },
        "valorMutua": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor de Mutua." },
        "valorAcoterj": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor de Acoterj." },
        "valorDistribuidor": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor recolhido para o distribuidor." },
        "valorSeloEletronico": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor do selo eletronico repassado ao usuario (art. 11 Lei 9.873/2022)." },
        "valorIss": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Valor do ISS (Lei Complementar 175/2020)." },
        "itens": {
          "type": "array",
          "minItems": 0,
          "maxItems": 100,
          "description": "Detalhamento dos itens da tabela de emolumentos.",
          "items": { "$ref": "#/$defs/ItemEmolumento" }
        }
      }
    },

    "ItemEmolumento": {
      "type": "object",
      "title": "Item da tabela de emolumentos",
      "description": "Item da cotacao. Codigos tabela/item/subItem sao chaves externas CGJ-RJ; preservados como string conforme legado.",
      "additionalProperties": false,
      "required": ["tabela", "item", "quantidade"],
      "properties": {
        "ano": { "type": "integer", "minimum": 2000, "maximum": 2099, "description": "Ano de vigencia da tabela. Quando suprimido, considera-se o ano de dataPratica do ato." },
        "tabela": { "type": "string", "minLength": 1, "maxLength": 8, "description": "Numero da tabela de emolumentos (tabela de referencia n. 1 CGJ-RJ). Preservado como string." },
        "item": { "type": "string", "minLength": 1, "maxLength": 20, "description": "Item da tabela. Preservado como string (admite romanos)." },
        "subItem": { "type": "string", "minLength": 1, "maxLength": 20, "description": "Subitem da tabela." },
        "quantidade": { "type": "integer", "minimum": 1, "maximum": 9999, "description": "Quantidade de aplicacoes do item. No XML 2.00 era string \\d{1,4}; aqui integer." },
        "complemento": { "type": "string", "minLength": 2, "maxLength": 200, "description": "Complemento de emolumentos (texto livre)." },
        "excecao": { "type": "string", "minLength": 2, "maxLength": 200, "description": "Excecao aplicada (texto livre)." }
      }
    },

    "RegistroTituloDocumento": {
      "title": "Registro de Titulo ou Documento (TRTD)",
      "description": "Ato de registro integral, sumario ou parcial de documento ou titulo, no Livro A, B ou C. Substitui TituloDocumento com TipoAto=TRTD.",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "participantes": {
              "type": "array",
              "minItems": 1,
              "items": { "$ref": "#/$defs/Participante" }
            },
            "atosVinculados": {
              "type": "array",
              "minItems": 1,
              "description": "Atos vinculados ao registro. Em registro de RTD, normalmente usado com tipoVinculo=ATO_DEMAIS_VIAS para baixar selos das demais vias.",
              "items": { "$ref": "#/$defs/AtoVinculado" }
            },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "AverbacaoTituloDocumento": {
      "title": "Averbacao de Titulo ou Documento (TATD)",
      "description": "Ato de averbacao a registro de titulo ou documento existente. Substitui TituloDocumento com TipoAto=TATD.",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "tipoAverbacao", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "dataAtoRegistro": {
              "type": "string",
              "format": "date",
              "description": "Data de pratica do registro original que esta sendo averbado."
            },
            "tipoAverbacao": {
              "type": "string",
              "enum": ["CANCELAMENTO", "ANOTACAO", "REMISSAO_MARGEM_LIVRO"],
              "description": "Modalidade de averbacao. CANCELAMENTO=C, ANOTACAO=A, REMISSAO_MARGEM_LIVRO=R. Fonte: PDF Layout_RTD_2.00 secao 5.4 + XSD AtoTituloDocumento.TipoAverbacao."
            },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "CancelamentoTituloDocumento": {
      "title": "Cancelamento de Titulo ou Documento (TCTD)",
      "description": "Ato de cancelamento de registro de titulo ou documento. Substitui TituloDocumento com TipoAto=TCTD.",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "NotificacaoExtrajudicial": {
      "title": "Notificacao Extrajudicial (TNE)",
      "description": "Ato de notificacao extrajudicial. Substitui TituloDocumento com TipoAto=TNE.",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "RegistroMidiaConservacao": {
      "title": "Registro de Midia para Fins de Conservacao (TRM)",
      "description": "Ato de registro de midia para fins de conservacao. Substitui RegistroMidia (heranca AtoTituloDocumento + atributos TipoMidia, NumeroTermo, TamanhoMidia).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "tipoMidia", "numeroTermo", "tamanhoMidiaGb", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "tipoMidia": {
              "type": "string",
              "enum": ["ARQUIVO_DIGITAL", "MIDIA_FISICA"],
              "description": "Tipo da midia. ARQUIVO_DIGITAL=1, MIDIA_FISICA=2. Fonte: PDF Layout_RTD_2.00 secao 5.12 (Registro de Midia para Fins de Conservacao)."
            },
            "numeroTermo": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do termo do registro da midia." },
            "tamanhoMidiaGb": { "type": "string", "pattern": "^\\d+\\.\\d{2}$", "description": "Tamanho da midia em gigabytes (ex.: 4.70). Numero (5,2) no XSD; preservado como string monetario-like para evitar IEEE 754." },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "RegistroCustodiaTemporaria": {
      "title": "Registro de Custodia Temporaria (TRCT)",
      "description": "Ato de registro de custodia temporaria. Substitui RegistroCustodia (heranca AtoTituloDocumento + atributos TipoMidia, NumeroTermo, QtdPaginas).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "tipoMidia", "numeroTermo", "quantidadePaginas", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "tipoMidia": {
              "type": "string",
              "enum": ["ARQUIVO_DIGITAL", "MIDIA_FISICA"],
              "description": "Tipo da midia. ARQUIVO_DIGITAL=1, MIDIA_FISICA=2."
            },
            "numeroTermo": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do termo do registro de custodia temporaria." },
            "quantidadePaginas": { "type": "integer", "minimum": 1, "maximum": 999999, "description": "Quantidade de paginas do arquivo. No XML 2.00 era string \\d{1,6}; aqui integer." },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "AutenticacaoMidia": {
      "title": "Autenticacao de Midia",
      "description": "Ato de autenticacao de midia. Substitui AutenticacaoMidia (heranca AtoTituloDocumento + TipoMidia + NumeroTermo).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "tipoMidia", "numeroTermo", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "tipoMidia": {
              "type": "string",
              "enum": ["MICROFILME", "DISCO_OPTICO"],
              "description": "Tipo da midia autenticada. MICROFILME=1, DISCO_OPTICO=2. Fonte: PDF Layout_RTD_2.00 secao 5.5."
            },
            "numeroTermo": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do termo de autenticacao." },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "AutenticacaoCopia": {
      "title": "Autenticacao de Copia",
      "description": "Ato de autenticacao de copia. Substitui AutenticacaoCopia (heranca AtoTituloDocumento + TipoMidia + NumeroRequerimento).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "tipoMidia", "numeroRequerimento", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "tipoMidia": {
              "type": "string",
              "enum": ["MICROFILME", "DISCO_OPTICO"],
              "description": "Tipo da midia da copia autenticada. MICROFILME=1, DISCO_OPTICO=2. Fonte: PDF Layout_RTD_2.00 secao 5.6."
            },
            "numeroRequerimento": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do requerimento de autenticacao." },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "CertidaoTituloDocumento": {
      "title": "Certidao de Titulo ou Documento",
      "description": "Ato de certidao de titulo ou documento. Substitui Certidao (heranca AtoTituloDocumento + NumeroRequerimento + QtdPaginas + QtdPaginasExcedentes).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "numeroRequerimento", "quantidadePaginas", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "numeroRequerimento": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do requerimento/recibo da certidao." },
            "quantidadePaginas": { "type": "integer", "minimum": 1, "maximum": 999999, "description": "Quantidade total de paginas da certidao." },
            "quantidadePaginasExcedentes": { "type": "integer", "minimum": 0, "maximum": 999999, "description": "Quantidade de paginas excedentes." },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "atosVinculados": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/AtoVinculado" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "CertidaoGenerica": {
      "title": "Certidao Generica",
      "description": "Ato de certidao generica (sem vinculo a um titulo especifico). Substitui CertidaoGenerica (heranca Ato + Negativa).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "negativa", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "negativa": {
              "type": "boolean",
              "description": "Indica se a certidao generica e negativa. Substitui Negativa 'S'/'N'."
            },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "Visto": {
      "title": "Visto",
      "description": "Ato de visto (revalidacao de certidao). Substitui Visto (heranca AtoCertidao + Revalidada).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "documento", "registro", "numeroRequerimento", "quantidadePaginas", "revalidada", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "documento": { "$ref": "#/$defs/DocumentoRegistrado" },
            "registro": { "$ref": "#/$defs/RegistroLivro" },
            "numeroRequerimento": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do requerimento do visto." },
            "quantidadePaginas": { "type": "integer", "minimum": 1, "maximum": 999999 },
            "quantidadePaginasExcedentes": { "type": "integer", "minimum": 0, "maximum": 999999 },
            "revalidada": {
              "type": "boolean",
              "description": "Indica se a certidao foi revalidada (visto). Substitui Revalidada 'S'/'N'."
            },
            "participantes": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/Participante" } },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "FolhaAdicionalComplemento": {
      "title": "Folha Adicional - Complemento",
      "description": "Transmissao de complemento de certidao (folhas excedentes). Substitui FolhaAdicionalComplemento (heranca Transmissao + SeloAtoOriginal + AleatorioAtoOriginal + QtdPaginasExcedentes).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "atoOriginal", "quantidadePaginasExcedentes", "emolumentos"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto", "description": "Selo/aleatorio do ato originario (certidao a complementar). No XSD: SeloAtoOriginal+AleatorioAtoOriginal." },
            "quantidadePaginasExcedentes": { "type": "integer", "minimum": 1, "maximum": 999999, "description": "Quantidade de paginas excedentes objeto do complemento." },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "ComplementoEmolumentos": {
      "title": "Complemento de Emolumentos",
      "description": "Transmissao de complemento de emolumentos sobre ato ja praticado. Substitui ComplementoEmolumentos (heranca Transmissao + AtosVinculados + Emolumentos).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "atosVinculados", "emolumentos"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "atosVinculados": {
              "type": "array",
              "minItems": 1,
              "description": "Lista de atos vinculados (esperado pelo menos 1 com tipoVinculo=ATO_COMPLEMENTO_EMOLUMENTOS).",
              "items": { "$ref": "#/$defs/AtoVinculado" }
            },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "RevalidacaoCustodiaTemporaria": {
      "title": "Revalidacao de Custodia Temporaria",
      "description": "Ato de revalidacao de custodia temporaria. Substitui RevalidacaoCustodia (heranca Ato + AtosVinculados + NumeroRequerimento).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "numeroRequerimento", "atosVinculados", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "numeroRequerimento": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do requerimento da revalidacao." },
            "atosVinculados": {
              "type": "array",
              "minItems": 1,
              "description": "Apontamento para o Registro de Custodia praticado (TipoVinculo ATO_REFERENCIA) ou ato de Acervo (ATO_DE_ACERVO).",
              "items": { "$ref": "#/$defs/AtoVinculado" }
            },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "DescarteCustodiaTemporaria": {
      "title": "Descarte de Custodia Temporaria",
      "description": "Transmissao de descarte de custodia temporaria. Substitui DescarteCustodia (heranca Transmissao + AtosVinculados).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "atosVinculados"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "atosVinculados": {
              "type": "array",
              "minItems": 1,
              "description": "Apontamento para o primeiro Registro de Custodia (TipoVinculo ATO_REFERENCIA ou ATO_DE_ACERVO).",
              "items": { "$ref": "#/$defs/AtoVinculado" }
            }
          }
        }
      ]
    },

    "DigitalizacaoDocumento": {
      "title": "Digitalizacao de Documento",
      "description": "Transmissao de digitalizacao de documento para fins de arquivo. Substitui DigitalizacaoDocumento (heranca Transmissao + Nome + QtdPaginasExcedentes).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "nomeRequerente", "quantidadePaginasExcedentes", "emolumentos"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "nomeRequerente": { "type": "string", "minLength": 2, "maxLength": 200, "description": "Nome do requerente da digitalizacao. No XSD: atributo Nome." },
            "quantidadePaginasExcedentes": { "type": "integer", "minimum": 1, "maximum": 999999 },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "DUTEletronico": {
      "title": "DUT Eletronico",
      "description": "Documento Unico de Transferencia eletronico. Substitui DUTEletronico (heranca Ato + atributos de veiculo).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "veiculo", "dataRecebimento", "participantes", "atosVinculados", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "veiculo": {
              "type": "object",
              "title": "Veiculo objeto do DUT",
              "description": "Agrupamento dos atributos coesos do veiculo (Placa, Renavam, Chassi, MarcaModelo, AnoFabricacao, AnoModelo, CorPredominante, CodigoIBGEMunicipioTransferencia).",
              "additionalProperties": false,
              "required": ["placa", "renavam", "chassi", "marcaModelo", "anoFabricacao", "anoModelo"],
              "properties": {
                "placa": { "type": "string", "pattern": "^[A-Z0-9]{7}$", "description": "Placa Mercosul ou padrao antigo (7 caracteres alfanumericos maiusculos)." },
                "renavam": { "type": "string", "pattern": "^\\d{11}$", "description": "RENAVAM (11 digitos)." },
                "chassi": { "type": "string", "minLength": 17, "maxLength": 17, "description": "VIN/Chassi (17 caracteres)." },
                "marcaModelo": { "type": "string", "minLength": 2, "maxLength": 250, "description": "Marca e modelo do veiculo." },
                "anoFabricacao": { "type": "integer", "minimum": 1900, "maximum": 2099, "description": "Ano de fabricacao. No XML 2.00 era string \\d{4}; aqui integer." },
                "anoModelo": { "type": "integer", "minimum": 1900, "maximum": 2099, "description": "Ano do modelo." },
                "corPredominante": { "type": "string", "minLength": 2, "maxLength": 25, "description": "Cor predominante." },
                "codigoIbgeMunicipioTransferencia": { "type": "integer", "minimum": 1, "maximum": 9999999, "description": "Codigo IBGE do municipio de emplacamento do comprador (ate 7 digitos)." }
              }
            },
            "dataRecebimento": { "type": "string", "format": "date", "description": "Data de recebimento do arquivo eletronico do Instituto de RTD." },
            "participantes": {
              "type": "array",
              "minItems": 2,
              "description": "Proprietario e Adquirente.",
              "items": { "$ref": "#/$defs/Participante" }
            },
            "atosVinculados": {
              "type": "array",
              "minItems": 1,
              "description": "Reconhecimentos de firma por autenticidade dos participantes.",
              "items": { "$ref": "#/$defs/AtoVinculado" }
            },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "Apostilamento": {
      "title": "Apostilamento",
      "description": "Ato de apostilamento de documento (Convencao da Apostila de Haia). Substitui Apostilamento (heranca Ato + Documento + Apostilador + DocumentoApostilador).",
      "allOf": [
        { "$ref": "#/$defs/AtoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "selo", "aleatorio", "descricaoDocumento", "apostilador", "documentoApostilador", "participantes", "emolumentos"],
          "properties": {
            "categoria": { "const": "ATO_SELADO" },
            "dataPratica": { "type": "string", "format": "date" },
            "selo": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "aleatorio": { "type": "string", "pattern": "^[A-Z]{3}$" },
            "atoOriginal": { "$ref": "#/$defs/ReferenciaAto" },
            "atoReferencia": { "$ref": "#/$defs/ReferenciaAto" },
            "dataInicioEficacia": { "type": "string", "format": "date" },
            "dataFimEficacia": { "type": "string", "format": "date" },
            "indCertidaoEletronica": { "type": "boolean" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "descricaoDocumento": { "type": "string", "minLength": 2, "maxLength": 50, "description": "Descricao do documento apostilado (campo Documento no XSD)." },
            "apostilador": { "type": "string", "minLength": 2, "maxLength": 50, "description": "Nome do funcionario do cartorio que efetua o apostilamento." },
            "documentoApostilador": { "type": "string", "minLength": 2, "maxLength": 25, "description": "Documento de identificacao do apostilador (CPF, RG, etc.)." },
            "participantes": {
              "type": "array",
              "minItems": 1,
              "description": "Titulares dos documentos apostilados.",
              "items": { "$ref": "#/$defs/Participante" }
            },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "EncerramentoLivro": {
      "title": "Encerramento de Livro",
      "description": "Transmissao de encerramento de livro. Substitui EncerramentoLivro (heranca Transmissao + Livro + QtdTotalFolhas + IdentificacaoLivro + DataEncerramento).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "livro", "quantidadeTotalFolhas", "identificacaoLivro", "dataEncerramento"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "livro": { "type": "string", "minLength": 2, "maxLength": 25, "description": "Codigo e numero do livro (ex.: A-12345)." },
            "quantidadeTotalFolhas": { "type": "integer", "minimum": 1, "maximum": 999999, "description": "Quantidade total de folhas do livro." },
            "identificacaoLivro": { "type": "string", "minLength": 2, "maxLength": 100, "description": "Identificacao descritiva do livro." },
            "dataEncerramento": { "type": "string", "format": "date", "description": "Data do efetivo encerramento do livro (ISO 8601)." }
          }
        }
      ]
    },

    "InformacaoVerbal": {
      "title": "Informacao Verbal",
      "description": "Transmissao de ato de informacao verbal. Substitui InformacaoVerbal (heranca Transmissao + NumeroAto + Nome).",
      "allOf": [
        { "$ref": "#/$defs/TransmissaoBase" },
        {
          "type": "object",
          "additionalProperties": false,
          "required": ["categoria", "dataPratica", "cct", "numeroAto", "nomeSolicitante", "emolumentos"],
          "properties": {
            "categoria": { "const": "TRANSMISSAO_NAO_SELADA" },
            "dataPratica": { "type": "string", "format": "date" },
            "cct": { "type": "string", "pattern": "^[A-Z]{4}\\d{5}$" },
            "indAtoEletronico": { "type": "boolean" },
            "urlPdfAto": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashPdfAto": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "urlDossie": { "type": "string", "format": "uri", "minLength": 2, "maxLength": 2083 },
            "hashDossie": { "type": "string", "pattern": "^[A-Fa-f0-9]{64}$" },
            "numeroAto": { "type": "string", "minLength": 1, "maxLength": 25, "description": "Numero do recibo da informacao verbal." },
            "nomeSolicitante": { "type": "string", "minLength": 2, "maxLength": 250, "description": "Nome em que foi solicitada a informacao verbal. No XSD: atributo Nome." },
            "emolumentos": { "$ref": "#/$defs/Emolumentos" }
          }
        }
      ]
    },

    "AlteracaoEmolumentos": {
      "title": "Alteracao de Emolumentos",
      "description": "Operacao administrativa de alteracao de emolumentos sobre ato existente. Substitui AlteracaoEmolumentos (Selo + Emolumentos). Categoria=OPERACAO (nao gera selo proprio nem CCT).",
      "type": "object",
      "additionalProperties": false,
      "required": ["categoria", "selo", "emolumentos"],
      "properties": {
        "categoria": {
          "type": "string",
          "const": "OPERACAO",
          "description": "Operacao administrativa (sem selo proprio nem CCT). O selo informado refere-se ao ato cujos emolumentos serao alterados."
        },
        "selo": {
          "type": "string",
          "pattern": "^[A-Z]{4}\\d{5}$",
          "description": "Selo (ou CCT, mesmo formato) do ato cujos emolumentos serao alterados."
        },
        "emolumentos": { "$ref": "#/$defs/Emolumentos" }
      }
    }

  }
}
