Headless CMS Mimarisi ve API Rehberi
Tecof CMS, tema bazlı collection ve item yönetimi sağlar. Admin paneli JWT korumalı /api/merchant/cms/* uçlarını kullanır; canlı storefront ise secret-key korumalı /api/store/cms/* uçlarıyla sadece yayınlanabilir içerikleri okur.
Veri Modeli
Collection
Collection; içerik şemasını, alan listesini, görüntülenecek alanı ve tema bağlantısını taşır.
Öne çıkan alanlar:
| Alan | Açıklama |
|---|---|
merchantId |
Sahip merchant |
themeId |
Collection'ın bağlı olduğu aktif tema |
name |
Çok dilli collection adı |
slug |
Storefront erişim anahtarı |
fields |
Dinamik alan şeması |
displayField |
Listelerde gösterilecek alan |
status |
active veya inactive |
Collection Item
Item; collection'a bağlı gerçek içerik kaydıdır.
Öne çıkan alanlar:
| Alan | Açıklama |
|---|---|
slug |
Item slug |
data |
Dinamik alan verisi |
metaTitle |
SEO başlığı |
metaDescription |
SEO açıklaması |
ogImage |
Sosyal görsel |
status |
draft, scheduled, published |
scheduledDate |
Zamanlı yayın tarihi |
Admin CMS API'leri
Bu uçlar satıcı paneli içindir ve JWT role auth ister.
Collection API
| Metot | Endpoint | Açıklama |
|---|---|---|
GET |
/api/merchant/cms/collections/templates |
Hazır collection şablonlarını listeler |
GET |
/api/merchant/cms/collections |
Collection listesini getirir |
GET |
/api/merchant/cms/collections/by/id/:id |
Collection detayını getirir |
POST |
/api/merchant/cms/collections |
Collection oluşturur |
PUT |
/api/merchant/cms/collections/:id |
Collection günceller |
DELETE |
/api/merchant/cms/collections/:id |
Collection'ı soft delete yapar |
Item API
| Metot | Endpoint | Açıklama |
|---|---|---|
GET |
/api/merchant/cms/collections/:collectionId/items |
Item listesini getirir |
GET |
/api/merchant/cms/collections/:collectionId/items/by/id/:id |
Item detayını getirir |
POST |
/api/merchant/cms/collections/:collectionId/items |
Item oluşturur |
PUT |
/api/merchant/cms/collections/:collectionId/items/:id |
Item günceller |
DELETE |
/api/merchant/cms/collections/:collectionId/items/:id |
Item'ı soft delete yapar |
POST |
/api/merchant/cms/collections/:collectionId/items/:id/publish |
Item'ı yayına alır |
POST |
/api/merchant/cms/collections/:collectionId/items/:id/unpublish |
Item'ı taslağa alır |
POST |
/api/merchant/cms/collections/:collectionId/items/:id/schedule |
Item'ı ileri tarihe planlar |
GET |
/api/merchant/cms/collections/:collectionId/items/:id/revisions |
Revizyon geçmişini listeler |
POST |
/api/merchant/cms/collections/:collectionId/items/:id/revisions/:revisionId/restore |
Revizyon geri yükler |
POST |
/api/merchant/cms/collections/:collectionId/items/bulk-delete |
Toplu siler |
POST |
/api/merchant/cms/collections/:collectionId/items/reorder |
Sıralamayı günceller |
Admin Query Parametreleri
Admin listelerinde desteklenen pratik parametreler:
| Parametre | Açıklama |
|---|---|
field=string |
Çok dilli alanları seçilen dile düz string olarak çevirir |
lang=tr |
Çevrilecek dili belirtir |
search=... |
Slug ve data içinde arama yapar |
status=published |
Item status filtresi |
page=1 |
Sayfalama |
limit=20 |
Sayfa boyutu |
Örnek:
GET /api/merchant/cms/collections/:collectionId/items?field=string&lang=tr&page=1&limit=20Storefront CMS API'leri
Storefront uçları x-secret-key ister ve body üzerinden locale, page, limit, sort gibi değerleri alır.
| Metot | Endpoint | Açıklama |
|---|---|---|
POST |
/api/store/cms/collections |
Aktif collection listesini getirir |
POST |
/api/store/cms/collections/:slug |
Collection detayını slug ile getirir |
POST |
/api/store/cms/collections/:slug/items |
Collection item listesini getirir |
POST |
/api/store/cms/collections/:slug/items/:itemSlug |
Tek item'ı slug ile getirir |
POST |
/api/store/cms/items/:id |
Tek item'ı ID ile getirir |
Örnek:
POST /api/store/cms/collections/blog/items
x-secret-key: merchant_secret_key
Content-Type: application/json{
"locale": "tr",
"page": 1,
"limit": 12,
"sort": "newest"
}Storefront Yayın Kuralları
Canlı API item görünürlüğünü şu kuralla sınırlar:
| Item durumu | Storefront'ta görünür mü? |
|---|---|
draft |
Hayır |
published |
Evet |
scheduled ve tarihi geldiyse |
Evet |
scheduled ve tarihi gelmediyse |
Hayır |
Storefront tarafı client'tan status filtresi kabul etmez. Böylece taslak içerikler yanlışlıkla temaya sızmaz.
Reference Alanları
Storefront CMS okuma katmanı reference ve multi-reference alanlarını tek seviye çözer. Referans verilen item canlı değilse değer null olur veya listeden çıkarılır.
Dönen item örneği:
{
"_id": "item_id",
"slug": "blog-yazisi",
"data": {
"title": "Blog Yazısı",
"author": {
"_id": "author_id",
"slug": "ahmet",
"data": {
"name": "Ahmet"
}
}
}
}Webhook Davranışı
Bir CMS item yayına alındığında backend cms.item.published event'i için webhook dispatch eder. Payload içinde itemId, collectionId, slug, status ve publishedDate bulunur.
Webhook yönetimi için Uygulama Entegrasyonu sayfasına bakın.