Lumaktaw sa nilalaman

pacs008 API Reference pacs008 API Reference

Ang proyekto ay nagbibigay ng parehong REST API at CLI para sa mga operational na workflow ng pagproseso ng mensahe ng pagbabayad.

Pag-install Pag-install

I-install ang package mula sa PyPI. Nangangailangan ng Python 3.9.2 o mas bago.

bash
python -m pip install pacs008

REST API REST API

Simulan ang built-in na FastAPI server upang magbigay ng HTTP endpoint para sa validation at generation.

Simulan ang server Simulan ang server

bash
uvicorn pacs008.api.app:app --reload --host 0.0.0.0 --port 8000

Mga Endpoint Mga Endpoint

EndpointPaglalarawan
GET /healthHealth check — nagbabalik ng katayuan ng serbisyo
POST /validateI-validate ang datos ng pagbabayad laban sa schema nang hindi gumagawa ng XML
POST /generateGumawa ng XML nang sabay-sabay at ibalik ang file
POST /generate/asyncMagsumite ng asynchronous na trabaho ng generation
GET /status/{job_id}Suriin ang katayuan ng trabaho ayon sa ID
GET /download/{job_id}I-download ang nabuong XML pagkatapos makumpleto ang trabaho
DELETE /jobs/{job_id}Kanselahin ang nakabinbin o tumatakbong trabaho
GET /docsInteractive na Swagger UI para sa paggalugad at pagsubok ng lahat ng endpoint
  • pacs.002.001.12 — Ulat ng kalagayan ng pagbabayad sa pagitan ng mga institusyong pinansyal
  • pacs.003.001.09 — Direct debit ng kliyente sa pagitan ng mga institusyong pinansyal
  • pacs.004.001.11 — Pagbabalik ng bayad
  • pacs.007.001.11 — Pagbaligtad ng bayad sa pagitan ng mga institusyong pinansyal
  • pacs.008.001.13 — Credit transfer ng kliyente sa pagitan ng mga institusyong pinansyal
  • pacs.009.001.10 — Credit transfer sa pagitan ng mga institusyong pinansyal
  • pacs.010.001.05 — Direct debit sa pagitan ng mga institusyong pinansyal
  • pacs.028.001.05 — Kahilingan ng kalagayan ng bayad sa pagitan ng mga institusyong pinansyal

Halimbawa ng validation Halimbawa ng validation

Magsumite ng datos ng pagbabayad para sa validation bago gumawa ng 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": []
}

Halimbawa ng synchronous na generation Halimbawa ng synchronous na generation

Gumawa ng XML file na pacs.008.001.13 mula sa datos na JSON.

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.xml

Asynchronous na generation Asynchronous na generation

Para sa mas malalaking file o paggamit sa pipeline, magsumite ng asynchronous na trabaho at mag-poll hanggang sa makumpleto.

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.xml
json
{
  "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

Ang command-line interface ay tumatanggap ng data file, bersyon ng mensahe, template, at schema. Vine-validate nito ang input at isinusulat ang nabuong XML sa output directory.

Pangunahing paggamit Pangunahing paggamit

bash
pacs008 -t <message_type> \
  -m <template_file> \
  -s <schema_file> \
  -d <data_file>

Halimbawa Halimbawa

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-run mode Dry-run mode

Gamitin ang --dry-run para i-validate ang input data nang hindi gumagawa ng XML. Ang exit code ay nagpapakita kung pumasa (0) o nabigo (1) ang validation.

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-run

Magdagdag ng --verbose para sa detalyadong output sa panahon ng generation.


Python API Python API

Gamitin ang library nang direkta sa mga Python script o serbisyo.

Gumawa ng XML mula sa mga record ng pagbabayad Gumawa ng XML mula sa mga record ng pagbabayad

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 compliance check SWIFT compliance check

Suriin at linisin ang datos laban sa mga patakaran ng character at haba ng field ng SWIFT bago ang generation.

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

Patakbuhin ang API sa isang container gamit ang kasama na Dockerfile.

bash
docker build -t pacs008:latest .
docker run -p 8000:8000 pacs008:latest
bash
docker run --rm   -e PACS008_LOG_LEVEL=INFO   -v $PWD/examples:/data   -p 8000:8000 pacs008:latest

Validation ng IBAN at BIC Validation ng IBAN at BIC

I-validate ang mga financial identifier nang hiwalay sa XML generation.

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

I-load ang malalaking dataset sa mga nako-configure na tipak upang limitahan ang paggamit ng memory.

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())

Serbisyo ng validation Serbisyo ng validation

Patakbuhin ang buong pre-generation validation pipeline nang programmatically.

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)

Mga kinakailangang data field Mga kinakailangang data field

Bawat record ng pagbabayad ay dapat maglaman ng mga field na ito. Ang mga field na tukoy sa bersyon ay nakalista sa ibaba.

FieldPaglalarawanLimitasyon
msg_idIdentifier ng mensahePinakamataas na 35 character
creation_date_timeTimestamp ng paglikhaFormat na ISO 8601
nb_of_txsBilang ng mga transaksyonPositibong integer
settlement_methodParaan ng settlementCLRG, INDA, COVE, o INGA
end_to_end_idEnd-to-end identifierPinakamataas na 35 character
interbank_settlement_amountInterbank settlement amountDecimal, hal. `25000.00`
interbank_settlement_currencySettlement currencyISO 4217 code
charge_bearerCharge bearerDEBT, CRED, SHAR, o SLEV
debtor_namePangalan ng debtorPinakamataas na 140 character
debtor_agent_bicBIC ng debtor agent8 o 11 character
creditor_agent_bicBIC ng creditor agent8 o 11 character
creditor_namePangalan ng creditorPinakamataas na 140 character

Mga field na tukoy sa bersyon Mga field na tukoy sa bersyon

FieldPaglalarawanLimitasyon
uetrNatatanging reperensya ng transaksyon mula simula hanggang duloFormat na UUID — available mula v08
mandate_idIdentifier ng mandatoAvailable mula v10
expiry_date_timeTimestamp ng pag-expire ng mensaheAvailable sa v13

Huling na-update: