Müşteri Belgeleri

1.6k görüntülenme Markdown

Müşterinin gönderdiği belgeleri okuyan, onaylayan ya da reddeden ve hazır red nedenlerini yöneten altı uç.

Genel Bakış

Müşteri, belge şemasının istediği alanları doldurup gönderir; bu uçlar o gönderimleri okur ve karara bağlar. Şemanın kendisi ayrı bir iştir ve Belge Şeması makalesinde anlatılır.

Her kayıt tek bir alana karşılık gelir ve kendi durumunu taşır. Bir müşterinin bazı belgeleri onaylı, bazıları beklemede olabilir.

Referans

Belgeleri Getirme

get/api/v1/admin/clients/{id}/documents
Clients/GetClientDocuments admin okundu işaretler

Müşterinin gönderdiği belge kayıtlarını döndürür. Kayıtlar alan kimliğine bağlıdır, filtrelerin tamamı birleşik gelir.

Sorgu parametresi 1
filter_idintVerilirse liste yalnız o filtreden doğan kayıtlara daralır.
Dönen alanlar data — 2
filtersobject[]Dönen kayıtların doğduğu filtreler: [{ id, name }].
recordsobject[]Belge kayıtları.
idintBelge kaydının kimliği. İnceleme isteğinde anahtar olarak bunu kullanırsınız.
field_keyintPaylaşılan havuzdaki alanın kimliği.
field_namestringAlan etiketi. Havuzdan tazelenir; alan silinmişse gönderim anındaki kopya döner.
field_typestringGiriş tipi: input, textarea, selectbox, radio, checkbox, file.
field_valuestringMüşterinin gönderdiği değer. Dosya alanlarında yükleme tanımlayıcısını taşıyan JSON.
filter_idintKaydın doğduğu filtre.
statusstringawaiting, verified ya da unverified.
status_msgstringİnceleme notu; red sebebi buraya yazılır.
Hatalar 2
not_found404Müşteri ya da kayıt bulunamadı.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/clients/42/documents' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/documents', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();

const waiting = body.data.records.filter((r) => r.status === 'awaiting');
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/documents');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->GetClientDocuments(['id' => 42]);

$waiting = [];
foreach ($response['data']['records'] as $record) {
    if ($record['status'] === 'awaiting') {
        $waiting[] = $record['id'];
    }
}

Belgeleri İnceleme

patch/api/v1/admin/clients/{id}/documents
Clients/ReviewClientDocuments admin müşteriye bildirim gider

Kayıtların doğrulama durumunu toplu günceller. Durumu değişen her kayıt için müşteriye bildirim gönderilir.

Gövde 1
statusesobjectzorunluKayıt kimliğine göre durum haritası: {"<recordId>": {"status": …, "message": …}}.
statusstringzorunluverified, unverified ya da awaiting. Başka bir değer taşıyan kayıt sessizce atlanır.
messagestringİnceleme notu. Reddederken sebebi buraya yazın; müşteri bunu görür.
Dönen alanlar data — 3
reviewedboolİnceleme işlendi mi.
verifiedintOnaylanan kayıt sayısı.
rejectedintReddedilen kayıt sayısı.
Hatalar 2
not_found404Müşteri bulunamadı ya da müşterinin hiç kaydı yok.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X PATCH 'https://panel.ornek.com/api/v1/admin/clients/42/documents' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"statuses":{"51":{"status":"verified"},"52":{"status":"unverified","message":"Belge okunmuyor, lutfen daha net bir kopya gonderin"}}}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/documents', {
  method: 'PATCH',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    statuses: {
      51: { status: 'verified' },
      52: { status: 'unverified', message: 'Belge okunmuyor, lutfen daha net bir kopya gonderin' },
    },
  }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/documents');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'PATCH',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'statuses' => [
            51 => ['status' => 'verified'],
            52 => ['status' => 'unverified', 'message' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin'],
        ],
    ]),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->ReviewClientDocuments([
    'id'       => 42,
    'statuses' => [
        51 => ['status' => 'verified'],
        52 => ['status' => 'unverified', 'message' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin'],
    ],
]);

$rejected = $response['data']['rejected'] ?? 0;
Yanıt
{
  "data": {
    "reviewed": true,
    "verified": 1,
    "rejected": 1
  }
}

Belge Kaydını Silme

delete/api/v1/admin/clients/{id}/documents/{record_id}
Clients/DeleteClientDocument admin

Müşterinin belge gönderimini siler: o müşterinin bütün doğrulama kayıtları, yüklediği dosyalarla birlikte gider. record_id gönderimi belirtir ve yoldaki müşteriye ait olmalıdır.

Dönen alanlar data — 2
deletedboolSilme başarılı mı.
idintGönderilen record_id değeri.
Hatalar 3
not_found404Müşteri bulunamadı ya da kayıt yok veya başka bir müşteriye ait.
record_required422Kayıt kimliği eksik.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/clients/42/documents/51' \
  -H "Authorization: Bearer $API_KEY"
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/42/documents/51', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${apiKey}` },
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/42/documents/51');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->DeleteClientDocument([
    'id'        => 42,
    'record_id' => 51,
]);

