API-Endpunkte.

DXPR Builder lernenReferenzKonfiguration und API

Diese Seite listet jede Route, die DXPR Builder in dxpr_builder.routing.yml registriert, mit den HTTP-Methoden, Zugriffsvoraussetzungen, Anfrageparametern und Antwortformen, wie in den Controllern implementiert. Das JavaScript des Editors ist der vorgesehene Client für die AJAX-Endpunkte; nichts auf dieser Seite ist eine stabile öffentliche API, und Parameternamen können sich zwischen Releases ändern.

Zugriffsvoraussetzungen

Routen nutzen drei Arten von Voraussetzungen. Eine Route kann sie kombinieren.

Anforderung Bedeutung
_permission Der User braucht die genannte Drupal-Berechtigung. DXPR Builder definiert administer dxpr builder configuration, edit with dxpr builder und administer dxpr_builder_profile in dxpr_builder.permissions.yml; view media und administer site configuration kommen aus dem Core.
_csrf_token Die Anfrage muss ein gültiges CSRF-Token im token-Query-Parameter tragen. Für den Haupt-AJAX-Handler holt der Editor eine URL mit dem Token von /dxpr_builder/csrf (oder aus der dxpr_builder_csrf-Operation). Für die anderen Routen legt der Feld-Formatter URLs mit einem Token in drupalSettings.dxprBuilder, zum Beispiel fileUploadUrl, entityLinkSuggestionsUrl, userSettingsUrl und aiAgent.endpointUrl.
_dxpr_builder_billable_user Der User muss ein Billable User sein, wie unten definiert.

Was „billable user“ bedeutet

DxprBuilderBillableUserAccessCheck erlaubt Zugriff, wenn DxprBuilderLicenseService::isBillableUser() für das aktuelle Konto true zurückgibt. Diese Methode gibt false zurück für blockierte Konten und für Konten, deren dxpr_user_is_disavowed-Feld gesetzt ist (ein Administrator schließt einen User vom Bearbeiten auf der User-Licenses-Seite aus). Sonst gibt sie true zurück für User 1 und für jedes Konto, das die edit with dxpr builder-Berechtigung hält. Kurz: Ein Billable User ist ein aktives, nicht ausgeschlossenes Konto, das mit DXPR Builder bearbeiten darf, und der Lizenz-Service zählt diese Konten auf Ihren Produktschlüssel an.

HTTP-Methoden

Wo eine Route methods deklariert, werden nur diese Methoden geroutet. Wo nicht, akzeptiert die Route jede Methode (Drupals MethodFilter filtert nur Routen, die Methoden deklarieren). Die Tabellen unten nennen die Methode, die das JavaScript des Editors tatsächlich nutzt, wenn das im Quellcode sichtbar ist.

Editor-AJAX-Endpunkte

CSRF-Token-URL

Pfad /dxpr_builder/csrf
Route dxpr_builder.csrf_refresh
Methoden Nicht deklariert (jede Methode). Der Editor sendet GET (backend-connect.js, fetchCsrfTokenUrl()).
Anforderungen Billable user
Controller AjaxController::ajaxRefresh()

Die Anfrage muss den Header X-Requested-With: XMLHttpRequest tragen; ohne ihn gibt der Controller HTTP 403 mit dem JSON-Body {"error": "Invalid request"} zurück.

Parameter Quelle Erforderlich Hinweise
enterprise Query-String Optional Wenn auf true gesetzt und das dxpr_builder_e-Modul installiert ist, wird das Token stattdessen für die dxpr_builder_e.ajax_callback-Route erzeugt. Ist es ohne dieses Modul auf true gesetzt, wirft der Controller eine Exception.

Antwort: ein JSON-String mit der URL des Haupt-AJAX-Handlers und einem token-Query-Parameter. Die URL ist ein Pfad vom Site-Root (Basispfad enthalten, kein Host). Das JavaScript postet jede Builder-Operation an diese URL.

Haupt-AJAX-Handler

