API und Panel-Ausrichtung

Übersicht

Der Browser-Administrator bei /webadmin und Internal Content API sind zwei Eingangstüren zu denselben CMS-Daten, aber sie wurden nicht zur gleichen Zeit erstellt und decken nicht den gleichen Bereich ab. Das Panel ist die komplette Bedienoberfläche. Die API ist eine bewusst schmalere Oberfläche für vertrauenswürdige KI- und Bedienertools.

Dieses Dokument ist die maßgebliche Übersicht darüber, wo sich die beiden einig sind, wo die API weniger abdeckt und wo die Lücke eher eine bewusste Grenze als unvollendete Arbeit darstellt. Es existiert so:

  • an KI oder Bedienertool kann herausfinden, was es nicht kann, bevor es es versucht;
  • Ein Prüfer kann eine absichtliche Grenze von einem fehlenden Endpunkt unterscheiden;
  • Roadmap-Arbeit hat eine einzige Liste, gegen die geschlossen werden kann.

Es handelt sich um einen Statusdatensatz, nicht um eine Spezifikation. Wenn ein Endpunkt ausgeliefert wird, aktualisieren Sie die Zeile hier im selben Commit.

So lesen Sie dies

Jede Zeile trägt einen Status:

Status Bedeutung
Ausgerichtet Die API kann das leisten, was das Panel leistet. Form kann abweichen.
Teilweise Ein Endpunkt ist vorhanden, deckt jedoch weniger Felder oder Vorgänge ab als das Panel.
Fehlt Es ist kein API-Pfad vorhanden. Panel-nur durch Unterlassung, nicht durch Absicht.
Nur-Panel-Design Bewusst ausgeschlossen. Der Grund wird in der Zeile vermerkt.

„Panel-only by design“ ist kein Synonym für „hart“. Dies bedeutet, dass der Ausschluss die im Abschnitt „Grenzen“ von Internal Content API beschriebene Sicherheitslage darstellt: keine automatische Veröffentlichung, kein Crawling oder Remote-Abruf, kein willkürlicher Import/Export-Ersatz und keine Rechteausweitung durch ein Token.

API-Oberflächen

Die API ist kein einzelnes Präfix. Ein in das CMS integriertes Tool kommuniziert mit zwei:

Präfix Authentifizierung Umfang
/webadmin/api internal-api.token plus eine Funktion pro Route Alles
/admin-api internal-api.token plus eine Funktion pro Route Site- und Domain-Datensätze, Legacy-Alias

Die Aufteilung ist eher historischer als prinzipieller Natur. /admin-api existierte vor dem Fähigkeitsmodell und seine Routen überprüften nichts über die Token-Gültigkeit hinaus, bis domains.write und domains.delete eingeführt wurden – jedes gültige Token konnte eine Domäne hinzufügen oder entfernen. Die Domänenrouten leben jetzt auch unter /webadmin/api, wohin neue Integrationen führen sollten; Das Legacy-Präfix funktioniert weiterhin für vorhandene Bereitstellungstools.

Fähigkeiten sind in CmsApiTokenCapabilities definiert. Eine Lücke in diesem Dokument ist manchmal eine fehlende Fähigkeit oder eine fehlende Route.

Pages

