Ana içeriğe geç

Süreç Yönetimi API

Dijital Belge Sistemi'nde belge işleme süreçlerini yönetmek için kullanılan API'dir.

Genel Bakış

Süreç, imzalama akışının yönetildiği merkezi bir birimdür. Bir süreç içinde:

  • Birden fazla döküman imzalanabilir veya yüklenebilir
  • Tüm imza akışları süreç altında gruplanır
  • İmzalama sayfasına yönlendirme yapılır
  • Benzersiz bir QR kodu otomatik olarak oluşturulur ve sayfaya basılır

Süreçler API aracılığıyla oluşturulabilir, yönetilebilir, başlatılabilir, tamamlanabilir veya iptal edilebilir.


Süreç Tipleri (processType)

Bir sürecin nasıl işleyeceğini processType alanı belirler. Süreç oluşturulurken bu alan gönderilmezse varsayılan olarak BELGE_IMZALAMA kullanılır.

Değer Açıklama
BELGE_IMZALAMA (Varsayılan) Belge üzerinde PDF imzalama işlemi yapılır. İmzacılar, dökümanı DocumentSigningTask üzerinden PDF olarak imzalar.
DIJITAL_ONAY Metin tabanlı dijital onay işlemi yapılır. Onaylayan kişi metni onaylar; onay dosyası oluşturularak metne bağlanır.
DOSYA_IMZALAMA Herhangi bir dosya türü (PDF, DOCX, XML vb.) CAdES ayrık imzayla imzalanır. Sürece eklenen tüm belgeler, tüm imzacılar tarafından imzalanır. Her imza ASiC-E (.asice) container'ı olarak ayrık şekilde saklanır. Ayrıntılar için Dosya İmzalama API sayfasına bakın.
DIJITAL_KIMLIK_DOGRULAMA Belge imzalanmaz; bir kişinin kimliği TCKK NFC çip okuma + yüz/video doğrulama ile teyit edilir. İmzacı gizli bir "signing control" belgesine bağlanır, gerçek bir dosya üretilmez.

Varsayılan Değer

processType alanı "Yeni Süreç Oluştur" isteğinde gönderilmezse süreç otomatik olarak BELGE_IMZALAMA tipinde oluşturulur.


Özet

Özellik Değer
Temel URL https://app.dijitalbelge.com/api
Temel Path /external
Base URL https://app.dijitalbelge.com/api/external
Kimlik Doğrulama X-Client-Id, X-Client-Secret

QR Kod Özelliği

Her oluşturulan sürecin otomatik olarak benzersiz bir QR kodu oluşturulur. Bu QR kod:

  • Sürecin kimliğini taşır ve güvenli bir şekilde kodlanır
  • İmzalama sayfasına basılabilir ve yazdırılan belgelerde yer alır
  • Mobil cihazlardan taranarak sürece hızlı erişim sağlar
  • Takip ve doğrulama amacıyla kullanılır

Endpoint Özeti

Method Path Scope Açıklama
POST /process-instances process:start Yeni süreç oluştur
GET /process-instances/{processId} process:status Süreç detayını getir
GET /process-instances/{processId}/qr process:status Doğrulama QR kodunu PNG olarak getir
PUT /process-instances/{processId}/status/start process:start Süreci başlat
PUT /process-instances/{processId}/status/cancel process:start Süreci iptal et
PUT /process-instances/{processId}/status/complete process:start Süreci tamamla
DELETE /process-instances/{processId} process:start Süreci sil
POST /process-instances/{processId}/autosign autosign:write Bulut imzalamayı etkinleştir → detay
DELETE /process-instances/{processId}/autosign autosign:write Bulut imzalamayı devre dışı bırak → detay

ℹ️ Döküman ekleme/silme, döküman dosyası indirme ve döküman imzacı yönetimi uç noktaları için bkz. Döküman API.


Süreç Yönetimi

1. Yeni Süreç Oluştur

Yeni bir belge işleme süreci oluşturur.

Scope: process:start

İstek

POST {baseURL}/process-instances

Content-Type: application/json

Request Body

{
  "name": "test süreci",
  "processType": "BELGE_IMZALAMA",
  "expiresAt": "2026-10-15T18:00:00"
}
Alan Tip Zorunlu Açıklama
name string Hayır Sürecin adı
processType string Hayır Süreç tipi. Gönderilmezse varsayılan olarak BELGE_IMZALAMA kullanılır. Olası değerler için Süreç Tipleri bölümüne bakın.
expiresAt string Hayır Sürecin son geçerlilik tarihi (ISO 8601, saat dilimi eki olmadan, Türkiye saati). Bu zamana kadar tamamlanmayan süreç otomatik iptal edilir. Gönderilmezse süreç süresiz açık kalır. Bkz. Geçerlilik Süresi

Başarılı Yanıt

HTTP 201 Created

{
  "id": 147,
  "accountId": 202,
  "createdByUserId": null,
  "name": "Test Süreci",
  "statusCode": "NEW",
  "processType": "BELGE_IMZALAMA",
  "signers": [],
  "documents": [],
  "createdAt": "2026-01-05T19:59:29.5282888",
  "updatedAt": "2026-01-05T19:59:29.5282888",
  "responsibleBy": null,
  "accessToken": "kQQQioa",
  "tokenExpiry": null,
  "expiresAt": "2026-10-15T18:00:00",
  "startedAt": null,
  "completedAt": null
}
Alan Tip Açıklama
id number Sürecin benzersiz ID'si
accountId number Hesap ID'si
createdByUserId number Süreci oluşturan kullanıcı ID'si
name string Sürecin adı
statusCode string Sürecin durum kodu (NEW, STARTED, IN_PROGRESS, COMPLETED, ARCHIVED, CANCELED, DELETED)
processType string Süreç tipi (bkz. Süreç Tipleri). Belirtilmemişse BELGE_IMZALAMA
signers array İmzalayıcılar listesi
documents array Belgeler listesi
createdAt string Oluşturulma tarihi (ISO 8601)
updatedAt string Son güncellenme tarihi (ISO 8601)
responsibleBy string Sorumlu kişi
accessToken string Erişim token'ı
tokenExpiry string Token geçerlilik süresi
expiresAt string | null Sürecin son geçerlilik tarihi; null ise süresiz
startedAt string | null Sürecin başlatıldığı an (STARTED'a ilk geçiş)
completedAt string | null Sürecin tamamlandığı an. Tamamlanma süresi = completedAt − startedAt

Örnek cURL

curl -X POST https://app.dijitalbelge.com/api/external/process-instances \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx" \
  -d '{
    "name": "test süreci"
  }'

2. Süreç Detayını Getir

Belirtilen sürecin imzacı ve döküman bilgileriyle birlikte detaylı bilgilerini döndürür.

Scope: process:status

İstek

GET {baseURL}/process-instances/{processId}

Path Parameters:

Parametre Tip Açıklama
processId number Sürecin ID'si

Başarılı Yanıt

HTTP 200 OK

{
  "id": 147,
  "accountId": 202,
  "createdByUserId": null,
  "name": "Test Süreci",
  "statusCode": "IN_PROGRESS",
  "signers": [
    {
      "id": 1,
      "name": "İmzacı 1",
      "email": "[email protected]",
      "signedAt": null
    }
  ],
  "documents": [
    {
      "id": 101,
      "name": "Sözleşme.pdf",
      "uploadedAt": "2026-01-05T19:59:29Z"
    }
  ],
  "createdAt": "2026-01-05T19:59:29.5282888",
  "updatedAt": "2026-01-05T19:59:29.5282888",
  "responsibleBy": null,
  "accessToken": "kQQQioa",
  "tokenExpiry": null,
  "expiresAt": "2026-10-15T18:00:00",
  "startedAt": "2026-10-01T09:12:44",
  "completedAt": null
}

Örnek cURL

curl -X GET https://app.dijitalbelge.com/api/external/process-instances/147 \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

3. Süreci Başlat

Belirtilen süreci başlatır. Başlatılan süreç imzacılara bildirim gönderir.

Scope: process:start

İstek

PUT {baseURL}/process-instances/{processId}/status/start

Path Parameters:

Parametre Tip Açıklama
processId number Sürecin ID'si

Başarılı Yanıt

HTTP 200 OK

ok

Örnek cURL

curl -X PUT https://app.dijitalbelge.com/api/external/process-instances/147/status/start \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

4. Süreci İptal Et

Belirtilen süreci iptal eder.

Scope: process:start

İstek

PUT {baseURL}/process-instances/{processId}/status/cancel

Path Parameters:

Parametre Tip Açıklama
processId number Sürecin ID'si

Başarılı Yanıt

HTTP 200 OK

ok

Örnek cURL

curl -X PUT https://app.dijitalbelge.com/api/external/process-instances/147/status/cancel \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

5. Süreci Tamamla

Belirtilen süreci tamamlanmış duruma alır.

Scope: process:start

İstek

PUT {baseURL}/process-instances/{processId}/status/complete

Path Parameters:

Parametre Tip Açıklama
processId number Sürecin ID'si

Başarılı Yanıt

HTTP 200 OK

ok

Örnek cURL

curl -X PUT https://app.dijitalbelge.com/api/external/process-instances/147/status/complete \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

6. Süreci Sil

Belirtilen süreci sistemden siler.

Scope: process:start

İstek

DELETE {baseURL}/process-instances/{processId}

Path Parameters:

Parametre Tip Açıklama
processId number Silinecek sürecin ID'si

Başarılı Yanıt

HTTP 200 OK

(boş)

Örnek cURL

curl -X DELETE https://app.dijitalbelge.com/api/external/process-instances/147 \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

7. Doğrulama QR Kodunu Getir (PNG)

Belgeye gömülen doğrulama QR'ının PNG görselini döndürür. Entegratör kendi doğrulama ekranında dökümanla aynı QR'ı göstermek için kullanabilir.

Scope: process:status

İstek

GET {baseURL}/process-instances/{processId}/qr?size=300

Query Parameters:

Parametre Tip Varsayılan Açıklama
size number 300 PNG kenar uzunluğu (px)

Başarılı Yanıt

HTTP 200 OK — Content-Type: image/png (ham PNG byte'ları).

Örnek cURL

curl -X GET "https://app.dijitalbelge.com/api/external/process-instances/147/qr?size=300" \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx" \
  --output surec-147-qr.png

Döküman ve Döküman İmzacı Yönetimi

Sürece döküman ekleme/silme, döküman ve ilişkili dosyaları (kanıt/ek) indirme ve döküman bazlı imzacı yönetimi işlemleri ayrı bir sayfaya taşınmıştır: Döküman API.


Otomatik İmzalama

Bulut İmzalama (Autosign) endpoint'leri bu sayfadan ayrılmış olup ayrıntılar için Bulut İmzalama (Autosign) sayfasını inceleyin.


Süreç Durumları

Durum Açıklama
NEW İlk oluşturulduğunda atanan durum
STARTED Başlayınca imzacılara bildirim gider
IN_PROGRESS İlk imzacı imzaladığında süreç devam ediyor durumuna geçer
COMPLETED Tüm imzacılar imzalamayı tamamladığında süreç tamamlanır
ARCHIVED Tamamlanan süreçler, arşiv hizmeti alınmış ise arşive taşınır
CANCELED Süreç iptal edilmiş durumda (elle ya da geçerlilik süresi dolduğu için)
DELETED Süreç silinmiş durumda

Geçerlilik Süresi (Son Tarih)

Süreç oluştururken (POST /process-instances) ya da taslaktan başlatırken (POST /process-definitions/{definitionId}/start) isteğe bağlı expiresAt gönderilebilir.

  • Biçim: ISO 8601, saat dilimi eki olmadan ("2026-10-15T18:00:00"); değer Türkiye saati (Europe/Istanbul) olarak yorumlanır.
  • Süre dolunca: Bu zamana kadar sonuçlanmamış (COMPLETED, CANCELED, ARCHIVED, DELETED dışındaki) süreç otomatik olarak CANCELED yapılır. Kontrol 5 dakikada bir çalışır; iptal son tarihten en geç birkaç dakika sonra gerçekleşir.
  • Webhook: Otomatik iptalde de elle iptaldeki gibi PROCESS_STATUS_CHANGED (newStatus: "CANCELED") olayı gönderilir (bkz. Webhook).
  • Süresiz: expiresAt gönderilmezse süreç süresiz açık kalır (önceki davranış).
  • Geçmiş tarih: Şimdiden önceki bir tarih 400 Bad Request ile reddedilir ("Geçerlilik süresi ileri bir tarih olmalıdır").

Yanıttaki startedAt / completedAt alanlarıyla sürecin ne kadar sürede tamamlandığını hesaplayabilirsiniz.


Hata Yanıtları

400 Bad Request

{
  "error": "INVALID_REQUEST",
  "message": "Request parametreleri hatalı"
}

401 Unauthorized

{
  "error": "UNAUTHORIZED",
  "message": "Geçersiz veya eksik kimlik doğrulama"
}

403 Forbidden

{
  "error": "FORBIDDEN",
  "message": "Bu işlem için yeterli yetki yok veya IP adresi yetkisiz"
}

404 Not Found

{
  "error": "NOT_FOUND",
  "message": "İstenilen süreç bulunamadı"
}

409 Conflict

{
  "error": "CONFLICT",
  "message": "Sürecin mevcut durumunda bu işlem gerçekleştirilemez"
}

500 Internal Server Error

{
  "error": "INTERNAL_ERROR",
  "message": "Sunucuda bir hata oluştu"
}

Kullanım Örnekleri

Tam Akış Örneği

# 1. Yeni süreç oluştur
PROCESS_ID=$(curl -s -X POST https://app.dijitalbelge.com/api/external/process-instances \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx" \
  -d '{"name":"test süreci"}' | jq -r '.id')

# 2. Dökümana imzacı ekle
curl -X POST https://app.dijitalbelge.com/api/external/process-instances/$PROCESS_ID/document/7203/signers \
  -H "Content-Type: application/json" \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx" \
  -d '{"signerId": 138, "order": 1}'

# 3. Süreci başlat
curl -X PUT https://app.dijitalbelge.com/api/external/process-instances/$PROCESS_ID/status/start \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

# 4. Süreci tamamla
curl -X PUT https://app.dijitalbelge.com/api/external/process-instances/$PROCESS_ID/status/complete \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx"

Kimlik Doğrulama

DijitalBelge External API'ye yapılan tüm istekler entegrasyon bazlı kimlik doğrulama ile korunmaktadır. API'yi kullanabilmek için size özel ClientId ve ClientSecret bilgileri gerekmektedir.

Yetkilendirme Header'ları

Tüm API isteklerine aşağıdaki header'ları eklemeniz zorunludur:

Header Açıklama
X-Client-Id Entegrasyon Client ID
X-Client-Secret Entegrasyon Client Secret

Warning

X-Client-Secret bilgisi gizli tutulmalı ve herkese açık ortamlarda saklanmamalıdır.

Örnek İstekler

curl -X POST https://app.dijitalbelge.com/api/external/process-instances \
  -H "X-Client-Id: app_xxxxx" \
  -H "X-Client-Secret: secret_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{"name":"test süreci"}'
HttpHeaders headers = new HttpHeaders();
headers.set("X-Client-Id", "app_xxxxx");
headers.set("X-Client-Secret", "secret_xxxxx");
fetch("https://app.dijitalbelge.com/api/external/process-instances", {
  method: "POST",
  headers: {
    "X-Client-Id": "app_xxxxx",
    "X-Client-Secret": "secret_xxxxx",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({name: "test süreci"})
});
import requests

headers = {
    "X-Client-Id": "app_xxxxx",
    "X-Client-Secret": "secret_xxxxx"
}

requests.post(
    "https://app.dijitalbelge.com/api/external/process-instances",
    headers=headers,
    json={"name": "test süreci"}
)

Daha fazla bilgi için Kimlik Doğrulama sayfasını ziyaret edin.


Sınırlamalar

  • Her API çağrısı için maksimum 30 saniye timeout vardır
  • Dakika başına maksimum 100 istek yapılabilir
  • Süreç adı maksimum 255 karakterden oluşabilir

İlgili Kaynaklar