Ana içeriğe geç

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
  • code veya id ile detay okunabilir
  • template alanları güncellenebilir
bilgi

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 alanlar
  • Item Fields: Tekrarlayan item alanları

Desteklenen fieldType Değerleri​

  • Text
  • Textarea
  • RichText
  • Image
  • File
  • Icon
  • Link
  • Number
  • Boolean

Desteklenen target Değerleri​

  • Section
  • Item

Önemli Kurallar​

  • code benzersizdir
  • Item alanı varsa itemListCode zorunludur
  • Item alanı yoksa itemListCode gönderilmemelidir
  • Aynı template içinde aynı target altında aynı code tekrar edemez
  • isLocalized = true sadece Text, Textarea, RichText, Icon, Link alan tiplerinde kullanılabilir
  • Update sırasında mevcut field'ın code ve target değ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
}
]
}
AlanTipZorunluAçıklama
namestringEvetTemplate adı
codestringEvetBenzersiz template kodu
descriptionstringHayırTemplate açıklaması
itemListCodestringŞarta bağlıItem alanları varsa zorunlu
isActiveboolHayırTemplate aktifliği
fieldsContentSectionTemplateFieldRequest[]EvetAlan tanımları

ContentSectionTemplateFieldRequest​

AlanTipZorunluAçıklama
idGuid?HayırUpdate sırasında mevcut field ID
codestringEvetAlan kodu
labelstringEvetGörünen alan etiketi
descriptionstringHayırAlan açıklaması
fieldTypestringEvetAlan tipi
targetstringEvetSection veya Item
isRequiredboolHayırZorunlu alan mı
isLocalizedboolHayırÇok dilli içerik alacak mı
sortOrderintEvetSı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 code değiştirilemez
  • Mevcut field'lerde target değiştirilemez
  • Yeni field eklemek için id gönderilmez
  • Mevcut implementation, request'e gönderilmeyen field'ları otomatik silmez

Response — 200 OK: ContentSectionTemplateResponse döner.


Olası Hatalar​

KodDurum
401Token eksik veya geçersiz
403Admin yetkisi yok
404Template bulunamadı
409Template code çakışması
400Geçersiz field tipi, target veya template kuralı