Pfad /dxpr_builder/ajax
Route dxpr_builder.ajax_callback
Methoden Nicht deklariert (jede Methode). Der Controller liest jeden Parameter aus dem POST-Body, und der Editor sendet POST.
Anforderungen Billable user, CSRF token
Controller AjaxController::ajaxCallback()

Das POST-Body-Feld action wählt die Operation. Jede Operation und ihre Parameter stehen unter Main AJAX handler operations. Wenn action fehlt oder unbekannt ist, gibt der Controller eine leere Drupal-AjaxResponse ohne Befehle zurück. Die meisten Operationen, die den Billable-User-Status erneut prüfen, geben dieselbe leere Antwort zurück, wenn diese Prüfung scheitert; die Tabellen nennen die zwei Ausnahmen.

KI-Chat

Pfad /dxpr_builder/ajax/ai/chat
Route dxpr_builder.ai_chat
Methoden POST
Anforderungen edit with dxpr builder, billable user, CSRF token
Controller AiChatController::chat()

Der Anfrage-Body ist JSON. Der Controller reicht die Anfrage an den dxpr-Provider des Drupal-ai-Moduls weiter, sodass kein API-Schlüssel den Browser erreicht. Vor dem Aufruf mischt er die Domains aus der ai_output_allowed_domains-Einstellung in den ai-Hostname-Filter des Moduls, wenn es diesen Service gibt. Ein Wert von * setzt den Filter stattdessen auf volles Vertrauen. Der Filter wird danach wiederhergestellt.

Parameter Quelle Erforderlich Hinweise
messages JSON-Body Erforderlich Array von Objekten mit role und content.
stream JSON-Body Optional Boolean, Standard true.
model JSON-Body Optional Standard kavya-m1.
prediction JSON-Body Optional Wird als Array an die Provider-Konfiguration übergeben.
providers JSON-Body Optional Wird an die Provider-Konfiguration durchgereicht.
allowed_html_tags JSON-Body Optional Wird an die Provider-Konfiguration durchgereicht.
allowed_html_classes JSON-Body Optional Wird an die Provider-Konfiguration durchgereicht.
web_search JSON-Body Optional Nur der Wert false wird weitergeleitet; jeder andere Wert wird ignoriert.
response_format JSON-Body Optional Wird als Array an die Provider-Konfiguration übergeben.

Antworten:

Fall Status Body
Gestreamt (stream true und der Provider streamt) 200, Content-Type: text/event-stream Server-sent Events. Jedes Event ist data: <JSON>, wobei das JSON choices[0].delta.content hat und, wenn der Provider sie liefert, id, object, created, model, original_model und usage. Der Stream endet mit data: [DONE].
Nicht gestreamt 200, application/json {"choices": [{"message": {"role": "assistant", "content": "<text>"}}]}
Body ist kein JSON, oder messages fehlt oder ist leer 400, reiner Text Invalid request: messages required
model steht nicht in der allowed_models-Liste von ai_provider_dxpr.settings (wird nur geprüft, wenn das ai_provider_dxpr-Modul installiert und die Liste gesetzt ist) 403, application/json {"error": {"code": "model_not_allowed", "message": "The selected model is not allowed. Please refresh the page to update your model options."}}
Provider-Exception 500, application/json {"error": {"message": "The request could not be completed."}}

KI-Bilderzeugung

Pfad /dxpr_builder/ajax/ai/image
Route dxpr_builder.ai_image
Methoden POST
Anforderungen edit with dxpr builder, billable user, CSRF token
Controller AiImageController::generate()
Parameter Quelle Erforderlich Hinweise
prompt JSON-Body Erforderlich Text-Prompt.
model JSON-Body Optional Standard kavya-image.
size JSON-Body Optional Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer.
quality JSON-Body Optional Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer.
background JSON-Body Optional Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer.

Antworten:

Fall Status Body
Erfolg 200 {"data": [{"b64_json": "<base64 image>"}]}(nur das erste erzeugte Bild wird zurückgegeben)
Body ist kein JSON, oder prompt fehlt 400 {"error": {"message": "Invalid request: prompt required"}}
Provider gab kein Bild zurück 500 {"error": {"message": "No image was generated"}}
Provider-Exception 500 {"error": {"message": "Image generation failed. Please try again."}}

