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.
Uygulamaların bu olaya aboneliği için Webhook’lar, mağaza webhook’larının panel uçları için Mağaza webhook’ları bölümüne bakın.