REST API
Web uygulamasının yaptığı her şey Botream Server'ın REST API'si üzerinden geçer; bu nedenle kendi betiklerinizden ve sistemlerinizden çalıştırma başlatabilir, sonuçları okuyabilir ve kuyrukları yönetebilirsiniz. Bu sayfada nasıl oturum açacağınızı, API'yi nasıl çağıracağınızı ve tam başvuru belgesini nerede bulacağınızı görebilirsiniz.
Temel adres
API, web uygulamasıyla aynı adres ve bağlantı noktasında /api altında yer alır; örneğin http://rpa-server:3000/api. İstekler ve yanıtlar JSON kullanır.
Uyarı: Erişim belirteçleri ve parolalar her istekte iletilir. İstemciler Botream'e güvenmediğiniz ağlar üzerinden erişiyorsa Botream'i HTTPS arkasında yayımlayın.
Kimlik doğrulama
Oturum açma, yenileme, oturumu kapatma, sağlık denetimi (GET /api/system/health) ve API belgeleri dışında her uç nokta oturum açmış bir kullanıcı gerektirir. API çağrıları oturum açan kullanıcının izinleriyle çalışır; bu nedenle işi görecek en küçük role sahip, bu amaca ayrılmış bir kullanıcı oluşturun (bkz. Kullanıcılar ve roller).
Oturum açma
Kullanıcı adını ve parolayı POST /api/auth/login adresine gönderin:
curl -X POST http://rpa-server:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"api-runner","password":"<password>"}'
Yanıt, kısa ömürlü bir erişim belirteci (access token), bu belirtecin saniye cinsinden ömrünü ve kullanıcıyı içerir:
{
"accessToken": "eyJhbGciOi...",
"expiresIn": 900,
"user": { "id": 7, "username": "api-runner", "...": "..." }
}
Sunucu ayrıca bir yenileme belirteci (refresh token) değerini HttpOnly çerez olarak ayarlar (yol /api/auth). Yenileme belirteci hiçbir zaman yanıt gövdesinde yer almaz.
Belirteç ömürleri
| Belirteç | Varsayılan ömür | Sunucu ayarı |
|---|---|---|
| Erişim belirteci | 15 dakika (900 sn) | ACCESS_TOKEN_TTL_SECONDS |
| Yenileme belirteci | 7 gün | REFRESH_TOKEN_TTL_DAYS |
Erişim belirtecinin süresi dolduğunda ya yeniden oturum açın ya da yenileme çereziyle POST /api/auth/refresh çağrısını yapın. Her yenileme yeni bir erişim belirteci döndürür ve yenileme çerezini döndürür (yeniler): eski yenileme belirteci artık çalışmaz. Eski bir yenileme belirtecinin yeniden kullanılması hırsızlık olarak değerlendirilir ve oturumu sonlandırır. POST /api/auth/logout, çerezin arkasındaki oturumu iptal eder.
curl ile çerezi bir dosyada saklayın:
# Sign in and store the refresh cookie
curl -c botream.cookies -X POST http://rpa-server:3000/api/auth/login \
-H "Content-Type: application/json" \
-d '{"username":"api-runner","password":"<password>"}'
# Later: a new access token (and a new cookie)
curl -b botream.cookies -c botream.cookies -X POST http://rpa-server:3000/api/auth/refresh
Not: Oturum açma denemeleri hız sınırına tabidir (varsayılan olarak dakikada 10,
LOGIN_RATE_LIMIT_PER_MINUTE). Bir betik her çağrı için oturum açmamalı; bir kez oturum açıp erişim belirtecini süresi dolana kadar yeniden kullanmalıdır.
API'yi çağırma
Erişim belirtecini Authorization başlığında gönderin:
TOKEN="eyJhbGciOi..."
curl http://rpa-server:3000/api/auth/me -H "Authorization: Bearer $TOKEN"
PowerShell'de:
$login = Invoke-RestMethod -Method Post -Uri "http://rpa-server:3000/api/auth/login" `
-ContentType "application/json" -Body '{"username":"api-runner","password":"<password>"}'
$headers = @{ Authorization = "Bearer $($login.accessToken)" }
Invoke-RestMethod -Uri "http://rpa-server:3000/api/agents" -Headers $headers
Hatalar
Başarısız istekler bir HTTP durum kodu ve JSON gövdesiyle yanıt verir:
{ "statusCode": 409, "code": "CONFLICT", "message": "No agent is online" }
Doğrulama hataları, her geçersiz alanın path ve message değerlerini içeren bir issues listesi ekler. Tipik durum kodları: 400 geçersiz istek, 401 eksik veya süresi dolmuş belirteç, 403 kullanıcının rolü bu işleme izin vermiyor, 404 bulunamadı (kullanıcının göremeyeceği çalıştırmalar için de), 409 istek mevcut durumla çakışıyor.
Etkileşimli belgeler (Swagger)
Sunucu, API'nin OpenAPI 3.1 açıklamasını bir Swagger UI ile birlikte yayımlayabilir:
| Ne | Adres |
|---|---|
| Swagger UI | http://<server>:<port>/api/docs |
| OpenAPI belgesi (JSON) | http://<server>:<port>/api/docs/json |
Belgeler, üretim ortamı dışında varsayılan olarak açıktır. Kurulu bir Botream Server üretim modunda çalışır; bu nedenle belgeleri kendiniz açın: C:\ProgramData\Botream\Server\server.json dosyasına "API_DOCS": "true" ekleyin (veya hizmet için API_DOCS=true ortam değişkenini ayarlayın) ve BotreamServer hizmetini yeniden başlatın. Swagger UI'daki her rota, istek ve yanıt şemalarını ve onu çağırmaya izin verilen rolleri belirten bir Roles: satırını gösterir; bu satırı olmayan rotalar oturum açmış her kullanıcıyı kabul eder. Sayfadan çağrıları denemek için Authorize düğmesine tıklayın ve bir erişim belirteci yapıştırın.
Uç nokta grupları
Tablo ana grupları özetler. Swagger UI tüm rotaları listeler.
| Grup | Ana rotalar | Yetkiler (herhangi biri) |
|---|---|---|
| Kimlik doğrulama | POST /api/auth/login, /refresh, /logout, GET /api/auth/me |
Herkese açık / oturum açmış her kullanıcı |
| Görevler | GET/POST /api/tasks, GET/PUT/DELETE /api/tasks/{id}, sürümler, pull, push, klonlama, GET/POST /api/folders |
Edit tasks (kilit kaldırma: Release task locks) |
| Çalıştırmalar | POST /api/executions (görev çalıştırma), GET /api/executions, GET /api/executions/{id}, /logs, /failure, /cancel, GET /api/dashboard/stats |
Run tasks (yalnızca bakmak için: See all runs) |
| Zamanlamalar | GET/POST /api/schedules, PUT/DELETE /api/schedules/{id}, POST /api/schedules/{id}/run, GET /api/schedules/status |
Manage schedules |
| Kuyruklar | GET /api/queues, GET /api/queues/{id}/items; kuyruk oluşturma ve değiştirme, öğe eklemek için POST /api/queues/{id}/items, öğeleri yeniden deneme ve silme |
Manage queues (okuma: Run tasks da) |
| Kasalar | GET /api/vaults, GET /api/vaults/{id}/credentials, kimlik bilgisi rotaları (kullanıcının kasa erişimine bağlı); kasa oluşturma ve erişim verme Manage vaults gerektirir. Hiçbir rota parola döndürmez. |
Run tasks, Use every vault, Manage vaults / Manage vaults |
| Ajanlar | GET /api/agents (canlı durum), GET /api/agent-groups; /api/admin/agents altında ajanları onaylama ve yönetme, grupları yönetme |
Run tasks (ve ajan seçen diğer yetkiler) / Manage agents |
| Kendi kendini onarma | POST /api/healings/lookup, GET /api/selector-health, GET /api/selector-health/summary |
Edit tasks (özet: Run tasks da) |
| Performans | GET /api/performance, GET /api/performance/export (Excel), iş birimleri |
See performance (iş birimi listesi: Edit tasks da) |
| Yapay zeka | POST /api/ai/generate-task, /refine-recording, /explore; POST /api/executions/{id}/failure/analysis |
Edit tasks; analiz: Run tasks veya See all runs |
| Yönetim | /api/users, /api/roles (GET /api/roles/names: herkes), /api/settings, /api/audit-logs |
Manage users and roles, Manage settings, See the audit log |
| Sistem | GET /api/system/health (herkese açık denetim), GET /api/system/health/details |
Herkese açık / See system health |
Canlı güncellemeler (çalıştırma günlükleri, ajan durumu) REST API'nin parçası değildir: web uygulaması bunları Socket.io üzerinden /monitor ile alır.
Çalıştırma başlatma
POST /api/executions, bir görevin geçerli genel sürümünü, yani zamanlamaların çalıştırdığı sürümün aynısını başlatır.
| Alan | Zorunlu | Anlamı |
|---|---|---|
taskId |
evet | Görevin kimliği (düzenleyicinin adresinde /tasks/<id> olarak gösterilir veya GET /api/tasks tarafından döndürülür) |
agentId |
hayır | Görevin çalışacağı ajan; belirtilmezse meşgul olmayan ilk çevrimiçi ajan |
inputs |
hayır | Görevin girdileri için girdi adına göre değerler |
curl -X POST http://rpa-server:3000/api/executions \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"taskId": 42, "agentId": 3, "inputs": {"customer": "ACME Ltd", "maxOrders": 5}}'
Yanıt (201 Created), id değeri de dahil olmak üzere yeni çalıştırmadır. Çalıştırmayı şu şekilde izleyin:
# Status and result
curl http://rpa-server:3000/api/executions/1234 -H "Authorization: Bearer $TOKEN"
# Log lines
curl http://rpa-server:3000/api/executions/1234/logs -H "Authorization: Bearer $TOKEN"
# Stop it
curl -X POST http://rpa-server:3000/api/executions/1234/cancel -H "Authorization: Bearer $TOKEN"
Durum kesinleşene kadar GET /api/executions/{id} uç noktasını yoklayın. Bir çalıştırma başarısız olduğunda GET /api/executions/{id}/failure; hata veren satırı, değişkenleri (gizli değerler maskelenmiş olarak) ve bir ekran görüntüsünün bulunup bulunmadığını (GET /api/executions/{id}/failure/screenshot) döndürür.
İpucu: Bir robotu her öğe için ayrı ayrı başlatmak yerine ona iş beslemek için
POST /api/queues/{id}/itemsile bir iş kuyruğuna öğe ekleyin ve kuyruğu bir zamanlamanın işlemesini sağlayın.
Roller ve yetkiler
API çağrıları web uygulamasıyla aynı kurallara uyar: kullanıcının rolleri ve bu rollerin yetkileri belirleyicidir; rol değişikliği bir sonraki çağrıda geçerli olur (yeni belirteç gerekmez). Swagger UI'daki her rota, ona izin veren yetkileri listeler. Varsayılan rollerle:
| Rol | API üzerinden |
|---|---|
| Admin | Kullanıcılar ve roller, ayarlar, ajanlar, kasa yönetimi, denetim günlüğü ve performans dahil her şey |
| Developer | Görevler ve klasörler, çalıştırmalar ("workspace": "local" ile kullanıcının yerel kopyaları dahil), zamanlamalar, tetikleyiciler, kuyruklar, genel değerler, tüm kasalar, kendi kendini onarma, yapay zeka özellikleri |
| Runner | Görev çalıştırma, kendi başlattığı çalıştırmaları görme, kuyrukları okuma, kendisine erişim verilen kasaları kullanma, ajan durumu, hata analizi |
GET /api/auth/me, oturum açmış kullanıcıyı roles (rol adları) ve permissions (neler yapabileceği) ile döndürür. Kullanıcılar roles: ["Runner", "Finance"] ile oluşturulur ve değiştirilir; eski role: "Runner" biçimi hâlâ kabul edilir ve yanıtlardaki role, roles listesinin ilkidir (kullanımdan kalkıyor).
See all runs yetkisi olmayan kullanıcılar yalnızca kendi başlattıkları çalıştırmaları görür; göremeyecekleri çalıştırmalar için API 404 yanıtı verir. Güvenlikle ilgili her çağrı (oturum açmalar, değişiklikler, kimlik bilgisi erişimi) denetim günlüğüne yazılır. Ayrıntılar için bkz. Kullanıcılar ve roller.