Modules
Codec das mensagens ISO 20022 do catálogo do SPI (Pix): encode/2 e
decode/1 genéricos, que despacham pelo tipo do modelo (encode/2) ou
pelo namespace do XML (decode/1) para o módulo certo — o schema é
gerado a partir dos XSDs publicados pelo Banco Central (não
redistribuídos aqui — ver mix catalog.gen).
Modelo ISO 20022 do admi.002 (recusa de mensagem) — resposta de
erro da ICOM referenciando a mensagem recusada por RltdRef/Ref, que é
o PI-ResourceId devolvido no ingresso daquela mensagem (Manual VIII).
Modelo ISO 20022 do admi.004 (evento de sistema, ex.: mudança de data contábil), versão 1.2 — notificação sem referência transacional.
BAH (head.001) — cabeçalho compartilhado por toda mensagem do catálogo
(Manual VIII). Fica isolado aqui porque toda mensagem aprofundada
(pacs.008, pacs.002, admi.002, ...) monta o mesmo cabeçalho do mesmo
jeito; só o Document muda por mensagem.
Modelo ISO 20022 do camt.014 (consulta de identificação de
participante — ReturnMember), versão 1.6 — lookup num registro
estático/configurável de participantes: ISPB consultado (MmbId) mais
os dados do participante (MmbOrErr.Mmb) e do role (PtyRoleIdSD1).
Modelo ISO 20022 do camt.025 (recibo, resposta a trck.002),
versão 1.0 — até 500 confirmações por mensagem (RctDtls é
max: ilimitado no schema real, modelado como lista de verdade).
Modelo ISO 20022 do camt.029 (resposta ao camt.055 — aceite
ACCR ou rejeição RJCR), versões 1.1 e 1.2 coexistindo (enums de
rsn_prtry diferem entre as duas: v1_1 tem 4 códigos a mais que
v1_2). Correlaciona com o PmtCxlId do camt.055 original (aqui
OrgnlPmtInfCxlId).
Modelo ISO 20022 do camt.052 (relação de lançamentos da Conta PI, resposta a camt.060), versão 1.3.
Modelo ISO 20022 do camt.053 (saldo/demonstrativo da Conta PI, resposta a camt.060), versão 1.4.
Modelo ISO 20022 do camt.054 (detalhamento de um lançamento da Conta PI — a contrapartida contábil de cada pacs.008/002 liquidada), versões 1.15 e 1.16 coexistindo. A maior mensagem do catálogo.
Modelo ISO 20022 do camt.055 (pedido de cancelamento de ordem
agendada — Pix Agendado), versão 1.1. Referencia a ordem agendada por
OrgnlEndToEndId e traz motivo (CxlRsnInf). Todo campo do schema
real é obrigatório.
Modelo ISO 20022 do camt.060 (requisição de relatório da Conta
PI), versão 1.9 — ReqdMsgNmId é o campo despachante: decide se a
resposta é camt.052, camt.053 ou camt.054.
Cabeçalho (Isox.AppHdr) + modelo de uma mensagem do catálogo — o par
que Isox.encode/2 recebe e Isox.decode/1 devolve.
Modelo ISO 20022 do pacs.002 (relatório de status de pagamento),
versões 1.16 e 1.17 (ADR 0002) — a resposta a um pacs.008, referenciando
a mensagem original por OrgnlInstrId/OrgnlEndToEndId e informando o
status (TxSts) e, quando rejeitada, o motivo.
Modelo ISO 20022 do pacs.004 (devolução), versão 1.5 — a ordem
de devolução de uma pacs.008 já liquidada, referenciando a original por
OrgnlEndToEndId.
Modelo ISO 20022 do pacs.008 (ordem de crédito), versões 1.15 e 1.16 (ADR 0002) — campos com nome amigável em vez do mapa genérico cru que o motor de codec interno produz.
Modelo ISO 20022 do pain.009 (solicitação de autorização de
recorrência / mandato), versão 1.1 — cria o estado de mandato pendente:
MndtId, frequência, datas de vigência, valor.
Modelo ISO 20022 do pain.011 (cancelamento de mandato), versão
1.3 — carrega uma cópia inteira do mandato original (OrgnlMndt, campos
prefixados orgnl_*, mesmo formato do Pain009 sem Adjstmnt, que não
existe neste schema) mais o motivo do cancelamento (CxlRsn).
Modelo ISO 20022 do pain.012 (resposta a pain.009/pain.011 — aceite ou rejeição de mandato), versões 1.3 e 1.4 coexistindo.
Modelo ISO 20022 do pain.013 (agendamento da instrução de pagamento vinculada a um mandato ativo), versão 2.2 — na data agendada, essa instrução vira o gatilho de uma pacs.008 real.
Modelo ISO 20022 do pain.014 (resposta a pain.013), versões 2.3
e 2.4 coexistindo. Correlaciona com a instrução agendada por
OrgnlPmtInfId/OrgnlEndToEndId.
Modelo ISO 20022 do pibr.001 (echo request), versão 1.3 — ping:
Data é um text livre (até 35 caracteres) que o pibr.002 de resposta
ecoa em OrgnlData.
Modelo ISO 20022 do pibr.002 (echo reply), versão 1.3 — pong:
ecoa OrgnlData com o Data recebido no pibr.001 correspondente.
Modelo ISO 20022 do reda.014 (solicitação de cadastro de participante indireto sob um direto), versão 1.3.
Modelo ISO 20022 do reda.016 (aviso de status — resposta a
reda.014/022/031), versão 1.5. Correlaciona com o pedido original por
OrgnlBizInstr.MsgId.
Modelo ISO 20022 do reda.017 (relatório de dados de participante), versão 1.2 — reflete o cadastro atual, não é resposta a um pedido específico.
Modelo ISO 20022 do reda.022 (solicitação de alteração de
cadastro de participante), versão 1.4 — a mensagem cujo schema real
exigiu corrigir o Compiler (ver ADR/issue #27): ReqdMod é um
xs:choice entre CtctDtls (ela mesma outra escolha, entre os grupos
ReqdModContato e ReqdModDiretor, que compartilham a maioria das
tags — só Nm distingue), TechAdr e MktSpcfcAttr.
Modelo ISO 20022 do reda.031 (solicitação de exclusão de cadastro de participante), versão 1.2 — referencia o ISPB do participante a excluir.
Modelo ISO 20022 do reda.041 (aviso de mudança de atividade/status de um participante), versão 1.7.
Descobre os módulos Isox.Generated.<Mensagem>.<Versao> já
carregados e despacha o parse pela combinação namespace + MsgDefIdr
(ADR 0002) — os dois precisam concordar, ou é erro.
Modelo ISO 20022 do trck.002 (autorrelato de transferência entre contas do mesmo participante — book transfer), versão 1.1. Independente de pacs.008/002; responde-se com camt.025.
Núcleo do XMLDSig do Pix (Manual de Segurança do SFN Vol. II §3), comum
aos dois perfis que o manual define: SPI (3 <ds:Reference> — tabela 3)
e DICT (2 <ds:Reference> — tabela 4). Hoje só o perfil SPI está
implementado (sign/4); sign_references/3 e key_info_xml/2 já são o
suficiente para montar o perfil do DICT quando existir um simulador para
ele — a diferença entre os dois perfis é só a lista de referências, não
o resto do mecanismo (§3.2 do manual: os passos são os mesmos).
Gera, em memória, um par de chave privada + certificado autoassinado
RSA-2048, para uso em testes e exemplos de Isox.Xmldsig.Signer
e Isox.Xmldsig.Verifier.
Verificação do perfil de assinatura SPI (Manual de Segurança do SFN Vol.
II §3.3): recalcula os três digests com canonicalização real — os bytes
vêm de terceiro, então, diferente da assinatura na saída, não dá pra
confiar que já chegaram canônicos — e confere a assinatura RSA-SHA256
sobre o SignedInfo.
Mix Tasks
Lê todos os .xsd de mensagem em --xsd-dir (exceto xmldsig, que não é
mensagem) e gera, em --out, um módulo Isox.Generated.<Mensagem>.<Versao>
por arquivo, mais um módulo interno com o BAH (head.001), compartilhado
entre todas as mensagens (ADR 0004).
Mede o throughput de assinar e verificar uma pacs.008 realista, sem servidor HTTP no caminho