Layout JSON — Marítimos v3.0.0

Documentação Técnica do Layout de Contratos Marítimos · Registro e Averbação de Embarcações · SELO2 · 2026

Introdução

O Layout JSON Marítimos v3.0.0 define o contrato de dados para remessa eletrônica de atos praticados em Registros de Contratos Marítimos no Estado do Rio de Janeiro. Substitui o Schema_Maritimos_3.00.xsd (XML), adotando JSON Schema draft-07 como padrão de validação e tipagem — em linha com os demais layouts da plataforma SELO2.

Versão & Status

v3.0.0 — vigente desde 2026-05-07. Schema monolítico em layout_schema.json (81 KB) com 41 definições reutilizáveis via $ref interno.

Domínio

Registro e averbação de contratos relacionados a embarcações e atos notariais correlatos. Baseado na Lei 7.652/1988 (Registro de Embarcações) e NORMAM-01 (Marinha do Brasil).

Cobertura

21 tipos de ato — desde lavraturas de escritura até operações de alteração de emolumentos. Máximo de 5.000 atos por remessa. Limite de arquivo: 32 MB.

Princípios de Design
  • Tipagem forte: numéricos com minimum/maximum; monetários como string com padrão ^\d+\.\d{2}$
  • Booleanos nativos: true/false — nunca "S"/"N"
  • Enums humanizados: cada valor é autoexplicativo, sem prefixos opacos
  • Discriminação via oneOf: cada ato tem tipoAto + dadosAto com const no schema
  • additionalProperties: false em todos os objetos
Arquivos do Layout
ArquivoDescrição
layout_schema.jsonJSON Schema draft-07 (81 KB)
exemplo.jsonRemessa de exemplo com os 21 atos
layout.mdDocumentação técnica em Markdown
_build/valida.ps1Validador PowerShell
_build/valida.pyValidador Python
_build/valida.vbValidador VB.NET 4.8.1
_build/ValidaLayout.NET10.csValidador C# .NET 10

Envelope Raiz

Todo arquivo de remessa tem exatamente um objeto raiz com duas chaves obrigatórias: $schema (URI da versão do layout) e remessa (o envelope de dados). A estrutura do envelope é descrita abaixo.

Estrutura Raiz
{
  "$schema": "https://layouts.tjrj.jus.br/sfe/maritimos/v3.0.0/layout_schema.json",
  "remessa": {
    "id": "<UUID v4>",
    "versaoLayout": "3.0.0",
    "codigoServico": "458",
    "tipoOperacao": "INCLUSAO",               // ou "ALTERACAO"
    "ambiente": "PRODUCAO",                   // ou "HOMOLOGACAO"
    "software": { "nome": "SGF", "versao": "2026.1.0" },
    "dataGeracao": "2026-05-07T10:30:00-03:00",   // ISO 8601 com offset
    "atos": [ /* array de atos — máx. 5.000 */ ],
    "justificativasAusencia": [ /* datas sem ato praticado */ ]
  }
}

Campos do Envelope

Campo Tipo Obrig. Descrição
idstringIdentificador único da remessa. Formato UUID v4. Gerado pelo software transmissor.
versaoLayoutstringVersão do layout utilizado. Valor fixo: "3.0.0".
codigoServicostringCódigo do serviço extrajudicial na CGJ-RJ. Para Marítimos: "458".
tipoOperacaoenumINCLUSAO para novos atos; ALTERACAO para retificações de atos já transmitidos.
ambienteenumHOMOLOGACAO para testes; PRODUCAO para envio real.
softwareobjectIdentificação do software transmissor: nome (string) e versao (string).
dataGeracaodate-timeMomento de geração do arquivo. ISO 8601 com offset de fuso horário obrigatório (ex.: -03:00).
atosarrayArray de atos. Mínimo: 1 item. Máximo: 5.000 itens. Cada item é discriminado por tipoAto + dadosAto.
justificativasAusenciaarrayDatas em que o serviço não praticou atos. Cada item contém data (date) e motivo (string).
Discriminação de Ato — Padrão oneOf

Cada elemento do array atos segue o padrão de discriminação por tipo:

