NotusFlow Developer Hub & API Reference

Geliştirici Dokümantasyonu

.NET 10 ve .NET Aspire mikroservis mimarisi üzerine kurulu NotusFlow süreç motorunu REST API, Webhooks, C# Scripting Sandbox ve AI servisleri ile sistemlerinize entegre edin.

Bölüm 1

Sistem Mimarisi & .NET Aspire

NotusFlow, dağıtık ve ölçeklenebilir mikroservis mimarisine sahiptir. Tüm servisler **.NET 10** platformunda geliştirilmiş olup **.NET Aspire** orkestrasyon motoru ile yönetilmektedir.

YARP Reverse Proxy

Gelen tüm HTTP/REST istekleri NotusFlow.Gateway (YARP) üzerinden doğru mikroservise (Identity, Workflow, Reporting) yönlendirilir.

Servis Bağlantıları

Servisler arası iletişim Aspire Service Discovery URL yapıları ile gerçekleşir (http://identity, http://workflow).

PostgreSQL & Redis

Identity ve Workflow veritabanları PostgreSQL üzerinde izole depolanırken, oturum ve delegeler Redis ile önbelleğe alınır.

Bölüm 2

Kimlik Doğrulama & Multi-Tenancy

API istekleri oturum açınca verilen JWT ya da NotusFlow › API Token'ları sayfasından oluşturulan kişisel bir token (nf_…) ile doğrulanır. Token, sahibinin şirketi, rolleri ve izinleriyle bütün servislerde geçerlidir. Kiracı (Tenant) yalıtımı otomatik olarak DbContext seviyesinde uygulanır.

Zorunlu HTTP Header Tanımları
Authorization: Bearer <JWT ya da nf_… API token>
X-Api-Key: nf_3c0e9a… (Authorization yerine)
Multi-Tenancy Güvenlik Kuralı: NotusFlow EF Core altyapısında kiracı izolasyonu global query filter seviyesindedir. Kod genelinde IgnoreQueryFilters() kullanımı SuperAdmin rolleri haricinde kesinlikle engellenmiştir.
Bölüm 3

REST API İş Akışı & Görev Yönetimi

Süreç tetikleme, aktif kullanıcı görevlerini listeleme ve görev tamamlama işlemleri için YARP arkasındaki WorkflowExecution ve UserTasks uç noktalarını kullanın.

# 1. Yeni bir İş Akışı Örneği (Instance) Başlatmacurl -X POST https://gateway.notusflow.com/api/workflow-execution/start \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "definitionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "inputs": { "MusteriAdi": "Notussoft Yazılım", "SiparisTutari": 75000 } }'# 2. Bekleyen Kullanıcı Görevini Tamamlamacurl -X POST https://gateway.notusflow.com/api/user-tasks/task-9982/complete \ -H "Authorization: Bearer YOUR_JWT_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "OnayDurumu": "Approved", "Aciklama": "Bütçe onaylandı." }'
Bölüm 4

Webhook Entegrasyonu & HMAC-SHA256

NotusFlow süreci tamamlandığında veya görev atandığında alıcı URL adresinize HMAC-SHA256 imzalı POST istekleri gönderilir.

Desteklenen Webhook Olayları

workflow.started, workflow.completed, task.created, task.completed, task.assigned

Başlıklar

X-Notus-Event: <eventType>, X-Notus-Signature: <hex_hmac_sha256>, X-Notus-Delivery: <guid>, X-Notus-Attempt: <n>

Yeniden Deneme ve Tekrar Eden Gönderimler

Teslimat en az bir kez garantisiyle çalışır. Ulaşmayan bir gönderim 1 dk, 5 dk, 15 dk, 1 saat ve 6 saat aralıklarıyla beş kez denenir; zaman aşımı, bağlantı hatası, 5xx, 408 ve 429 yeniden denenir, diğer 4xx yanıtları reddedilmiş sayılır ve tekrar denenmez. Uç noktanız aynı olayı ikinci kez alabileceği için, X-Notus-Delivery değerini kullanarak tekrarları ayıklayın — bu değer denemeler arasında değişmez. Her gönderimin sonucu yönetim arayüzündeki Webhook > Gönderim kayıtları bölümünde 30 gün saklanır ve elle yeniden gönderilebilir.

bool VerifyWebhookSignature(string rawJsonBody, string receivedSignature, string secret) {using var hmac = new System.Security.Cryptography.HMACSHA256(Encoding.UTF8.GetBytes(secret));var hash = hmac.ComputeHash(Encoding.UTF8.GetBytes(rawJsonBody));var computedSignature = Convert.ToHexString(hash).ToLower();return string.Equals(computedSignature, receivedSignature, StringComparison.OrdinalIgnoreCase); }
Bölüm 5

C# Betik Motoru (Scripting) & Dynamic UI

NotusFlow ScriptingService altyapısı, form alanları ve iş akışı adımları üzerinde dinamik Roslyn C# betikleri yürütür. Kodlar ConcurrentDictionary ile temsilci (delegate) seviyesinde önbelleğe alınarak milisaniyelik hızla derlenir.

S-2 Güvenlik Sandbox Kısıtlamaları: Kötü niyetli kod yürütmeyi (RCE) önlemek amacıyla betiklerde şu namespace ve kütüphanelerin kullanımı kesinlikle yasaklanmıştır ve derleme öncesinde engellenir:
System.IO, System.Net, System.Reflection, System.Diagnostics, System.Threading, System.Security, Microsoft.Win32, System.Environment
C# Script Örneği (Model & UI Manipülasyonu)Roslyn Sandboxed Execution
// Model verilerine erişim ve UI elemanı kontrolleridecimal siparisTutari = Convert.ToDecimal(Model.SiparisTutari ?? 0);string musteriTipi = Model.MusteriTipi?.ToString() ?? "Standart";decimal indirim = 0m;if (musteriTipi == "Premium" && siparisTutari > 50000m) { indirim = siparisTutari * 0.15m; UI.IndirimAlani.Visible = "true"; UI.OnayDugmesi.Disabled = "false"; }else{ UI.IndirimAlani.Visible = "false"; } Model.IndirimTutari = indirim; Model.NetToplam = siparisTutari - indirim;
Bölüm 6

Yapay Zeka (AI) Entegrasyon Servisi

NotusFlow AI mikroservisi, doğal dil komutları ile iş akışları oluşturmanıza ve kod tabanınızı indeksleyerek otomatik süreç önerileri sunmanıza imkan tanır.

POST /api/ai/process

Süreç şablonlarını doğal dille üretir ve iyileştirme tavsiyeleri verir.

POST /api/ai/index-codebase

Uygulamanızın C# betiklerini ve form tiplerini AI bellek havuzuna indeksler.

Bölüm 6.1

MCP: NotusFlow'u Yapay Zekâ Asistanınızdan Yönetin

NotusFlow bir MCP (Model Context Protocol) sunucusudur. Claude, ChatGPT, VS Code Copilot gibi bir yapay zekâ istemcisi süreçlerinizi okur, yeni bir süreç ya da mevcut sürecin yeni sürümünü hazırlar, doğrular, örnek veriyle dener ve onayınıza sunar. İstemci sizin yetkilerinizle ve yalnızca kendi şirketinizin verisiyle çalışır. Claude ve ChatGPT'de yalnızca adresi girersiniz; NotusFlow giriş ve onay ekranı açılır (OAuth). Claude Code, VS Code ve betikler kişisel API token'ıyla bağlanır.

Bağlantı
Adres: https://api.notusflow.com/mcp (Streamable HTTP)
Kimlik: OAuth 2.1 (bağlayıcılar) ya da Authorization: Bearer nf_…
  1. Claude (web ve masaüstü): Settings › Connectors › Add custom connector. Ad olarak NotusFlow, adres olarak https://api.notusflow.com/mcp yazın ve Connect'e basın. NotusFlow'a giriş yapıp "İzin ver" dediğinizde bağlantı kurulur; token gerekmez, OAuth Client ID/Secret alanlarını boş bırakın.
  2. ChatGPT: Ayarlar › Bağlayıcılar (geliştirici modu) › Oluştur. Adres olarak https://api.notusflow.com/mcp, kimlik doğrulama olarak OAuth seçin; aynı NotusFlow onay ekranı açılır.
  3. Erişimi yönetin: Bağladığınız uygulamalar NotusFlow'da API Token'ları › Bağlı uygulamalar bölümünde görünür; "Erişimi iptal et" bir dakika içinde etkili olur.
  4. Token ile bağlanacaksanız: NotusFlow'da API Token'ları sayfasından bir token oluşturun. Token yalnızca bir kez gösterilir; sizin yerinize işlem yapar, paylaşmayın ve gerekmeyince iptal edin.
  5. Claude Code:
    claude mcp add --transport http notusflow https://api.notusflow.com/mcp \
      --header "Authorization: Bearer nf_..."
  6. VS Code (Copilot): .vscode/mcp.json
    {
      "servers": {
        "notusflow": {
          "type": "http",
          "url": "https://api.notusflow.com/mcp",
          "headers": { "Authorization": "Bearer ${input:notusflow-token}" }
        }
      },
      "inputs": [
        { "type": "promptString", "id": "notusflow-token", "description": "NotusFlow API token", "password": true }
      ]
    }
  7. Claude Desktop: claude_desktop_config.json (Node.js gerekir)
    {
      "mcpServers": {
        "notusflow": {
          "command": "npx",
          "args": ["mcp-remote", "https://api.notusflow.com/mcp",
                   "--header", "Authorization:Bearer ${NOTUSFLOW_TOKEN}"],
          "env": { "NOTUSFLOW_TOKEN": "nf_..." }
        }
      }
    }
  8. Deneyin: "NotusFlow'da hangi süreçler var?" diye sorun. İstemci önce whoami ile kim olarak bağlandığını, sonra süreç listesini gösterir.
list_definitions · get_definition

Süreç tanımları ve tam tanım JSON'u.

list_instances · get_instance

Süreçler, açık görevler, geçmiş ve form verisi.

list_data_sources · list_schedules · list_organization

Veri kaynakları, zamanlanmış işler, departman, pozisyon ve kişiler. Bağlantı dizesi ve kişisel bilgi dönmez.

validate_definition

Tanımı kaydetmeden doğrular; sorunları düğüm adıyla raporlar.

test_run_definition

Örnek veriyle dener: betikler çalışır, hiçbir şey gönderilmez ya da kaydedilmez.

propose_definition · get_proposal_status

Yeni süreç ya da yeni sürüm önerir; yönetici onayıyla yayımlanır.

start_instance · list_my_tasks · get_task · complete_task · cancel_instance

Sizin adınıza gerçek işlemler; kurallar ekrandakiyle aynı.

preview_user_import

Kullanıcı listesini içe aktarmadan önce satır satır önizler.

Onay kapısı: Bir yapay zekânın hazırladığı süreç, bir yönetici Yönetim › Yapay zekâ önerileri sayfasında farkları görüp onaylayana kadar canlıya çıkmaz.
Sınırlar: Her çağrı bağlanan kişinin rolleri ve şirketiyle sınırlıdır, denetim kaydına "MCP" olarak, hangi token ya da uygulamayla yapıldığıyla birlikte yazılır; kullanıcı başına dakikada 120 çağrı.
Yazım kuralları: İstemci, süreç tanımı kurallarını notusflow://docs/definition-spec kaynağından okur.
Bölüm 7

Raporlama & Analiz Servisi

NotusFlow.Reporting mikroservisi, tamamlanan süreçlerin tamamlama sürelerini, darboğaz oluşturan görev adımlarını ve kullanıcı bazlı performans analizlerini REST API üzerinden sağlar.

GET /api/reports/dashboard
GET /api/reports/performance
GET /api/reports/trends
GET /api/reports/user-performance
GET /api/reports/sla
GET /api/reports/process-mining/{definitionId}
GET /api/customreports/{reportId}
POST /api/customreports/{reportId}/execute
Bölüm 8

Audit Logging & Bildirim Servisleri

Süreçler üzerindeki tüm veri değişiklikleri ve adım geçişleri değişmez (immutable) denetim günlüklerine kaydedilir.

GET /api/workflow-audit/{instanceId}

Belirtilen süreç örneğinin tüm geçmiş adımlarını ve parametre değişimlerini döndürür.

POST /api/notifications/read-all

Kullanıcının aktif sistem bildirimlerini topluca okundu olarak işaretler.

Bölüm 9

Hata Standartları & HTTP Yanıt Formatı

NotusFlow API katmanı tüm yanıtlarında standart ApiResponse<T> sarmalayıcısını kullanır.

{ "success": true, "data": { "instanceId": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "status": "Running" }, "error": null, "timestamp": "2026-07-22T12:00:00Z" }
Bölüm 10

Zamanlanmış Tetikleyiciler & Veri Kaynakları

Zamanlanmış bir tetikleyici, cron ifadesiyle ya da basit zaman seçiciyle çalışır ve bir veri kaynağındaki her yeni satır için bir süreç başlatır. İşlenen satırlar kayıt altına alındığı için aynı satır iki kez süreç açmaz. Veritabanı bağlantıları süreç tanımında değil, şifreli veri kaynağı kayıtlarında tutulur.

GET /api/workflow-schedules

Kiracının zamanlanmış işleri. {id}/runs koşu geçmişini, {id}/run elle tetiklemeyi, {id}/enabled açıp kapamayı sağlar.

GET /api/datasources

Tanımlı veri kaynakları. {id}/columns sütun listesini, execute/{id} parametreli sorgu çalıştırmayı döndürür.

Bağlantı dizeleri Data Protection ile şifrelenerek saklanır ve API yanıtlarında maskelenir. Süreç tanımını görebilen bir kullanıcı bağlantı bilgisini göremez. SQL Server ve PostgreSQL desteklenir; Logo, Netsis ve Mikro için hazır sorgu şablonları tasarımcıda listelenir.

Bölüm 11

Entegrasyon Konnektörleri

Yeni bir sağlayıcı eklemek için kod yazılmaz. Sağlayıcıyı bildirimsel bir tanımla anlatırsınız; tanım Integration:Providers ayarında saklanır ve tasarımcıdaki entegrasyon düğümünde operasyonlarıyla listelenir. Elle yazılmış bir konnektör aynı anahtarı kullanırsa tanımın yerine geçer.

{ "Key": "kargo-takip", "BaseUrl": "https://api.kargofirmasi.com", "AuthMode": "OAuth2ClientCredentials", "TokenPath": "/oauth/token", "IdempotencyHeader": "X-Idempotency-Key", "Operations": [ { "Key": "gonderi-olustur", "Method": "POST", "Path": "/v1/shipments", "IsWrite": true, "Inputs": ["alici", "adres", "agirlik"], "OutputMappings": { "takipNo": "trackingNumber" } } ] }

AuthMode

ApiKey, Basic ve OAuth2ClientCredentials. Alınan token süresi boyunca önbellekte tutulur.

IsWrite

Yazan operasyonlar çağrı kaydıyla eşleşir; aynı süreç adımı tekrarlansa bile istek sağlayıcıya iki kez gitmez.

OutputMappings

Yanıttaki alanları süreç değişkenine bağlar; sonraki adımlar {{takipNo}} ile kullanır.

Kimlik bilgileri tanımın içinde değil, ayrı ve şifreli bir kimlik deposunda tutulur; yönetim portalındaki entegrasyon ayarları ekranından girilir.

Bölüm 12

Süreç Madenciliği & Süreç Testleri

Süreç madenciliği ucu, bir tanımın geçmiş koşularından düğüm ve kenar istatistiklerini döndürür: her adımın medyan ve p95 süresi, hata sayısı ve her bağlantının kaç kez geçildiği. Tasarım tuvalindeki ısı haritası bu veriyi çizer.

GET /api/reports/process-mining/{definitionId}

Kiracı kapsamlıdır; tarih aralığı sorgu parametreleriyle daraltılabilir.

Süreç testleri, bir akışı gerçek veri yazmadan senaryolara karşı koşturur. Senaryo, grafikten türetilir: hangi düğümde hangi kararın verileceğini ve hangi değerin döneceğini senaryo söyler, onay ve zamanlayıcı adımları koşucu tarafından sürülür.

GET /api/workflow-tests/definition/{id}

Tanıma bağlı senaryolar. POST ile yeni senaryo, PUT/DELETE ile güncelleme ve silme.

POST /api/workflow-tests/definition/{id}/run

Tanımın tüm senaryolarını koşturur. Tek senaryo için {id}/run, geçmiş için {id}/runs.

Testler bellekte, izole bir yürütme bağlamında koşar: e-posta gitmez, dış çağrı yapılmaz, kalıcı kayıt oluşmaz. Yayın ekranı senaryosu düşen bir akış için uyarı gösterir, yayını engellemez.

Bölüm 13

Geliştirici Sıkça Sorulan Sorular (SSS)

Geliştirici Destek Programı

14. Teknik Destek ve SLA Kılavuzu

Notussoft güvencesiyle, entegrasyon süreçlerinizin kesintisiz yürümesi için kurumsal seviyede öncelikli teknik destek ve Hizmet Seviyesi Anlaşması (SLA) şartları sunuyoruz.

L1 - Kritik Hata SLA

Kritik çalışma zamanı ve kesinti durumları için en geç 2 saat içinde müdahale garantisi.

L2 - Entegrasyon SLA

API entegrasyonu ve C# script geliştirmeleri için en geç 1 iş günü yanıt süresi.

Doğrudan Mimar Desteği

Notussoft kıdemli yazılım mimarları ile canlı video konferans entegrasyon toplantıları.

Teknik yardıma mı ihtiyacınız var?

Mühendislerimiz entegrasyon sorularınız için hazır bekliyor.

[email protected] (support [at] notusflow.com)+90 501 674 00 87