KI-Bildbearbeitung

Pfad /dxpr_builder/ajax/ai/image/edit
Route dxpr_builder.ai_image_edit
Methoden POST
Anforderungen edit with dxpr builder, billable user, CSRF token
Controller AiImageController::edit()
Parameter Quelle Erforderlich Hinweise
prompt JSON-Body Erforderlich Bearbeitungsanweisung.
image JSON-Body Erforderlich Base64-kodiertes Quellbild (striktes Decoding).
mimeType JSON-Body Optional Standard image/png; der Subtyp wird die Dateiendung, die an den Provider übergeben wird.
model JSON-Body Optional Standard kavya-image.
size, quality, background JSON-Body Optional Wird an die Provider-Konfiguration weitergereicht, wenn nicht leer.

Antworten:

Fall Status Body
Erfolg 200 {"data": [{"b64_json": "<base64 image>"}]}
Body ist kein JSON, oder prompt oder image fehlt 400 {"error": {"message": "Invalid request: prompt and image required"}}
image ist kein gültiges Base64 400 {"error": {"message": "Invalid image data: base64 decode failed"}}
Provider gab kein Bild zurück 500 {"error": {"message": "No image was generated"}}
Provider-Exception 500 {"error": {"message": "Image editing failed. Please try again."}}

Datei-Upload

Pfad /dxpr_builder/ajax/file_upload
Route dxpr_builder.ajax_file_upload_callback
Methoden POST, DELETE (im Routing deklariert; der Controller hat einen einzigen Upload-Handler und keinen eigenen Delete-Zweig)
Anforderungen Billable user, CSRF token
Controller UploadFileController::fileUpload()
Parameter Quelle Erforderlich Hinweise
upload Multipart-Formulardateien, gesendet als upload[] Erforderlich Eine oder mehrere hochgeladene Dateien.

Der Controller sortiert jede Datei nach dem ersten Teil ihres Client-MIME-Typs in <default scheme>://dxpr_builder_images, dxpr_builder_videos oder dxpr_builder_files. Ein Bild braucht eine Endung der MIME-Typen image/gif, jpg, jpeg, png, webp, avif oder svg. Ein Video braucht einen von video/webm, ogv, ogg, mp4 oder quicktime (zum Beispiel .mov). Das Größenlimit ist das Upload-Maximum von PHP. Eine Datei mit gleichem Namen und identischem SHA-256-Inhalt wie eine vorhandene verwaltete Datei, die der User sehen kann, wird wiederverwendet statt erneut gespeichert. Wenn das media-Modul installiert ist und ein Medientyp namens image, media_image, video oder media_video existiert, wird eine veröffentlichte Medien-Entity für die Datei erstellt (oder wiederverwendet). Die Dateinutzung wird unter dem dxpr_builder-Modul verzeichnet.

Antworten:

Fall Status Body
Erfolg 201 JSON-Array, ein Objekt pro Datei: url (absolute Datei-URL), uuid und id (der Medien-Entity, wenn es eine gibt, sonst der Datei), fid (Datei-ID), entity_type (media oder file).
Keine upload-Dateien 400 {"message": "No files were uploaded."}
Ungültiger Upload, unbeschreibbares Ziel oder Speicherfehler 500 {"message": "<reason>"}
Validierungsfehler (Endung oder Größe) 422 {"message": "<violation messages>"}
Dateiname bereits von einer anderen Anfrage gesperrt 503 {"message": "File \"<name>\" is already locked for writing."}

Medienbibliothek-Dialog

Pfad /dxpr_builder/media-library
Route dxpr_builder.media_library
Methoden Nicht deklariert (jede Methode). Parameter werden aus dem Query-String gelesen.
Anforderungen view media; Admin-Route
Controller AjaxController::openImageMediaLibrary()
Parameter Quelle Erforderlich Hinweise
media_type Query-String Optional image (Standard) oder video.
remaining_slots Query-String Optional Anzahl der Elemente, die der Opener akzeptiert; Standard ist 1.
uuid Query-String Optional Wird als opener_parameters.uuid an den Opener übergeben.