{
  "tipoAto": "LAVRATURA_ESCRITURA",    // discriminador (const no schema)
  "dadosAto": {
    // campos específicos do tipo — validados por oneOf
    "categoria": "ATO_SELADO",
    "dataPratica": "2026-05-07",
    "selo": "RCPN00001",
    "aleatorio": "XYZ",
    // ... demais campos do ato ...
  }
}

O JSON Schema usa oneOf com const em categoria para garantir que cada tipoAto produza exatamente o conjunto correto de campos obrigatórios e opcionais.

Tipos de Ato

O layout cobre 21 tipos de ato, distribuídos em três categorias funcionais. A categoria determina qual estrutura base o ato herda: AtoBase (atos selados), TransmissaoBase (transmissões não seladas) ou estrutura própria (operações).

ATO_SELADO

Requerem selo físico ou eletrônico. Herdam de AtoBase.

tipoAto Descrição Base Legal
LAVRATURA_ESCRITURALavratura de escritura pública de contrato marítimo. Suporta atos conjuntos, procuração, valor declarado e múltiplas embarcações.Lei 8.935/94
CERTIDAO_ESCRITURAEmissão de certidão de escritura já lavrada. Indica se é inteiro teor ou específica.Lei 6.015/73
LAVRATURA_PROCURACAOLavratura de procuração pública para atos marítimos. Informa tipo de livro, finalidade e outorgantes/outorgados.Lei 8.935/94
CERTIDAO_PROCURACAOCertidão de procuração já lavrada.Lei 6.015/73
SUBSTABELECIMENTO_PROCURACAOSubstabelecimento de poderes de procuração. Referencia a procuração original.CC art. 655
REVOGACAO_PROCURACAORevogação de procuração. Quando outorgado ausente, exige número de notificação.CC art. 682
PRENOTACAOPrenotação de título para registro marítimo. Informa espécie do título e indicador se lavrado no Rio de Janeiro.Lei 6.015/73 art. 221
REGISTRORegistro de contrato marítimo. Campo tipoRegistro (Tabela 11 CGJ-RJ).Lei 7.652/88
AVERBACAOAverbação em registro existente. Campo tipoAverbacao (Tabela 12) e indicador de conteúdo econômico.Lei 6.015/73 art. 167-II
CERTIDAOCertidão de registro marítimo. Campo tipoCertidao (Tabela 13) e resultado (positivo/negativo).Lei 6.015/73
CERTIDAO_GENERICACertidão de conteúdo genérico não coberto pelos tipos específicos.Lei 6.015/73
APOSTILAMENTOApostila da Convenção da Haia em documento marítimo. Informa país de destino e idioma do documento.Conv. Haia 1961
VISTOVisto em procuração ou instrumento particular. Informa tipo de instrumento.Lei 8.935/94

TRANSMISSAO_NAO_SELADA

Não requerem selo. Herdam de TransmissaoBase — utilizam cct (Código de Controle de Transmissão) em vez de selo.

tipoAto Descrição
CANCELAMENTO_PRENOTACAOCancelamento de prenotação anterior. Vincula ao ato de prenotação original via atosVinculados.
APRESENTACAO_TITULO_EXAMEApresentação de título para exame de qualificação. Não gera registro — registra apenas a apresentação.
ENCERRAMENTO_LIVROEncerramento de livro de registro. Informa número do livro e tipo.
FOLHA_ADICIONAL_COMPLEMENTOFolha adicional a ato já lavrado — complemento de conteúdo.
INFORMACAO_VERBALRegistro de informação verbal prestada. Não gera cobrança de emolumentos selados.
COMPLEMENTO_EMOLUMENTOSComplementação de emolumentos de ato anterior. Referencia o ato original.
DESISTENCIADesistência de ato em andamento. Informa tipo do ato desistido e motivo (FALTA_ASSINATURA, DESISTENCIA, OUTROS).

OPERACAO

Categoria especial para operações administrativas sobre atos já registrados. Não herda de AtoBase nem TransmissaoBase — tem estrutura própria.

tipoAto Descrição
ALTERACAO_EMOLUMENTOSAltera a composição de emolumentos de um ato já registrado. Campos: categoria, selo (ou cct) e novo objeto emolumentos. Não possui dataPratica.

Estruturas Base

As estruturas base são definições reutilizáveis ($defs) que consolidam os campos comuns a múltiplos tipos de ato. Cada tipo de ato estende uma dessas bases via allOf no JSON Schema.

