API

Yedeklemeler API'si

Yedekleme politikalarını planlayın, yedeklemeleri çalıştırın ve inceleyin, geri yüklemeleri hazırlayın ve uygulayın, ve webhook ile yedeklemeleri tetikleyin.

Backups API, bir projenin yedekleme politikalarını (neyin ve hangi programa göre yedekleneceğini), ürettikleri çalıştırmaları ve bir çalıştırmanın verilerini geri yükleyen geri yüklemeleri yönetir. Bu API, Yedekleme Hedefleri API'si (yedeklemelerin depolandığı yer) ile eşleşir — dashboard'da bu, projenin Yedeklemeler sekmesidir ve terminalden alaf server backup komutudur.

Temel yol ve kimlik doğrulama

Tüm yollar, örneğinizle ilişkilidir, /api altında bulunur — örn. https://your-host/api/backup-runs/<id>. alaf server token create ile oluşturulmuş kişisel bir erişim token'ını bearer header olarak (Authorization: Bearer <token>) gönderin. Dashboard bunun yerine oturum çerezinizi kullanır. Tam kimlik doğrulama modeli için API genel bakışına bakın.

Rotalar birkaç öneke ayrılmıştır: politika oluşturma ve listeleme proje kapsamlıdır (/api/projects/:projectId/backup-policies), mevcut bir politika, çalıştırma veya geri yükleme ise kendi kimliğiyle (/api/backup-policies/:id, /api/backup-runs/:id, /api/backup-restores/:id) ele alınır. Gelen POST /api/webhooks/backup tetikleyicisi, kendi kimlik doğrulaması olmayan önekinde bulunur. Hem self-hosted hem de cloud örneklerinde mevcuttur; proje kapsamlı politika ve çalıştırma rotaları, cloud projeleri için Alaf Server Cloud'a proxy yapar.

Uç Noktalar

Metot ve yolİzinNe işe yarar
GET /api/projects/:projectId/backup-policiesproject:writeBir projenin yedekleme politikalarını (programlar/saklama) listeler.
POST /api/projects/:projectId/backup-policiesproject:writeBir proje için yedekleme politikası oluşturur.
PATCH /api/backup-policies/:policyIdbackup_destination:backup_policy:writeBir politikayı günceller.
DELETE /api/backup-policies/:policyIdbackup_destination:backup_policy:writeBir politikayı siler.
POST /api/backup-policies/:policyId/runbackup_destination:backup_policy:writePolitikanın yedeklemesini şimdi tetikler.
GET /api/projects/:projectId/backup-runsproject:writeBir projenin yedekleme çalıştırmalarını (geçmiş, durum) listeler.
GET /api/backup-runs/:runIdbackup_destination:backup_run:readBir yedekleme çalıştırmasının ayrıntılarını/durumunu alır.
GET /api/backup-runs/:runId/streambackup_destination:backup_run:readBir çalıştırmanın canlı ilerlemesinin SSE akışı.
POST /api/backup-runs/:runId/protectbackup_destination:backup_run:writeBir çalıştırmayı saklama budamasından korur (veya serbest bırakır).
POST /api/backup-runs/:runId/restore/preparebackup_destination:backup_run:writeBir çalıştırmadan geri yükleme hazırlar; bir onay token'ı döndürür.
POST /api/backup-restores/:restoreId/applybackup_destination:backup_restore:writeHazırlanmış bir geri yüklemeyi uygular (yıkıcı).
POST /api/backup-restores/:restoreId/cancelbackup_destination:backup_restore:writeHazırlanmış veya devam eden bir geri yüklemeyi iptal eder.
GET /api/backup-restores/:restoreIdbackup_destination:backup_restore:readBir geri yüklemenin durumunu alır.
GET /api/backup-restores/:restoreId/streambackup_destination:backup_restore:readBir geri yüklemenin canlı ilerlemesinin SSE akışı.
POST /api/webhooks/backuppublicGelen bir webhook'tan yedeklemeyi tetikler (bearer token kimlik bilgisidir).

Kaynak başına rotalar ikinci bir izin kontrolü çalıştırır

Yukarıda gösterilen izin etiketinin ötesinde, çoğu :id rotası da bir işleyici içi kontrolü çalıştırır. Politika güncelleme, silme ve manuel çalıştırma rotaları üst projeyi yeniden kontrol eder (güncellemek veya çalıştırmak için yazma, admin silmek için). Çalıştırma ve geri yükleme rotaları bunun yerine çalıştırmanın veya geri yüklemenin kendisini kontrol eder: görüntülemek veya akış yapmak için okuma, bir çalıştırmayı korumak için yazma ve her yıkıcı geri yükleme adımı (hazırlama, uygulama, iptal) için admin. Kuruluşunuzda olmayan bir :id 404 döndürür.

Yedekleme politikası oluşturma

Bir politika, bir projeyi (isteğe bağlı olarak tek bir hizmeti) bir hedefe bağlar, ayrıca isteğe bağlı bir program ve saklama kuralları içerir. İstek gövdesi satır içi okunur (bu modül için TypeBox şema dosyası yoktur); destinationId tek gerekli alandır.

POST /api/projects/:projectId/backup-policies

Prop

Type

curl -X POST https://your-host/api/projects/proj_123/backup-policies \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"destinationId":"dst_abc","cronExpression":"0 3 * * *","retainCount":7}'
# CLI'dan aynı işlem:
alaf server backup policy create --project proj_123 --destination dst_abc \
  --cron "0 3 * * *" --retain-count 7

Bir politikayı güncelleme

PATCH yalnızca aşağıda izin verilen alanları kabul eder — projectId, serviceId ve createdBy değiştirilemez ve webhook token'ı doğrudan yazılmak yerine enableWebhook / rotateWebhookToken bayrakları aracılığıyla kontrol edilir. Bilinmeyen alanlar atılır.

PATCH /api/backup-policies/:policyId

Prop

Type

Bir yedeklemeyi manuel olarak tetikleme

Politika için bir çalıştırmayı hemen başlatır. { data: { runId } } döndürür — çalıştırma akışı ile takip edin.

POST /api/backup-policies/:policyId/run
curl -X POST https://your-host/api/backup-policies/bkp_abc/run \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN"
# Tetikle ve tamamlanana kadar akış yap:
alaf server backup policy run bkp_abc --follow

Bir çalıştırmayı saklamadan koruma

Saklama budaması, bir politikanın retainCount / retainDays değerini aşan çalıştırmaları siler. Bir çalıştırmayı saklamak için kilitleyin veya tekrar uygun hale gelmesi için kilidi serbest bırakın.

POST /api/backup-runs/:runId/protect

Prop

Type

# Süresiz olarak kilitle veya serbest bırak:
alaf server backup run protect run_xyz
alaf server backup run protect run_xyz --release

Bir geri yüklemeyi hazırlama ve uygulama

Geri yükleme iki adımdan oluşur. Hazırlama geri yüklemeyi hazırlar ve tek kullanımlık bir confirmationToken döndürür; uygulama ise (yıkıcı) geri yüklemeyi gerçekten çalıştırmak için bu token'ı geri yansıtır. Bu, kazara yeniden göndermelere karşı koruma sağlar.

POST /api/backup-runs/:runId/restore/prepare

Prop

Type

Yanıt { data: { restoreId, confirmationToken } } şeklindedir. Uygulamak için her ikisini de geçirin:

POST /api/backup-restores/:restoreId/apply

Prop

Type

# Hazırla, sonra döndürülen token ile uygula:
alaf server backup run restore run_xyz
alaf server backup restore apply rst_123 --token <confirmationToken>

Hazırlanmış veya devam eden bir geri yüklemeyi POST /api/backup-restores/:restoreId/cancel (alaf server backup restore cancel rst_123) ile iptal edin.

Canlı ilerleme (SSE)

Hem çalıştırmalar hem de geri yüklemeler, mevcut satırı hemen bir snapshot olayıyla, ardından canlı transition / progress olaylarıyla ve son bir complete olayıyla yayan bir Server-Sent Events kanalı sunar. Terminal durumları succeeded, failed, cancelled ve server_error'dır; akış, bunlardan birine ulaşıldığında (veya satır zaten terminal durumundaysa hemen) kapanır.

GET /api/backup-runs/:runId/stream
GET /api/backup-restores/:restoreId/stream
# CLI'ın --follow bayrağı bu akışları tüketir:
alaf server backup run get run_xyz --follow
alaf server backup restore get rst_123 --follow

Webhook ile yedeklemeyi tetikleme

POST /api/webhooks/backup tek kimlik doğrulaması olmayan rotadır — politika başına webhook token'ı kimlik bilgisidir ve bearer header olarak gönderilir (politikada enableWebhook aracılığıyla etkinleştirin). İstek gövdesi yoktur. Başarılı olduğunda { data: { runId } } döndürür; her başarısızlık opak bir 404 döndürür, böylece bir deneme kötü bir token'ı devre dışı bırakılmış bir politikadan ayırt edemez. Rota, tetikleme-sel baskınını engellemek için hız sınırlıdır.

POST /api/webhooks/backup
curl -X POST https://your-host/api/webhooks/backup \
  -H "Authorization: Bearer $POLICY_WEBHOOK_TOKEN"

Görebileceğiniz hatalar

400 — geçersiz cron ifadesi

createPolicy / updatePolicy cron'u önceden doğrular, böylece ayrıştırılamayan bir program politikayı sessizce devre dışı bırakamaz. İfadeyi düzeltin (örn. 0 3 * * *) ve tekrar deneyin.

400 — confirmationToken gerekli

restore/prepare tarafından döndürülen tam token olmadan bir geri yükleme uygulamak reddedilir. Kaybettiyseniz yeni bir token almak için hazırlama işlemini tekrar çalıştırın.

Kaynak başına rotada 404

:id kuruluşunuza ait değil (veya silindi) — webhook'un kötü bir token için döndürdüğü aynı opak 404. Geçerli kimlikleri almak için GET /api/projects/:projectId/backup-runs ile çalıştırmaları listeleyin.

On this page