Der angebotene Medientyp hängt von der media_browser-Einstellung ab: media_library nutzt den image- oder video-Medientyp direkt; media_library_acquia_dam nutzt acquia_dam_image_asset oder acquia_dam_video_asset, wenn es diesen Medientyp gibt.

Antworten:

Fall Ergebnis
Erfolg Ein Render-Array, gebaut von MediaLibraryUiBuilder::buildUi() mit dem Opener media_library.opener.dxpr_builder. Drupal rendert es als HTML-Seite für einen iframe.
media_library-Modul nicht installiert 403, reiner Text Media Library is not enabled. Please enable it to access this feature.
Nicht unterstützter media_type 400, reiner Text Unsupported media type "<value>".
media_browser-Einstellung hat keinen nutzbaren Medientyp 400, reiner Text The "<setting>" settings is not supported.
Pfad /dxpr_builder/ajax/help_link_validator
Route dxpr_builder.ajax_help_link_validator
Methoden Nicht deklariert (jede Methode). Das Dev-Skript dxpr_builder_dev.js sendet POST mit einem formularkodierten Body.
Anforderungen Billable user
Controller AjaxController::validateHelpLink()
Parameter Quelle Erforderlich Hinweise
help_link POST-Body Erforderlich für eine sinnvolle Antwort Nur http- oder https-URLs auf Host dxpr.com mit einem Pfad ab /documentation/ werden geprüft.

Antwort: ein JSON-Array. [true], wenn ein HEAD-Request an den Link (ohne Redirects zu folgen) 200 zurückgibt; [false], wenn der HTTP-Client eine Exception wirft; [] in jedem anderen Fall, auch bei fehlendem Parameter, nicht passender URL oder non-200-Status.

Pfad /dxpr_builder/entity-link-suggestions
Route dxpr_builder.entity_link_suggestions
Methoden GET
Anforderungen edit with dxpr builder, CSRF-Token; no_cache-Routenoption
Controller EntityLinkSuggestionsController::suggestions()
Parameter Quelle Erforderlich Hinweise
q Query-String Erforderlich für Ergebnisse Suchtext, kleingeschrieben. Ein Wert wie /node/123 lädt diese Entity direkt.
langcode Query-String Optional Sprache der Host-Entity; Standard ist die aktuelle Sprache. Nur Entities in dieser Sprache werden zurückgegeben.

Bundles sind die mit ckeditor5_link_suggestions in deren Bundle-Info; wenn keine konfiguriert sind, werden alle Node-Bundles durchsucht. Bis zu 100 Entities pro Entity-Typ werden mit einer CONTAINS-Suche über die Entity-Referenz-Auswahlplugins des Cores gefunden.

Antwort: {"suggestions": [...]} mit privater Cacheability und einer Max-Age von 300 Sekunden. Jeder Vorschlag hat description, entity_type_id, entity_uuid, group, label und path. Wenn q nichts trifft, hält das Array einen einzigen manuellen Link-Vorschlag mit description, label (die kleingeschriebene Eingabe) und path (die Eingabe, wenn sie eine gültige URL ist, sonst ein leerer String). Wenn q leer ist, suggestions ist ein leeres Array.

User-Editor-Einstellungen

Pfad /dxpr_builder/user-settings
Route dxpr_builder.user_settings
Methoden POST
Anforderungen edit with dxpr builder, CSRF-Token; no_cache-Routenoption
Controller UserSettingsController::save()

Der Editor sendet diese Anfrage, wenn ein User seine eigenen Editor-Einstellungen ändert, zum Beispiel unter Editor settings. Die Werte werden beim Benutzerkonto gespeichert in user.data, Modul dxpr_builder.

Parameter Quelle Erforderlich Hinweise
controls_layout JSON-Body Erforderlich (die einzige Einstellung) element, breadcrumb oder default. default entfernt die Wahl des Users, sodass die Profil- oder Site-Einstellung gilt.

