Reference API pacs008 Reference API pacs008
Projekt poskytuje REST API i CLI pro provozní pracovní postupy zpracování platebních zpráv.
Instalace Instalace
Nainstalujte balíček z PyPI. Vyžaduje Python 3.9.2 nebo novější.
bash
python -m pip install pacs008REST API REST API
Spusťte vestavěný FastAPI server pro obsluhu HTTP endpointů pro validaci a generování.
Spustit server Spustit server
bash
uvicorn pacs008.api.app:app --reload --host 0.0.0.0 --port 8000Endpointy Endpointy
| Endpoint | Popis |
|---|---|
GET /health | Kontrola stavu — vrátí stav služby |
POST /validate | Validace platebních dat proti schématu bez generování XML |
POST /generate | Synchronní generování XML a vrácení souboru |
POST /generate/async | Odeslání asynchronní generovací úlohy |
GET /status/{job_id} | Dotaz na stav úlohy podle ID |
GET /download/{job_id} | Stažení vygenerovaného XML po dokončení úlohy |
DELETE /jobs/{job_id} | Zrušit čekající nebo běžící úlohu |
GET /docs | Interaktivní Swagger UI pro prozkoumání a testování všech endpointů |
pacs.002.001.12— Zpráva o stavu platby mezi finančními institucemipacs.003.001.09— Přímý inkaso zákazníka mezi finančními institucemipacs.004.001.11— Vrácení platbypacs.007.001.11— Storno platby mezi finančními institucemipacs.008.001.13— Úhrada zákazníka mezi finančními institucemipacs.009.001.10— Úhrada mezi finančními institucemipacs.010.001.05— Přímý inkaso mezi finančními institucemipacs.028.001.05— Dotaz na stav platby mezi finančními institucemi
Příklad validace Příklad validace
Odešlete platební data k validaci před generováním XML.
bash
curl -X POST http://localhost:8000/api/validate \
-H "Content-Type: application/json" \
-d '{
"message_type": "pacs.008.001.13",
"data": [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA"
}]
}'json
{
"valid": true,
"message_type": "pacs.008.001.13",
"errors": [],
"warnings": []
}Příklad synchronního generování Příklad synchronního generování
Vygenerujte soubor XML pacs.008.001.13 z JSON dat.
bash
curl -X POST http://localhost:8000/api/generate \
-H "Content-Type: application/json" \
-d '{
"message_type": "pacs.008.001.13",
"template": "pacs008/templates/pacs.008.001.13/template.xml",
"schema": "pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
"data": [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"tx_id": "TX-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA"
}]
}' --output pacs008_output.xmlAsynchronní generování Asynchronní generování
Pro větší soubory nebo použití v pipeline odešlete asynchronní úlohu a dotazujte se na její dokončení.
bash
# Submit the job
JOB=$(curl -s -X POST http://localhost:8000/api/generate/async \
-H "Content-Type: application/json" \
-d '{"message_type":"pacs.008.001.13","data":[...]}')
JOB_ID=$(echo $JOB | jq -r '.job_id')
# Poll for completion
curl http://localhost:8000/api/status/$JOB_ID
# Download the result
curl http://localhost:8000/api/download/$JOB_ID --output result.xmljson
{
"job_id": "8f7f0d4b-7df9-4d1a-8d47-19f4f28b6d38",
"status": "completed",
"message_type": "pacs.008.001.13",
"download_url": "/api/download/8f7f0d4b-7df9-4d1a-8d47-19f4f28b6d38"
}CLI CLI
Rozhraní příkazového řádku přijímá datový soubor, verzi zprávy, šablonu a schéma. Validuje vstup a zapisuje vygenerované XML do výstupního adresáře.
Základní použití Základní použití
bash
pacs008 -t <message_type> \
-m <template_file> \
-s <schema_file> \
-d <data_file>Příklad Příklad
bash
pacs008 -t pacs.008.001.13 \
-m pacs008/templates/pacs.008.001.13/template.xml \
-s pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd \
-d payments.csvRežim suchého běhu Režim suchého běhu
Použijte --dry-run k validaci vstupních dat bez generování XML. Návratový kód ukazuje, zda validace prošla (0) nebo selhala (1).
bash
pacs008 -t pacs.008.001.13 \
-m pacs008/templates/pacs.008.001.13/template.xml \
-s pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd \
-d payments.csv \
--dry-runPřidejte --verbose pro podrobný výstup během generování.
Python API Python API
Použijte knihovnu přímo v Python skriptech nebo službách.
Generování XML z platebních záznamů Generování XML z platebních záznamů
python
from pacs008 import generate_xml_string
payments = [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"tx_id": "TX-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA",
}]
xml = generate_xml_string(
payments,
"pacs.008.001.13",
"pacs008/templates/pacs.008.001.13/template.xml",
"pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
)
print(xml)Kontrola souladu se SWIFT Kontrola souladu se SWIFT
Kontrola a čištění dat proti pravidlům znakové sady a délky polí SWIFT před generováním.
python
from pacs008.compliance import cleanse_data_with_report
raw = [{"debtor_name": "Müller & Söhne™", "msg_id": "X" * 50}]
clean, report = cleanse_data_with_report(raw)
print(report.summary())Docker Docker
Spusťte API v kontejneru pomocí přiloženého Dockerfile.
bash
docker build -t pacs008:latest .
docker run -p 8000:8000 pacs008:latestbash
docker run --rm -e PACS008_LOG_LEVEL=INFO -v $PWD/examples:/data -p 8000:8000 pacs008:latestValidace IBAN a BIC Validace IBAN a BIC
Validujte finanční identifikátory nezávisle na generování XML.
python
from pacs008.validation import validate_iban, validate_bic
is_valid, error = validate_iban("DE89370400440532013000", strict=False)
is_valid, error = validate_bic("DEUTDEFF", strict=False)Streaming Streaming
Načítejte velké datové sady v konfigurovatelných blocích pro omezení využití paměti.
python
from pacs008.data.loader import load_payment_data_streaming
for chunk in load_payment_data_streaming("large_payments.csv", chunk_size=500):
print(f"Processing {len(chunk)} records")python
from pacs008.validation import validate_batch
for chunk in load_payment_data_streaming("large_payments.csv", chunk_size=500):
report = validate_batch(chunk, "pacs.008.001.13")
print(report.summary())Validační služba Validační služba
Spusťte úplný předgenerační validační řetězec programově.
python
from pacs008.validation import ValidationService, ValidationConfig
service = ValidationService()
report = service.validate_all(ValidationConfig(
xml_message_type="pacs.008.001.13",
xml_template_file_path="pacs008/templates/pacs.008.001.13/template.xml",
xsd_schema_file_path="pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
data_file_path="payments.csv",
))
print(report.is_valid, report.errors)Povinná datová pole Povinná datová pole
Každý platební záznam musí obsahovat tato pole. Pole specifická pro verzi jsou uvedena níže.
| Pole | Popis | Omezení |
|---|---|---|
msg_id | Identifikátor zprávy | Max. 35 znaků |
creation_date_time | Časové razítko vytvoření | Formát ISO 8601 |
nb_of_txs | Počet transakcí | Kladné celé číslo |
settlement_method | Metoda vypořádání | CLRG, INDA, COVE nebo INGA |
end_to_end_id | Identifikátor end-to-end | Max. 35 znaků |
interbank_settlement_amount | Mezibankovní vypořádací částka | Desetinné číslo, např. `25000.00` |
interbank_settlement_currency | Měna vypořádání | Kód ISO 4217 |
charge_bearer | Nositel poplatků | DEBT, CRED, SHAR nebo SLEV |
debtor_name | Jméno dlužníka | Max. 140 znaků |
debtor_agent_bic | BIC agenta dlužníka | 8 nebo 11 znaků |
creditor_agent_bic | BIC agenta věřitele | 8 nebo 11 znaků |
creditor_name | Jméno věřitele | Max. 140 znaků |
Pole specifická pro verzi Pole specifická pro verzi
| Pole | Popis | Omezení |
|---|---|---|
uetr | Jedinečná reference transakce end-to-end | Formát UUID — dostupný od v08 |
mandate_id | Identifikátor mandátu | Dostupný od v10 |
expiry_date_time | Časové razítko expirace zprávy | Dostupný ve v13 |