Ana içeriğe geç

Dashboard

Tenant kullanıcıları için genel istatistikler ve aktivite özetleri.

Base URL: /api/tenant/dashboard Yetkilendirme: Bearer Token + X-Api-Key Rol: TenantUser


GET /stats

Tüm istatistikleri tek bir çağrıda getirir.

Response — 200 OK:

{
"success": true,
"data": {
"totalBlogPosts": 25,
"publishedBlogPosts": 18,
"draftBlogPosts": 7,
"totalProducts": 120,
"publishedProducts": 95,
"draftProducts": 25,
"totalPages": 10,
"publishedPages": 8,
"draftPages": 2,
"totalForms": 5,
"formSubmissions": {
"total": 342,
"new": 12,
"read": 280,
"archived": 45,
"spam": 5,
"thisWeek": 28
},
"mediaUsage": {
"totalFiles": 156,
"totalSizeBytes": 2684354560,
"totalSizeFormatted": "2.5 GB",
"images": 89,
"videos": 12,
"documents": 34,
"others": 21
},
"translationStats": {
"totalTranslations": 450,
"totalUniqueKeys": 150,
"languages": [
{
"languageId": "3fa85f64-...",
"languageCode": "tr",
"languageName": "Türkçe",
"translationCount": 150,
"percentage": 100.0
},
{
"languageId": "3fa85f64-...",
"languageCode": "en",
"languageName": "English",
"translationCount": 120,
"percentage": 80.0
},
{
"languageId": "3fa85f64-...",
"languageCode": "de",
"languageName": "Deutsch",
"translationCount": 90,
"percentage": 60.0
}
]
},
"languages": [
{
"id": "3fa85f64-...",
"code": "tr",
"name": "Türkçe",
"isDefault": true,
"blogPostCount": 25,
"productCount": 120,
"pageCount": 10
},
{
"id": "3fa85f64-...",
"code": "en",
"name": "English",
"isDefault": false,
"blogPostCount": 20,
"productCount": 115,
"pageCount": 8
}
],
"totalNavigatorMenus": 3,
"totalCarousels": 2,
"totalUsers": 8,
"totalCategories": 12,
"totalTags": 35
}
}

Alanlar

AlanTipAçıklama
totalBlogPostsintToplam blog yazısı
publishedBlogPostsintYayınlanmış blog yazısı
draftBlogPostsintTaslak blog yazısı
totalProductsintToplam ürün
publishedProductsintYayınlanmış ürün
draftProductsintTaslak ürün
totalPagesintToplam sayfa
publishedPagesintYayınlanmış sayfa
draftPagesintTaslak sayfa
totalFormsintToplam form
formSubmissionsFormSubmissionStatsForm başvuru istatistikleri
mediaUsageMediaUsageStatsMedya kullanım istatistikleri
translationStatsTranslationStatsÇeviri istatistikleri
languagesLanguageStats[]Dil bazlı içerik sayıları
totalNavigatorMenusintToplam menü
totalCarouselsintToplam carousel
totalUsersintToplam kullanıcı
totalCategoriesintToplam kategori
totalTagsintToplam etiket

FormSubmissionStats

AlanTipAçıklama
totalintToplam başvuru
newintYeni (okunmamış)
readintOkunmuş
archivedintArşivlenmiş
spamintSpam olarak işaretlenmiş
thisWeekintBu hafta gelen

MediaUsageStats

AlanTipAçıklama
totalFilesintToplam dosya sayısı
totalSizeByteslongToplam boyut (byte)
totalSizeFormattedstringFormatlanmış boyut (örn. "2.5 GB")
imagesintResim dosyası sayısı
videosintVideo dosyası sayısı
documentsintDöküman sayısı (PDF, Word, Excel)
othersintDiğer dosya türleri

LanguageStats

AlanTipAçıklama
idGuidDil ID
codestringDil kodu
namestringDil adı
isDefaultboolVarsayılan dil mi
blogPostCountintBu dildeki blog yazısı
productCountintBu dildeki ürün
pageCountintBu dildeki sayfa

TranslationStats