Antworten:

Fall Status Body
Gespeichert 200 {"settings": {"controls_layout": "<value>"}}: jede Einstellung nach dem Speichern, default, wo der User keine Wahl gespeichert hat.
Body ist kein nicht-leeres JSON-Objekt, oder ein Name oder Wert ist ungültig 400 {"error": "Invalid setting or value."}. Nichts wird gespeichert.

Operationen des Haupt-AJAX-Handlers

Alle Operationen gehen an /dxpr_builder/ajax mit dem Token-Query-Parameter von /dxpr_builder/csrf. Der Operationsname wird im POST-Body-Feld action gesendet; alle anderen Parameter sind POST-Body-Felder, sofern nicht anders angegeben. Die Spalte „Erneuter Billable-Check“ markiert Operationen, die isBillableUser() erneut innerhalb des Switch aufrufen. Wenn diese Prüfung scheitert, geben sie die leere AjaxResponse von oben zurück, sofern die Zeile nichts anderes sagt.

Sitzung und Zugriff

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_login Keine Nein JSON-Boolean: ob der aktuelle User billable ist.
dxpr_builder_csrf Keine Ja JSON-String: die Handler-URL mit einem token-Query-Parameter (wie /dxpr_builder/csrf ohne die enterprise-Option).

Container (Felder, die mit dem DXPR-Builder-Formatter gerendert werden)

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_get_container_types Keine Ja JSON-Objekt mit Schlüssel entity_type|bundle und Wert entity_type - bundle, ein Eintrag pro Bundle, dessen Standard-Anzeigemodus den dxpr_builder_text-Formatter auf mindestens einem Feld nutzt.
dxpr_get_container_names container_type (erforderlich, entity_type|bundle) Ja (gibt einen leeren JSON-String statt der leeren Antwort zurück) JSON-Objekt mit Schlüssel entity_id|field_name (oder entity_id|field_name|langcode für übersetzbare Entities) mit Wert entity label|field label. Wenn container_type fehlt oder die Billable-Prüfung scheitert, ist die Antwort ein leerer JSON-String.
dxpr_save_container type (erforderlich, entity_type|bundle); name (erforderlich, entity_id|field_name oder entity_id|revision_id|field_name); htmlContent (erforderlich, kodiertes Markup); lang (optional, Standard ist die Site-Standardsprache) Ja JSON-Leerstring bei Erfolg. HTTP 400 mit einer JSON-Nachricht, wenn htmlContent kein String ist oder die Sprache auf eine nicht übersetzbare Entity nicht zutrifft; 404, wenn die angefragte Übersetzung nicht existiert; 500, wenn die Entity nicht geladen werden kann.

dxpr_save_container tut Folgendes:

  1. Dekodiert htmlContent: XOR jedes Byte mit 7, dann URL-dekodieren.
  2. Schreibt das Ergebnis ins erste Delta des genannten Felds.
  3. Erstellt eine neue Standard-Revision mit der Log-Nachricht Saved with DXPR builder, wenn der Entity-Typ revisionierbar ist.
  4. Entfernt jede Inhaltssperre für die Entity.
  5. Aktualisiert block_revision_id in Layout-Builder-Sektionen, die den gespeicherten Inline-Block referenzieren.
  6. Erhöht den dxpr_builder.saves_count-State-Wert.

Das Speichern geschieht nur, wenn der User update-Zugriff auf die Entity hat. Ohne ihn gibt die Operation dennoch die Leerstring-Erfolgsantwort zurück.

