דלג לתוכן

API API

הפרויקט מספק גם REST API וגם CLI לתהליכי עיבוד הודעות תשלום תפעוליים.

הערות יישום הערות יישום

  • השתמשו ביצירה סינכרונית לבדיקות תפעוליות ואצוות קטנות כאשר הקורא מצפה ל-XML מיידית.
  • השתמשו ביצירה אסינכרונית כאשר קבצי הקלט גדולים, כאשר יש צורך בניסיונות חוזרים, או כאשר היצירה היא חלק ממנוע תיאום רחב יותר.
  • שמרו גם את נתוני הקלט המקוריים וגם את דוח האימות כדי שצוותי התמיכה יוכלו לשחזר את פלט ה-XML בזמן תקלה.
  • קבעו את נתיבי התבניות ו-XSD בתצורת הפריסה כדי להימנע משדרוגים שקטים.

התקנה התקנה

התקן את החבילה מ-PyPI. נדרש Python 3.9.2 ומעלה.

bash
python -m pip install pacs008

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

ממשק שורת הפקודה מקבל קובץ נתונים, גרסת הודעה, תבנית וסכמה. הוא מאמת את הקלט וכותב את ה-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:latest
bash
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_bicBIC של סוכן החייב8 או 11 תווים
creditor_agent_bicBIC של סוכן הנושה8 או 11 תווים
creditor_nameשם הנושהמקסימום 140 תווים

שדות ספציפיים לגרסה שדות ספציפיים לגרסה

שדהתיאוראילוץ
uetrמזהה עסקה ייחודי קצה לקצהפורמט UUID — זמין מגרסה v08
mandate_idמזהה הרשאהזמין מגרסה v10
expiry_date_timeחותמת זמן תפוגת הודעהזמין בגרסה v13

עודכן לאחרונה: