24. REST API


Workingflow, iş akışlarıyla programlı etkileşim için bir JSON REST API sunar. Harici sistemler (ERP, CI/CD, izleme araçları) süreçleri keşfetmek, örnekleri başlatmak, durumu sorgulamak ve dosyaları indirmek için bu uç noktaları (endpoints) kullanabilir.

Kimlik Doğrulama (Authentication)

Tüm API istekleri, Authorization başlığında (header) geçerli bir API anahtarı gerektirir:

Authorization: Bearer wf_your_api_key_here

Anahtarlar, /admin/api-keys adresindeki yönetici (admin) kullanıcı arayüzü üzerinden yönetilir.

Uç Noktalar (Endpoints)

Yöntem Yol (Path) Açıklama
GET /processapi/list Dağıtılan (deployed) tüm süreç tanımlarını listele
POST /processapi/{processKey}/start Yeni bir süreç örneği başlat (yalnızca başlangıç formu olmayan süreçler)
GET /processapi/{id}/status Süreç örneğinin durumunu, görevleri, değişkenleri ve dosyaları al
GET /processapi/{id}/files/{filename} Bir süreç örneğinden bir dosyayı indir

Not: Başlangıç formu olan süreçler API üzerinden başlatılamaz — web kullanıcı arayüzü üzerinden kullanıcı etkileşimi gerektirirler. Liste uç noktası (list endpoint), çağrı yapanların (callers) API ile başlatılabilir süreçleri tanımlayabilmesi için bir hasStartForm alanı içerir.

Tam Örnek — Masraf Geri Ödemesi (Expense Reimbursement) Demosu

Aşağıdaki örneklerde platformla birlikte gelen expense_reimbursement_demo süreci (başlangıç formu yok) kullanılmaktadır.

1. Süreçleri Listeleme

GET /processapi/list
Authorization: Bearer wf_abc123def456...

Yanıt (Response):

[
  {
    "key": "expense_reimbursement_demo",
    "name": "Expense Reimbursement Demo",
    "version": 1,
    "description": "Demonstrates gateway loops (revise/resubmit) and SLA task escalation.",
    "hasStartForm": false
  },
  {
    "key": "leave_request_demo",
    "name": "Leave Request Demo",
    "version": 1,
    "description": "Employee leave request with manager approval, revision loop, HR acknowledgment, and SLA escalation.",
    "hasStartForm": true
  }
]

2. Süreci Başlatma

POST /processapi/expense_reimbursement_demo/start
Authorization: Bearer wf_abc123def456...
Content-Type: application/json

{
  "variables": {
    "department": "Engineering",
    "notes": "Q2 travel expenses"
  }
}

Yanıt (201 Created):

{
  "processInstanceId": "52407",
  "processDefinitionKey": "expense_reimbursement_demo",
  "message": "Process started successfully"
}

Başlangıç formu olan bir süreci başlatmaya çalışmak 422 döndürür:

{
  "error": "Processes with start forms cannot be started via API: leave_request_demo",
  "code": "START_FORM_NOT_SUPPORTED"
}

3. Durum Sorgulama (Poll Status)

GET /processapi/52407/status
Authorization: Bearer wf_abc123def456...

Yanıt:

{
  "processInstanceId": "52407",
  "processDefinitionName": "Expense Reimbursement Demo",
  "processDefinitionKey": "expense_reimbursement_demo",
  "startTime": "2026-05-01T09:15:22.000+00:00",
  "endTime": null,
  "status": "ACTIVE",
  "activeTasks": [
    {
      "taskId": "52412",
      "taskName": "Submit Expense Report",
      "assignee": null,
      "createTime": "2026-05-01T09:15:22.000+00:00"
    }
  ],
  "variables": {
    "department": "Engineering",
    "notes": "Q2 travel expenses",
    "initiator": "api:ERP Integration"
  },
  "files": []
}

4. Dosya İndirme

GET /processapi/52407/files/a3f8b2c1_receipt.pdf
Authorization: Bearer wf_abc123def456...

Yanıt: İkili dosya indirme (binary file download), Content-Disposition: attachment; filename="receipt.pdf".

Hata Yanıtları (Error Responses)

Tüm hatalar tutarlı bir JSON yapısı döndürür: {"error": "message", "code": "ERROR_CODE"}

HTTP Durumu Kod Örnek
401 UNAUTHORIZED API anahtarı eksik veya aktif değil
404 PROCESS_NOT_FOUND Geçersiz süreç anahtarı
404 INSTANCE_NOT_FOUND Geçersiz süreç örneği kimliği
404 FILE_NOT_FOUND Dosya depolamada (storage) mevcut değil
409 PROCESS_SUSPENDED Süreç tanımı askıya alınmış/aktif değil
422 START_FORM_NOT_SUPPORTED Sürecin bir başlangıç formu var (API ile başlatılamaz)
500 INTERNAL_ERROR Beklenmeyen sunucu hatası