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.
Bir proje, Alaf Server'ın build ettiği ve çalıştırdığı birimdir: bir kaynak (bir git deposu, yerel bir yol veya yüklenmiş bir klasör), build yapılandırması, ortam değişkenleri, kaynak limitleri, domainler ve deployment geçmişi. dashboard'da bu, bir projenin sayfaları altındaki her şeydir; terminalden ise alaf server projects komutudur.
Temel yol ve kimlik doğrulama
Tüm yollar, örneğin https://your-host/api/projects gibi, /api altında, instance'ınıza göredir. alaf server token create ile oluşturulmuş kişisel bir access token'ı bearer header olarak (Authorization: Bearer <token>) gönderin. dashboard bunun yerine oturum çerezinizi kullanır. Ayrıntılar için API genel bakışına ve kimlik doğrulama modeline bakın.
Her iki mod, birkaç self-hosted'a özel rota ile
Projeler API'si hem self-hosted instance'larda hem de Alaf Server Cloud'da sunulur. Bir self-hosted instance'da, projeye özel rotalar, bulutta bulunan herhangi bir proje için SaaS'e şeffaf bir şekilde proxy yapar. Aşağıda † ile işaretlenmiş satırlar yalnızca self-hosted'a özeldir (yerel dosya sistemi, edge route kuralları, klasör yükleme relay'i ve bulut transferi) ve SaaS'te 404 döndürür.
Uç Noktalar
| Metot ve yol | İzin | Ne işe yarar |
|---|---|---|
GET /api/projects | project:list | Organizasyondaki projeleri listeler. |
POST /api/projects | project:write | Bir git veya yerel kaynaktan proje oluşturur (build yapılandırması dahil). |
GET /api/projects/home | project:list | Ana akış — yerel + bulut projeleri sunucu tarafında birleştirilir. |
POST /api/projects/ensure | project:write | Build yapılandırmasını içeren projeyi oluşturur veya günceller (klasör yükleme adım 3). |
GET /api/projects/local † | project:list | Yerel dosya sistemi projelerini listeler. |
POST /api/projects/scan † | project:write | Build yapılandırmasını tespit etmek için yerel bir klasörü tarar. |
POST /api/projects/import † | project:write | Yerel bir klasörü proje olarak import eder. |
GET /api/projects/:id | project:read | Bir projeyi alır — yapılandırma, kaynak, rotalar, durum. |
PATCH /api/projects/:id | project:write | Bir projenin yapılandırmasını günceller. |
DELETE /api/projects/:id | project:admin | Bir projeyi siler. |
GET /api/projects/:id/info | project:read | Detaylı bilgi (runtime, build, kaynak). |
GET /api/projects/:id/deletion-preview | project:read | Projeyi silmenin neleri kaldıracağını önizler. |
GET /api/projects/:id/environments | project:read | Ortamları listeler (production / preview'lar). |
POST /api/projects/:id/environments | project:write | Bir ortam oluşturur (örn. bir preview). |
POST /api/projects/:id/options | project:write | Build/deploy seçeneklerini ayarlar. |
POST /api/projects/:id/enable | project:write | Projeyi etkinleştirir (deploy'lara izin verir / çevrimiçi yapar). |
POST /api/projects/:id/disable | project:write | Projeyi devre dışı bırakır (deploy'ları duraklatır / çevrimdışı yapar). |
POST /api/projects/:id/routing/retry | project:write | Ücretsiz .opsh.io edge route'unu senkronize etmeyi yeniden dener (rebuild yok). |
GET /api/projects/:id/env | project:read | Ortam değişkenlerini listeler (gizli değerler maskelenir). |
PATCH /api/projects/:id/env | project:write | Ortam değişkeni değişikliklerini birleştirir (upsert'ler + silmeler). |
GET /api/projects/:id/clone-token | project:read | Projeye özel git clone kimlik bilgisini alır. |
PATCH /api/projects/:id/clone-token | project:admin | Projeye özel clone kimlik bilgisini ayarlar/değiştirir. |
GET /api/projects/:id/git | project:read | Bağlı git deposu bilgisini alır. |
GET /api/projects/:id/commit-status | project:read | Deploy edilmiş commit'i uzak HEAD ile karşılaştırır. |
POST /api/projects/:id/git/link | project:write | Bir git deposunu projeye bağlar. |
GET /api/projects/:id/branches | project:read | Bağlı deponun branch'lerini listeler. |
POST /api/projects/:id/auto-deploy | project:write | Push'ta auto-deploy'u etkinleştirir/devre dışı bırakır. |
POST /api/projects/:id/webhook-domain | project:write | Git webhook teslimatı için kullanılan domain'i ayarlar. |
POST /api/projects/:id/branch | project:write | Deploy branch'ini ayarlar. |
GET /api/projects/:id/resources | project:read | CPU/RAM/disk kaynak yapılandırmasını alır. |
PATCH /api/projects/:id/resources | project:write | CPU/RAM/disk, sleep mode veya portu günceller. |
POST /api/projects/:id/resources | project:write | Kaynakları günceller (PATCH'in POST takma adı). |
POST /api/projects/:id/sleep-mode | project:write | Sleep mode'u ayarlar (auto_sleep / always_on). |
GET /api/projects/:id/deployments | project:deployment:list | Projenin deployment'larını listeler. |
POST /api/projects/:id/deployment-session | project:read | Salt okunur bir deployment/build oturumu açar. |
POST /api/projects/:id/connect | project:write | Bir özel domain'i birincil domain olarak bağlar. |
GET /api/projects/:id/logs | project:read | Runtime loglarını getirir (akışsız). |
GET /api/projects/:id/logs/stream | project:read | Runtime loglarını akışla sağlar. |
GET /api/projects/:id/server-logs/recent | project:read | Son HTTP request logları. |
GET /api/projects/:id/server-logs/stream-token | project:read | Server-log akışı için bir token oluşturur. |
GET /api/projects/:id/server-logs/stream | project:read | HTTP request loglarını akışla sağlar. |
GET /api/projects/:id/route-rules † | project:read | Edge route kurallarını listeler (rate-limit / ban / allow-deny). |
POST /api/projects/:id/route-rules † | project:write | Bir edge route kuralı oluşturur. |
PATCH /api/projects/:id/route-rules/:ruleId † | project:write | Bir route kuralını günceller. |
DELETE /api/projects/:id/route-rules/:ruleId † | project:write | Bir route kuralını siler. |
POST /api/projects/folder/session | project:write | Bir klasör yükleme oturumu açar (adım 1). |
POST /api/projects/folder/scan/:sessionId | project:write | Yüklenen kaynağın build yapılandırmasını tespit eder (adım 2). |
POST /api/projects/folder/upload/:sessionId † | project:write | Gzip'lenmiş tarball'ı yükler (self-hosted relay, 300 MB limit). |
POST /api/projects/:id/transfer/to-cloud † | project:admin | Yerel bir projeyi Alaf Server Cloud'a yükseltir. |
POST /api/projects/:id/transfer/to-self-hosted † | project:admin | Bir bulut projesini bu instance'a geri getirir. |
Proje Oluştur
POST /api/projectsBir git deposundan veya yerel bir yoldan proje oluşturun, build yapılandırmasını proje satırına dahil edin. Yüklenmiş bir klasör için bunun yerine klasör yükleme akışını kullanın. Yalnızca name zorunludur — diğer her şey otomatik olarak algılanır veya varsayılan olarak ayarlanır.
Prop
Type
curl -X POST https://your-host/api/projects \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"marketing-site","gitOwner":"acme","gitRepo":"site","gitBranch":"main","framework":"nextjs"}'# Same thing from the CLI:
alaf server projects createProje oluşturmak onu deploy etmez
POST /api/projects yalnızca projeyi ve yapılandırmasını kaydeder. İlk build'i Deployments API'si (POST /api/deployments) veya alaf server deploy ile tetikleyin.
Projeyi Güncelle
PATCH /api/projects/:idGüncelleme gövdesi, oluşturma gövdesinin kısmi bir halidir — yalnızca değiştirmek istediğiniz alanları gönderin. Yukarıdaki her alan burada kabul edilir ve isteğe bağlıdır.
curl -X PATCH https://your-host/api/projects/proj_123 \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"buildCommand":"pnpm build","gitBranch":"release"}'alaf server projects update proj_123 --build-command "pnpm build"Bir Git Deposu Bağla
POST /api/projects/:id/git/linkMevcut bir projeye bir GitHub deposu bağlayın (veya yeniden yönlendirin). branch atlandığında, deponun varsayılan branch'i kullanılır.
Prop
Type
curl -X POST https://your-host/api/projects/proj_123/git/link \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"owner":"acme","repo":"site","branch":"main"}'İlgili git rotaları: POST /api/projects/:id/branch (deploy branch'ini değiştirir), POST /api/projects/:id/auto-deploy (push'ta auto-deploy'u açar/kapatır), GET /api/projects/:id/branches ve GET /api/projects/:id/commit-status (deploy edilmiş commit uzak HEAD'in gerisinde mi?). GitHub App'i bağlamak için GitHub API'sine bakın.
Özel Bir Domain Bağla
POST /api/projects/:id/connectBir domain'i projeye ekleyen ve tek bir çağrıda birincil olarak işaretleyen bir kısayoldur. Tam domain yaşam döngüsü (DNS preview, doğrulama, SSL) için Domainler API'sini kullanın.
Prop
Type
curl -X POST https://your-host/api/projects/proj_123/connect \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domain":"app.example.com"}'Ortam Değişkenleri
GET /api/projects/:id/env
PATCH /api/projects/:id/envGET, gizli değerleri maskelenmiş projenin değişkenlerini listeler. Yazma işlemleri bir birleştirme yoluyla gerçekleşir: yalnızca adlandırdığınız anahtarlara dokunulur — upsert'ler eklenir/güncellenir, delete'ler kaldırılır ve diğer tüm değişkenler (dokunulmamış maskelenmiş gizli bilgiler dahil) olduğu gibi bırakılır.
Prop
Type
curl -X PATCH https://your-host/api/projects/proj_123/env \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"environment": "production",
"upserts": [{"key":"DATABASE_URL","value":"postgres://…","isSecret":true}],
"deletes": ["OLD_FLAG"]
}'alaf server env set DATABASE_URL="postgres://…" --project proj_123 --secretTam değiştirme uç noktası yok
Eski yıkıcı PUT /:id/env kaldırıldı — maskelenmiş gizli bilgileri silebilir veya bozabilirdi. Her zaman birleştirme PATCH aracılığıyla bir diff gönderin.
Kaynaklar
GET /api/projects/:id/resources
PATCH /api/projects/:id/resources
POST /api/projects/:id/resourcesCPU/RAM/disk tahsisini (production ve build için ayrı ayrı), sleep davranışını ve dinleme portunu okuyun veya güncelleyin. POST, PATCH'in bir takma adıdır. Tüm alanlar isteğe bağlıdır; yalnızca değiştirmek istediklerinizi gönderin.
Prop
Type
curl -X PATCH https://your-host/api/projects/proj_123/resources \
-H "Authorization: Bearer $ALAFSERVER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"production":{"cpuCores":1,"memoryMb":1024},"sleepMode":"always_on"}'Sleep mode'un ayrıca kendi kısayol rotası da vardır: POST /api/projects/:id/sleep-mode.
Ortam Oluştur
POST /api/projects/:id/environmentsProp
Type
Klasör Yükleme Deploy'u
API ile dosya sistemi paylaşmayan bir tarayıcıdan veya client'tan yerel bir klasörü deploy edin. Akış dört adımdan oluşur; ikili tarball yüklemesi bant dışı gerçekleşir (ham baytlar, JSON değil).
1. Bir oturum aç
POST /api/projects/folder/session → bir upload hedefi { url, method, headers } döndürür.
2. Tarball'ı yükle
Gzip'lenmiş tarball'ı Content-Type: application/gzip ile upload.url adresine POST edin. Self-hosted'da bu, POST /api/projects/folder/upload/:sessionId (300 MB limit) aracılığıyla iletilir.
3. Tara
POST /api/projects/folder/scan/:sessionId stack'i, package manager'ı ve build/start komutlarını tespit eder.
4. Sağla + deploy et
Taramayı POST /api/projects/ensure (projeyi oluştur/güncelle) içine besleyin, ardından POST /api/deployments/build/access aracılığıyla deploy edin.
Oturum gövdesi (POST /api/projects/folder/session) hafif bir ipucudur — tüm alanlar isteğe bağlıdır:
Prop
Type
POST /api/projects/ensure, tam oluşturma gövdesini ve yeni bir proje oluşturmak yerine mevcut bir projeyi yerinde güncellemek için isteğe bağlı bir projectId alır. Bir klasör yükleme projesi için gitProvider: "upload" olarak ayarlayın.
Buluta / Buluttan Transfer
POST /api/projects/:id/transfer/to-cloud † self-hosted only
POST /api/projects/:id/transfer/to-self-hosted † self-hosted onlyYerel bir projeyi Alaf Server Cloud'a yükseltin veya bir bulut projesini bu instance'a geri çekin. Bunlar SaaS'te anlamsızdır (çünkü o buluttur) ve orada 404 döndürür. Her ikisi de project:admin gerektirir.
curl -X POST https://your-host/api/projects/proj_123/transfer/to-cloud \
-H "Authorization: Bearer $ALAFSERVER_TOKEN"Görebileceğiniz Hatalar
400 — doğrulama başarısız oldu
Bir alan eksik veya aralık dışı (örn. name boş, 4'ün üzerinde bir cpuCores veya owner/repo olmadan git/link). Yanıt, sorunlu alanı adlandırır.
403 — yetersiz izin
Token'ınız veya rolünüz rotanın etiketinden yoksun — silme işlemleri project:admin, yazma işlemleri project:write gerektirir. İzin modeline bakın.
Projeye özel bir rotada 404
:id organizasyonunuza ait değil (veya silindi). Yalnızca self-hosted'a özel bir rota († ile işaretlenmiş) Alaf Server Cloud'da çağrıldığında da 404 döndürür. Geçerli ID'leri almak için projelerinizi GET /api/projects ile listeleyin.
API'ye genel bakış
Alaf Server HTTP API'si — temel URL, kimlik doğrulama, izinler, hız limitleri ve standart JSON hata yapısı.
Deployments API
Derlemeleri tetikleyin, git'ten veya yüklenmiş bir klasörden deploy edin, ardından bir projenin sürümlerinin yaşam döngüsünü inceleyin, yeniden deploy edin, geri alın ve yönetin.