AtoBase — Base para ATO_SELADO
AtoBase // Compartilhada por 13 tipos de ato selado

Define os campos obrigatórios e opcionais presentes em todo ato que requer selo.

CampoTipoObrig.Descrição
categoriaconstSempre "ATO_SELADO". Discriminador do oneOf.
dataPraticadateData em que o ato foi praticado. Formato ISO 8601 (YYYY-MM-DD).
selopatternNúmero do selo. Padrão: ^[A-Z]{4}\d{5}$ (4 letras + 5 dígitos, ex.: RCPN00001).
aleatoriopatternCódigo aleatório do selo. Padrão: ^[A-Z]{3}$ (3 letras maiúsculas).
livrostringIdentificação do livro onde o ato foi lavrado. Até 25 caracteres.
folhaInicialstringFolha inicial do ato no livro. Até 25 caracteres.
folhaFinalstringFolha final do ato no livro. Até 25 caracteres.
numeroAtostringNúmero sequencial do ato. Até 25 caracteres.
localPraticaenumSEDE ou FORA_SEDE.
fichaMatriculastringNúmero de ficha ou matrícula. Até 25 caracteres.
numeroProtocolostringNúmero de protocolo de entrada. Até 25 caracteres.
numeroRecibostringNúmero do recibo de pagamento. Até 25 caracteres.
indAtoEletronicobooleanIndica se o ato é eletrônico. Quando true, os campos de URL e hash do PDF tornam-se obrigatórios.
urlPdfAtouri🔶URL do PDF do ato. Obrigatório quando indAtoEletronico = true.
hashPdfAtostring🔶Hash SHA-256 do PDF do ato. Obrigatório quando indAtoEletronico = true.
urlDossieuri🔶URL do dossiê eletrônico. Obrigatório quando indAtoEletronico = true.
hashDossiestring🔶Hash SHA-256 do dossiê. Obrigatório quando indAtoEletronico = true.

🔶 Condicionalmente obrigatório  ·  ⬜ Opcional  ·  ✅ Sempre obrigatório

TransmissaoBase — Base para TRANSMISSAO_NAO_SELADA
TransmissaoBase // Compartilhada por 7 tipos de transmissão não-selada

Estrutura análoga ao AtoBase, mas para atos que não requerem selo. Substitui selo + aleatorio pelo CCT (Código de Controle de Transmissão).

CampoTipoObrig.Descrição
categoriaconstSempre "TRANSMISSAO_NAO_SELADA". Discriminador.
dataPraticadateData em que o ato foi praticado. Formato ISO 8601.
cctpatternCódigo de Controle de Transmissão. Identifica univocamente a transmissão não-selada na faixa autorizada para o serviço.
localPraticaenumSEDE ou FORA_SEDE.
numeroProtocolostringNúmero de protocolo de entrada. Até 25 caracteres.
numeroRecibostringNúmero do recibo. Até 25 caracteres.
indAtoEletronicobooleanIndica ato eletrônico — mesma regra do AtoBase.
urlPdfAto, hashPdfAto, urlDossie, hashDossieuri/string🔶Obrigatórios quando indAtoEletronico = true.

Emolumentos

O objeto emolumentos descreve a composição financeira do ato. Cada ato selado (e alguns atos de transmissão) deve conter um objeto emolumentos com o tipo de cobrança e, quando aplicável, os valores discriminados conforme a Lei 6.281/2012 (RJ).

Objeto emolumentos — Campos
CampoTipoObrig.Descrição
tipoCobrancaenumJUSTICA_GRATUITA, COM_COBRANCA, SEM_COBRANCA, NIHIL ou ATO_CONJUNTO.
valorTotalEmolumentosstring🔶Total dos emolumentos no formato ^\d+\.\d{2}$. Obrigatório quando tipoCobranca = COM_COBRANCA.
fetjstring🔶Fundo Estadual de Reaparalhamento da Justiça.
fundperjstring🔶Fundo de Reaparalhamento da Polícia.
funperjstring🔶Fundo de Reaparalhamento do Poder Executivo.
funarpenstring🔶Fundo de Reaparalhamento da FUNARPEN.
ressagstring🔶Ressarcimento de Agentes.
valorDistribuidorstringValor destinado ao distribuidor.
valorSeloEletronicostringValor do selo eletrônico (Lei 9.873/2022/RJ).
valorIssstringImposto Sobre Serviços — quando aplicável.
itensarray🔶Itens discriminados de emolumentos. Obrigatório quando tipoCobranca = COM_COBRANCA. Ver ItemEmolumento abaixo.
hipossuficientebooleanIndica que o beneficiário é hipossuficiente. Recomendado em JUSTICA_GRATUITA.
⚠️ Regra Crítica — Supressão de Valores Monetários

Quando tipoCobranca for JUSTICA_GRATUITA, SEM_COBRANCA ou ATO_CONJUNTO, todos os valores monetários são suprimidos (valorTotalEmolumentos, fetj, fundperj, funarpen, etc.) e o array itens deve ser omitido. O objeto emolumentos fica reduzido a { "tipoCobranca": "JUSTICA_GRATUITA", "hipossuficiente": true }.

ItemEmolumento

Cada elemento do array itens representa um serviço emolumentado individual, referenciando a tabela da CGJ-RJ.

CampoTipoObrig.Descrição
anointegerAno fiscal da tabela utilizada.
tabelastringCódigo da tabela de emolumentos CGJ-RJ (chave externa — valor preservado como string).
itemstringCódigo do item da tabela CGJ-RJ (chave externa).
subItemstringCódigo do sub-item CGJ-RJ (chave externa).
quantidadeintegerQuantidade cobrada. Intervalo: 1 a 9.999.
complementostringTexto complementar ao item. Até 100 caracteres.
excecaostringCódigo de exceção tarifária aplicável. Até 100 caracteres.

AtoVinculado

Vínculo a outro ato, dentro ou fora da mesma remessa. Usado para relacionar atos de cancelamento ao ato original, complementos de emolumentos, atos conjuntos e afins.

CampoTipoObrig.Descrição
tipoVinculoenumATO_REGISTRO, ATO_PRENOTACAO, ATO_CERTIDAO, ATO_COM_ERRO_MATERIAL, ATO_CONJUNTO, ATO_COMPLEMENTO_EMOLUMENTOS, ATO_PROCURACAO.
codigoServicostringCódigo do serviço onde está o ato vinculado (quando diferente do atual).
selostringSelo do ato vinculado (quando ato selado).
aleatoriostringCódigo aleatório do selo vinculado.
cctstringCCT do ato vinculado (quando transmissão não-selada).
tipoSeloenumFISICO ou ELETRONICO.
dataPraticadateData de prática do ato vinculado.
nomeServicostringNome do serviço onde está registrado o ato vinculado.
estadoServicoUFUF do serviço (2 caracteres).
Exemplo — Emolumentos Completo
"emolumentos": {
  "tipoCobranca": "COM_COBRANCA",
  "valorTotalEmolumentos": "450.00",
  "fetj": "90.00",
  "fundperj": "22.50",
  "funperj": "22.50",
  "funarpen": "45.00",
  "ressag": "67.50",
  "valorSeloEletronico": "10.00",
  "itens": [
    {
      "tabela": "8",
      "item": "1",
      "subItem": "A",
      "quantidade": 1,
      "complemento": "Escritura de contrato marítimo"
    }
  ]
}

Participantes

O objeto participantes agrupa as pessoas físicas e jurídicas envolvidas no ato. Cada tipo de ato define quais papéis são permitidos (outorgante, outorgado, vendedor, comprador, credor, devedor, etc.) — codificados pela Tabela 2 CGJ-RJ via campo tipo.

