Skip to main content
Yönlendirme kuralları, bir ödeme isteğine hangi konnektörün yanıt vereceğini belirler. Her kural bir filtre kümesi + bir hedef konnektör + opsiyonel fallback konnektör tanımlar. Engine kuralları priority sırasında değerlendirir; ilk eşleşen kural seçilir.

Endpoint’ler

GET    /api/v1/routing-rules                      # Liste
GET    /api/v1/routing-rules/{id}                 # Tek kural
POST   /api/v1/routing-rules                      # Yeni kural
PUT    /api/v1/routing-rules/{id}                 # Güncelleme
DELETE /api/v1/routing-rules/{id}                 # Silme
POST   /api/v1/routing-rules/bulk-delete          # Toplu silme
POST   /api/v1/routing-rules/{id}/activate
POST   /api/v1/routing-rules/{id}/deactivate
PATCH  /api/v1/routing-rules/{id}/score           # Skor güncelleme

Kural oluşturma

curl -X POST https://vpos.payven.com.tr/api/v1/routing-rules \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Idempotency-Key: routing-rule-bonus-garanti" \
  -H "Content-Type: application/json" \
  -d '{
    "name":                       "Bonus 1-12 taksit Garanti",
    "priority":                   10,
    "is_active":                  true,
    "card_bin":                   "454671",
    "card_bin_end":               "454699",
    "installment_count":          null,
    "min_amount":                 100,
    "max_amount":                 20000000,
    "currency":                   "TRY",
    "card_brand_filter":          "bonus",
    "card_type_filter":           "credit",
    "target_connector_config_id": "cfg_garanti_prod-001",
    "fallback_connector_config_id":"cfg_akbank_prod-001",
    "weight":                     70,
    "success_rate":               99.2,
    "average_response_time_ms":   850,
    "cost_score":                 80,
    "daily_transaction_limit":    100000
  }'

Alan referansı

AlanTipZorunlulukAçıklama
namestringZorunluİnsan-okur ad (raporlamada görünür)
priorityshortZorunluDeğerlendirme sırası (düşük sayı = önce). 0-32767.
is_activeboolOpsiyonelVarsayılan true
card_binstringOpsiyonelBIN başlangıcı (1-6 hane). Tek BIN için card_bin_end ile aynı verin.
card_bin_endstringOpsiyonelBIN aralığı sonu — card_bincard_bin_end aralığı eşleşir
installment_countshortOpsiyonelSpesifik taksit sayısı (boş = her taksit)
min_amount, max_amountlong (kuruş)ZorunluTutar aralığı
currencystringOpsiyonelPara birimi filtresi (boş = her para birimi). Şu an üretimde yalnız TRY aktif.
card_brand_filterenumOpsiyonelbonus, maximum, axess, world, paraf, cardfinans, wings
card_type_filterenumOpsiyonelcredit, debit, prepaid
target_connector_config_idUUIDZorunluBirinci tercih — hangi konnektör konfigürasyonu yanıtlayacak
fallback_connector_config_idUUIDOpsiyonelBirinci başarısız olursa Smart Retry hangisini denesin
weightshortOpsiyonel0-100 — A/B trafik dağılımı veya skoring katkısı
success_ratedecimalOpsiyonelSon ölçülen başarı oranı (0-100) — score motoruna girer
average_response_time_msintOpsiyonelSon ortalama yanıt süresi — skor motoruna girer
cost_scoreshortOpsiyonel0-100 (yüksek = daha ucuz). Skor motoruna girer.
daily_transaction_limitintOpsiyonelGünlük işlem limiti — aşılırsa kural pas geçilir

Skor formülü

Engine kuralı eşleşen aday konnektörler için bileşik skor üretir:
score = (weight × 0.30) + (success_rate × 0.30) + ((1000 − response_ms) × 0.20) + (cost_score × 0.20)
En yüksek skorlu konnektör seçilir. Eşit skorda priority daha düşük olan kazanır.
success_rate ve average_response_time_ms alanları konsol ve background job’lar tarafından canlı veriden güncellenir — manuel girmenize gerek yok. İlk oluşturmada makul varsayılanları (örn. 100 ve 800) verin.

Skor güncelleme (canlı veriyle)

curl -X PATCH https://vpos.payven.com.tr/api/v1/routing-rules/{id}/score \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "success_rate":            98.5,
    "average_response_time_ms":920
  }'
Skor güncellemesi otomatik agent (background job) tarafından dakikada bir yapılır. Manuel müdahale nadir gereklidir.

Aktif / pasif

# Pasife al
curl -X POST https://vpos.payven.com.tr/api/v1/routing-rules/{id}/deactivate \
  -H "Authorization: Bearer $PAYVEN_TOKEN"

# Aktif et
curl -X POST https://vpos.payven.com.tr/api/v1/routing-rules/{id}/activate \
  -H "Authorization: Bearer $PAYVEN_TOKEN"

Toplu silme

curl -X POST https://vpos.payven.com.tr/api/v1/routing-rules/bulk-delete \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "ids": ["uuid1", "uuid2", "uuid3"] }'

Basit kurallar (/simple-routing-rules)

Yeni başlayanlar için Simple Routing Rules alternatifi vardır. Aynı CRUD pattern’iyle çalışır ama skor motoru olmadan, “şu BIN’e şu konnektör” mantığında düz yapı sunar:
GET    /api/v1/simple-routing-rules
POST   /api/v1/simple-routing-rules
PUT    /api/v1/simple-routing-rules/{id}
DELETE /api/v1/simple-routing-rules/{id}
POST   /api/v1/simple-routing-rules/bulk-delete
POST   /api/v1/simple-routing-rules/{id}/activate
POST   /api/v1/simple-routing-rules/{id}/deactivate

Hata response’ları

HTTPcodeAnlam
404connector_not_foundtarget_connector_config_id veya fallback_connector_config_id bulunamadı
422validation_failedmin_amount > max_amount, BIN format hatası, vb.
409idempotency_key_in_useAynı Idempotency-Key farklı body için kullanılmış

Resolve simülasyonu

Bir koşul setine göre hangi kuralların eşleşeceğini önceden hesaplamak için:
curl -X POST https://vpos.payven.com.tr/api/v1/routing-rules/resolve \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "card_bin":    "454671",
    "amount":      15000,
    "installment": 3,
    "card_brand":  "bonus",
    "card_type":   "credit"
  }'
Yanıtta skor sıralı eşleşen kurallar listesi döner. Production trafiğine etki etmez.

Yol haritası

  • Conditional rule treeAND/OR operatörlü ağaç tabanlı koşullar
  • A/B traffic split — aynı koşula iki konnektör + ağırlık dağıtımı
  • Rule clone — mevcut kuralı kopyalayıp düzenleme
Güncellemeler için: Changelog.