pacs008 logo pacs008

pacs008 API রেফারেন্স

প্রকল্পটি অপারেশনাল পেমেন্ট বার্তা প্রক্রিয়াকরণ ওয়ার্কফ্লোর জন্য REST API এবং CLI উভয়ই প্রদান করে।

ইনস্টলেশন

PyPI থেকে প্যাকেজ ইনস্টল করুন। Python 3.10 বা পরবর্তী সংস্করণ প্রয়োজন।

python -m pip install pacs008

REST API

যাচাইকরণ এবং জেনারেশনের জন্য HTTP এন্ডপয়েন্ট পরিবেশন করতে বিল্ট-ইন FastAPI সার্ভার শুরু করুন।

সার্ভার শুরু করুন

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

এন্ডপয়েন্ট

Endpoint বিবরণ
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 — আর্থিক প্রতিষ্ঠানের মধ্যে পেমেন্ট স্ট্যাটাস রিপোর্ট
  • 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 তৈরির আগে যাচাইয়ের জন্য পেমেন্ট ডেটা জমা দিন।

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": []
}

সিঙ্ক্রোনাস জেনারেশন উদাহরণ

JSON পেলোড থেকে একটি pacs.008.001.13 XML ফাইল তৈরি করুন।

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

অ্যাসিঙ্ক্রোনাস জেনারেশন

বড় ফাইল বা পাইপলাইন ব্যবহারের জন্য, একটি অ্যাসিঙ্ক্রোনাস কাজ জমা দিন এবং সম্পন্ন হওয়া পর্যন্ত পোল করুন।

# 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

কমান্ড-লাইন ইন্টারফেস একটি ডেটা ফাইল, বার্তা সংস্করণ, টেমপ্লেট এবং স্কিমা নেয়। এটি ইনপুট যাচাই করে এবং আউটপুট ডিরেক্টরিতে তৈরি XML লেখে।

মৌলিক ব্যবহার

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

উদাহরণ

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

ড্রাই-রান মোড

XML তৈরি না করে ইনপুট ডেটা যাচাই করতে --dry-run ব্যবহার করুন। এক্সিট কোড নির্দেশ করে যাচাই পাস হয়েছে (0) বা ব্যর্থ হয়েছে (1)।

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 স্ক্রিপ্ট বা পরিষেবাগুলিতে সরাসরি লাইব্রেরি ব্যবহার করুন।

পেমেন্ট রেকর্ড থেকে XML তৈরি করুন

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 ক্যারেক্টার এবং ফিল্ড-দৈর্ঘ্য নিয়মের বিপরীতে ডেটা যাচাই এবং পরিষ্কার করুন।

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

বান্ডেলড Dockerfile ব্যবহার করে একটি কন্টেইনারে API চালান।

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

IBAN এবং BIC যাচাইকরণ

XML জেনারেশন থেকে স্বাধীনভাবে আর্থিক শনাক্তকারী যাচাই করুন।

from pacs008.validation import validate_iban, validate_bic

is_valid, error = validate_iban("DE89370400440532013000", strict=False)
is_valid, error = validate_bic("DEUTDEFF", strict=False)

স্ট্রিমিং

মেমরি ব্যবহার সীমিত করতে কনফিগারযোগ্য চাঙ্কে বড় ডেটাসেট লোড করুন।

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

যাচাইকরণ পরিষেবা

প্রোগ্রাম্যাটিকভাবে সম্পূর্ণ প্রি-জেনারেশন যাচাইকরণ পাইপলাইন চালান।

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-তে উপলব্ধ