PessoaFísica
CampoTipoObrig.Descrição
tipointegerPapel da pessoa no ato — Tabela 2 CGJ-RJ (chave externa, integer).
nomestringNome completo. Até 250 caracteres.
sexoenumFEMININO, MASCULINO, NAO_BINARIE, IGNORADO (Provimento CNJ 73/2018).
dataNascimentodateData de nascimento. ISO 8601.
numeroIdentidadestring🔶Número do documento de identidade. Obrigatório quando cpf está ausente.
orgaoEmissorstringÓrgão emissor do documento. Até 70 caracteres.
cpfpattern🔶CPF sem pontuação: ^\d{11}$. Obrigatório ou justificativa de ausência.
justificativaAusenciaCpfenum🔶NAO_POSSUI, NAO_DECLARADO ou ESTRANGEIRO. Exigido quando cpf ausente, junto com numeroIdentidade.
nacionalidadeOnuintegerCódigo ONU/M49 de nacionalidade (chave externa).
estadoCivilenumSOLTEIRO, CASADO, VIUVO, SEPARADO_JUDICIALMENTE, DIVORCIADO, SEPARADO_CONSENSUALMENTE, DESQUITADO, IGNORADO.
numeroPreTestestringNúmero de pré-teste (uso interno). Até 25 caracteres.
PessoaJurídica
CampoTipoObrig.Descrição
tipointegerPapel da pessoa jurídica no ato — Tabela 2 CGJ-RJ.
nomestringRazão social. Até 250 caracteres.
cnpjpattern🔶CNPJ sem pontuação: ^\d{14}$. Obrigatório ou justificativa de ausência.
justificativaAusenciaCnpjenum🔶NAO_POSSUI ou NAO_DECLARADO. Exigido quando cnpj ausente.
nacionalidadeOnuintegerCódigo ONU/M49 do país de origem da pessoa jurídica.
Exemplo — Participantes
"participantes": {
  "pessoasFisicas": [
    {
      "tipo": 1,                         // Tabela 2 CGJ-RJ — ex.: Outorgante
      "nome": "João da Silva",
      "cpf": "12345678901",
      "sexo": "MASCULINO",
      "estadoCivil": "CASADO"
    }
  ],
  "pessoasJuridicas": [
    {
      "tipo": 2,                         // ex.: Outorgado
      "nome": "Embarcações Ltda.",
      "cnpj": "12345678000195"
    }
  ]
}

Embarcação

O objeto Embarcacao é a estrutura central desta atribuição. Substitui o tipo tpEmbarcacao do XSD 3.00, incorporando a classificação completa da Lei 7.652/1988 e da NORMAM-01 (Marinha do Brasil). Aparece no array objetos de atos como LAVRATURA_ESCRITURA, REGISTRO e AVERBACAO.

CampoTipoObrig.Descrição
tipoEmbarcacaoenum18 valores: LANCHA, JETSKY, NAVIO, PLATAFORMA, REBOCADOR, BARCA, BARCACA, BALSA, CAIAQUE, VELEIRO, CATAMARA, SAVEIRO, IATE, PESQUEIRO, BOTE, SUCATA, EMPURRADOR, OUTROS.
descricaostring🔶Descrição livre do tipo de embarcação. Obrigatório quando tipoEmbarcacao = OUTROS.
numeroInscricaostringIRM — Inscrição no Registro Marítimo (Marinha do Brasil).
numeroProvisaostringNúmero de provisão emitida pela Marinha do Brasil.
tipoRecolhimentoenumNORMAL, ISENTO ou FUTURO. Controla o fluxo de cobrança de emolumentos associados à embarcação.
ufUFUnidade Federativa de registro (2 letras maiúsculas).
codigoPaisOnuinteger🔶Código de país ONU/M49. Obrigatório quando a embarcação é estrangeira (país diferente do Brasil, código 76).
impostoTransmissaostring🔶Valor do imposto de transmissão (ITCMD ou similar). Obrigatório em doações e heranças.
cpfCnpjAdquirentepatternCPF (11 dígitos) ou CNPJ (14 dígitos) do adquirente da embarcação.
cpfCnpjCedentepatternCPF (11 dígitos) ou CNPJ (14 dígitos) do cedente da embarcação.
parteTransferidastringIndicação da parte/fração transferida quando há transferência parcial de propriedade.
valorBemstringValor declarado da embarcação. Formato monetário ^\d+\.\d{2}$.

Tipos de Embarcação — Enum Completo

Embarcações Motorizadas e de Grande Porte
ValorDescrição
LANCHAEmbarcação motorizada de médio porte
JETSKYMoto aquática (personal watercraft)
NAVIOEmbarcação de grande porte para transporte marítimo
PLATAFORMAEstrutura flutuante para extração de petróleo ou gás
REBOCADOREmbarcação para reboque de outras embarcações
EMPURRADOREmbarcação propulsora de barcaças fluviais
PESQUEIROEmbarcação destinada à pesca comercial
IATEEmbarcação de recreio de médio/grande porte
VELEIROEmbarcação movida a vela
CATAMARAEmbarcação de dois cascos paralelos
Embarcações Menores e Categorias Especiais
ValorDescrição
BARCAEmbarcação para transporte de passageiros em travessias
BARCACAEmbarcação de carga sem propulsão própria
BALSAEstrutura flutuante para travessia de veículos
CAIAQUEEmbarcação individual movida a remo
SAVEIROEmbarcação típica nordestina para pesca artesanal
BOTEPequena embarcação movida a remos ou motor de popa
SUCATAEmbarcação desativada/desmontada para fins de registro
OUTROSTipos não cobertos — requer campo descricao
Exemplo — Objeto Embarcação
{
  "tipoEmbarcacao": "LANCHA",
  "numeroInscricao": "RJ-1234-A",        // IRM — Inscrição no Registro Marítimo
  "tipoRecolhimento": "NORMAL",
  "uf": "RJ",
  "cpfCnpjAdquirente": "12345678901",    // 11 dígitos = CPF
  "valorBem": "250000.00"
}

// Embarcação estrangeira (tipoEmbarcacao = OUTROS obriga descricao):
{
  "tipoEmbarcacao": "OUTROS",
  "descricao": "Hovercraft anfíbio",     // obrigatório quando OUTROS
  "codigoPaisOnu": 840,               // EUA — obrigatório para estrangeiras
  "tipoRecolhimento": "NORMAL"
}

Regras de Negócio

As regras abaixo são invariantes de negócio não expressáveis diretamente no JSON Schema draft-07 (que não suporta if/then/else condicionais em todos os casos necessários). A validação dessas regras é responsabilidade do código do validador (_build/) e da plataforma receptora CGJ-RJ.

1
Atos Eletrônicos — URL e Hash Obrigatórios

Quando indAtoEletronico = true, os quatro campos urlPdfAto, hashPdfAto, urlDossie e hashDossie tornam-se obrigatórios. Se qualquer um estiver ausente, a remessa deve ser rejeitada.

2
Valor Declarado em Escritura

Em LAVRATURA_ESCRITURA, quando indValorDeclarado = true, o campo valorDeclarado é obrigatório e deve ser um valor monetário válido (^\d+\.\d{2}$).

3
Revogação com Outorgado Ausente

Em REVOGACAO_PROCURACAO, quando procuracaoOriginal.indOutorgadoAusente = true, o campo procuracaoOriginal.numeroNotificacao é obrigatório (notificação formal ao outorgado).

4
Supressão de Emolumentos

Para tipoCobranca ∈ {JUSTICA_GRATUITA, SEM_COBRANCA, ATO_CONJUNTO}, todos os campos monetários e o array itens devem ser omitidos do JSON — não enviados como null ou zero.

5
Embarcação "OUTROS" — Descrição Obrigatória

Quando tipoEmbarcacao = "OUTROS", o campo descricao é obrigatório e deve conter uma descrição significativa do tipo de embarcação (mínimo recomendado: 5 caracteres).

6
Embarcação Estrangeira — Código ONU

Quando a embarcação está registrada fora do Brasil (país diferente do código ONU 76), o campo codigoPaisOnu é obrigatório. Para embarcações nacionais, o campo deve ser omitido.

7
Pessoa Física sem CPF

Quando cpf está ausente em PessoaFisica, tanto justificativaAusenciaCpf quanto numeroIdentidade tornam-se obrigatórios simultaneamente. Um sem o outro é inválido.

8
Pessoa Jurídica sem CNPJ

Quando cnpj está ausente em PessoaJuridica, justificativaAusenciaCnpj é obrigatório (NAO_POSSUI ou NAO_DECLARADO).

9
Atos Conjuntos — Lista Encadeada

Em atos conjuntos (tipoVinculo ATO_CONJUNTO), apenas o ato principal cota emolumentos. Os demais atos devem ter tipoCobranca = ATO_CONJUNTO, que implica supressão de valores monetários.

10
Desistência — Motivo "OUTROS"

Em DESISTENCIA, quando motivo = "OUTROS", o campo descricao é obrigatório para explicar o motivo da desistência não previsto nos valores fixos.

