Referencia

Pain001 műszaki referencia: CLI, Python API és REST

A pain001 v0.0.71 minden kapcsolója, végpontja és viselkedése, a leszállított kódból véve, nem tervekből.

Ez a referencia a pain001 v0.0.71 parancssori felületét, Python API-ját, REST mikroszolgáltatását és validálási folyamatát dokumentálja. Az itt felsorolt összes kapcsoló, végpont és viselkedés a leszállított kódból származik, nem tervekből.

A Pain001 12 ISO 20022 üzenetdefiníciót támogat: a pain.001.001.03 verziótól a pain.001.001.13 verzióig (Customer Credit Transfer Initiation, tizenegy verzió), valamint a pain.008.001.02 üzenetet (Customer Direct Debit Initiation).


1. Parancssori felület#

A pain001 futtatható állomány alparancsokba szervezi a funkcióit. Ha csak generálási kapcsolókkal futtatja, implicit módon a generate alparancsot hívja meg, így a meglévő automatizmusok továbbra is működnek.

Alparancs Rendeltetés
generate Adatfájl átalakítása sémával validált ISO 20022 XML-lé (alapértelmezett parancs).
validate A bemeneti adatok validálása XML írása nélkül.
versions [--json] A 13 támogatott üzenetdefiníció listázása.
inspect <type> [--json] Egy üzenettípus kötelező és opcionális mezőinek megjelenítése.
init <type> [-o DIR] Kiinduló CSV sablon létrehozása egy üzenettípushoz.
serve [--host] [--port] [--reload] A FastAPI REST mikroszolgáltatás indítása (az api extra szükséges hozzá).
mcp A projektbe épített Model Context Protocol kiszolgáló indítása (5 eszköz; a teljes, 22 eszközt tartalmazó kiszolgáló pain001-mcp néven érhető el).
plugins list / show / disable A felismert betöltő-, validátor-, séma- és írómodulok áttekintése és kezelése.

A generate beállításai

Kapcsoló Leírás
-t, --xml-message-type <TYPE> Üzenetdefiníció, például pain.001.001.09.
-d, --data <FILE> Bemeneti adatok: .csv, .json, .jsonl, .db / .sqlite, .parquet, illetve PGP-vel titkosított .gpg / .asc fájlok.
-o, --output-dir <DIR> Az a könyvtár, amelybe a generált XML kerül.
-m, --template <FILE> / -s, --schema <FILE> A csomaggal szállított Jinja2 sablon vagy XSD séma felülbírálása.
-c, --config <FILE> Alapértelmezések betöltése konfigurációs profilból (--profile, --show-config).
--dry-run (alias --validate-only) A bemenet validálása a JSON Schema, az XSD és a sémaszabálykönyv alapján, kimenet írása nélkül.
--scheme <NAME> Sémaszabálykönyv kikényszerítése: sepa-sct, sepa-inst, sepa-sdd, sepa-b2b vagy xborder-ct.
--explain --scheme-format {text,json} Minden teljesült vagy megbukott sémaszabály jelentése, ember vagy gép által olvasható formában.
--streaming / --chunk-size <N> Memóriakorlátos, darabokra bontott feldolgozás nagy kötegekhez (alapértelmezetten 1,000 tranzakció darabonként; minden darabból önálló XML fájl lesz, újraszámolt NbOfTxs és CtrlSum értékekkel).
--emit-metrics Gépi feldolgozásra alkalmas futásmetrikák kibocsátása megfigyelhetőségi rendszerek számára.

A kilépési kódok CI-barátok: 0 sikeres futás, 1 validálási hiba, 2 használati hiba.

In the next release

These features are in development for the next pain001 release. They are not in pain001 0.0.71, the version this reference documents, and their names may change before they ship.

Kapcsoló Leírás
--envelop-bah Wrap generated payment XML into an ISO 20022 Business Application Header (head.001.001.03) and BizData (head.003.001.01) envelope.
--bah-sender <BIC/ID> Sender financial institution BIC or organisation identifier for BAH <Fr>.
--bah-receiver <BIC/ID> Receiver financial institution BIC or organisation identifier for BAH <To>.
--bah-msg-id <ID> Business Message Identifier for BAH <BizMsgIdr> (defaults to generated UUID).
--xml-sign-key <FILE> PEM RSA private key for W3C XML Digital Signature (XML-DSig RSA-SHA256).
--xml-sign-cert <FILE> Optional PEM X.509 certificate to embed in XML-DSig <ds:KeyInfo>.
--xml-sign-passphrase-env <VAR> Environment variable holding passphrase to decrypt the RSA private key.

The Python API gains the matching process_files parameters: envelop_bah, xml_sign_key and xml_sign_cert.

Input normalisation gains formula injection shielding: cells starting with a formula trigger (=, +, -, @, tab, carriage return or line feed) are escaped with a leading single quote, preventing CSV injection (CWE-1236) when a file is opened in a spreadsheet.


2. Python API#

from pain001.core.core import process_files

# Generate a validated pain.001.001.09 file from CSV
process_files(
    xml_message_type="pain.001.001.09",
    xml_template_file_path="template.xml",
    xsd_schema_file_path="schema.xsd",
    data_file_path="payments.csv",
    output_dir="out",
)

Minden generált dokumentum három rétegen halad át, mielőtt kiírásra kerülne:

  1. Bemenet-validálás: a rendszer minden rekordot az üzenettípus JSON Schema definíciójához mér, mezőalias-normalizálással, valamint IBAN/BIC szintaktikai ellenőrzéssel.
  2. Sémaszabálykönyv (opcionális): SEPA SCT, SEPA Instant, SEPA SDD Core, SEPA B2B vagy határon átnyúló átutalási szabályok.
  3. XSD-validálás: az előállított XML-t az xmlschema ellenőrzi a hivatalos ISO 20022 séma alapján, még mielőtt egyetlen bájt is lemezre kerülne.

A pénzösszegeket az XML generálása és a sémavalidálás során decimal.Decimal típus kezeli (soha nem IEEE 754 lebegőpontos számok), a NbOfTxs / CtrlSum ellenőrző összegeket pedig a rendszer a validált rekordokból számolja újra, nem pedig készpénznek veszi a bemenetből.

A pain.001 generálásán túl az alapkönyvtár pain.002 státuszjelentés-értelmezőt és -generátort is tartalmaz (így elolvashatja a bank elfogadó vagy elutasító válaszát), valamint camt.053 kivonatértelmezőt és -generátort a napvégi egyeztetéshez, továbbá egy VersionMapper osztályt, amely a rekordokat átvezeti az üzenetverziók között.


3. REST mikroszolgáltatás#

pip install "pain001[api]"
pain001 serve --host 0.0.0.0 --port 8000

Minden végpont a /api/v1 útvonal alatt érhető el (verziószám nélküli /api aliasszal):

Metódus és útvonal Rendeltetés
GET /api/v1/health Életjel-ellenőrzés.
POST /api/v1/validate Rekordok validálása; mezőszintű hibákat ad vissza.
POST /api/v1/generate Szinkron XML-generálás.
POST /api/v1/generate/async Nagy köteg sorba állítása háttérben történő generáláshoz.
GET /api/v1/status/{job_id} Aszinkron feladat állapotának lekérdezése.
GET /api/v1/download/{job_id} Az elkészült XML letöltése.
DELETE /api/v1/jobs/{job_id} Befejezett feladat takarítása.
GET /metrics Prometheus metrikák.

Az interaktív dokumentáció a /api/docs (Swagger UI), a /api/redoc és a /api/reference (Scalar) címen érhető el, az OpenAPI dokumentum pedig a /openapi.json címen.


4. Bemenet normalizálása#

A Pain001 a valós életből származó exportokat érvényes rekordokká alakítja a validálás előtt:

  • Mezőaliasok: a gyakori ERP-oszlopnevek a kanonikus mezőkre képződnek le (például amount → payment_amount).
  • IBAN / BIC normalizálás: a szóközök eltávolítása, a kis- és nagybetűk egységesítése, majd ellenőrzés (ISO 13616 szerinti mod-97 az IBAN-oknál, ISO 9362 szerinti szerkezet a BIC-eknél).
  • Dátumok: ISO 8601 YYYY-MM-DD formátum értelmezése a teljesítési dátumoknál.
  • Összegek: a decimal.Decimal típuson keresztül; a hibás összegek megbuknak a validáláson ahelyett, hogy csendben kerekítésre kerülnének.
  • Karakterkészlet: az átírást segítő függvények a tartalmat a SWIFT és a SEPA által elfogadott ISO 20022 latin karakterkészletre szűkítik.

5. Bővítményarchitektúra#

A csomagcsalád négy belépésipont-csoporton keresztül bővíthető: pain001.loaders, pain001.validators, pain001.schemes és pain001.writers. A pain001-loader-xlsx ezen a mechanizmuson keresztül regisztrál, és telepítéskor automatikusan felismerésre kerül; a pain001-loader-mt101 önálló értelmezőkönyvtár, amelyet közvetlenül lehet használni (és amelyet az MCP kiszolgáló convert_mt101 eszköze is használ). Egy vészkapcsoló, a PAIN001_DISABLE_PLUGINS=1, zárt környezetekben teljesen kikapcsolja a külső bővítmények felismerését.


6. Minőségi kapuk#

Az alapkönyvtár szigorú, ellenőrizhető kapuk mentén készül: 100%-os sor- és áglefedettség a CI-ban kikényszerítve (--cov-fail-under=100), szigorú mypy típusellenőrzés, 100%-os docstring-lefedettség és biztonsági linteres vizsgálat (Bandit, pip-audit). Minden kiadási buildhez CycloneDX SBOM készül.

Folytassa a telepítési útmutatóval, az AI-ügynököknek szánt MCP kiszolgálóval vagy a fizetési szakszótárral.