API API
הפרויקט מספק גם REST API וגם CLI לתהליכי עיבוד הודעות תשלום תפעוליים.
הערות יישום הערות יישום
- השתמשו ביצירה סינכרונית לבדיקות תפעוליות ואצוות קטנות כאשר הקורא מצפה ל-XML מיידית.
- השתמשו ביצירה אסינכרונית כאשר קבצי הקלט גדולים, כאשר יש צורך בניסיונות חוזרים, או כאשר היצירה היא חלק ממנוע תיאום רחב יותר.
- שמרו גם את נתוני הקלט המקוריים וגם את דוח האימות כדי שצוותי התמיכה יוכלו לשחזר את פלט ה-XML בזמן תקלה.
- קבעו את נתיבי התבניות ו-XSD בתצורת הפריסה כדי להימנע משדרוגים שקטים.
התקנה התקנה
התקן את החבילה מ-PyPI. נדרש Python 3.9.2 ומעלה.
bash
python -m pip install pacs008REST API REST API
הפעל את שרת FastAPI המובנה כדי לחשוף נקודות קצה HTTP לאימות ולייצור.
הפעלת השרת הפעלת השרת
bash
uvicorn pacs008.api.app:app --reload --host 0.0.0.0 --port 8000נקודות קצה נקודות קצה
| Endpoint | תיאור |
|---|---|
GET /health | בדיקת תקינות — מחזיר את סטטוס השירות |
POST /validate | אימות נתוני תשלום מול הסכמה ללא יצירת XML |
POST /generate | יצירת XML באופן סינכרוני והחזרת הקובץ |
POST /generate/async | שליחת משימת יצירה א-סינכרונית |
GET /status/{job_id} | סקר סטטוס המשימה לפי מזהה |
GET /download/{job_id} | הורדת ה-XML שנוצר לאחר השלמת המשימה |
DELETE /jobs/{job_id} | ביטול משימה ממתינה או פעילה |
GET /docs | ממשק Swagger UI אינטראקטיבי לחקירה ובדיקת כל נקודות הקצה |
pacs.002.001.12— דוח סטטוס תשלום בין מוסדות פיננסייםpacs.003.001.09— חיוב ישיר ללקוח בין מוסדות פיננסייםpacs.004.001.11— החזר תשלוםpacs.007.001.11— היפוך תשלום בין מוסדות פיננסייםpacs.008.001.13— העברת אשראי ללקוח בין מוסדות פיננסייםpacs.009.001.10— העברת אשראי בין מוסדות פיננסייםpacs.010.001.05— חיוב ישיר בין מוסדות פיננסייםpacs.028.001.05— בקשת סטטוס תשלום בין מוסדות פיננסיים
דוגמת אימות דוגמת אימות
שלח נתוני תשלום לאימות לפני יצירת 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": []
}דוגמת יצירה סינכרונית דוגמת יצירה סינכרונית
יצירת קובץ XML מסוג pacs.008.001.13 מנתוני 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יצירה א-סינכרונית יצירה א-סינכרונית
לקבצים גדולים יותר או לשימוש ב-pipeline, שלח משימה א-סינכרונית וסקר עד להשלמה.
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
ממשק שורת הפקודה מקבל קובץ נתונים, גרסת הודעה, תבנית וסכמה. הוא מאמת את הקלט וכותב את ה-XML שנוצר לספריית הפלט.
שימוש בסיסי שימוש בסיסי
bash
pacs008 -t <message_type> \
-m <template_file> \
-s <schema_file> \
-d <data_file>דוגמה דוגמה
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 לאימות נתוני קלט ללא יצירת XML. קוד היציאה מציין אם האימות עבר (0) או נכשל (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-runהוסף --verbose לפלט מפורט במהלך היצירה.
Python API Python API
השתמש בספרייה ישירות בסקריפטים או בשירותי Python.
יצירת XML מרשימה של רשומות תשלום יצירת XML מרשימה של רשומות תשלום
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 בדיקת תאימות SWIFT
אמת ונקה נתונים מול כללי מערך התווים ואורך השדה של SWIFT לפני היצירה.
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
הפעל את ה-API בקונטיינר באמצעות קובץ ה-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:latestאימות IBAN ו-BIC אימות IBAN ו-BIC
אמת מזהים פיננסיים באופן עצמאי מיצירת 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)עיבוד זרימתי עיבוד זרימתי
טען מערכי נתונים גדולים בקבוצות מוגדרות להגבלת השימוש בזיכרון.
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())שירות אימות שירות אימות
הפעל את צינור האימות המלא לפני יצירה באופן תכנותי.
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)שדות נתונים נדרשים שדות נתונים נדרשים
כל רשומת תשלום חייבת לכלול את השדות הבאים. שדות ספציפיים לגרסה מצוינים בהתאם.
| שדה | תיאור | אילוץ |
|---|---|---|
msg_id | מזהה הודעה | מקסימום 35 תווים |
creation_date_time | חותמת זמן יצירה | פורמט ISO 8601 |
nb_of_txs | מספר עסקאות | מספר שלם חיובי |
settlement_method | שיטת סליקה | CLRG ,INDA ,COVE או INGA |
end_to_end_id | מזהה קצה לקצה | מקסימום 35 תווים |
interbank_settlement_amount | סכום סליקה בין-בנקאי | עשרוני, למשל `25000.00` |
interbank_settlement_currency | מטבע סליקה | קוד ISO 4217 |
charge_bearer | נושא העמלות | DEBT ,CRED ,SHAR או SLEV |
debtor_name | שם החייב | מקסימום 140 תווים |
debtor_agent_bic | BIC של סוכן החייב | 8 או 11 תווים |
creditor_agent_bic | BIC של סוכן הנושה | 8 או 11 תווים |
creditor_name | שם הנושה | מקסימום 140 תווים |
שדות ספציפיים לגרסה שדות ספציפיים לגרסה
| שדה | תיאור | אילוץ |
|---|---|---|
uetr | מזהה עסקה ייחודי קצה לקצה | פורמט UUID — זמין מגרסה v08 |
mandate_id | מזהה הרשאה | זמין מגרסה v10 |
expiry_date_time | חותמת זמן תפוגת הודעה | זמין בגרסה v13 |