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.

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İzinNe işe yarar
GET /api/projectsproject:listOrganizasyondaki projeleri listeler.
POST /api/projectsproject:writeBir git veya yerel kaynaktan proje oluşturur (build yapılandırması dahil).
GET /api/projects/homeproject:listAna akış — yerel + bulut projeleri sunucu tarafında birleştirilir.
POST /api/projects/ensureproject:writeBuild yapılandırmasını içeren projeyi oluşturur veya günceller (klasör yükleme adım 3).
GET /api/projects/localproject:listYerel dosya sistemi projelerini listeler.
POST /api/projects/scanproject:writeBuild yapılandırmasını tespit etmek için yerel bir klasörü tarar.
POST /api/projects/importproject:writeYerel bir klasörü proje olarak import eder.
GET /api/projects/:idproject:readBir projeyi alır — yapılandırma, kaynak, rotalar, durum.
PATCH /api/projects/:idproject:writeBir projenin yapılandırmasını günceller.
DELETE /api/projects/:idproject:adminBir projeyi siler.
GET /api/projects/:id/infoproject:readDetaylı bilgi (runtime, build, kaynak).
GET /api/projects/:id/deletion-previewproject:readProjeyi silmenin neleri kaldıracağını önizler.
GET /api/projects/:id/environmentsproject:readOrtamları listeler (production / preview'lar).
POST /api/projects/:id/environmentsproject:writeBir ortam oluşturur (örn. bir preview).
POST /api/projects/:id/optionsproject:writeBuild/deploy seçeneklerini ayarlar.
POST /api/projects/:id/enableproject:writeProjeyi etkinleştirir (deploy'lara izin verir / çevrimiçi yapar).
POST /api/projects/:id/disableproject:writeProjeyi devre dışı bırakır (deploy'ları duraklatır / çevrimdışı yapar).
POST /api/projects/:id/routing/retryproject:writeÜcretsiz .opsh.io edge route'unu senkronize etmeyi yeniden dener (rebuild yok).
GET /api/projects/:id/envproject:readOrtam değişkenlerini listeler (gizli değerler maskelenir).
PATCH /api/projects/:id/envproject:writeOrtam değişkeni değişikliklerini birleştirir (upsert'ler + silmeler).
GET /api/projects/:id/clone-tokenproject:readProjeye özel git clone kimlik bilgisini alır.
PATCH /api/projects/:id/clone-tokenproject:adminProjeye özel clone kimlik bilgisini ayarlar/değiştirir.
GET /api/projects/:id/gitproject:readBağlı git deposu bilgisini alır.
GET /api/projects/:id/commit-statusproject:readDeploy edilmiş commit'i uzak HEAD ile karşılaştırır.
POST /api/projects/:id/git/linkproject:writeBir git deposunu projeye bağlar.
GET /api/projects/:id/branchesproject:readBağlı deponun branch'lerini listeler.
POST /api/projects/:id/auto-deployproject:writePush'ta auto-deploy'u etkinleştirir/devre dışı bırakır.
POST /api/projects/:id/webhook-domainproject:writeGit webhook teslimatı için kullanılan domain'i ayarlar.
POST /api/projects/:id/branchproject:writeDeploy branch'ini ayarlar.
GET /api/projects/:id/resourcesproject:readCPU/RAM/disk kaynak yapılandırmasını alır.
PATCH /api/projects/:id/resourcesproject:writeCPU/RAM/disk, sleep mode veya portu günceller.
POST /api/projects/:id/resourcesproject:writeKaynakları günceller (PATCH'in POST takma adı).
POST /api/projects/:id/sleep-modeproject:writeSleep mode'u ayarlar (auto_sleep / always_on).
GET /api/projects/:id/deploymentsproject:deployment:listProjenin deployment'larını listeler.
POST /api/projects/:id/deployment-sessionproject:readSalt okunur bir deployment/build oturumu açar.
POST /api/projects/:id/connectproject:writeBir özel domain'i birincil domain olarak bağlar.
GET /api/projects/:id/logsproject:readRuntime loglarını getirir (akışsız).
GET /api/projects/:id/logs/streamproject:readRuntime loglarını akışla sağlar.
GET /api/projects/:id/server-logs/recentproject:readSon HTTP request logları.
GET /api/projects/:id/server-logs/stream-tokenproject:readServer-log akışı için bir token oluşturur.
GET /api/projects/:id/server-logs/streamproject:readHTTP request loglarını akışla sağlar.
GET /api/projects/:id/route-rulesproject:readEdge route kurallarını listeler (rate-limit / ban / allow-deny).
POST /api/projects/:id/route-rulesproject:writeBir edge route kuralı oluşturur.
PATCH /api/projects/:id/route-rules/:ruleIdproject:writeBir route kuralını günceller.
DELETE /api/projects/:id/route-rules/:ruleIdproject:writeBir route kuralını siler.
POST /api/projects/folder/sessionproject:writeBir klasör yükleme oturumu açar (adım 1).
POST /api/projects/folder/scan/:sessionIdproject:writeYüklenen kaynağın build yapılandırmasını tespit eder (adım 2).
POST /api/projects/folder/upload/:sessionIdproject:writeGzip'lenmiş tarball'ı yükler (self-hosted relay, 300 MB limit).
POST /api/projects/:id/transfer/to-cloudproject:adminYerel bir projeyi Alaf Server Cloud'a yükseltir.
POST /api/projects/:id/transfer/to-self-hostedproject:adminBir bulut projesini bu instance'a geri getirir.

Proje Oluştur

POST /api/projects

Bir 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 create

Proje 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/:id

Gü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/link

Mevcut 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/connect

Bir 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/env

GET, 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 --secret

Tam 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/resources

CPU/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/environments

Prop

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 only

Yerel 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.

On this page