Red Nedenlerini Listeleme

get/api/v1/admin/clients/document-rejection-reasons
Clients/GetDocumentRejectionReasons admin

Hazır red nedenlerini döndürür. Bunlar inceleme sırasında kullanılan sabit metinlerdir.

Dönen alanlar data[]
datastring[]Düz bir metin listesi — burada kimlik yoktur, metnin kendisi kimliktir.
Hatalar 1
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl 'https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons' \
  -H "Authorization: Bearer $API_KEY"
const res  = await fetch('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => ['Authorization: Bearer ' . $apiKey],
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->GetDocumentRejectionReasons();

Red Nedeni Ekleme

post/api/v1/admin/clients/document-rejection-reasons
Clients/AddDocumentRejectionReason admin

Listeye yeni bir hazır neden ekler.

Gövde 1
valuestringzorunluRed nedeni metni.
Dönen alanlar data[]
datastring[]Ekleme sonrası listenin tamamı; eklenen metin tek başına dönmez.
Hatalar 2
value_required422value boş.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X POST 'https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"value":"Belge okunmuyor, lutfen daha net bir kopya gonderin"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ value: 'Belge okunmuyor, lutfen daha net bir kopya gonderin' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST           => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['value' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin']),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->AddDocumentRejectionReason(['value' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin']);

Red Nedeni Silme

delete/api/v1/admin/clients/document-rejection-reasons
Clients/DeleteDocumentRejectionReason admin metinle silinir

Bir nedeni listeden çıkarır. Kimlik değil, metnin kendisi gönderilir.

Gövde 1
valuestringzorunluSilinecek nedenin metni. Listedekiyle birebir aynı olmalı.
Dönen alanlar data[]
datastring[]Geriye kalan nedenler. Eşleşmeyen bir metin listeyi değiştirmez — bir şeyin gidip gitmediğini karşılaştırarak anlarsınız.
Hatalar 2
value_required422value boş.
insufficient_scope403Anahtar gerekli kapsamı taşımıyor.
İstek
curl -X DELETE 'https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons' \
  -H "Authorization: Bearer $API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"value":"Belge okunmuyor, lutfen daha net bir kopya gonderin"}'
const res = await fetch('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons', {
  method: 'DELETE',
  headers: {
    Authorization: `Bearer ${apiKey}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ value: 'Belge okunmuyor, lutfen daha net bir kopya gonderin' }),
});

const body = await res.json();
$ch = curl_init('https://panel.ornek.com/api/v1/admin/clients/document-rejection-reasons');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST  => 'DELETE',
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode(['value' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin']),
]);

$body = json_decode(curl_exec($ch), true);
curl_close($ch);
$response = Api::Clients()->DeleteDocumentRejectionReason(['value' => 'Belge okunmuyor, lutfen daha net bir kopya gonderin']);

Tuzaklar

Listelemek kayıtları okundu işaretler

Getirme ucu salt okuma değildir: çağırdığınızda kayıtlar okundu sayılır. Panelde bekleyen belge rozetini izleyen bir entegrasyon, listeyi her yoklamada o rozeti düşürür.

İnceleme müşteriye bildirim gönderir

Durumu değişen her kayıt için onay ya da red bildirimi gider. Aynı durumu ikinci kez göndermek değişiklik saymaz, ama bir kaydı yanlışlıkla reddedip düzeltmek iki bildirim üretir.

Red nedeni metniyle silinir

Silme isteği kimlik değil value alır ve metin birebir eşleşmelidir. Bir boşluk farkı bile kaydı bulamaz.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.