API Reference Isox v#0.1.0

Copy Markdown View Source

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