API ve Panel Hizalaması

Genel bakış

/webadmin'deki tarayıcı yöneticisi ve Internal Content API, aynı CMS verilerine açılan iki ön kapıdır, ancak aynı anda oluşturulmamışlardır ve aynı zemini kapsamazlar. Panel tam operatör yüzeyidir. API, güvenilir yapay zeka ve operatör araçları için kasıtlı olarak daha dar bir yüzeydir.

Bu belge, ikisinin aynı fikirde olduğu, API'nin daha az kapsadığı ve boşluğun tamamlanmamış bir iş yerine kasıtlı bir sınır olduğu yerlerin yetkili haritasıdır. Şu şekilde var:

  • an AI veya operatör aracı, denemeden önce neyi yapamayacağını bulabilir;
  • a incelemecisi, eksik bir uç noktadan kasıtlı bir sınırı ayırt edebilir;
  • Yol haritası çalışmasının kapatılacak tek bir listesi vardır.

Bu bir spesifikasyon değil, bir durum kaydıdır. Bir uç nokta gönderildiğinde, aynı taahhütte buradaki satırı güncelleyin.

Bunu Nasıl Okumalı?

Her satır bir durum taşır:

Durum Anlamı
Hizalanmış API, panelin başardığını gerçekleştirebilir. Şekil farklılık gösterebilir.
Kısmi Bir uç nokta mevcuttur ancak panelden daha az alanı veya daha az işlemi kapsar.
Eksik API yolu yok. Yalnızca panel, tasarım gereği değil, ihmal nedeniyle.
Tasarım gereği yalnızca panel Kasıtlı olarak dışlandı. Nedeni satıra kaydedilir.

"Tasarım gereği yalnızca panel", "sert" ile eşanlamlı değildir. Bu, Internal Content API'nin Sınırlar bölümünde açıklanan güvenlik duruşunun hariç tutulduğu anlamına gelir: otomatik yayınlama yok, tarama veya uzaktan getirme yok, keyfi içe/dışa aktarma değişimi yok ve bir belirteç aracılığıyla ayrıcalık yükseltme yok.

API Yüzeyleri

API tek bir önek değildir. CMS ile entegre olan bir araç iki kişiyle konuşur:

Öneki Yetki Kapsam
/webadmin/api internal-api.token artı rota başına yetenek Herşey
/admin-api internal-api.token artı rota başına yetenek Site ve alan kayıtları, eski takma ad

Bölünme ilkesel olmaktan ziyade tarihseldir. /admin-api, yetenek modelinden öncesine dayanır ve domains.write ve domains.delete tanıtılana kadar rotaları, belirteç geçerliliğinin ötesinde hiçbir şeyi kontrol etmedi; herhangi bir geçerli belirteç, bir etki alanını ekleyebilir veya kaldırabilir. Etki alanı rotaları artık /webadmin/api altında da yaşıyor; yeni entegrasyonların işaret etmesi gereken yer burası; eski önek mevcut temel hazırlık araçları için çalışmaya devam eder.

Yetenekler CmsApiTokenCapabilities'de tanımlanmıştır. Bu belgedeki bir boşluk bazen eksik bir rota kadar eksik bir yetenektir.

Pages

