pacs008 logo pacs008

Bayyanar API na pacs008

Aikin yana ba da REST API da CLI don ayyukan sarrafa saƙonnin biyan kuɗi.

Shigarwa

Shigar da fakitin daga PyPI. Ana buƙatar Python 3.10 ko na baya.

python -m pip install pacs008

REST API

Fara sabar FastAPI ɗin da aka gina a ciki don samar da ƙarshen HTTP don tabbatarwa da ƙirƙira.

Fara sabar

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

Ƙarshen hanyoyi

Endpoint Bayani
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

Misalin tabbatarwa

Ƙaddamar da bayanan biyan kuɗi don tabbatarwa kafin ƙirƙirar 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": []
}

Misalin ƙirƙira a daidai lokaci

Ƙirƙirar fayilin XML pacs.008.001.13 daga bayanan 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

Ƙirƙira mara daidaituwa

Don manyan fayiloli ko amfani da bututu, ƙaddamar da aikin mara daidaituwa kuma bincika har sai ya kammala.

# 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

Hanyar layin umarni tana karɓar fayilin bayanai, sigar saƙo, samfuri, da tsari. Tana tabbatar da shigarwa kuma tana rubuta XML ɗin da aka ƙirƙira zuwa kundin fitarwa.

Amfani na asali

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

Misali

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

Yanayin gwaji-bushewa

Yi amfani da --dry-run don tabbatar da bayanan shigarwa ba tare da ƙirƙirar XML ba. Lambar fitarwa tana nuna ko tabbatarwa ta wuce (0) ko ta gaza (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

Ƙara --verbose don cikakken fitarwa yayin ƙirƙira.


Python API

Yi amfani da ɗakin karatu kai tsaye a cikin rubutun Python ko sabis.

Ƙirƙirar XML daga bayanan biyan kuɗi

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)

Binciken biyayya na SWIFT

Bincika kuma tsaftace bayanai akan ƙa'idodin haruffa da tsawon fili na SWIFT kafin ƙirƙira.

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

Gudanar da API a cikin akwati ta amfani da Dockerfile ɗin da aka haɗa.

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

Tabbatar da IBAN da BIC

Tabbatar da masu ganowa na kuɗi daban da ƙirƙirar 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)

Kwararar bayanai

Ɗaukar manyan bayanan bayanai a cikin guntaye masu iya saiti don iyakance amfani da ƙwaƙwalwar ajiya.

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

Sabis na tabbatarwa

Gudanar da cikakken bututun tabbatarwa kafin ƙirƙira ta hanyar shirye-shirye.

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)

Filayen bayanai da ake buƙata

Kowane rikodin biyan kuɗi dole ne ya ƙunshi waɗannan filaye. Filayen da suka danganci siga an lissafa su a ƙasa.

Fili Bayani Ƙayyadaddun sharadi
msg_id Mai ganowa saƙo Mafi yawan haruffa 35
creation_date_time Tambarin lokaci na ƙirƙira Tsarin ISO 8601
nb_of_txs Adadin ciniki Adadi mai kyau
settlement_method Hanyar biyan kuɗi CLRG, INDA, COVE, ko INGA
end_to_end_id Mai ganowa daga farko zuwa ƙarshe Mafi yawan haruffa 35
interbank_settlement_amount Adadin biyan kuɗi tsakanin bankuna Adadi mai dasimai, misali `25000.00`
interbank_settlement_currency Kuɗin biyan kuɗi Lambar ISO 4217
charge_bearer Mai ɗaukar cajin DEBT, CRED, SHAR, ko SLEV
debtor_name Sunan mai bashi Mafi yawan haruffa 140
debtor_agent_bic BIC na wakilin mai bashi Haruffa 8 ko 11
creditor_agent_bic BIC na wakilin mai ba da bashi Haruffa 8 ko 11
creditor_name Sunan mai ba da bashi Mafi yawan haruffa 140

Filayen da suka danganci siga

Fili Bayani Ƙayyadaddun sharadi
uetr Nassarin ciniki na musamman daga farko zuwa ƙarshe Tsarin UUID — yana samuwa daga v08
mandate_id Mai ganowa izini Yana samuwa daga v10
expiry_date_time Tambarin lokaci na ƙarewar saƙo Yana samuwa a v13