pacs008 logo pacs008

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

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

python -m pip install pacs008

REST API

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

Simulan ang server

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

Mga Endpoint

Endpoint Paglalarawan
GET /api/health Health check that returns service status
POST /api/validate Validate payment data without generating XML
POST /api/generate Generate XML now and return the file
POST /api/generate/async Submit an async generation job
GET /api/status/{job_id} Check job status by ID
GET /api/download/{job_id} Download XML after the job completes
DELETE /api/jobs/{job_id} Cancel a pending or running job
GET /api/docs Swagger UI for testing all endpoints
  • 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

Magsumite ng datos ng pagbabayad para sa validation bago gumawa ng XML.

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"
    }]
  }'
{
  "valid": true,
  "message_type": "pacs.008.001.13",
  "errors": [],
  "warnings": []
}

Halimbawa ng synchronous na generation

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

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

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

# 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
{
  "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

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

pacs008 -t  \
  -m  \
  -s  \
  -d 

Halimbawa

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

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.

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

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

Gumawa ng XML mula sa mga record ng pagbabayad

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

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

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

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

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

Validation ng IBAN at BIC

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

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

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

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

Patakbuhin ang buong pre-generation validation pipeline nang programmatically.

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

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

Field Paglalarawan Limitasyon
msg_id Identifier ng mensahe Pinakamataas na 35 character
creation_date_time Timestamp ng paglikha Format na ISO 8601
nb_of_txs Bilang ng mga transaksyon Positibong integer
settlement_method Paraan ng settlement CLRG, INDA, COVE, o INGA
end_to_end_id End-to-end identifier Pinakamataas na 35 character
interbank_settlement_amount Interbank settlement amount Decimal, hal. `25000.00`
interbank_settlement_currency Settlement currency ISO 4217 code
charge_bearer Charge bearer DEBT, CRED, SHAR, o SLEV
debtor_name Pangalan ng debtor Pinakamataas na 140 character
debtor_agent_bic BIC ng debtor agent 8 o 11 character
creditor_agent_bic BIC ng creditor agent 8 o 11 character
creditor_name Pangalan ng creditor Pinakamataas na 140 character

Mga field na tukoy sa bersyon

Field Paglalarawan Limitasyon
uetr Natatanging reperensya ng transaksyon mula simula hanggang dulo Format na UUID — available mula v08
mandate_id Identifier ng mandato Available mula v10
expiry_date_time Timestamp ng pag-expire ng mensahe Available sa v13