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
hasStartFormalanı 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ı |