CMS-Elemente (Blöcke und Ansichten)

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_builder_get_cms_element_names Keine Ja JSON-Objekt aus DxprBuilderService::getCmsElementNames() mit den Schlüsseln list, disallowed und blockCategories.
dxpr_get_cms_element_settings name (erforderlich): view-<view_id>-<display_id> oder block-<plugin_id>; ajax_page_state[libraries] (optional, kommagetrennte, bereits geladene Libraries) Ja JSON-Objekt mit css, js, settings und data. Für eine Ansicht ist data die gerenderten Exposed-Filter-Widgets; für einen Block ist data das Konfigurationsformular des Blocks, verpackt in <form>-Tags, ohne die Elemente provider, admin_label, label, label_display und context_mapping, und mit allen geöffneten Details-Elementen.
dxpr_builder_load_cms_element name (erforderlich, geparst von parseStringForCmsElementInfo()); settings (erforderlich); data (erforderlich, Array); ajax_page_state[libraries] (optional) Nein JSON-Objekt mit css, js, settings und data, wobei data der gerenderte Block oder die gerenderte Ansichts-Anzeige ist.

In beiden settings-zurückgebenden Operationen sind css und js gerenderte Asset-Tags, die noch nicht auf der Seite sind, und settings ist das dekodierte drupalSettings-Objekt, oder ein leerer String, wenn es keine gibt.

Seitenvorlagen

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_get_page_templates Keine Ja JSON-Array aktivierter Seitenvorlagen, jede mit title, uuid, module (immer null: die Entity speichert es nicht), category, date, weight (Ganzzahl) und image (eine data:-URL, oder die not-found.png-URL des Moduls).
dxpr_load_page_template uuid (erforderlich) Ja HTML-Antwort mit dem Vorlagen-Markup und ersetzten Basis-Tokens; leer, wenn keine aktivierte Vorlage passt.

Benutzervorlagen

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_get_templates Keine Ja JSON-Array von Vorlagen des aktuellen Users oder als global markiert; Vorlagen, deren Autorkonto nicht mehr existiert, fehlen. Jeder Eintrag hat id, uuid, name, global, current_user_is_author, author_id, author_name, type und, wenn gespeichert, image (eine data:-URL).
dxpr_load_template uuid (erforderlich) Ja HTML-Antwort mit dem Vorlagen-Markup und ersetzten Basis-Tokens; leer, wenn keine aktivierte Vorlage passt.
dxpr_save_template name (erforderlich); template (erforderlich, Markup); type (optional, Standard custom); global (optional, zu Boolean gecastet); image (optional: ein Base64-String oder eine data:image-URL im POST-Body, oder ein Multipart-Dateifeld namens image) Ja JSON-Objekt mit message und code. code 200 bei Erfolg; code 409 (HTTP-Status 200), wenn eine Vorlage mit gleichem Systemnamen existiert; code 400 mit HTTP 400, wenn das Bild keine gültigen Bilddaten enthält.
dxpr_delete_template name (erforderlich) Ja JSON-Leerstring.

Der Systemname leitet sich ab aus name, indem er kleingeschrieben wird und jede Folge von Zeichen außerhalb von a-z0-9_ durch einen Unterstrich ersetzt wird. type fällt zurück auf das data-azb-Attribut im Markup, wenn eine gespeicherte Vorlage keinen Typ hat.

Bilder

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_builder_get_image_urls entityIDs (erforderlich, Array); imageStyle (erforderlich; original für die ungestylte Datei); entityType (erforderlich; media löst Medien-Items auf, jeder andere Wert wird als Entity-Typ der IDs genutzt) Ja Text-Body: kommagetrennte Bild-URLs. Dateien geben eine Root-relative URL mit einem fid-Query-Parameter. Medien-Items vom Typ image oder video lösen zu ihrer Quelldatei auf. acquia_dam_image_asset-Items geben die DAM-URL mit hinzugefügten mid, acquiaDamAsset und imageStyle. Andere Medien-Items werden übersprungen. HTTP 204 ohne Body, wenn entityIDs leer ist oder wenn kein Medien-Item aufgelöst werden kann.
dxpr_builder_get_image_style_url imageStyle (erforderlich); entityId (erforderlich); entityTypeId (erforderlich, file oder media) Ja Text-Body. Für eine Datei: ihre Root-relative URL durch den Bildstil (SVG-Dateien und original überspringen den Bildstil), mit einem fid-Query-Parameter. Für ein acquia_dam_image_asset-Medien-Item: die DAM-URL. HTTP 204 ohne Body für jede andere Entity, oder wenn die Entity nicht gefunden wird.
dxpr_builder_get_image_metadata entityId (erforderlich); entityType (erforderlich, file oder media) Ja (gibt 403-JSON statt der leeren Antwort zurück) {"data": {"alt": "...", "title": "..."}} aus dem Bildquellenfeld des Medien-Items (ein Acquia-DAM-Asset gibt seinen DAM-Alt-Text und einen leeren Titel). Für eine Datei kommen die Werte aus dem ersten Medien-Item, dessen field_media_image darauf verweist. data ist ein leeres Array, wenn die Entity weder Datei noch Medien-Item ist, oder wenn kein Medien-Item die Datei referenziert. Fehler: 400 {"error": "Missing required parameters"}, 404 {"error": "Entity not found"}, 500 {"error": "Failed to load entity"}, 403 {"error": "Access denied"}.

