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 pinansyalpacs.003.001.09— Direct debit ng kliyente sa pagitan ng mga institusyong pinansyalpacs.004.001.11— Pagbabalik ng bayadpacs.007.001.11— Pagbaligtad ng bayad sa pagitan ng mga institusyong pinansyalpacs.008.001.13— Credit transfer ng kliyente sa pagitan ng mga institusyong pinansyalpacs.009.001.10— Credit transfer sa pagitan ng mga institusyong pinansyalpacs.010.001.05— Direct debit sa pagitan ng mga institusyong pinansyalpacs.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 |