AlanTipAçıklama
totalTranslationsintToplam çeviri kaydı
totalUniqueKeysintBenzersiz çeviri anahtar sayısı
languagesLanguageTranslationStats[]Dil bazlı çeviri istatistikleri

LanguageTranslationStats

AlanTipAçıklama
languageIdGuidDil ID
languageCodestringDil kodu
languageNamestringDil adı
translationCountintBu dildeki çeviri sayısı
percentagedecimalTamamlanma yüzdesi

GET /summary

Modül bazlı içerik özetini getirir (yayınlanmış vs taslak dağılımı).

Response — 200 OK:

{
"success": true,
"data": [
{
"moduleName": "Blog",
"moduleCode": "blog",
"totalCount": 25,
"publishedCount": 18,
"draftCount": 7
},
{
"moduleName": "Products",
"moduleCode": "product",
"totalCount": 120,
"publishedCount": 95,
"draftCount": 25
},
{
"moduleName": "Pages",
"moduleCode": "page",
"totalCount": 10,
"publishedCount": 8,
"draftCount": 2
},
{
"moduleName": "Forms",
"moduleCode": "form",
"totalCount": 5,
"publishedCount": 5,
"draftCount": 0
}
]
}

GET /recent

Son güncellenen içerikleri getirir.

Query Parametreleri:

ParametreTipVarsayılanAçıklama
daysint7Kaç gün geriye bakılacağı

Response — 200 OK:

{
"success": true,
"data": [
{
"id": "3fa85f64-...",
"moduleName": "Blog",
"moduleCode": "blog",
"title": "Blog Post",
"status": "Published",
"updatedAt": "2026-03-30T14:30:00Z",
"updatedBy": "user@example.com"
},
{
"id": "3fa85f64-...",
"moduleName": "Product",
"moduleCode": "product",
"title": "PROD-001",
"status": "Draft",
"updatedAt": "2026-03-30T12:00:00Z",
"updatedBy": "admin@example.com"
}
]
}

GET /recent-form-submissions

Son gönderilen form yanıtlarını getirir.

Query Parametreleri:

ParametreTipVarsayılanAçıklama
countint5Kaç kayıt getirileceği

Response — 200 OK:

{
"success": true,
"data": [
{
"id": "3fa85f64-...",
"formId": "3fa85f64-...",
"formName": "İletişim Formu",
"formCode": "contact-form",
"status": "New",
"submittedAt": "2026-03-30T14:30:00Z",
"sourceUrl": "https://example.com/contact",
"ipAddress": "192.168.1.1",
"fields": [
{ "fieldName": "name", "fieldValue": "Ahmet Yılmaz" },
{ "fieldName": "email", "fieldValue": "ahmet@example.com" },
{ "fieldName": "message", "fieldValue": "Merhaba..." }
]
},
{
"id": "3fa85f64-...",
"formId": "3fa85f64-...",
"formName": "İletişim Formu",
"formCode": "contact-form",
"status": "Read",
"submittedAt": "2026-03-29T10:00:00Z",
"sourceUrl": "https://example.com/contact",
"ipAddress": "10.0.0.5",
"fields": [
{ "fieldName": "name", "fieldValue": "Mehmet Çelik" },
{ "fieldName": "email", "fieldValue": "mehmet@example.com" },
{ "fieldName": "message", "fieldValue": "Bilgi almak istiyorum" }
]
}
]
}

Alanlar

AlanTipAçıklama
idGuidBaşvuru ID
formIdGuidForm ID
formNamestringForm adı
formCodestringForm kodu
statusstringDurum (New, Read, Archived, Spam)
submittedAtDateTimeGönderim tarihi
sourceUrlstring?Gönderim yapılan sayfa URL
ipAddressstring?Kullanıcı IP adresi
fieldsFormSubmissionFieldDto[]Gönderilen alanlar

FormSubmissionFieldDto

AlanTipAçıklama
fieldNamestringAlan adı
fieldValuestringAlan değeri

Olası Hatalar

KodDurum
401Token eksik veya geçersiz
403Tenant kullanıcısı yetkisi yok