-Fähigkeit Panel API Status
Seiten auflisten und lesen Ja GET /pages, GET /pages/{page} Ausgerichtet
Erstellen Sie eine Entwurfsseite Ja POST /content/apply (create_draft_page) Ausgerichtet
Slot-Inhalt auf einer Entwurfsseite ersetzen Ja POST /content/apply (replace_existing_draft_page) Ausgerichtet
Gestaffelte Updates für veröffentlichte Seiten Ja POST /content/apply (staged-update modes) Ausgerichtet
Eine Seite veröffentlichen Ja POST /pages/{page}/publish Ausgerichtet
Ändern Sie das öffentliche Shell-Layout Ja PATCH /pages/{page}/layout Ausgerichtet
Layout-Slots synchronisieren Ja POST /pages/{page}/sync-layout-slots Ausgerichtet
Eine Seite löschen Ja DELETE /pages/{page} Ausgerichtet
Seite CSS und JS-Assets Ja /pages/{page}/assets/* Ausgerichtet
Benennen Sie eine Seite um oder ändern Sie ihren Slug oder Pfad Ja PATCH /pages/{page}/translations/{translation} Ausgerichtet
Seitenübersetzungen: Gebietsschema hinzufügen, Namen, Slug, Pfad, SEO, Open Graph bearbeiten Ja /pages/{page}/translations/* Ausgerichtet
Vorschau einer Seite Ja GET /pages/{page}/render, and /webadmin/pages/{page}/preview already took a Bearer token Ausgerichtet
Seitenversionen und Wiederherstellungskandidaten Ja /pages/{page}/versions/* and /pages/{page}/version-candidates/* Ausgerichtet – Bereiten Sie einen Vorschaukandidaten vor, bevor Sie sich vorsichtig bewerben
Einen Seitenbereich hinzufügen, entfernen oder neu anordnen Ja Nur sync-layout-slots und Slot-Quelle Teilweise
Löschen Sie jeden Block in einem Seitenslot Ja Shared Slots haben clear; Seiten nicht Teilweise
Eine Seite duplizieren Ja Keine Fehlt
Eine Seite auf eine andere Site verschieben Ja Keine Fehlt
Importieren Sie eine Seite aus JSON Ja Keine Fehlt
HTML-zu-Block-Seitenkonverter Ja Keine Fehlt
Massenlöschung von Seiten Ja Nur einzelnes Löschen Teilweise
Andere Workflow-Übergänge als „Publish “. Ja Keine Fehlt

Die beiden, die diese Liste früher dominierten, sind geschlossen.

Seitenidentität und Seitenübersetzungen. create_draft_pageschreibtname,slug, Undpathauf eine Seitenübersetzungszeile für ein Gebietsschema, und bis zur Landung der Seitenübersetzungs-API konnte danach nichts mehr diese Zeile berühren: Die Ersetzungs- und Stufenaktualisierungsmodi normalisieren sichpageZunullund verarbeiten nur Slot-Inhalte. Eine Seite, die im falschen Pfad erstellt wurde, konnte nur durch Löschen und Neuerstellen behoben werden, keine Seite konnte ein zweites Gebietsschema erhalten und SEO auf Seitenebene –seo_title,seo_description,seo_keywords,og_title,og_description,og_image_media_id, die sich alle in dieser Zeile befinden, war nicht beschreibbar und fehlte auch in den Lesenutzdaten.

/pages/{page}/translations/*deckt jetzt alles ab, und weilPageTitel und Slug werden bis zur Standardübersetzung durchgelesen. Durch das Umbenennen dieser Übersetzung wird die Seite umbenannt. SehenLokalisierungwarum diese Felder in die Übersetzungszeile gehören undInternal Content APIfür den Schreibvertrag.

SEO-Standardwerte auf Website-Ebene sind aus einem anderen Grund immer noch nicht erreichbar; siehe Websites unten.

Blocks

-Fähigkeit Panel API Status
Blöcke auflisten und lesen Ja GET /blocks, GET /blocks/{block} Ausgerichtet
Erstellen Sie einen Block in einem Seitenbereich Ja POST /pages/{page}/slots/{slot}/blocks Ausgerichtet
Blockinhalt und -einstellungen aktualisieren Ja PATCH /blocks/{block} Ausgerichtet
Blöcke neu anordnen Ja PATCH /pages/{page}/slots/{slot}/blocks/reorder Ausgerichtet
Einen Block löschen Ja DELETE /pages/{page}/slots/{slot}/blocks/{block} Ausgerichtet
Autor html Blöcke Ja Abgelehnt mit block_type_not_api_writable Vom Design her nur für das Panel – das Roh-Markup wird weiterhin von Menschen überprüft

Ab 1.91.0 machen acht native Medienblöcke auch mobile_media_id in Plänen und PATCH verfügbar, mit der gleichen Auswahl und dem gleichen Fallback wie im Panel. Siehe Medienbildvarianten.

Blocks sind der am besten ausgerichtete Bereich des CMS. Das Schreiben von Einstellungen wird zusätzlich durch BlockSettingsPatchPolicy eingeschränkt, was eher ein Schutz als eine Lücke ist.

Geteilte Slots

-Fähigkeit Panel API Status
Auflisten, lesen, erstellen Ja GET/POST /shared-slots Ausgerichtet
Block erstellen, neu anordnen, löschen, löschen Ja /shared-slots/{sharedSlot}/blocks/* Ausgerichtet
Veröffentlichen Sie Shared Slot-Blöcke Ja POST /shared-slots/{sharedSlot}/publish-blocks Ausgerichtet
Weisen Sie einem Seitenslot einen Shared Slot zu Ja POST /pages/{page}/slots/{slot}/shared-slot Ausgerichtet
Aktualisieren Sie einen Shared Slot (Beschriftung, Handle, Steckplatztyp, Layout, aktiver Status) Ja PATCH /shared-slots/{sharedSlot} Ausgerichtet
Löschen Sie einen Shared Slot Ja DELETE /shared-slots/{sharedSlot} Ausgerichtet
Verschieben Sie einen Shared Slot auf eine andere Site Ja Abgelehnt mit unsupported_shared_slot_fields Absichtlich nur Panel – eine standortübergreifende Verschiebung, keine Umbenennung
Shared Slot-Revisionen: Auflisten, Anzeigen, Wiederherstellen Ja Keine Fehlt

Deletion erfordert die destruktive Funktion shared-slots.delete und weigert sich, einen Shared Slot von allen Seitenslots zu entfernen, auf die noch verwiesen wird, und listet die referenzierenden Slots auf, damit ein Tool sie zuerst trennen kann.

Media

-Fähigkeit Panel API Status
Auflisten, lesen, hochladen, Remote abrufen Ja /media, /media/fetch Ausgerichtet
Beschreibende Metadaten aktualisieren Ja PATCH /media/{media} Ausgerichtet
Ersetzen, verschieben, löschen Ja /media/{media}/replace, /move, DELETE Ausgerichtet
Erstellen Sie einen Medienordner Ja POST /media/folders Ausgerichtet
Bildtransformationen neu generieren Ja Keine Fehlt
Massenlöschung Ja Nur einzelnes Löschen Teilweise
Ändern Sie Speicherfelder, Binärdatei oder Ordner über PATCH Ja Abgelehnt mit unsupported_media_update_fields Vom Design her nur für das Panel vorgesehen – Metadaten-Schreibvorgänge dürfen keine Bytes verschieben

POST /media/folders lehnt einen Namen ab, der bereits unter demselben übergeordneten Ordner vorhanden ist, und gibt den vorhandenen Ordner zurück, sodass ein Wiederholungstool ihn wiederverwendet, anstatt Duplikate anzuhäufen.

Fähigkeit Panel API Status
Menüs auflisten und lesen Ja /navigation-menus Ausgerichtet
Erstellen Sie ein Menü Ja POST /navigation-menus Ausgerichtet
Artikel erstellen, aktualisieren, neu anordnen, löschen Ja /navigation-menus/{menu}/items/* Ausgerichtet
Ein ganzes Menü löschen Ja Keine Fehlt
Löschen Sie ein Element, das untergeordnete Elemente hat Ja Abgelehnt, bis die Kinder behandelt werden Nur Panel-Design – keine stille Kaskade

Engagement und Nachrichten

-Fähigkeit Panel API Status
Lesen Sie Kommentare und Bewertungen Ja /engagement/comments, /engagement/ratings Ausgerichtet
Moderater Kommentarstatus Ja PATCH /engagement/comments/{comment} Ausgerichtet
Einen Kommentar löschen Ja Keine Fehlt
Nachrichten im Kontaktformular: Auflisten, Lesen, Status, Löschen Ja Keine Fehlen

Kontaktnachrichten haben überhaupt keine API-Darstellung. Ein Tool kann über die API ein Kontaktformular erstellen, aber weder seine Einsendungen lesen noch erfahren, wohin sie übermittelt werden – siehe Sites.

Standorte und Konfiguration

Das Panel-Site-Formular schreibt mehr als zwanzig Felder. Die API deckt sie durch schmale Einzweck-Endpunkte ab: branding, head, timezone, public-theme, seo, contact-recipient und locales.

Feld oder Fähigkeit Panel API Status
Anzeigename, Slogan, Favicon, soziales Image, Markenpalette, Schriftarten Ja PATCH /sites/{site}/branding Ausgerichtet
Benutzerdefinierter Kopf HTML Ja PATCH /sites/{site}/head Ausgerichtet
Zeitzone Ja PATCH /sites/{site}/timezone Ausgerichtet
Öffentliche Theme-Voreinstellung Ja POST /sites/{site}/public-theme Ausgerichtet
Site CSS und JS überschreiben Dateien Ja /sites/{site}/assets/{type} Ausgerichtet
Site-SEO-Standardwerte (seo_title, seo_description, seo_keywords) Ja PATCH /sites/{site}/seo Ausgerichtet
E-Mail-Adresse des Empfängers kontaktieren Ja PATCH /sites/{site}/contact-recipient Ausgerichtet
Gebietsschemazuweisung (locale_ids) Ja PUT /sites/{site}/locales Ausgerichtet – strenger: weigert sich, ein Gebietsschema von Seitenübersetzungen zu trennen
Site-Name und Handle Ja Keine Fehlt
Primärstandort-Flag Ja Keine Fehlt
Site-Variablen Ja Keine Fehlt
Eine Site erstellen oder löschen Ja Keine Nur für Panel vorgesehen – site_create ist ein verbotener Planschlüssel
Eine Site klonen Ja Keine Vom Design her nur auf das Panel beschränkt – die Vervielfältigung des gesamten Standorts liegt im Besitz des Betreibers
Eine Website bewerben Ja Keine Nur Panel-Design – siehe Betrieb
Site-Export und -Import Ja Keine Beabsichtigt, nur das Panel zu verwenden – willkürlicher Importersatz liegt außerhalb des Anwendungsbereichs
Domänen: auflisten, hinzufügen, aktualisieren, primär festlegen, entfernen, Status Ja /webadmin/api/sites/{site}/domains/* Ausgerichtet

Was hier noch fehlt, ist die Site-Identität – Name, Handle, primäres Flag – und Site-Variablen. Diese sind näher an der Bereitstellung als an Inhalten, und noch kein Tool hat sie benötigt.

Schema und Definitionen

Alles in dieser Gruppe ist lesbar und nichts davon ist beschreibbar.

-Fähigkeit Panel API Status
Seitenlayouts: Erstellen, Aktualisieren, Slot-Verwaltung Ja GET /page-layouts only Teilweise – schreibgeschützt
Blocktypen: erstellen, aktualisieren, löschen Ja GET /block-types only Teilweise – schreibgeschützt
Slot-Typen Schreibgeschützte Liste Keine Fehlt – nicht einmal lesbar
Gebietsschemas: erstellen, aktualisieren, aktivieren, deaktivieren Ja POST /locales, PATCH /locales/{locale} Ausgerichtet
Gebietsschemata: löschen Ja Keine Fehlt
Symbolkatalog: lesen Ja GET /icon-catalog Ausgerichtet
Symbolkatalog: Synchronisierung und Aktivierung Ja Keine Fehlen

Schreibgeschützter Schemazugriff ist vertretbar: Blocktypen und Layouts sind strukturelle Verträge, und wenn man sie von einem Token erfinden lässt, erweitert sich der Explosionsradius jedes späteren Schreibens von Inhalten. Es wird als „Teilweise“ und nicht als „Beabsichtigt“ erfasst, da eine solche Entscheidung nirgends niedergeschrieben ist.

Benutzer, System und Vorgänge

-Fähigkeit Panel API Status
Benutzerverwaltung Ja Keine Nur Panel-Design – keine Rechteausweitung durch ein Token
API-Token-Verwaltung Ja Keine Vom Design her nur Panel – ein Token darf keine Token prägen
Systemeinstellungen und Mailtest Ja Keine Vom Design her nur auf das Panel beschränkt – die Installationsweite Konfiguration liegt im Besitz des Betreibers
Erstellung eines Backup-Wiederherstellungspunkts Ja backups.create Arme create_restore_point auf POST /content/apply Ausgerichtet für diesen schmalen Vorgang
Backup wiederherstellen und herunterladen Ja Keine Nur Panel-Design
Vorschau der Backup-Bereinigung und Ausführung Ja GET /system/backup-cleanup, POST /system/backup-cleanup/run Abgestimmt auf separat gewährte backups.read und backups.delete
Überprüfen Sie das Systemupdate und führen Sie es aus Ja /system/updates/check, POST /system/updates, /system/updates/operations/{operation} Abgestimmt auf 1.90.0 – installationsweites System-Token und explizite Versions-/Prüfsummengenehmigung; siehe Updates
Erstellen Sie den Suchindex neu Ja Keine Fehlt
Besucherberichte Ja Keine Fehlt
Plugins: Katalog durchsuchen und installieren, aktivieren, deaktivieren, einrichten, deinstallieren, ZIP-Upload Ja /plugins/* Ausgerichtet
Plugins: Aktualisieren Sie ein installiertes Plugin aus dem Katalog Ja POST /plugins/catalog/{plugin}/update Ausgerichtet
Plugins: Details zu einem Plugin lesen Ja Nur index Teilweise

Übergreifend: Unbekannte Planschlüssel

Bis dies behoben wurde, war jede Lücke in diesem Dokument seitens des Anrufers still.

POST /content/validate und POST /content/apply lehnten eine feste Liste verbotener Schlüssel ab – Veröffentlichungs- und Planungsschlüssel, Site-Erstellung, Remote-Abruf und destruktive Verben – aber nichts, was lediglich unerkannt blieb. Die Plannormalisierung las die ihm bekannten Schlüssel und ignorierte den Rest, sodass ein Plan mit page.seo_title ok: true zurückgab und ein 201 nichts davon schrieb. Ein Tool hat einen Erfolg gemeldet; nichts war passiert. Auch das Zurücklesen der Seite brachte es nicht zutage, da die Felder, die die API nicht schreiben kann, auch in ihren Lese-Payloads fehlen.

Unerkannte Schlüssel werden jetzt mit 422 und dem stabilen Code unsupported_plan_fields abgelehnt, und der Fehlerpfad benennt jedes abgelehnte Feld. Der akzeptierte Schlüsselsatz ist auf den Plan mode beschränkt: replace_slots ist beim Ersetzen einer Seite sinnvoll und beim Erstellen einer Seite abgelehnt.

Dadurch wird keine Lücke geschlossen. Dadurch werden sie erkennbar, was die Voraussetzung dafür ist, dass ein Tool auf das Panel zurückgreifen kann, anstatt einen Schreibvorgang zu melden, der nie stattgefunden hat.

Fahrplan

Sortiert danach, wie viel jeder entsperrt, nicht nach Aufwand.

Stufe 1 – abgeschlossen

  1. Nicht erkannte Planschlüssel ablehnen mit422.Siehe Unbekannte Planschlüssel oben.
  2. Schreibendpunkt für Seitenübersetzung. /pages/{page}/translations/*schreibt Name, Slug, Pfad, SEO und Open Graph und liest sie zurück.
  3. Aktualisierung der Seitenidentität.Wird mit 2 geliefert: Titel, Slug und Pfad sind Übersetzungsfelder, und die Standard-Gebietsschema-Übersetzung ist die eigene Identität der Seite.
  4. Shared Slot aktualisieren und löschen. PATCHUndDELETE /shared-slots/{sharedSlot}, Letzteres hinter dem Neuenshared-slots.deleteFähigkeit.

Stufe 2 – abgeschlossen

  1. Erweitern Sie die Site-Einstellungen: SEO-Standards,contact_recipient_email,locale_ids. /sites/{site}/seo,/contact-recipient, Und/locales.
  2. Seitenvorschau oder Render-Snapshot. GET /pages/{page}/render, mitformat=htmlund länderspezifisches Rendering. Als die Liste geschrieben wurde, wurde der Gültigkeitsbereich falsch festgelegt:/webadmin/pages/{page}/previewhat bereits ein Bearer-Token akzeptiert, daher bestand die Lücke in der Auffindbarkeit und der Auswahl des Gebietsschemas und nicht in der Fähigkeit zum Rendern.
  3. Erstellung von Medienordnern. GET/POST /media/folders.
  4. Capability-Gate für die Domänenrouten und Verschieben nach unten/webadmin/api.Fertig, undupdateUndset primarykam mit.

Was übrig bleibt

Alles, was oben noch als „Fehlend“ markiert ist, ist zweitrangig: Seitenduplizierung und Site-Verschiebungen, Massenvorgänge, der HTML-zu-Block-Konverter, Kommentarlöschung, Kontaktnachrichten, Schemaerstellung, Neuindizierung der Suche und Besucherberichte. Keines davon hindert ein Tool daran, eine Seite zu erstellen, zu prüfen, zu korrigieren und zu veröffentlichen, worum es bei den Stufen 1 und 2 ging. Wählen Sie nach Bedarf aus, anstatt die Liste durchzuarbeiten.

Stufe 3 – bewusste Grenzen

Benutzer, Token-Ausgabe, Systemeinstellungen, Backup-Wiederherstellung/-Download, Site-Erstellung und -Löschung, Klonen, Heraufstufen und Übertragen bleiben nur im Bedienfeld verfügbar. Systemaktualisierungen sind über separat gewährte, installationsweite API-Funktionen ab 1.90.0 verfügbar. Sie werden hier aufgelistet, sodass „nicht in der API“ eine aufgezeichnete Entscheidung und nicht eine ungeprüfte Abwesenheit ist.

Plugin-Lebenszyklus und Wiederherstellung bis 1.94.2

Ab 1.92.0 übernehmen Panel- und API-Installation/-Aktualisierung/-Aktivierung erforderliche Plugin-Datenbankänderungen automatisch und behalten nach einem Fehler einen deaktivierten Status bei. Aktivieren/Setup verwendet dasselbe Kompatibilitätsgate; Inkompatible Anfragen geben HTTP 409 und plugin_incompatible zurück. Ab 1.94.0 wird die Startup-Validierung in einem neuen Prozess vor der Aktivierung ausgeführt, erfolgreiche Updates behalten das vorherige Paket bei und Laufzeitquellen-/Routenfehler stellen das Plugin unter Quarantäne.

Recovery bei /webadmin/plugin-recovery ist eine separate authentifizierte Paneloberfläche. CMS 1.94.2 erfordert einen aktiven Super admin mit normalem Administratorzugriff. Es kann ein fehlerhaftes verwaltetes Plugin deaktivieren oder das beibehaltene Paket nur dann wiederherstellen, wenn keine Datenbankmigration ausgeführt wurde. Der Tokenzugriff auf /plugins/* ersetzt nicht diese Browser-Wiederherstellungsberechtigung. Siehe Plugin System.