Yeteneği Paneli API'si Durum
Sayfaları listeleyin ve okuyun Evet GET /pages, GET /pages/{page} Hizalanmış
Taslak sayfası oluşturun Evet POST /content/apply (create_draft_page) Hizalanmış
Taslak sayfasındaki alan içeriğini değiştirme Evet POST /content/apply (replace_existing_draft_page) Hizalanmış
Yayınlanan sayfalar için aşamalı güncellemeler Evet POST /content/apply (staged-update modes) Hizalanmış
Bir sayfa yayınlayın Evet POST /pages/{page}/publish Hizalanmış
Genel kabuk düzenini değiştirin Evet PATCH /pages/{page}/layout Hizalanmış
Düzen yuvalarını senkronize et Evet POST /pages/{page}/sync-layout-slots Hizalanmış
Bir sayfayı sil Evet DELETE /pages/{page} Hizalanmış
Sayfa CSS ve JS varlıkları Evet /pages/{page}/assets/* Hizalanmış
Bir sayfayı yeniden adlandırın veya bilgi notunu veya yolunu değiştirin Evet PATCH /pages/{page}/translations/{translation} Hizalanmış
Sayfa çevirileri: yerel ayar ekleyin, adı düzenleyin, bilgi, yol, SEO, Grafiği Aç Evet /pages/{page}/translations/* Hizalanmış
Sayfayı önizleyin Evet GET /pages/{page}/render, and /webadmin/pages/{page}/preview already took a Bearer token Hizalanmış
Sayfa sürümleri ve geri yükleme adayları Evet /pages/{page}/versions/* and /pages/{page}/version-candidates/* Hizalanmış — korumalı başvurudan önce bir önizleme adayı hazırlayın
Sayfa yuvası ekleme, kaldırma veya yeniden sıralama Evet Yalnızca sync-layout-slots ve yuva kaynağı Kısmi
Sayfa yuvasındaki her bloğu temizle Evet Shared Slots, clear'ye sahiptir; sayfalar Kısmi
Sayfayı çoğalt Evet Yok Eksik
Sayfayı başka bir siteye taşıma Evet Yok Eksik
JSON'dan sayfa içe aktarma Evet Yok Eksik
HTML'den bloğa sayfa dönüştürücü Evet Yok Eksik
Sayfaları toplu silme Evet Yalnızca tek silme Kısmi
Yayınlama dışındaki iş akışı geçişleri Evet Yok Eksik

Bu listeye hakim olan ikisi kapalı.

Sayfa kimliği ve sayfa çevirileri. create_draft_page, name, slug ve path'yi bir yerel ayar için bir sayfa çeviri satırına yazar ve Sayfa Çevirisi API'si gelene kadar daha sonra hiçbir şey bu satıra dokunamaz: değiştirme ve aşamalı güncelleme modları page'yi null'ye normalleştirir ve yalnızca yuva içeriğini işler. Yanlış yolda oluşturulan bir sayfa yalnızca silinip yeniden oluşturularak düzeltilebiliyordu, hiçbir sayfa ikinci bir yerel ayar kazanamıyordu ve hepsi o satırda yaşayan sayfa düzeyinde SEO (seo_title, seo_description, seo_keywords, og_title, og_description, og_image_media_id) geçerliydi. yazılamaz ve okuma yüklerinde de eksik.

/pages/{page}/translations/* artık bunların tamamını kapsıyor ve Page başlığı ve bilgi varsayılan çeviriye okunduğundan, bu çeviriyi yeniden adlandırmak sayfayı yeniden adlandırır. Bu alanların neden çeviri satırına ait olduğunu öğrenmek için Yerelleştirme'ye ve yazma sözleşmesi için Internal Content API'ye bakın.

Site düzeyindeki SEO varsayılanlarına ayrı bir nedenden dolayı hala erişilemiyor; aşağıdaki Sitelere bakın.

Blocks

Yeteneği Paneli API'si Durum
Blokları listeleme ve okuma Evet GET /blocks, GET /blocks/{block} Hizalanmış
Sayfa yuvasında blok oluşturma Evet POST /pages/{page}/slots/{slot}/blocks Hizalanmış
Blok içeriğini ve ayarlarını güncelleyin Evet PATCH /blocks/{block} Hizalanmış
Blokları yeniden sırala Evet PATCH /pages/{page}/slots/{slot}/blocks/reorder Hizalanmış
Bir bloğu silme Evet DELETE /pages/{page}/slots/{slot}/blocks/{block} Hizalanmış
Yazar html blokları Evet block_type_not_api_writable ile reddedildi Tasarım gereği yalnızca panel — ham işaretleme, insanlar tarafından incelenmeye devam eder

1.91.0'dan itibaren sekiz yerel medya bloğu, panelle aynı seçim ve geri dönüşle planlarda ve PATCH'te mobile_media_id'yi de açığa çıkarıyor. Bkz. Medya Görüntüsü Çeşitleri.

Bloklar CMS'nin en iyi hizalanmış alanıdır. Ayar yazma işlemleri ayrıca boşluk yerine koruma görevi gören BlockSettingsPatchPolicy tarafından da kısıtlanır.

Ortak Slots

Yeteneği Paneli API'si Durum
Listeleyin, okuyun, oluşturun Evet GET/POST /shared-slots Hizalanmış
Blok oluştur, yeniden sırala, sil, temizle Evet /shared-slots/{sharedSlot}/blocks/* Hizalanmış
Shared Slot bloklarını yayınlayın Evet POST /shared-slots/{sharedSlot}/publish-blocks Hizalanmış
Bir sayfa yuvasına Shared Slot atama Evet POST /pages/{page}/slots/{slot}/shared-slot Hizalanmış
Shared Slot'yi güncelleyin (etiket, tanıtıcı, yuva türü, düzen, etkin durum) Evet PATCH /shared-slots/{sharedSlot} Hizalanmış
Shared Slot'yi silin Evet DELETE /shared-slots/{sharedSlot} Hizalanmış
Shared Slot'yi başka bir siteye taşıma Evet unsupported_shared_slot_fields ile reddedildi Tasarım gereği yalnızca panel — siteler arası taşıma, yeniden adlandırma değil
Shared Slot revizyonları: listele, göster, geri yükle Evet Yok Eksik

Deletion, yıkıcı shared-slots.delete yeteneğini gerektirir ve hala referansta bulunan herhangi bir sayfa yuvasını Shared Slot kaldırmayı reddeder, referans yuvalarını listeler, böylece bir araç önce bunları ayırabilir.

Media

Yeteneği Paneli API'si Durum
Listele, oku, yükle, uzaktan getir Evet /media, /media/fetch Hizalanmış
Açıklayıcı meta verileri güncelleyin Evet PATCH /media/{media} Hizalanmış
Değiştirin, taşıyın, silin Evet /media/{media}/replace, /move, DELETE Hizalanmış
Medya klasörü oluşturun Evet POST /media/folders Hizalanmış
Görüntü dönüşümlerini yeniden oluşturun Evet Yok Eksik
Toplu silme Evet Yalnızca tek silme Kısmi
Depolama alanlarını, ikili dosyayı veya klasörü PATCH aracılığıyla değiştirin Evet unsupported_media_update_fields ile reddedildi Tasarım gereği yalnızca panel — meta veri yazma işlemleri baytları taşımamalıdır

POST /media/folders, aynı üst öğe altında zaten var olan bir adı reddeder ve mevcut klasörü döndürür; böylece yeniden deneme aracı, kopyaları yığmak yerine onu yeniden kullanır.

Yeteneği Paneli API'si Durum
Menüleri listeleme ve okuma Evet /navigation-menus Hizalanmış
Menü oluştur Evet POST /navigation-menus Hizalanmış
Öğe oluşturma, güncelleme, yeniden sıralama, silme Evet /navigation-menus/{menu}/items/* Hizalanmış
Tüm menüyü sil Evet Yok Eksik
Çocukları olan bir öğeyi silin Evet Çocuklarla ilgilenilene kadar reddedildi Tasarım gereği yalnızca panel — sessiz kademe yok

Etkileşim ve Mesajlar

Yeteneği Paneli API'si Durum
Yorumları ve derecelendirmeleri okuyun Evet /engagement/comments, /engagement/ratings Hizalanmış
Orta düzeyde yorum durumu Evet PATCH /engagement/comments/{comment} Hizalanmış
Yorumu silme Evet Yok Eksik
İletişim formu mesajları: listele, oku, durum, sil Evet Yok Eksik

İletişim mesajlarının hiçbir API temsili yoktur. Bir araç, API aracılığıyla bir iletişim formu oluşturabilir ancak gönderimlerini okuyamaz veya bunların nereye teslim edildiğini öğrenemez; bkz. Sites.

Siteler ve Yapılandırma

Panel site formu yirmiden fazla alan yazar. API bunları dar tek amaçlı uç noktalar aracılığıyla kapsar: branding, head, timezone, public-theme, seo, contact-recipient ve locales.

Alan veya yetenek Paneli API'si Durum
Görünen ad, slogan, site simgesi, sosyal imaj, marka paleti, yazı tipleri Evet PATCH /sites/{site}/branding Hizalanmış
Özel kafa HTML Evet PATCH /sites/{site}/head Hizalanmış
Saat Dilimi Evet PATCH /sites/{site}/timezone Hizalanmış
Genel tema ön ayarı Evet POST /sites/{site}/public-theme Hizalanmış
Site CSS ve JS dosyaları geçersiz kılar Evet /sites/{site}/assets/{type} Hizalanmış
Site SEO varsayılanları (seo_title, seo_description, seo_keywords) Evet PATCH /sites/{site}/seo Hizalanmış
Alıcı e-postasıyla iletişime geçin Evet PATCH /sites/{site}/contact-recipient Hizalanmış
Yerel ayar ataması (locale_ids) Evet PUT /sites/{site}/locales Hizalanmış – daha katı: sayfa çevirileriyle yerel ayarı ayırmayı reddediyor
Site adı ve tanıtıcı Evet Yok Eksik
Birincil site bayrağı Evet Yok Eksik
Site değişkenleri Evet Yok Eksik
Site oluşturma veya silme Evet Yok Tasarım gereği yalnızca panel — site_create yasaklı bir plan anahtarıdır
Bir siteyi klonlayın Evet Yok Tasarım gereği yalnızca panel — tüm sitenin çoğaltılması operatöre aittir
Bir sitenin tanıtımını yapın Evet Yok Tasarım gereği yalnızca panel — bkz. İşlemler
Siteyi dışa aktarma ve içe aktarma Evet Yok Tasarım gereği yalnızca panel — isteğe bağlı içe aktarma değişimi kapsam dışıdır
Etki alanları: listeleme, ekleme, güncelleme, birincil ayarlama, kaldırma, durum Evet /webadmin/api/sites/{site}/domains/* Hizalanmış

Burada eksik kalan şey site kimliği (ad, tanıtıcı, birincil işaret) ve site değişkenleridir. Bunlar içerikten çok kaynak sağlamaya daha yakın ve henüz hiçbir araç onlara ihtiyaç duymadı.

Şeması ve Tanımlar

Bu gruptaki her şey okunabilir ve hiçbiri yazılamaz.

Yeteneği Paneli API'si Durum
Sayfa düzenleri: oluşturma, güncelleme, alan yönetimi Evet GET /page-layouts only Kısmi — salt okunur
Blok türleri: oluştur, güncelle, sil Evet GET /block-types only Kısmi — salt okunur
Yuva türleri Salt okunur liste Yok Eksik — okunamıyor bile
Yerel ayarlar: oluştur, güncelle, etkinleştir, devre dışı bırak Evet POST /locales, PATCH /locales/{locale} Hizalanmış
Yerel ayarlar: sil Evet Yok Eksik
Simge kataloğu: oku Evet GET /icon-catalog Hizalanmış
Simge kataloğu: senkronizasyon ve etkinleştirme Evet Yok Eksik

Salt okunur şema erişimi savunulabilir: blok türleri ve düzenler yapısal sözleşmelerdir ve bunları bir belirtecin icat etmesine izin vermek, sonraki her içerik yazımının patlama yarıçapını genişletir. Böyle bir karar hiçbir yerde yazılmadığından, tasarımdan ziyade Kısmi olarak kaydedilmiştir.

Kullanıcılar, Sistem ve İşlemler

Yeteneği Paneli API'si Durum
Kullanıcı yönetimi Evet Yok Tasarım gereği yalnızca panel; jeton yoluyla ayrıcalık artışı yok
API belirteci yönetimi Evet Yok Tasarım gereği yalnızca panel — bir jeton, jeton basmamalıdır
Sistem ayarları ve posta testi Evet Yok Tasarım gereği yalnızca panel — kurulum çapındaki konfigürasyon operatöre aittir
Yedekleme geri yükleme noktası oluşturma Evet backups.create, create_restore_point'yi POST /content/apply üzerinde silahlandırıyor Bu dar operasyona uygun
Yedeklemeyi geri yükleme ve indirme Evet Yok Tasarım gereği yalnızca panel
Yedekleme temizleme önizlemesi ve çalıştırma Evet GET /system/backup-cleanup, POST /system/backup-cleanup/run Ayrı olarak verilen backups.read ve backups.delete ile uyumludur
Sistem güncellemesini kontrol edin ve çalıştırın Evet /system/updates/check, POST /system/updates, /system/updates/operations/{operation} 1.90.0'dan uyarlanmıştır - kurulum çapında sistem belirteci ve açık sürüm/sağlama toplamı onayı; Güncellemelere bakın
Arama dizinini yeniden oluşturun Evet Yok Eksik
Ziyaretçi raporları Evet Yok Eksik
Eklentiler: kataloğa göz atma ve yükleme, etkinleştirme, devre dışı bırakma, kurma, kaldırma, ZIP yükleme Evet /plugins/* Hizalanmış
Eklentiler: yüklü bir eklentiyi katalogdan güncelleyin Evet POST /plugins/catalog/{plugin}/update Hizalanmış
Eklentiler: bir eklentinin ayrıntılarını okuyun Evet Yalnızca index Kısmi

Kesişen: Bilinmeyen Plan Anahtarları

Bu sorun düzeltilene kadar, bu belgedeki her boşluk arayan tarafından sessizdi.

POST /content/validate ve POST /content/apply, yasak anahtarlardan oluşan sabit bir listeyi (anahtarları yayınlama ve planlama, site oluşturma, uzaktan getirme ve yıkıcı fiiller) reddetti, ancak hiçbir şey tanınmadı. Plan normalleştirme, bildiği anahtarları okudu ve geri kalanını görmezden geldi, bu nedenle page.seo_title taşıyan bir plan, ok: true'yi ve hiçbirini yazmamış bir 201'yi döndürdü. Bir araç başarı bildirdi; hiçbir şey olmamıştı. Sayfayı geriye doğru okumak da bunu ortaya çıkarmadı çünkü API'nin yazamadığı alanlar aynı zamanda okuma veri yüklerinde de mevcut değil.

Tanınmayan anahtarlar artık 422 ve kararlı kod unsupported_plan_fields ile reddediliyor ve hata yolu, reddedilen her alanı adlandırıyor. Kabul edilen anahtar seti mode planının kapsamına alınmıştır: replace_slots bir sayfayı değiştirirken anlamlıdır ve bir sayfa oluştururken reddedilir.

Bu, aşağıdaki herhangi bir boşluğu kapatmaz. Bu, bir aracın hiç gerçekleşmemiş bir yazma işlemini raporlamak yerine panele geri dönebilmesinin ön koşulu olan, onları keşfedilebilir hale getirir.

Yol Haritası

Çabaya göre değil, her birinin engellemeyi kaldırma miktarına göre sıralanır.

Kademe 1 — tamamlandı

  1. Tanınmayan plan anahtarlarını 422 ile reddedin. Yukarıdaki Bilinmeyen Plan Anahtarlarına bakın.
  2. Sayfa çeviri yazma uç noktası. /pages/{page}/translations/* adı, bilgiyi, yolu, SEO ve Açık Grafiği yazar ve bunları geri okur.
  3. Sayfa kimlik güncellemesi. 2 ile birlikte sunulur: başlık, bilgi ve yol çeviri alanlarıdır ve varsayılan yerel ayar çevirisi sayfanın kendi kimliğidir.
  4. Shared Slot güncelleyin ve silin. PATCH ve DELETE /shared-slots/{sharedSlot}, yeni shared-slots.delete özelliğinin arkasında ikincisi.

Kademe 2 — tamamlandı

  1. Extend site ayarları: SEO varsayılanları, contact_recipient_email, locale_ids. /sites/{site}/seo, /contact-recipient ve /locales.
  2. Sayfanın ön izlemesini yapın veya anlık görüntüyü oluşturun. GET /pages/{page}/render, format=html ve yerel ayara göre işleme ile. Liste yazıldığında bunun kapsamı yanlış seçilmişti: /webadmin/pages/{page}/preview zaten bir Bearer jetonunu kabul etmişti, dolayısıyla aradaki fark, oluşturma yeteneğinden değil, keşfedilebilirlik ve yerel ayar seçiminden kaynaklanıyordu.
  3. Medya klasörü oluşturma. GET/POST /media/folders.
  4. Etki alanı rotalarını geçebilme yeteneği ve bunları /webadmin/api altına taşıyın. Bitti ve update ve set primary onunla birlikte geldi.

Geriye ne kaldı

Yukarıda hâlâ Eksik olarak işaretlenen her şey ikinci derecedendir: sayfa çoğaltma ve site taşıma, toplu işlemler, HTML'den bloğa dönüştürücü, yorum silme, kişi mesajları, şema yazma, arama yeniden dizini ve ziyaretçi raporları. Bunların hiçbiri bir aracın sayfa oluşturmasını, kontrol etmesini, düzeltmesini ve yayınlamasını engellemez; Katman 1 ve 2'nin konusu da budur. Listeyi incelemek yerine talebe göre seçim yapın.

Kademe 3 — kasıtlı sınırlar

Kullanıcılar, jeton verme, sistem ayarları, yedekleme geri yükleme/indirme, site oluşturma ve silme, klonlama, tanıtma ve aktarma yalnızca panelde kalma. Sistem güncellemeleri, 1.90.0'dan itibaren ayrı olarak verilen kurulum çapında API özellikleri aracılığıyla mevcuttur. "API'de olmaması"nın incelenmemiş bir devamsızlık yerine kayıtlı bir karar olması için burada listelenmiştir.

1.94.2'ye Kadar Eklenti Yaşam Döngüsü ve Kurtarma

1.92.0'dan itibaren, panel ve API yükleme/güncelleme/etkinleştirme, gerekli eklenti veritabanı değişikliklerini otomatik olarak uygular ve arıza sonrasında devre dışı durumunu korur. Etkinleştirme/kurulum aynı uyumluluk kapısını kullanır; uyumsuz istekler HTTP 409 ve plugin_incompatible döndürür. 1.94.0'dan itibaren, başlangıç doğrulaması etkinleştirmeden önce yeni bir süreçte çalıştırılır, başarılı güncellemeler önceki paketi korur ve çalışma zamanı kaynak/rota hataları eklentiyi karantinaya alır.

/webadmin/plugin-recovery'deki kurtarma, kimliği doğrulanmış ayrı bir panel yüzeyidir. CMS 1.94.2, normal yönetici erişimine sahip etkin bir Super admin gerektirir. Arızalı bir yönetilen eklentiyi devre dışı bırakabilir veya tutulan paketi yalnızca veritabanı geçişi yapılmadığında geri yükleyebilir. /plugins/*'ye jeton erişimi bu tarayıcı kurtarma yetkisinin yerine geçmez. Bkz. Ekleme Sistemi.