11
Imposto de Transmissão — Doações e Heranças

Em escrituras que envolvam transferência gratuita de domínio (doação, herança), o campo impostoTransmissao na estrutura de embarcação é obrigatório — mesmo que o valor seja zero ("0.00").

12
Unicidade de Selo/CCT na Remessa

O mesmo selo (ou cct) não pode aparecer em dois atos distintos da mesma remessa. A validação cruzada deve verificar unicidade antes da transmissão — não é coberta pelo JSON Schema.

Validação

O diretório _build/ contém um harness de validação multi-stack que verifica exemplo.json contra layout_schema.json em quatro ambientes distintos. Todos devem retornar APROVADO antes de qualquer alteração ao schema ser considerada estável.

PowerShell + Python

Entry point local. Executa ambas as validações em sequência e exibe o resultado consolidado.

# Executar a partir de _build/
.\valida.ps1

# Saída esperada:
Status: APROVADO
Atos no exemplo: 21
Tipos de ato cobertos: 21

O script Python (valida.py) usa jsonschema (draft-07). Requer: pip install jsonschema.

.NET Framework 4.8.1 — VB.NET

Validador para o ambiente legado do portal WebForms. Usa Newtonsoft.Json.Schema.

REM Compilar e executar:
msbuild valida.vbproj
.\bin\Release\valida.exe

REM Retorna código de saída 0 = APROVADO, 1 = FALHOU

Arquivo de projeto: valida.vbproj. Target framework: net481.

.NET 10 — C#

Validador moderno para integração com o SELO2 Desktop e SGF 2026. Usa JsonSchema.Net (Greenberg).

// Compilar e executar:
dotnet run --project ValidaLayout.NET10.csproj

// Saída JSON com lista de erros (vazia = APROVADO):
{ "status": "APROVADO", "erros": [] }

Arquivo de projeto: ValidaLayout.NET10.csproj. Target: net10.0.

Resultado de Validação do Schema

O arquivo _build/validacao_schema.txt registra o resultado da última validação estável.

MétricaValor
Atos no exemplo21
Tipos cobertos21/21
Status✅ APROVADO
Definições no schema41 ($defs)
JSON Schema versiondraft-07
EncodingUTF-8 sem BOM
Estrutura do Diretório _build/
_build/
├── valida.ps1              # Entry point — executa Python + exibe status
├── valida.py               # Validador Python (jsonschema draft-07)
├── valida.vb               # Validador VB.NET Framework 4.8.1
├── valida.vbproj           # Projeto Visual Basic
├── ValidaLayout.NET10.cs   # Validador C# .NET 10 (JsonSchema.Net)
├── ValidaLayout.NET10.csproj
├── validacao_schema.txt    # Resultado da última validação do schema
├── validacao_exemplo.txt   # Resultado da última validação do exemplo
└── README.md               # Instruções de execução dos validadores

Referências

Bases Legais
  • Lei 7.652/1988 — Registro de Embarcações (Marinha do Brasil)
  • NORMAM-01 (Marinha do Brasil) — Normas para Embarcações
  • Lei 6.015/1973 — Lei dos Registros Públicos
  • Lei 8.935/1994 — Lei dos Notários e Registradores
  • Lei 6.281/2012 (RJ) — Emolumentos Extrajudiciais
  • Lei 9.873/2022 (RJ) — Selo de Fiscalização Eletrônico
  • Provimento CNJ 73/2018 — Categoria NAO_BINARIE
  • Convenção da Haia (1961) — Apostilamento
  • Código Civil, art. 655, 682 — Procurações
Padrões e Documentação Técnica
  • JSON Schema draft-07 — json-schema.org/draft-07
  • Manual MAS CGJ-RJ — Manual de Atos Selados (CGJ-RJ)
  • Tabelas CGJ-RJ — Tabelas 2, 8, 9, 11, 12, 13 (chaves externas)
  • ONU/M49 — Códigos de países e nacionalidades
  • ISO 8601 — Formato de datas e date-time
  • UUID v4 — RFC 4122 (identificadores de remessa)
  • layout_schema.json — Schema monolítico v3.0.0 (81 KB, 41 $defs)
  • exemplo.json — Remessa de exemplo com todos os 21 tipos de ato
  • layout.md — Documentação técnica completa em Markdown