Sayfalar
Statik sayfaların (Hakkımızda, Vizyon, İletişim vb.) CRUD işlemleri ve kapak görseli yönetimi.
Base URL: /api/tenant/pages
Yetkilendirme: Bearer Token + X-Api-Key
Modül: Pages modülü müşteriye atanmış olmalıdır.
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
X-Api-Key: customer-api-key
POST /
Yeni sayfa oluşturur.
Request Body:
{
"code": "about-us",
"status": "Draft",
"isActive": true,
"noIndex": false,
"translations": [
{
"languageId": "9cd14a82-...",
"title": "Hakkımızda",
"description": "Şirketimiz hakkında kısa bilgi",
"content": "<p>Biz kimiz...</p>",
"slug": "hakkimizda",
"metaTitle": "Hakkımızda | Kompanse",
"metaDescription": "Şirketimiz hakkında detaylı bilgi.",
"metaKeywords": "hakkımızda, şirket, vizyon",
"canonicalUrl": "https://example.com/hakkimizda"
}
]
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
code | string | Evet | Benzersiz sayfa kodu (ör: about-us, contact) |
status | string | Evet | Draft, Published veya Archived |
isActive | bool | Hayır | Aktiflik durumu (varsayılan: true) |
noIndex | bool | Hayır | Arama motorlarından gizle (varsayılan: false) |
translations | PageTranslationRequest[] | Evet | Dil çevirileri |
PageTranslationRequest
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
languageId | Guid | Evet | Dil ID |
title | string | Evet | Başlık |
description | string | Hayır | Kısa açıklama |
content | string | Evet | İçerik (HTML) |
slug | string | Hayır | URL slug (boş ise başlıktan üretilir) |
metaTitle | string | Hayır | SEO başlığı |
metaDescription | string | Hayır | SEO açıklaması |
metaKeywords | string | Hayır | SEO anahtar kelimeler |
canonicalUrl | string | Hayır | Canonical URL |
Response — 201 Created:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "about-us",
"coverImageUrl": null,
"status": "Draft",
"isActive": true,
"noIndex": false,
"createdAt": "2026-03-28T10:00:00Z",
"updatedAt": null,
"translations": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"title": "Hakkımızda",
"description": "Şirketimiz hakkında kısa bilgi",
"content": "<p>Biz kimiz...</p>",
"slug": "hakkimizda",
"metaTitle": "Hakkımızda | Kompanse",
"metaDescription": "Şirketimiz hakkında detaylı bilgi.",
"metaKeywords": "hakkımızda, şirket, vizyon",
"canonicalUrl": "https://example.com/hakkimizda"
}
]
}
}
GET /
Sayfaları filtreli ve sayfalanmış olarak listeler.
Query Parametreleri:
| Parametre | Tip | Varsayılan | Açıklama |
|---|---|---|---|
page | int | 1 | Sayfa numarası |
pageSize | int | 10 | Sayfa başına kayıt |
status | string | — | Draft, Published veya Archived filtresi |
search | string | — | Başlıkta arama |
lang | string | — | Dil kodu filtresi |
Response — 200 OK:
{
"success": true,
"data": {
"items": [
{
"id": "3fa85f64-...",
"code": "about-us",
"coverImageUrl": null,
"status": "Published",
"isActive": true,
"createdAt": "2026-03-28T10:00:00Z",
"title": "Hakkımızda",
"slug": "hakkimizda"
}
],
"page": 1,
"pageSize": 10,
"totalCount": 1,
"totalPages": 1
}
}
GET /{id}
Sayfa detayını tüm çevirilerle getirir.
Response — 200 OK:
{
"success": true,
"data": {
"id": "3fa85f64-...",
"code": "about-us",
"coverImageUrl": null,
"status": "Published",
"isActive": true,
"noIndex": false,
"createdAt": "2026-03-28T10:00:00Z",
"updatedAt": "2026-03-28T14:00:00Z",
"translations": [
{
"languageId": "9cd14a82-...",
"languageCode": "tr",
"title": "Hakkımızda",
"description": "Şirketimiz hakkında kısa bilgi",
"content": "<p>Biz kimiz...</p>",
"slug": "hakkimizda",
"metaTitle": "Hakkımızda | Kompanse",
"metaDescription": "Şirketimiz hakkında detaylı bilgi.",
"metaKeywords": "hakkımızda, şirket, vizyon",
"canonicalUrl": "https://example.com/hakkimizda"
}
]
}
}
GET /by-code/{code}
Sayfa detayını benzersiz code değeriyle getirir.
Örnek: GET /api/tenant/pages/by-code/about-us
Response — 200 OK: GET /{id} ile aynı yapıdadır.
PUT /{id}
Sayfayı günceller.
Request Body: CreatePageRequest ile aynı yapıdadır.
Response — 200 OK: PageResponse objesi döner.
DELETE /{id}
Sayfayı siler (soft delete).
Response — 204 No Content
Kapak Görseli
POST /{id}/cover
Sayfaya kapak görseli yükler.
Content-Type: multipart/form-data
| Alan | Tip | Açıklama |
|---|---|---|
file | IFormFile | Görsel dosyası |
Response — 200 OK:
{
"success": true,
"data": {
"coverImageUrl": "https://cdn.example.com/media/tenant/files/pages/page-id/cover.jpg"
}
}
DELETE /{id}/cover
Kapak görselini siler.
Response — 204 No Content
Olası Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya geçersiz |
403 | Tenant kullanıcısı yetkisi yok veya pages modül erişimi yok |
404 | Sayfa bulunamadı |
409 | Code veya slug çakışması |
400 | Geçersiz filtre, body veya dosya yükleme isteği |