Inhaltssperren

Operation Parameter Erneuter Billable-Check Rückgabe
dxpr_content_lock_status entity_id, revision_id, entity_type, langcode (alle erforderlich) Nein JSON-Objekt mit status (Boolean) und label (Entity-Label); wenn gesperrt, auch entity_lock_author_id und entity_lock_author_name.
dxpr_toggle_content_lock entity_id, revision_id, entity_type, langcode, toggle_action (alle erforderlich; lock erstellt die Sperre, jeder andere Wert entfernt sie) Nein JSON-Objekt mit label und status (true nach dem Sperren, false nach dem Entsperren). Ein leeres JSON-Array ([]), wenn die Entity nicht geladen werden kann oder dem User update-Zugriff fehlt.

Admin-Seiten

Alle diese Routen akzeptieren jede Methode (kein methods-Schlüssel). Pfade mit {...} nehmen die Config-Entity-ID, oder die Migrations-ID für {migration_id}.

Pfad Route Berechtigung Zweck
/admin/dxpr_studio dxpr_builder.admin.studio administer dxpr builder configuration DXPR-Studio-Übersicht; Blockseite des Core-Admin-Menüs mit Unterseiten.
/admin/dxpr_studio/dxpr_builder dxpr_builder.admin.studio.builder administer dxpr builder configuration DXPR-Builder-Übersicht; Blockseite des Core-Admin-Menüs.
/admin/dxpr_studio/dxpr_builder/settings dxpr_builder.settings administer dxpr builder configuration DxprBuilderSettingsForm: das Modul-Einstellungsformular.
/admin/dxpr_studio/dxpr_builder/ai_settings dxpr_builder.ai_settings administer dxpr builder configuration DxprBuilderAiSettingsForm: das KI-Einstellungsformular.
/admin/dxpr_studio/dxpr_builder/user_templates entity.dxpr_builder_user_template.collection administer site configuration Liste von dxpr_builder_user_template-Config-Entities.
/admin/dxpr_studio/dxpr_builder/user_templates/add entity.dxpr_builder_user_template.add_form administer site configuration Eine Benutzervorlage hinzufügen.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template} entity.dxpr_builder_user_template.edit_form administer site configuration Eine Benutzervorlage bearbeiten.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}/delete entity.dxpr_builder_user_template.delete_form administer site configuration Eine Benutzervorlage löschen (Bestätigungsformular).
/admin/dxpr_studio/dxpr_builder/page_template entity.dxpr_builder_page_template.collection administer site configuration Liste von dxpr_builder_page_template-Config-Entities.
/admin/dxpr_studio/dxpr_builder/page_template/add entity.dxpr_builder_page_template.add_form administer site configuration Eine Seitenvorlage hinzufügen.
/admin/dxpr_studio/dxpr_builder/page_template/create dxpr_builder.create_page_template administer dxpr builder configuration PageController::createPageTemplate(): kopiert die aktivierte Benutzervorlage, die der uuid-Query-Parameter nennt, in eine neue Seitenvorlage mit gleicher ID und Kategorie DXPR. Setzt eine Status- oder Fehlermeldung und leitet zur Benutzervorlagenliste weiter.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template} entity.dxpr_builder_page_template.edit_form administer site configuration Eine Seitenvorlage bearbeiten.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}/delete entity.dxpr_builder_page_template.delete_form administer site configuration Eine Seitenvorlage löschen (Bestätigungsformular).
/admin/dxpr_studio/dxpr_builder/profile entity.dxpr_builder_profile.collection administer dxpr_builder_profile Liste von dxpr_builder_profile-Config-Entities.
/admin/dxpr_studio/dxpr_builder/profile/add entity.dxpr_builder_profile.add_form administer dxpr_builder_profile Ein Profil hinzufügen.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile} entity.dxpr_builder_profile.edit_form administer dxpr_builder_profile Ein Profil bearbeiten.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}/delete entity.dxpr_builder_profile.delete_form administer dxpr_builder_profile Ein Profil löschen (Bestätigungsformular).
/admin/dxpr_studio/dxpr_builder/user_licenses dxpr_builder.user_licenses administer dxpr builder configuration PageController::userLicensesPage(): nicht-gecachte Tabelle lizenzierter User (Spalten User, Roles, Sites, Assigned und Operations). Darüber rendert die Seite ihre eigene Lizenz-Übersichtskarte (dxpr-license-info), wenn Lizenzinformationen verfügbar sind, und, während eine freigegebene Lizenz ihre 30 Tage abwartet, einen „Next license available on“-Hinweis. Auf dieser Route rendert der License info-Block nichts, sodass die Übersicht nie doppelt erscheint.
/admin/dxpr_studio/dxpr_builder/user_licenses/sites dxpr_builder.user_licenses.sites administer dxpr builder configuration PageController::userLicensesSitesPage(): Liste der Domains, die für den User im mail-Request-Parameter verzeichnet sind; aus der Lizenztabelle in einem Modal geöffnet.
/admin/dxpr_studio/dxpr_builder/content dxpr_builder.licensed_content administer dxpr builder configuration PageController::licensedContentPage(): seitenweise Tabelle (20 pro Seite) von mit DXPR Builder bearbeiteten Inhalten, mit der Inhalte-Lizenzübersicht. Der Query-Parameter needs_migration=1 zeigt nur Elemente, die eine Inhaltsmigration brauchen. Leer, wenn keine Lizenzinformationen verfügbar sind.
/admin/dxpr_studio/dxpr_builder/migration-status dxpr_builder.migration_status administer dxpr builder configuration MigrationStatusController::statusPage(): nicht-gecachte Tabelle registrierter Inhaltsmigrationen mit ihren ausstehenden Elementen. Jede ausstehende Migration hat einen Run now-Link, und ein Run all pending migrations-Button erscheint, wenn welche ausstehen.
/admin/dxpr_studio/dxpr_builder/migration-run/{migration_id} dxpr_builder.migration_run_confirm administer dxpr builder configuration MigrationRunConfirmForm: bestätigt, führt dann eine Migration als Batch aus und kehrt zur Statusseite zurück.
/admin/dxpr_studio/dxpr_builder/migration-run-all dxpr_builder.migration_run_all_confirm administer dxpr builder configuration MigrationRunAllConfirmForm: bestätigt, führt dann jede registrierte Migration als einen Batch aus und kehrt zur Statusseite zurück.
/dxpr-builder/disavow-user dxpr_builder.disavow_user_confirm administer dxpr builder configuration DisavowUserConfirmForm: bestätigt, den User im uid-Query-Parameter vom DXPR-Builder-Bearbeiten auszuschließen.
/dxpr-builder/delete-stale-user dxpr_builder.delete_stale_user_confirm administer dxpr builder configuration DeleteStaleUserConfirmForm: bestätigt das Entfernen von Lizenzdaten für die E-Mail-Adresse im email-Query-Parameter.

Wie geht es weiter?

  • Konfigurationsreferenz: die Einstellungen, die den Medienbrowser und das KI-Verhalten dieser Endpunkte steuern
  • PHP API: die Services, die die Controller aufrufen
  • Hooks-API: die Hooks, mit denen andere Module Builder-Verhalten ändern können