Bildirimler
Uygulama içi bildirimler kullanıcı başına teslim edilir ve kimliği doğrulanmış kimliğe göre kapsama alınır. Tüm işlemler JWT aracılığıyla kimlik kapsamlıdır — istek gövdelerinde hiçbir çalışma alanı veya hesap tanımlayıcısı gerekmez.
Uç Noktalar (Endpoints)
| Yöntem | Yol | Açıklama | Kimlik Doğrulama | Hız Sınırı |
|---|---|---|---|---|
| GET | /notifications | Bildirimleri listele (sayfalandırılmış) | JWT | 60/dak |
| GET | /notifications/unread-count | Okunmamış bildirim sayısını al | JWT | 60/dak |
| PATCH | /notifications/:id/read | Bir bildirimi okundu olarak işaretle | JWT | 30/dak |
| POST | /notifications/mark-all-read | Tüm bildirimleri okundu olarak işaretle | JWT | 10/dak |
| PATCH | /notifications/:id/archive | Bir bildirimi arşivle | JWT | 30/dak |
GET /notifications
Kimliği doğrulanmış kullanıcı için bildirimleri listeler. En yenisi ilk olacak şekilde sıralanmış sayfalandırılmış sonuçlar döndürür.
İstek (Request)
Kimlik Doğrulama: JWT Bearer token
| Parametre | Tür | Zorunlu | Açıklama |
|---|---|---|---|
limit | number | Hayır | Sayfa başına öğe sayısı |
offset | number | Hayır | Sayfalandırma ofseti |
Yanıt (Response)
Yanıt Örneği
{
"data": [
{
"id": "notif-001",
"title": "Your chain streak is at risk",
"body": "You have not logged any bits in Vocabulary Practice today.",
"icon": null,
"actionUrl": "/chains/cm5chain01",
"category": "productivity",
"priority": "high",
"status": "unread",
"readAt": null,
"expiresAt": null,
"createdAt": "2026-04-01T08:00:00.000Z"
}
],
"meta": {
"total": 1,
"limit": 20,
"offset": 0
}
}Yanıt Alanları
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Bildirim ID'si |
title | string | Bildirim başlığı |
body | string | Bildirim gövde metni |
icon | string | null | İsteğe bağlı simge tanımlayıcısı |
actionUrl | string | null | İsteğe bağlı derin bağlantı URL'si |
category | string | Bildirim kategorisi (ör. productivity, system) |
priority | string | low, normal, veya high |
status | string | unread, read, veya archived |
readAt | string | null | ISO 8601 — bildirimin ne zaman okunduğu |
expiresAt | string | null | ISO 8601 — bildirimin ne zaman sona ereceği |
createdAt | string | ISO 8601 |
Kod Örnekleri
curl "https://api.chainabit.com/api/v1/notifications?limit=20&offset=0" \
-H "Authorization: Bearer $TOKEN"const res = await fetch(`${BASE_URL}/notifications?limit=20&offset=0`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data, meta } = await res.json();import requests
res = requests.get(
f"{BASE_URL}/notifications",
headers={"Authorization": f"Bearer {TOKEN}"},
params={"limit": 20, "offset": 0},
)
body = res.json()GET /notifications/unread-count
Kimliği doğrulanmış kullanıcı için okunmamış bildirimlerin sayısını alır. Bunu, kullanıcı arayüzünüzdeki (UI) rozet göstergelerini yönlendirmek için kullanın.
İstek
Kimlik Doğrulama: JWT Bearer token
Yanıt
{
"data": {
"count": 3
}
}Kod Örnekleri
curl "https://api.chainabit.com/api/v1/notifications/unread-count" \
-H "Authorization: Bearer $TOKEN"const res = await fetch(`${BASE_URL}/notifications/unread-count`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();
console.log(data.count); // okunmamış bildirim sayısıimport requests
res = requests.get(
f"{BASE_URL}/notifications/unread-count",
headers={"Authorization": f"Bearer {TOKEN}"},
)
count = res.json()["data"]["count"]PATCH /notifications/:id/read
Tek bir bildirimi okundu olarak işaretler. readAt zaman damgası, isteğin yapıldığı zamana ayarlanır. Zaten okunmuş bir bildirimde bunu çağırmak hiçbir işlem yapmaz.
İstek
Kimlik Doğrulama: JWT Bearer token
Yanıt
{
"data": {
"status": "read"
}
}Kod Örnekleri
$NOTIFICATION_IDolarak Bildirimleri Listele yanıtından alınan bir bildiriminiddeğerini kullanın.
curl -X PATCH "https://api.chainabit.com/api/v1/notifications/$NOTIFICATION_ID/read" \
-H "Authorization: Bearer $TOKEN"const NOTIFICATION_ID = process.env.NOTIFICATION_ID; // Bildirimleri Listele yanıtından
const res = await fetch(`${BASE_URL}/notifications/${NOTIFICATION_ID}/read`, {
method: "PATCH",
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();import requests, os
notification_id = os.environ["NOTIFICATION_ID"] # Bildirimleri Listele yanıtından
res = requests.patch(
f"{BASE_URL}/notifications/{notification_id}/read",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]POST /notifications/mark-all-read
Kimliği doğrulanmış kullanıcı için tüm okunmamış bildirimleri tek bir işlemde okundu olarak işaretler.
İstek
Kimlik Doğrulama: JWT Bearer token
Yanıt
{
"data": {
"status": "all_read"
}
}Kod Örnekleri
curl -X POST "https://api.chainabit.com/api/v1/notifications/mark-all-read" \
-H "Authorization: Bearer $TOKEN"const res = await fetch(`${BASE_URL}/notifications/mark-all-read`, {
method: "POST",
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();import requests
res = requests.post(
f"{BASE_URL}/notifications/mark-all-read",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]PATCH /notifications/:id/archive
Bir bildirimi arşivler. Arşivlenen bildirimler varsayılan listeden çıkarılır ancak kullanıcının geçmişi için tutulur. Zaten arşivlenmiş bir bildirimi arşivlemek hiçbir işlem yapmaz.
İstek
Kimlik Doğrulama: JWT Bearer token
Yanıt
{
"data": {
"status": "archived"
}
}Kod Örnekleri
Bildirimleri Listele yanıtından alınan
$NOTIFICATION_IDdeğerini yeniden kullanır.
curl -X PATCH "https://api.chainabit.com/api/v1/notifications/$NOTIFICATION_ID/archive" \
-H "Authorization: Bearer $TOKEN"const NOTIFICATION_ID = process.env.NOTIFICATION_ID; // Bildirimleri Listele yanıtından
const res = await fetch(`${BASE_URL}/notifications/${NOTIFICATION_ID}/archive`, {
method: "PATCH",
headers: { Authorization: `Bearer ${TOKEN}` },
});
const { data } = await res.json();import requests, os
notification_id = os.environ["NOTIFICATION_ID"] # Bildirimleri Listele yanıtından
res = requests.patch(
f"{BASE_URL}/notifications/{notification_id}/archive",
headers={"Authorization": f"Bearer {TOKEN}"},
)
data = res.json()["data"]Hata Referansı
| Durum | Ne zaman meydana gelir |
|---|---|
| 401 | Eksik veya süresi dolmuş JWT token |
| 403 | Bildirim başka bir kullanıcıya ait |
| 404 | Bildirim ID'si mevcut değil |
| 422 | :id için geçersiz UUID biçimi |