Content Section Template Yönetimi
ContentSections modülünde kullanılacak sistem-geneli template tanımlarının yönetimi.
Bu endpoint'ler ile:
- yeni template oluşturulabilir
- mevcut template'ler listelenebilir
codeveyaidile detay okunabilir- template alanları güncellenebilir
Template kayıtları sistem geneli çalışır. Tenant kullanıcılar template oluşturamaz; sadece aktif template'leri okuyup bunları kullanarak content section oluşturabilir.
Base URL: /api/admin/content-sections/templates
Yetkilendirme: Bearer Token (Admin)
Headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Veri Modeli
Bir template iki katmandan oluşur:
Section Fields: Section seviyesindeki tekil alanlarItem Fields: Tekrarlayan item alanları
Desteklenen fieldType Değerleri
TextTextareaRichTextImageFileIconLinkNumberBoolean
Desteklenen target Değerleri
SectionItem
Önemli Kurallar
codebenzersizdirItemalanı varsaitemListCodezorunludurItemalanı yoksaitemListCodegönderilmemelidir- Aynı template içinde aynı
targetaltında aynıcodetekrar edemez isLocalized = truesadeceText,Textarea,RichText,Icon,Linkalan tiplerinde kullanılabilir- Update sırasında mevcut field'ın
codevetargetdeğeri değiştirilemez
POST /
Yeni template oluşturur.
Request Body:
{
"name": "FAQ List",
"code": "faq-list",
"description": "Sıkça sorulan sorular section template'i",
"itemListCode": "questions",
"isActive": true,
"fields": [
{
"code": "title",
"label": "Başlık",
"description": "Section ana başlığı",
"fieldType": "Text",
"target": "Section",
"isRequired": true,
"isLocalized": true,
"sortOrder": 1
},
{
"code": "subtitle",
"label": "Alt Başlık",
"description": "Section açıklama metni",
"fieldType": "Textarea",
"target": "Section",
"isRequired": false,
"isLocalized": true,
"sortOrder": 2
},
{
"code": "question",
"label": "Soru",
"description": "FAQ soru metni",
"fieldType": "Text",
"target": "Item",
"isRequired": true,
"isLocalized": true,
"sortOrder": 1
},
{
"code": "answer",
"label": "Cevap",
"description": "FAQ cevap metni",
"fieldType": "RichText",
"target": "Item",
"isRequired": true,
"isLocalized": true,
"sortOrder": 2
}
]
}
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Evet | Template adı |
code | string | Evet | Benzersiz template kodu |
description | string | Hayır | Template açıklaması |
itemListCode | string | Şarta bağlı | Item alanları varsa zorunlu |
isActive | bool | Hayır | Template aktifliği |
fields | ContentSectionTemplateFieldRequest[] | Evet | Alan tanımları |
ContentSectionTemplateFieldRequest
| Alan | Tip | Zorunlu | Açıklama |
|---|---|---|---|
id | Guid? | Hayır | Update sırasında mevcut field ID |
code | string | Evet | Alan kodu |
label | string | Evet | Görünen alan etiketi |
description | string | Hayır | Alan açıklaması |
fieldType | string | Evet | Alan tipi |
target | string | Evet | Section veya Item |
isRequired | bool | Hayır | Zorunlu alan mı |
isLocalized | bool | Hayır | Çok dilli içerik alacak mı |
sortOrder | int | Evet | Sıralama |
Response — 201 Created:
{
"success": true,
"data": {
"id": "a38a8f57-...",
"name": "FAQ List",
"code": "faq-list",
"description": "Sıkça sorulan sorular section template'i",
"itemListCode": "questions",
"isActive": true,
"createdAt": "2026-03-29T10:00:00Z",
"updatedAt": null,
"fields": [
{
"id": "b20b7bb8-...",
"code": "title",
"label": "Başlık",
"description": "Section ana başlığı",
"fieldType": "Text",
"target": "Section",
"isRequired": true,
"isLocalized": true,
"sortOrder": 1
}
]
}
}
GET /
Tüm template'leri listeler.
Response — 200 OK:
{
"success": true,
"data": [
{
"id": "a38a8f57-...",
"name": "FAQ List",
"code": "faq-list",
"description": "Sıkça sorulan sorular section template'i",
"itemListCode": "questions",
"isActive": true,
"createdAt": "2026-03-29T10:00:00Z",
"updatedAt": null,
"fields": []
}
]
}
GET /{id}
Template detayını id ile getirir.
Response — 200 OK: POST / ile dönen ContentSectionTemplateResponse yapısı döner.
GET /by-code/{code}
Template detayını benzersiz code değeriyle getirir.
Örnek: GET /api/admin/content-sections/templates/by-code/faq-list
Response — 200 OK: GET /{id} ile aynı yapıdadır.
PUT /{id}
Template'i günceller.
Request Body:
{
"name": "FAQ List",
"description": "Güncellenmiş açıklama",
"itemListCode": "questions",
"isActive": true,
"fields": [
{
"id": "b20b7bb8-...",
"code": "title",
"label": "Başlık",
"description": "Section ana başlığı",
"fieldType": "Text",
"target": "Section",
"isRequired": true,
"isLocalized": true,
"sortOrder": 1
},
{
"code": "eyebrow",
"label": "Üst Başlık",
"description": "Opsiyonel kısa vurgu metni",
"fieldType": "Text",
"target": "Section",
"isRequired": false,
"isLocalized": true,
"sortOrder": 0
}
]
}
Update Notları
- Mevcut field'lerde
codedeğiştirilemez - Mevcut field'lerde
targetdeğiştirilemez - Yeni field eklemek için
idgönderilmez - Mevcut implementation, request'e gönderilmeyen field'ları otomatik silmez
Response — 200 OK: ContentSectionTemplateResponse döner.
Olası Hatalar
| Kod | Durum |
|---|---|
401 | Token eksik veya geçersiz |
403 | Admin yetkisi yok |
404 | Template bulunamadı |
409 | Template code çakışması |
400 | Geçersiz field tipi, target veya template kuralı |