API'ye genel bakış
Alaf Server HTTP API'si — temel URL, kimlik doğrulama, izinler, hız limitleri ve standart JSON hata yapısı.
dashboard'ın ve alaf server CLI'sinin yapabildiği her şey aynı HTTP API'sine yapılan bir çağrıdır: proje oluşturma,
deploy'ları tetikleme, domain'leri bağlama, analitik okuma, yedekleri yönetme. Bu, Hono üzerine kurulu düz bir JSON API'sidir,
bu sayede bir script'ten, bir CI işinden veya bir AI agent'tan, birinci taraf istemcilerin yaptığı gibi yönetebilirsiniz.
Temel URL ve kimlik doğrulama
Her route, kendi instance'ınızda /api altında yer alır — örn. https://your-host/api/projects. Barındırılan bir /v1 gateway'i ve ayrı bir anahtar formatı yoktur: temel URL, Alaf Server'ı çalıştırdığınız yerdir. alaf server token create ile oluşturulan kişisel bir erişim token'ı ile bearer header (Authorization: Bearer <token>) olarak kimlik doğrulayın; dashboard bunun yerine bir oturum çerezi kullanır. Tüm ayrıntılar Kimlik Doğrulama bölümünde.
Kimlik doğrulama
Bir istek, kimliğini tam olarak dört yoldan biriyle kanıtlar. Alaf Server önce bir Bearer token'ı, ardından bir
oturum çerezini, sonra da loopback fallback'i (yalnızca bu mod etkinse) kontrol eder.
| Yöntem | Ne gönderirsiniz | Kim kullanır |
|---|---|---|
| Kişisel erişim token'ı | Authorization: Bearer opsh_pat_… | CLI, script'ler, server-to-server |
| Oturum çerezi | Girişte ayarlanan httpOnly çerez | Bir tarayıcıdaki dashboard |
| MCP OAuth | Onayda bağlanan bir OAuth 2.1 erişim token'ı | /api/mcp'ye bağlanan AI agent'lar |
| Sıfır-auth loopback | Hiçbir şey (127.0.0.1'den gelen istek) | Masaüstü uygulaması / isteğe bağlı tek kullanıcılı instance |
curl https://your-host/api/projects \
-H "Authorization: Bearer $ALAFSERVER_TOKEN"Bearer yalnızca tarayıcı dışı istemciler içindir
Tarayıcı tarafından güvenilen bir kaynaktan sunulan bir Bearer token'ı reddedilir (BEARER_NOT_ALLOWED_FROM_BROWSER), böylece sızdırılmış bir oturum token'ı httpOnly çerezi dışında tekrar oynatılamaz. Bir token kuruluş kapsamlı olabilir (uyuşmayan bir X-Organization-Id'yi TOKEN_ORG_SCOPE ile reddeder) ve salt okunur olabilir (değişiklikleri TOKEN_READ_ONLY ile reddeder). MCP OAuth keşfi, kaynak kökünde sunulur: /.well-known/oauth-authorization-server ve /.well-known/oauth-protected-resource.
İzinler
Kimlik doğrulandıktan sonra, her route bir izin kontrolü çalıştırır. Her route resource:action — project:read, domain:write, deployment:admin — şeklinde bir etiket bildirir ve alt kaynaklar araya bir segment ekler (project:service:write). Eylem, HTTP yöntemiyle uyumludur: read (bir tane GET), write (POST/PUT/PATCH), admin (DELETE ve yıkıcı), list (bir koleksiyon GET).
Erişim kuruluş başına belirlenir. Alaf Server, X-Organization-Id header'ından (oturum varsayılanınıza geri döner) hangi kuruluşu kastettiğinizi çözer, ardından oradaki rolünüzü kontrol eder — owner, admin, member veya restricted (yalnızca yetki). Herhangi bir route'un etiketi eksikse Alaf Server önyüklemeyi reddeder, bu nedenle yanlışlıkla korunmasız bir endpoint yoktur. Modül sayfalarındaki endpoint başına tablolar, her route için etiketi listeler; tam model için İzinler ve roller bölümüne bakın.
Hız limitleri
Tüm /api yüzeyi hız limitine tabidir. Kimliği doğrulanmamış istekler IP başına varsayılan bir limite tabi iken; kimliği doğrulanmış istekler kullanıcı başına daha cömert bir bütçe alır. Bazı route grupları daha sıkı veya daha gevşek adlandırılmış bir politika taşır. Limitler her dönen dakika içindir.
| Politika | Limit | Anahtar | Uygulandığı yer |
|---|---|---|---|
default-anon | 100 / dak | IP | Kimliği doğrulanmamış herhangi bir route |
default-authed | 600 / dak | kullanıcı | Kimliği doğrulanmış herhangi bir route |
auth-tight | 10 / dak | IP | POST /api/auth/* (giriş, kayıt, sıfırlama) |
mcp | 300 / dak | IP | /api/mcp (araç çağrısı patlamaları) |
webhook-ingress | 120 / dak | kaynak IP | Gelen webhook teslimatları |
billing-portal | 20 / dak | kuruluş | Stripe portalı / ödeme oluşturma |
Her yanıt X-RateLimit-Limit, X-RateLimit-Remaining ve X-RateLimit-Reset header'larını taşır. /api/health asla sınırlanmaz (load balancers ve SSR onu sorgular).
429 — Çok fazla istek
Bir kova tükendiğinde, istek {"error":"Too many requests"} gövdesi ve bir Retry-After header'ı (saniye) ile 429 alır. Hemen yeniden denemek yerine pencere sıfırlanana kadar bekleyin.
Hata yapısı
Hatalar, kararlı bir yapıyla JSON olarak geri döner: insan tarafından okunabilir bir error mesajı ve, tipik hatalar için, makine tarafından okunabilir bir code. Doğrulama hataları, alan düzeyinde bir details haritası ekler.
{ "error": "This access token is read-only", "code": "TOKEN_READ_ONLY" }| Durum | Tipik code | Anlamı |
|---|---|---|
400 | VALIDATION_ERROR | İstek gövdesi şemayı geçemedi — hatalı alanlar için details'a bakın. |
401 | INVALID_TOKEN, BEARER_NOT_ALLOWED_FROM_BROWSER | Kimliği doğrulanmadı veya kötü/süresi dolmuş bir token (hiç oturum yoksa düz Unauthorized). |
403 | TOKEN_ORG_SCOPE, TOKEN_READ_ONLY | Kimliği doğrulandı ancak izin verilmedi — yanlış kuruluş, salt okunur token veya rolünüz/yetkileriniz eylemi reddediyor. |
404 | — | Kaynak mevcut değil veya kuruluşunuzda değil (IDOR-güvenli). |
409 | — | Mevcut durumla çakışma (örn. zaten devam eden bir silme işlemi). |
429 | — | Hız limitine takıldı (yukarıya bakın). |
503 | AUTH_UNAVAILABLE | auth backend'ine ulaşılamıyor — yeniden deneyin; asla "oturum yok" olarak değerlendirilmez. |
500 | — | İşlenmeyen server hatası ({"error":"Internal server error"}, kod yok). |
Route grupları ve kullanılabilirlik
Route'lar modül başına monte edilir. Çoğu her deploy modunda mevcuttur; birkaçı yalnızca self-hosted'dir (ana bilgisayar dosya sistemine, SSH'ye veya yerel kuruluma dokunurlar ve bulut modunda asla yüklenmezler) ve bulut gateway'i route setini moda göre değiştirir.
| Temel yol | Kapsar | Kullanılabilirlik |
|---|---|---|
/api/health | Liveness + genel deploy meta verileri | Her ikisi de (kimliği doğrulanmamış) |
/api/auth | Oturumlar, OAuth, kuruluş yönetimi (Better Auth) | Her ikisi de |
/api/projects | Projeler, env, deploy yapılandırması | Her ikisi de |
/api/projects/:id/services | Bir proje içindeki servisler | Her ikisi de |
/api/deployments | Build'ler, deploy'lar, geri almalar | Her ikisi de |
/api/domains | Özel domain'ler, DNS, SSL | Her ikisi de |
/api/github | GitHub bağlantısı, repo'lar, webhooks | Her ikisi de |
/api/webhooks | Gelen sağlayıcı webhooks'ları ( /api/webhooks/backup da) | Her ikisi de |
/api/analytics | Trafik, kullanım, deployment istatistikleri | Her ikisi de |
/api (backups) | Yedekleme çalıştırmaları ve geri yüklemeler | Her ikisi de |
/api/backup-destinations | Yedekleme hedefleri, politikaları, zamanlamaları | Her ikisi de |
/api/notifications | Kanallar, abonelikler, teslimatlar | Her ikisi de |
/api/audit | Kuruluş denetim günlüğü | Her ikisi de |
/api/settings | Çalışma alanı / deploy varsayılanları | Her ikisi de |
/api/tokens | Kişisel erişim token'ları | Her ikisi de |
/api/permissions | Roller ve kaynak yetkileri | Her ikisi de |
/api/billing | Planlar, kullanım, ödeme | Her ikisi de (moda özgü uzantılar) |
/api/mcp | Model Context Protocol JSON-RPC endpoint'i | Her ikisi de |
/api/images | Container image yardımcıları | Her ikisi de |
/api/services/terminal | Etkileşimli servis terminali (WebSocket) | Her ikisi de |
/api/cloud | Cloud hesap bağlantısı / gateway | Her ikisi de (SaaS vs yerel route seti) |
/api/system | Dosya sistemi tarama, instance kurulumu, provisioning | Yalnızca self-hosted |
/api/mail | Self-hosted mail server sihirbazı | Yalnızca self-hosted |
/api/migration | Mevcut bir Docker host'unu benimseme | Yalnızca self-hosted |
/api/terminal | Etkileşimli server (SSH) terminali | Yalnızca self-hosted |
Modül referansı
Health
Genel liveness ve deployment-info prob'ları.
Auth
Oturumlar, OAuth ve kuruluş yönetimi.
Projects
Projeler, env değişkenleri ve deploy ayarları oluşturun ve yapılandırın.
Services
Bir projeyi oluşturan servisleri yönetin.
Deployments
Build'leri tetikleyin, deploy edin, iptal edin, yeniden başlatın ve geri alın.
Domains
Domain'leri bağlayın, DNS'i önizleyin ve doğrulayın, SSL'i yönetin.
GitHub
Hesapları bağlayın, repo'lara göz atın ve push auto-deploy'u bağlayın.
Webhooks
Bir push'u bir deploy'a dönüştüren gelen sağlayıcı webhooks'ları.
Analytics
Trafik, kullanım, container ve deployment metrikleri.
Backups
Yedekleme çalıştırmaları, geri yüklemeler ve durumları.
Backup destinations
Yedekleme hedefleri, politikaları ve zamanlamaları.
Notifications
Kanallar, abonelikler ve uyarı akışı.
Audit
Kuruluşun denetim günlüğünü okuyun.
Settings
Çalışma alanı build ve deploy varsayılanları.
Tokens
Kişisel erişim token'ları oluşturun ve iptal edin.
Permissions
Rolleri ve kaynak başına yetkileri yönetin.
Billing
Planlar, kullanım ve ödeme.
MCP
AI agent'ları için Model Context Protocol endpoint'i.
Images
Servisler için build-image kataloğuna göz atın.
Service terminal
Çalışan bir servis container'ına bir shell açın.
Cloud
Bir instance'ı Alaf Server Cloud'a ve kontrol düzlemi endpoint'lerine bağlayın.
System
Self-hosted instance yönetimi (yalnızca self-hosted).
Self-hosted bir mail stack'i kurun ve çalıştırın (yalnızca self-hosted).
Migration
Mevcut bir Docker host'unu proje olarak benimseyin (yalnızca self-hosted).
Terminal
Yönetilen bir server'a etkileşimli SSH shell'i (yalnızca self-hosted).
Access & the raw API
Log in, switch between instances with contexts, manage personal access tokens, and call any API route directly with alaf server api.
Projeler API'si
Projeler oluşturun ve yapılandırın, bir git deposu bağlayın, ortam değişkenlerini ve kaynakları yönetin, logları okuyun, yüklenmiş bir klasörü deploy edin ve projeleri Alaf Server Cloud'a ve Alaf Server Cloud'dan transfer edin.