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 | İzin | Ne yapar |
|---|---|---|
GET /api/notifications/categories | notifications:read | Bildirim kategorilerini listeler (olay türleri kaydı). |
GET /api/notifications/channels | notifications:read | Çağıranın bildirim kanallarını listeler (email, webhook vb.). |
POST /api/notifications/channels | notifications:write | Bir bildirim kanalı oluşturur. |
PATCH /api/notifications/channels/:id | notifications:write | Bir bildirim kanalını günceller. |
DELETE /api/notifications/channels/:id | notifications:write | Bir bildirim kanalını siler. |
GET /api/notifications/subscriptions | notifications:read | Çağıranın bildirim aboneliklerini listeler. |
PUT /api/notifications/subscriptions | notifications:write | Bir bildirim aboneliği oluşturur veya günceller. |
DELETE /api/notifications/subscriptions/:id | notifications:write | Bir bildirim aboneliğini siler. |
GET /api/notifications/defaults | notifications:read | Kuruluş varsayılan bildirim ayarlarını listeler. |
PUT /api/notifications/defaults | notifications:admin | Bir kuruluş varsayılanını upsert eder. |
GET /api/notifications/deliveries | notifications:read | Bildirim teslimatlarını listeler (uygulama içi uyarı akışı). |
GET /api/notifications/deliveries/unseen-count | notifications:read | Görülmemiş bildirimleri sayar (zil rozeti için). |
POST /api/notifications/deliveries/:id/seen | notifications:write | Bir 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/channelsProp
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/:idProp
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/subscriptionsProp
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/defaultsProp
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/deliveriesProp
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.