İçeriğe geç
Docs

Headless CMS Mimarisi ve API Rehberi

CMS koleksiyon ve öğe modeli, panel (JWT) yönetim uçları, vitrin canlı içerik okuma, yayın kuralları ve referans alanları.

Son güncelleme:

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:

AlanAçıklama
merchantIdSahip merchant
themeIdCollection'ın bağlı olduğu aktif tema
nameÇok dilli collection adı
slugStorefront erişim anahtarı
fieldsDinamik alan şeması
displayFieldListelerde gösterilecek alan
statusactive veya inactive

Collection Item#

Item; collection'a bağlı gerçek içerik kaydıdır.

Öne çıkan alanlar:

AlanAçıklama
slugItem slug
dataDinamik alan verisi
metaTitleSEO başlığı
metaDescriptionSEO açıklaması
ogImageSosyal görsel
statusdraft, scheduled, published
scheduledDateZamanlı yayın tarihi

Admin CMS API'leri#

Bu uçlar satıcı paneli içindir ve JWT role auth ister.

Collection API#

MetotEndpointAçıklama
GET/api/merchant/cms/collections/templatesHazır collection şablonlarını listeler
GET/api/merchant/cms/collectionsCollection listesini getirir
GET/api/merchant/cms/collections/by/id/:idCollection detayını getirir
POST/api/merchant/cms/collectionsCollection oluşturur
PUT/api/merchant/cms/collections/:idCollection günceller
DELETE/api/merchant/cms/collections/:idCollection'ı soft delete yapar

Item API#

MetotEndpointAçıklama
GET/api/merchant/cms/collections/:collectionId/itemsItem listesini getirir
GET/api/merchant/cms/collections/:collectionId/items/by/id/:idItem detayını getirir
POST/api/merchant/cms/collections/:collectionId/itemsItem oluşturur
PUT/api/merchant/cms/collections/:collectionId/items/:idItem günceller
DELETE/api/merchant/cms/collections/:collectionId/items/:idItem'ı soft delete yapar
POST/api/merchant/cms/collections/:collectionId/items/:id/publishItem'ı yayına alır
POST/api/merchant/cms/collections/:collectionId/items/:id/unpublishItem'ı taslağa alır
POST/api/merchant/cms/collections/:collectionId/items/:id/scheduleItem'ı ileri tarihe planlar
GET/api/merchant/cms/collections/:collectionId/items/:id/revisionsRevizyon geçmişini listeler
POST/api/merchant/cms/collections/:collectionId/items/:id/revisions/:revisionId/restoreRevizyon geri yükler
POST/api/merchant/cms/collections/:collectionId/items/bulk-deleteToplu siler
POST/api/merchant/cms/collections/:collectionId/items/reorderSıralamayı günceller

Admin Query Parametreleri#

Admin listelerinde desteklenen pratik parametreler:

ParametreAçı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=publishedItem status filtresi
page=1Sayfalama
limit=20Sayfa boyutu

Örnek:

HTTP
GET /api/merchant/cms/collections/:collectionId/items?field=string&lang=tr&page=1&limit=20

Storefront CMS API'leri#

Storefront uçları x-secret-key ister ve body üzerinden locale, page, limit, sort gibi değerleri alır.

MetotEndpointAçıklama
POST/api/store/cms/collectionsAktif collection listesini getirir
POST/api/store/cms/collections/:slugCollection detayını slug ile getirir
POST/api/store/cms/collections/:slug/itemsCollection item listesini getirir
POST/api/store/cms/collections/:slug/items/:itemSlugTek item'ı slug ile getirir
POST/api/store/cms/items/:idTek item'ı ID ile getirir

Örnek:

HTTP
POST /api/store/cms/collections/blog/items
x-secret-key: merchant_secret_key
Content-Type: application/json
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 durumuStorefront'ta görünür mü?
draftHayır
publishedEvet
scheduled ve tarihi geldiyseEvet
scheduled ve tarihi gelmediyseHayı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:

JSON
{
  "_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.