İçerik
SSS, statik sayfalar ve platform duyuruları.
{ "data": [{ "id", "question", "answer", "category", "sortOrder" }] }
{ "data": { "slug", "title", "content", "updatedAt" } }
Seteka platformu ile entegre olmak isteyen kurumlar bu dokümantasyonu kullanarak API'ye bağlanabilir. Üyelik yönetimi, bağış toplama, aidat tahsilatı ve duyuru yayınlama işlemlerini API üzerinden gerçekleştirebilirsiniz.
Tüm yanıtlar { success, data?, error?, meta? } formatında JSON döner.
Korumalı endpointler Authorization: Bearer <token> header'ı gerektirir.
API istekleri IP bazlı sınırlandırılmıştır. Limit: 30 istek/saniye.
API'ye erişim için JWT (JSON Web Token) tabanlı kimlik doğrulama kullanılır. /auth/login ile token alın, sonra her istekte Authorization: Bearer <token> header'ı gönderin. Access token süresi 15 dakikadır, /auth/refresh ile yenilenebilir.
{
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIs..."
}
Hata durumunda aşağıdaki formatta yanıt döner:
{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "E-posta adresi geçersiz"
}
}
| HTTP Kodu | Açıklama |
|---|---|
| 400 | Geçersiz istek / Doğrulama hatası |
| 401 | Kimlik doğrulama gerekli / Token geçersiz |
| 403 | Yetki yetersiz |
| 404 | Kaynak bulunamadı |
| 409 | Çakışma (örn: zaten kayıtlı) |
| 429 | Çok fazla istek (rate limit) |
| 500 | Sunucu hatası |
Kayıt, giriş, şifre sıfırlama ve token yenileme işlemleri.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| string | Zorunlu | E-posta adresi | |
| password | string | Zorunlu | Şifre (min 6 karakter) |
| firstName | string | Zorunlu | Ad |
| lastName | string | Zorunlu | Soyad |
{
"success": true,
"data": {
"id": "uuid",
"email": "kullanici@ornek.com",
"firstName": "Ahmet",
"lastName": "Yılmaz"
}
}
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| string | Zorunlu | E-posta adresi | |
| password | string | Zorunlu | Şifre |
{
"success": true,
"data": {
"user": { "id", "email", "firstName", "lastName", "avatarUrl", "isVerified" },
"accessToken": "eyJhbGciOi..."
}
}
Refresh token httpOnly cookie olarak set edilir (7 gün).
Cookie'deki refresh token ile yeni access token alır.
{
"success": true,
"data": { "accessToken": "eyJhbGciOi..." }
}
Refresh token cookie'sini temizler.
Kurum listeleme, arama ve detay bilgileri. Tüm endpointler herkese açıktır.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| page | number | Opsiyonel | Sayfa numarası (varsayılan: 1) |
| limit | number | Opsiyonel | Sayfa başına kayıt (varsayılan: 20) |
| tip | string | Opsiyonel | Kurum tipi slug (dernek, vakif) |
| tur | string | Opsiyonel | Kategori slug |
| sehir | string | Opsiyonel | Şehir filtresi |
{
"success": true,
"data": [
{ "id", "name", "slug", "shortDesc", "logoUrl", "city", "isVerified" }
],
"meta": { "page": 1, "limit": 20, "total": 45, "pages": 3 }
}
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| q | string | Zorunlu | Arama sorgusu |
| page | number | Opsiyonel | Sayfa numarası |
| limit | number | Opsiyonel | Sayfa başına kayıt |
PostgreSQL tsvector ile full-text arama. Sonuçlar alaka sırasına göre sıralanır.
{
"success": true,
"data": {
"id", "name", "slug", "description", "shortDesc",
"logoUrl", "coverUrl", "city", "district",
"isVerified", "followerCount",
"typeName", "categoryName",
"announcements": [...],
"campaigns": [...]
}
}
{ "success": true, "data": [{ "id": 1, "name": "Dernek", "slug": "dernek" }, ...] }
{ "success": true, "data": [{ "id": 1, "name": "Sosyal Yardım", "slug": "sosyal-yardim" }, ...] }
SSS, statik sayfalar ve platform duyuruları.
{ "data": [{ "id", "question", "answer", "category", "sortOrder" }] }
{ "data": { "slug", "title", "content", "updatedAt" } }
Kullanıcı bilgileri ve profil güncelleme.
{
"data": {
"id", "email", "firstName", "lastName", "phone",
"avatarUrl", "birthDate", "city", "district", "isVerified"
}
}
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| firstName | string | Opsiyonel | Ad |
| lastName | string | Opsiyonel | Soyad |
| phone | string | Opsiyonel | Telefon |
| city | string | Opsiyonel | Şehir |
| district | string | Opsiyonel | İlçe |
| birthDate | string | Opsiyonel | Doğum tarihi (YYYY-MM-DD) |
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| currentPassword | string | Zorunlu | Mevcut şifre |
| newPassword | string | Zorunlu | Yeni şifre |
Kurum takip işlemleri.
{ "data": [{ "id", "institutionId", "createdAt", "institution": { "id", "name", "slug", ... } }] }
{ "data": { "message": "Takip edildi" } }{ "data": { "message": "Takipten çıkıldı" } }Kurum üyelik başvuruları ve üyelik bilgileri.
{ "data": [{ "id", "membershipNo", "status", "joinedAt", "institutionName", "institutionSlug" }] }
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| message | string | Opsiyonel | Başvuru mesajı |
{ "data": [{ "id", "status", "message", "createdAt", "institutionName" }] }
Kullanıcının bağış geçmişi.
{ "data": [{ "id", "amount", "currency", "status", "isAnonymous", "paidAt", "institutionName" }] }
Kullanıcının aidat ödemeleri.
{ "data": [{ "id", "amount", "status", "paidAt", "periodTitle", "dueDate", "institutionName" }] }
Kurum yetkililerinin kullandığı endpointler. Auth + kurum yetkisi (staff) gerektirir.
{
"data": {
"totalMembers": 150,
"activeMembers": 120,
"pendingApplications": 5,
"totalDonations": 45000.00,
"totalDuesCollected": 18000.00,
"followerCount": 320
}
}
{ "data": [{ "id", "membershipNo", "status", "joinedAt", "firstName", "lastName", "email", "phone", "city" }] }
Query: ?status=pending|approved|rejected (varsayılan: pending)
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| status | string | Zorunlu | "approved" veya "rejected" |
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| title | string | Zorunlu | Dönem adı (örn: "2026 Mart Aidatı") |
| amount | number | Zorunlu | Aidat tutarı (TL) |
| periodStart | string | Zorunlu | Başlangıç tarihi (YYYY-MM-DD) |
| periodEnd | string | Zorunlu | Bitiş tarihi |
| dueDate | string | Zorunlu | Son ödeme tarihi |
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| title | string | Zorunlu | Duyuru başlığı |
| content | string | Zorunlu | Duyuru içeriği |
| isPublished | boolean | Opsiyonel | Hemen yayınla (varsayılan: false) |
{ "data": [{ "id", "amount", "status", "isAnonymous", "paidAt", "donorName" }] }
Bağış ve aidat ödeme işlemleri. PayTR altyapısı kullanılır.
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| institutionId | string | Zorunlu | Kurum UUID |
| amount | number | Zorunlu | Tutar (min 10 TL) |
| campaignId | string | Opsiyonel | Kampanya UUID |
| isAnonymous | boolean | Opsiyonel | Anonim bağış |
| message | string | Opsiyonel | Bağış mesajı |
{
"data": {
"paymentId": "uuid",
"merchant_oid": "SET-...",
"iframeSrc": "https://www.paytr.com/odeme/...",
"status": "pending"
}
}
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| duesPeriodId | string | Zorunlu | Aidat dönemi UUID |
{
"data": {
"id": "uuid",
"status": "completed",
"type": "donation",
"grossAmount": 100.00,
"completedAt": "2026-03-07T..."
}
}