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.
Navigation
| 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ı
Tanınmayan plan anahtarlarınıYukarıdaki Bilinmeyen Plan Anahtarlarına bakın.422ile reddedin.Sayfa çeviri yazma uç noktası./pages/{page}/translations/*adı, bilgiyi, yolu, SEO ve Açık Grafiği yazar ve bunları geri okur.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.Shared Slot güncelleyin ve silin.PATCHveDELETE /shared-slots/{sharedSlot}, yenishared-slots.deleteözelliğinin arkasında ikincisi.
Kademe 2 — tamamlandı
Extend site ayarları: SEO varsayılanları,contact_recipient_email,locale_ids./sites/{site}/seo,/contact-recipientve/locales.Sayfanın ön izlemesini yapın veya anlık görüntüyü oluşturun.GET /pages/{page}/render,format=htmlve yerel ayara göre işleme ile. Liste yazıldığında bunun kapsamı yanlış seçilmişti:/webadmin/pages/{page}/previewzaten 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.Medya klasörü oluşturma.GET/POST /media/folders.Etki alanı rotalarını geçebilme yeteneği ve bunlarıBitti ve/webadmin/apialtına taşıyın.updateveset primaryonunla 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.