Skip to main content
Approve, 4-eyes akışının ikinci adımıdır. pending durumdaki transferleri yetkili kullanıcı onaylar; sadece onaylananlar bankaya gönderilebilir.

Endpoint

POST /api/v1/transfers/bulk/approve
Yetki: transfer-admin rolü gerektirir. transfer-operator rolü yeterli değildir (oluşturmadan farklı kullanıcı zorunluluğu için).
Aynı kullanıcı oluşturup onaylayabilir mi? Backend tarafında engellenmez — ancak iç güvenlik politikanız bunu zorunlu kılmalıdır. Organizasyonunuzun rol matrisinde transfer-operator ve transfer-admin rollerinin farklı kullanıcılara verilmesi 4-eyes principle’ın anlamlı uygulamasını sağlar.

İstek

curl -X POST https://transfer.payven.com.tr/api/v1/transfers/bulk/approve \
  -H "Authorization: Bearer $PAYVEN_TOKEN" \
  -H "X-Tenant-Id: $TENANT_ID" \
  -H "Idempotency-Key: payroll-2026-05-01-approve" \
  -H "Content-Type: application/json" \
  -d '{
    "transfer_ids": [
      "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
      "9f3d2b8e-..."
    ]
  }'
AlanTipZorunlulukAçıklama
transfer_ids[]UUID arrayZorunluOnaylanacak transfer kimlikleri (max 1000 / istek)
İsteğe bağlı not eklemek için:
{
  "transfer_ids": ["8e3f5c12-..."],
  "remarks":      "Mayıs maaşları — finans onayı 2026-05-03"
}

Yanıt

HTTP/1.1 200 OK
Content-Type: application/json
{
  "approved": [
    {
      "id":            "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
      "status":        "approved",
      "validate_date": "2026-05-03T12:34:55.000+00:00"
    },
    {
      "id":            "9f3d2b8e-...",
      "status":        "approved",
      "validate_date": "2026-05-03T12:34:55.000+00:00"
    }
  ],
  "skipped": [],
  "total_approved": 2
}
AlanAçıklama
approved[]Başarıyla onaylanan transferler
skipped[]Onaylanmayan transferler (örn. zaten onaylı, reddedilmiş, başka tenant’a ait) — her biri için reason döner
total_approvedOnaylanan transfer sayısı
status: "approved" ve validate_date doldurulmuş → transferler bankaya gönderime hazır.

Kısmi başarı

Toplu onay’da bir veya daha fazla transfer onaylanamayabilir (örn. zaten onaylı veya reddedilmiş). Bu durum yine 200 OK döner; başarısızlar skipped[] array’inde gözükür:
{
  "approved": [
    { "id": "8e3f5c12-...", "status": "approved", "validate_date": "..." }
  ],
  "skipped": [
    {
      "id":      "9f3d2b8e-...",
      "reason":  "already_approved",
      "message": "Bu transfer zaten onaylanmış."
    }
  ],
  "total_approved": 1
}
İstek tamamen başarısızsa (örn. tüm transfer ID’ler geçersiz) 422 Unprocessable Entity döner.

Hata response’ları

HTTPcodeAnlam
400validation_failedtransfer_ids[] boş veya ID formatı geçersiz
403forbiddentransfer-admin rolü yok
404transfer_not_foundTüm verilen ID’ler bulunamadı
422invalid_state_transitionTransfer pending durumunda değil
409idempotency_key_in_useAynı Idempotency-Key farklı body için kullanılmış
Hata yanıtı RFC 9457 problem+json.

Sonraki adım

3. Adım — Bankaya Gönder

Onaylanmış transferleri bankaya gönderip işlemeye başlayın.