API

Bildirimler API'si

Teslimat kanallarını, etkinlik bazında abonelikleri, kuruluş varsayılanlarını ve uygulama içi uyarı akışını yönetin.

Bildirimler API'si, başarısız bir deploy veya süresi dolan bir SSL sertifikası gibi olayları kimin ve nasıl duyacağına karar verir. Kanalları (uyarıların nereye gideceği — email, webhook, Slack veya uygulama içi zil), abonelikleri (hangi etkinlik kategorilerinin her kanala ulaşacağı) ayarlarsınız, yeni üyeler için kuruluş genelinde varsayılanları belirlersiniz ve teslimatları (zil simgesinin arkasındaki uyarı akışı) okursunuz. Dashboard'da bu, Ayarlar → Bildirimler sayfasıdır. Kanallar, abonelikler ve teslimatlar kullanıcı bazındadır; varsayılanlar kuruluş bazındadır.

Temel yol ve kimlik doğrulama

Tüm yollar, örneğin https://your-host/api/notifications/channels gibi, örneğinizin altında /api'ye göredir. alaf server token create ile oluşturulmuş bir kişisel erişim token'ını bearer header (Authorization: Bearer <token>) olarak 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 örnekte mevcut

Bu modül hem self-hosted hem de cloud örneklerinde bulunur. Özel bir alaf server CLI komutu yoktur — bildirimleri dashboard'dan veya doğrudan bu endpoint'lerden yönetin.

Endpoint'ler

Method & pathİzinNe yapar
GET /api/notifications/categoriesnotifications:readBildirim kategorilerini listeler (olay türleri kaydı).
GET /api/notifications/channelsnotifications:readÇağıranın bildirim kanallarını listeler (email, webhook vb.).
POST /api/notifications/channelsnotifications:writeBir bildirim kanalı oluşturur.
PATCH /api/notifications/channels/:idnotifications:writeBir bildirim kanalını günceller.
DELETE /api/notifications/channels/:idnotifications:writeBir bildirim kanalını siler.
GET /api/notifications/subscriptionsnotifications:readÇağıranın bildirim aboneliklerini listeler.
PUT /api/notifications/subscriptionsnotifications:writeBir bildirim aboneliği oluşturur veya günceller.
DELETE /api/notifications/subscriptions/:idnotifications:writeBir bildirim aboneliğini siler.
GET /api/notifications/defaultsnotifications:readKuruluş varsayılan bildirim ayarlarını listeler.
PUT /api/notifications/defaultsnotifications:adminBir kuruluş varsayılanını upsert eder.
GET /api/notifications/deliveriesnotifications:readBildirim teslimatlarını listeler (uygulama içi uyarı akışı).
GET /api/notifications/deliveries/unseen-countnotifications:readGörülmemiş bildirimleri sayar (zil rozeti için).
POST /api/notifications/deliveries/:id/seennotifications:writeBir teslimatı görüldü olarak işaretler.

Sahiplik işleyiciler içinde uygulanır

notifications:* etiketleri yalnızca aktif kuruluşun bir üyesi olup olmadığınızı kontrol eder. Bunun ötesinde, kanallar, abonelikler ve teslimatlar sizin kullanıcınızla sınırlıdır — başka bir üyeninkini okuyamaz veya değiştiremezsiniz. Sahip olmadığınız bir kimlik için kullanıcı bazında bir yol 404 döndürür.

Kategoriler

Kategoriler, aboneliklerin ve varsayılanların dayandığı kararlı, kullanıcıya dönük olay gruplarıdır (örn. deploy.failed, backup.failed, domain.expiring). Bunlar veritabanında değil, kodda bulunur, bu nedenle GET /api/notifications/categories statik bir kayıttır — her girişin bir id, label, description ve defaultEnabled değeri vardır.

curl https://your-host/api/notifications/categories \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN"

Kanal Oluşturma

Bir kanal bir hedeftir. config nesnesi kind başına şekil kontrolünden geçirilir; içindeki sırlar (webhook imzalama anahtarları, Slack URL'leri) şifrelenmiş olarak saklanır ve asla tam olarak döndürülmez.

POST /api/notifications/channels

Prop

Type

config şekli kind'a bağlıdır:

Prop

Type

curl -X POST https://your-host/api/notifications/channels \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"kind":"email","label":"On-call inbox","config":{"address":"ops@example.com"}}'

Yeni kanallar enabled: true ile başlar. Bir in_app kanalı hemen verified olur; diğer her tür doğrulanmamış olarak başlar ve teslimat yapmadan önce doğrulanmalıdır (bir test gönderimi aracılığıyla) — verified durumunu PATCH ile değiştirin.

Kanal Güncelleme

Yalnızca değiştirmek istediğiniz alanları gönderin. in_app olmayan bir kanalda config'i değiştirmek, hedef taşınmış olabileceğinden verified durumunu false olarak sıfırlar.

PATCH /api/notifications/channels/:id

Prop

Type

Bir Kanalı Bir Kategoriye Abone Etme

Bir abonelik, (kullanıcı, kuruluş, kategori, kanal) ızgarasındaki bir anahtardır. PUT, idempotent bir upsert'tir — enabled durumunu değiştirmek için aynı üçlüyü tekrar gönderin. channelId, sahip olduğunuz bir kanal olmalıdır.

PUT /api/notifications/subscriptions

Prop

Type

curl -X PUT https://your-host/api/notifications/subscriptions \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"category":"deploy.failed","channelId":"chan_123","enabled":true}'

Kuruluş Varsayılanları

Varsayılanlar, kuruluşun yeni üyeleri için abonelik ızgarasını besler. Bir varsayılanı ayarlamak yalnızca yöneticiye özeldir (notifications:admin); okumak değildir.

PUT /api/notifications/defaults

Prop

Type

Uyarı Akışını Okuma

GET /api/notifications/deliveries, aktif kuruluştaki son teslimatlarınızı döndürür — bu, zil simgesinin arkasındaki geçmişi gösterir. GET /api/notifications/deliveries/unseen-count rozeti besler ve POST /api/notifications/deliveries/:id/seen birini temizler.

GET /api/notifications/deliveries

Prop

Type

curl "https://your-host/api/notifications/deliveries?unseen=true&limit=20" \
  -H "Authorization: Bearer $ALAFSERVER_TOKEN"

Görebileceğiniz Hatalar

400 — geçersiz kanal veya eksik alanlar

kind, email/webhook/in_app/slack'ten biri değil, label eksik veya config tür başına kontrolünü geçemedi (hatalı biçimlendirilmiş bir email, http(s) olmayan bir webhook URL'si veya https://hooks.slack.com/... olmayan bir Slack URL'si). Abonelikler category, channelId ve bir boolean enabled gerektirir; varsayılanlar category ve bir boolean defaultEnabled gerektirir.

Kullanıcı bazında bir yolda 404

Kanal, abonelik veya teslimat :id size ait değil (veya silindi). Geçerli kimlikleri almak için eşleşen GET yolu ile kendinize ait olanları listeleyin.

On this page