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