pacs008 API-referens pacs008 API-referens
Projektet tillhandahåller både ett REST-API och CLI för operativa arbetsflöden för betalningsmeddelanden.
Installation Installation
Installera paketet från PyPI. Kräver Python 3.9.2 eller senare.
bash
python -m pip install pacs008REST API REST API
Starta den inbyggda FastAPI-servern för att tillhandahålla HTTP-ändpunkter för validering och generering.
Starta servern Starta servern
bash
uvicorn pacs008.api.app:app --reload --host 0.0.0.0 --port 8000Ändpunkter Ändpunkter
| Endpoint | Beskrivning |
|---|---|
GET /health | Hälsokontroll — returnerar tjänstens status |
POST /validate | Validera betalningsdata mot schema utan att generera XML |
POST /generate | Generera XML synkront och returnera filen |
POST /generate/async | Skicka in ett asynkront genereringsjobb |
GET /status/{job_id} | Kontrollera jobbstatus med ID |
GET /download/{job_id} | Ladda ner genererad XML efter att jobbet är klart |
DELETE /jobs/{job_id} | Avbryt ett väntande eller pågående jobb |
GET /docs | Interaktivt Swagger UI för att utforska och testa alla ändpunkter |
pacs.002.001.12— Statusrapport för betalning mellan finansinstitutpacs.003.001.09— Autogiro för kund mellan finansinstitutpacs.004.001.11— Betalningsreturpacs.007.001.11— Betalningsåterföring mellan finansinstitutpacs.008.001.13— Kundkreditöverföring mellan finansinstitutpacs.009.001.10— Kreditöverföring mellan finansinstitutpacs.010.001.05— Autogiro mellan finansinstitutpacs.028.001.05— Statusförfrågan för betalning mellan finansinstitut
Valideringsexempel Valideringsexempel
Skicka in betalningsdata för validering innan XML genereras.
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": []
}Synkront genereringsexempel Synkront genereringsexempel
Generera en XML-fil för pacs.008.001.13 från JSON-data.
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.xmlAsynkron generering Asynkron generering
För större filer eller pipelineanvändning, skicka in ett asynkront jobb och polla tills det är klart.
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
Kommandoradsgränssnittet tar en datafil, meddelandeversion, mall och schema. Det validerar indata och skriver genererad XML till utdatakatalogen.
Grundläggande användning Grundläggande användning
bash
pacs008 -t <message_type> \
-m <template_file> \
-s <schema_file> \
-d <data_file>Exempel Exempel
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.csvTorrkörningsläge Torrkörningsläge
Använd --dry-run för att validera indata utan att generera XML. Utgångskoden visar om valideringen lyckades (0) eller misslyckades (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-runLägg till --verbose för detaljerad utdata under generering.
Python API Python API
Använd biblioteket direkt i Python-skript eller tjänster.
Generera XML från betalningsposter Generera XML från betalningsposter
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)SWIFT-efterlevnadskontroll SWIFT-efterlevnadskontroll
Kontrollera och rensa data mot SWIFT:s tecken- och fältlängdsregler före generering.
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
Kör API:et i en container med den medföljande 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:latestIBAN- och BIC-validering IBAN- och BIC-validering
Validera finansiella identifierare oberoende av XML-generering.
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)Strömning Strömning
Ladda stora dataset i konfigurerbara block för att begränsa minnesanvändningen.
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())Valideringstjänst Valideringstjänst
Kör hela förgenereringens valideringspipeline programmatiskt.
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)Obligatoriska datafält Obligatoriska datafält
Varje betalningspost måste innehålla dessa fält. Versionsspecifika fält listas nedan.
| Fält | Beskrivning | Begränsning |
|---|---|---|
msg_id | Meddelandeidentifierare | Max 35 tecken |
creation_date_time | Tidsstämpel för skapande | ISO 8601-format |
nb_of_txs | Antal transaktioner | Positivt heltal |
settlement_method | Avvecklingsmetod | CLRG, INDA, COVE eller INGA |
end_to_end_id | Identifierare från början till slut | Max 35 tecken |
interbank_settlement_amount | Interbankavvecklingsbelopp | Decimal, t.ex. `25000.00` |
interbank_settlement_currency | Avvecklingsvaluta | ISO 4217-kod |
charge_bearer | Avgiftsbärare | DEBT, CRED, SHAR eller SLEV |
debtor_name | Gäldenärens namn | Max 140 tecken |
debtor_agent_bic | Gäldenärsagentens BIC | 8 eller 11 tecken |
creditor_agent_bic | Borgenärsagentens BIC | 8 eller 11 tecken |
creditor_name | Borgenärens namn | Max 140 tecken |
Versionsspecifika fält Versionsspecifika fält
| Fält | Beskrivning | Begränsning |
|---|---|---|
uetr | Unik transaktionsreferens från början till slut | UUID-format — tillgänglig från v08 |
mandate_id | Mandatidentifierare | Tillgänglig från v10 |
expiry_date_time | Tidsstämpel för meddelandets utgång | Tillgänglig i v13 |