Punkty końcowe API..

Learn DXPR BuilderReferenceConfiguratie en API

Ta strona wymienia każdą trasę (route) rejestrowaną przez DXPR Builder w dxpr_builder.routing.yml, z metodami HTTP, wymaganiami dostępu, parametrami żądań i kształtami odpowiedzi zaimplementowanymi w kontrolerach. JavaScript edytora jest zamierzonym klientem punktów końcowych AJAX; nic na tej stronie nie jest stabilnym publicznym API, a nazwy parametrów mogą zmieniać się między wydaniami.

Wymagania dostępu

Trasy używają trzech rodzajów wymagań. Trasa może je łączyć.

Wymaganie Znaczenie
_permission Użytkownik potrzebuje nazwanego uprawnienia Drupala. DXPR Builder definiuje administer dxpr builder configuration, edit with dxpr builder i administer dxpr_builder_profile w dxpr_builder.permissions.yml; view media i administer site configuration pochodzą z rdzenia.
_csrf_token Żądanie musi nieść prawidłowy token CSRF w parametrze zapytania token. Dla głównego handlera AJAX edytor pobiera URL z tokenem spod /dxpr_builder/csrf (albo z operacji dxpr_builder_csrf). Dla pozostałych tras formatter pola umieszcza URLe z tokenem w drupalSettings.dxprBuilder, na przykład fileUploadUrl, entityLinkSuggestionsUrl, userSettingsUrl i aiAgent.endpointUrl.
_dxpr_builder_billable_user Użytkownik musi być użytkownikiem rozliczanym (billable user), jak zdefiniowano poniżej.

Co znaczy „billable user”

DxprBuilderBillableUserAccessCheck pozwala na dostęp, gdy DxprBuilderLicenseService::isBillableUser() zwraca true dla bieżącego konta. Metoda zwraca false dla kont zablokowanych i dla kont z ustawionym polem dxpr_user_is_disavowed (administrator wyklucza użytkownika z edycji na stronie User Licenses). W przeciwnym razie zwraca true dla użytkownika 1 i dla każdego konta z uprawnieniem edit with dxpr builder. W skrócie: użytkownik rozliczany (billable user) to aktywne, niewykluczone konto, które może edytować za pomocą DXPR Builder, a usługa licencji liczy te konta względem twojego klucza produktu.

Metody HTTP

Gdy trasa deklaruje methods, trasowane są tylko te metody. Gdy nie, trasa przyjmuje każdą metodę (MethodFilter Drupala filtruje tylko trasy deklarujące metody). Tabele poniżej podają metodę, której JavaScript edytora faktycznie używa, gdy widać to w źródle.

Punkty końcowe AJAX edytora

URL tokenu CSRF

Ścieżka /dxpr_builder/csrf
Trasa dxpr_builder.csrf_refresh
Metody Niezadeklarowane (dowolna metoda). Edytor wysyła GET (backend-connect.js, fetchCsrfTokenUrl()).
Wymagania Użytkownik rozliczany (billable user)
Kontroler AjaxController::ajaxRefresh()

Żądanie musi nieść nagłówek X-Requested-With: XMLHttpRequest; bez niego kontroler zwraca HTTP 403 z treścią JSON {"error": "Invalid request"}.

Parametr Źródło Wymagany Uwagi
enterprise Ciąg zapytania Opcjonalny Gdy ustawione na true i zainstalowany jest moduł dxpr_builder_e, token jest generowany dla trasy dxpr_builder_e.ajax_callback. Gdy ustawione na true bez tego modułu, kontroler rzuca wyjątek.

Odpowiedź: ciąg JSON z URlem głównego handlera AJAX i parametrem zapytania token. URL jest ścieżką od korzenia witryny (ze ścieżką bazową, bez hosta). JavaScript wysyła POSTem każdą operację kreatora na ten URL.

Główny handler AJAX

Ścieżka /dxpr_builder/ajax
Trasa dxpr_builder.ajax_callback
Metody Niezadeklarowane (dowolna metoda). Kontroler czyta każdy parametr z treści POST, a edytor wysyła POST.
Wymagania Użytkownik rozliczany (billable user), token CSRF
Kontroler AjaxController::ajaxCallback()

Pole treści POST action wybiera operację. Każda operacja i jej parametry są wymienione w operacjach głównego handlera AJAX. Gdy action brakuje albo jest nieznane, kontroler zwraca pustą drupalową odpowiedź AjaxResponse bez poleceń. Większość operacji ponownie sprawdzających status użytkownika rozliczanego zwraca tę samą pustą odpowiedź, gdy sprawdzanie zawiedzie; tabele odnotowują dwa wyjątki.

Czat AI

Ścieżka /dxpr_builder/ajax/ai/chat
Trasa dxpr_builder.ai_chat
Metody POST
Wymagania edit with dxpr builder, użytkownik rozliczany (billable user), token CSRF
Kontroler AiChatController::chat()

Treść żądania to JSON. Kontroler pośredniczy w żądaniu do dostawcy dxpr drupalowego modułu ai, więc żaden klucz API nie trafia do przeglądarki. Przed wywołaniem scala domeny z ustawienia ai_output_allowed_domains do filtra nazw hostów modułu ai, gdy ta usługa istnieje. Wartość * ustawia filtr na pełne zaufanie. Filtr jest potem przywracany.

Parametr Źródło Wymagany Uwagi
messages Treść JSON Wymagany Tablica obiektów z role i content.
stream Treść JSON Opcjonalny Wartość logiczna, domyślnie true.
model Treść JSON Opcjonalny Domyślnie kavya-m1.
prediction Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy jako tablica.
providers Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy.
allowed_html_tags Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy.
allowed_html_classes Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy.
web_search Treść JSON Opcjonalny Przekazywana jest tylko wartość false; każda inna wartość jest ignorowana.
response_format Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy jako tablica.

Odpowiedzi:

Przypadek Status Treść
Strumieniowana (stream true i dostawca strumieniuje) 200, Content-Type: text/event-stream Zdarzenia wysyłane przez serwer (server-sent events). Każde zdarzenie to data: <JSON>, gdzie JSON ma choices[0].delta.content oraz, gdy dostawca je podaje, id, object, created, model, original_model i usage. Strumień kończy się na data: [DONE].
Niestrumieniowana 200, application/json {"choices": [{"message": {"role": "assistant", "content": "<text>"}}]}
Treść nie jest JSONem albo brakuje messages lub jest puste 400, zwykły tekst Invalid request: messages required
model nie ma na liście allowed_models w ai_provider_dxpr.settings (sprawdzane tylko, gdy moduł ai_provider_dxpr jest zainstalowany i lista jest ustawiona) 403, application/json {"error": {"code": "model_not_allowed", "message": "The selected model is not allowed. Please refresh the page to update your model options."}}
Wyjątek dostawcy 500, application/json {"error": {"message": "The request could not be completed."}}

Generowanie obrazów AI

Ścieżka /dxpr_builder/ajax/ai/image
Trasa dxpr_builder.ai_image
Metody POST
Wymagania edit with dxpr builder, użytkownik rozliczany (billable user), token CSRF
Kontroler AiImageController::generate()
Parametr Źródło Wymagany Uwagi
prompt Treść JSON Wymagany Prompt tekstowy.
model Treść JSON Opcjonalny Domyślnie kavya-image.
size Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy, gdy niepuste.
quality Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy, gdy niepuste.
background Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy, gdy niepuste.

Odpowiedzi:

Przypadek Status Treść
Pomyślnie 200 {"data": [{"b64_json": "<base64 image>"}]} (zwracany jest tylko pierwszy wygenerowany obraz)
Treść nie jest JSONem albo brakuje prompt. 400 {"error": {"message": "Invalid request: prompt required"}}
Dostawca nie zwrócił obrazu 500 {"error": {"message": "No image was generated"}}
Wyjątek dostawcy 500 {"error": {"message": "Image generation failed. Please try again."}}

Edycja obrazów AI

Ścieżka /dxpr_builder/ajax/ai/image/edit
Trasa dxpr_builder.ai_image_edit
Metody POST
Wymagania edit with dxpr builder, użytkownik rozliczany (billable user), token CSRF
Kontroler AiImageController::edit()
Parametr Źródło Wymagany Uwagi
prompt Treść JSON Wymagany Instrukcja edycji.
image Treść JSON Wymagany Obraz źródłowy zakodowany w base64 (ścisłe dekodowanie).
mimeType Treść JSON Opcjonalny Domyślnie image/png; podtyp staje się rozszerzeniem pliku przekazanym dostawcy.
model Treść JSON Opcjonalny Domyślnie kavya-image.
size, quality, background Treść JSON Opcjonalny Przekazywane do konfiguracji dostawcy, gdy niepuste.

Odpowiedzi:

Przypadek Status Treść
Pomyślnie 200 {"data": [{"b64_json": "<base64 image>"}]}
Treść nie jest JSONem albo brakuje prompt lub image. 400 {"error": {"message": "Invalid request: prompt and image required"}}
image nie jest prawidłowym base64 400 {"error": {"message": "Invalid image data: base64 decode failed"}}
Dostawca nie zwrócił obrazu 500 {"error": {"message": "No image was generated"}}
Wyjątek dostawcy 500 {"error": {"message": "Image editing failed. Please try again."}}

Wysyłanie plików

Ścieżka /dxpr_builder/ajax/file_upload
Trasa dxpr_builder.ajax_file_upload_callback
Metody POST, DELETE (zadeklarowane w routingu; kontroler ma jeden handler wysyłania i nie ma osobnej gałęzi usuwania)
Wymagania Użytkownik rozliczany (billable user), token CSRF
Kontroler UploadFileController::fileUpload()
Parametr Źródło Wymagany Uwagi
upload Pliki formularza wieloczęściowego (multipart), wysyłane jako upload[] Wymagany Jeden lub więcej wysłanych plików.

Kontroler sortuje każdy plik według pierwszej części jego klientowego typu MIME do <default scheme>://dxpr_builder_images, dxpr_builder_videos albo dxpr_builder_files. Obraz potrzebuje rozszerzenia z typów MIME image/gif, jpg, jpeg, png, webp, avif albo svg. Film potrzebuje jednego z video/webm, ogv, ogg, mp4 albo quicktime (na przykład .mov). Limit rozmiaru to maksimum wysyłania PHP. Plik o tej samej nazwie i identycznej zawartości SHA-256 co istniejący zarządzany plik, który użytkownik może oglądać, jest używany ponownie zamiast zapisywania od nowa. Gdy moduł media jest zainstalowany i istnieje rodzaj multimediów o nazwie image, media_image, video albo media_video, dla pliku tworzony jest opublikowany byt multimedialny (albo używany ponownie). Użycie pliku jest rejestrowane w module dxpr_builder.

Odpowiedzi:

Przypadek Status Treść
Pomyślnie 201 Tablica JSON, jeden obiekt na plik: url (bezwzględny URL pliku), uuid i id (bytu multimedialnego, gdy istnieje, inaczej pliku), fid (ID pliku), entity_type (media albo file).
Brak plików upload. 400 {"message": "No files were uploaded."}
Nieprawidłowe wysłanie, niezapisywalny cel albo błąd zapisu 500 {"message": "<reason>"}
Błąd walidacji (rozszerzenie albo rozmiar) 422 {"message": "<violation messages>"}
Nazwa pliku już zablokowana przez inne żądanie 503 {"message": "File \"<name>\" is already locked for writing."}

Okno biblioteki mediów

Ścieżka /dxpr_builder/media-library
Trasa dxpr_builder.media_library
Metody Niezadeklarowane (dowolna metoda). Parametry czytane są z ciągu zapytania.
Wymagania view media; trasa administracyjna (admin route)
Kontroler AjaxController::openImageMediaLibrary()
Parametr Źródło Wymagany Uwagi
media_type Ciąg zapytania Opcjonalny image (domyślnie) albo video.
remaining_slots Ciąg zapytania Opcjonalny Liczba elementów akceptowanych przez otwierającego; domyślnie 1.
uuid Ciąg zapytania Opcjonalny Przekazywane do otwierającego jako opener_parameters.uuid.

Oferowany rodzaj multimediów zależy od ustawienia media_browser: media_library używa wprost rodzaju multimediów image albo video; media_library_acquia_dam używa acquia_dam_image_asset albo acquia_dam_video_asset, gdy ten rodzaj istnieje.

Odpowiedzi:

Przypadek Wynik
Pomyślnie Tablica renderowana zbudowana przez MediaLibraryUiBuilder::buildUi() z otwierającym media_library.opener.dxpr_builder. Drupal renderuje ją jako stronę HTML przeznaczoną do iframe.
media_library: moduł niezainstalowany. 403, zwykły tekst Media Library is not enabled. Please enable it to access this feature.
Nieobsługiwany media_type 400, zwykły tekst Unsupported media type "<value>".
media_browser: ustawienie nie ma używalnego rodzaju multimediów. 400, zwykły tekst The "<setting>" settings is not supported.
Ścieżka /dxpr_builder/ajax/help_link_validator
Trasa dxpr_builder.ajax_help_link_validator
Metody Niezadeklarowane (dowolna metoda). Skrypt deweloperski dxpr_builder_dev.js wysyła POST z treścią zakodowaną jak formularz.
Wymagania Użytkownik rozliczany (billable user)
Kontroler AjaxController::validateHelpLink()
Parametr Źródło Wymagany Uwagi
help_link Treść POST Wymagany dla sensownej odpowiedzi Sprawdzane są tylko URLe http albo https na hoście dxpr.com ze ścieżką zaczynającą się od /documentation/.

Odpowiedź: tablica JSON. [true], gdy żądanie HEAD do linku (bez podążania za przekierowaniami) zwraca 200; [false], gdy klient HTTP rzuca wyjątek; [] w każdym innym przypadku, łącznie z brakującym parametrem, niepasującym URlem albo statusem innym niż 200.

Ścieżka /dxpr_builder/entity-link-suggestions
Trasa dxpr_builder.entity_link_suggestions
Metody GET
Wymagania edit with dxpr builder, token CSRF; opcja trasy no_cache.
Kontroler EntityLinkSuggestionsController::suggestions()
Parametr Źródło Wymagany Uwagi
q Ciąg zapytania Wymagany dla wyników Szukany tekst, małymi literami. Wartość w rodzaju /node/123 wczytuje ten byt wprost.
langcode Ciąg zapytania Opcjonalny Język bytu goszczącego; domyślnie bieżący język. Zwracane są tylko byty dostępne w tym języku.

Rodzaje to te z włączonym ckeditor5_link_suggestions w informacji o rodzaju; gdy żaden nie jest skonfigurowany, przeszukiwane są wszystkie rodzaje węzłów. Do 100 bytów na rodzaj bytu jest dopasowywanych wyszukiwaniem CONTAINS przez wtyczki wyboru referencji do bytów z rdzenia.

Odpowiedź: {"suggestions": [...]} z prywatną cachowalnością i maksymalnym wiekiem 300 sekund. Każda sugestia ma description, entity_type_id, entity_uuid, group, label i path. Gdy q nic nie dopasowuje, tablica trzyma jedną sugestię linku ręcznego z description, label (wejście małymi literami) i path (wejście, gdy jest prawidłowym URlem, inaczej pusty ciąg). Gdy q jest puste, suggestions to pusta tablica.

Ustawienia edytora użytkownika

Ścieżka /dxpr_builder/user-settings
Trasa dxpr_builder.user_settings
Metody POST
Wymagania edit with dxpr builder, token CSRF; opcja trasy no_cache.
Kontroler UserSettingsController::save()

Edytor wysyła to żądanie, gdy użytkownik zmienia własne ustawienia edytora, na przykład w Editor settings. Wartości zapisywane są przy koncie użytkownika w user.data, moduł dxpr_builder.

Parametr Źródło Wymagany Uwagi
controls_layout Treść JSON Wymagany (jedyne ustawienie) element, breadcrumb albo default. default usuwa wybór użytkownika, więc obowiązuje ustawienie profilu albo witryny.

Odpowiedzi:

Przypadek Status Treść
Zapisano 200 {"settings": {"controls_layout": "<value>"}}: każde ustawienie po zapisie, default, gdy użytkownik nie ma zapisanego wyboru.
Treść nie jest niepustym obiektem JSON albo nazwa lub wartość jest nieprawidłowa 400 {"error": "Invalid setting or value."}. Nic nie jest zapisywane.

Operacje głównego handlera AJAX

Wszystkie operacje idą pod /dxpr_builder/ajax z parametrem tokenu zapytań uzyskanym spod /dxpr_builder/csrf. Nazwa operacji jest wysyłana w polu treści POST action; wszystkie pozostałe parametry to pola treści POST, chyba że podano inaczej. Kolumna „Ponownie sprawdza rozliczalność” oznacza operacje, które wywołują isBillableUser() ponownie wewnątrz switcha. Gdy sprawdzanie zawiedzie, zwracają pustą odpowiedź AjaxResponse opisaną wyżej, chyba że wiersz mówi inaczej.

Sesja i dostęp

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_login Brak Nie Wartość logiczna JSON: czy bieżący użytkownik jest rozliczany.
dxpr_builder_csrf Brak Tak Ciąg JSON: URL handlera z parametrem zapytania token (tak samo jak /dxpr_builder/csrf bez opcji enterprise).

Kontenery (pola renderowane formatterem DXPR Builder)

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_get_container_types Brak Tak Obiekt JSON z kluczami entity_type|bundle o wartościach entity_type - bundle, po jednym wpisie na rodzaj, którego domyślne wyświetlanie używa formattera dxpr_builder_text w co najmniej jednym polu.
dxpr_get_container_names container_type (wymagany, entity_type|bundle) Tak (zwraca pusty ciąg JSON zamiast pustej odpowiedzi) Obiekt JSON z kluczami entity_id|field_name (albo entity_id|field_name|langcode dla bytów wielojęzycznych) o wartościach entity label|field label. Gdy brakuje container_type albo sprawdzanie rozliczalności zawiedzie, odpowiedzią jest pusty ciąg JSON.
dxpr_save_container type (wymagany, entity_type|bundle); name (wymagany, entity_id|field_name albo entity_id|revision_id|field_name); htmlContent (wymagany, zakodowany markup); lang (opcjonalny, domyślnie domyślny język witryny) Tak Pusty ciąg JSON przy pomyślnym zapisie. HTTP 400 z komunikatem JSON, gdy htmlContent nie jest ciągiem albo język nie pasuje do bytu nieprzetłumaczalnego; 404, gdy żądane tłumaczenie nie istnieje; 500, gdy bytu nie można wczytać.

dxpr_save_container robi, co następuje:

  1. Dekoduje htmlContent: XOR każdego bajtu z 7, potem dekodowanie URL.
  2. Zapisuje wynik do pierwszej delty nazwanego pola.
  3. Tworzy nową domyślną rewizję z komunikatem dziennika Saved with DXPR builder, gdy rodzaj bytu jest rewidowalny.
  4. Usuwa blokadę treści bytu, jeśli istnieje.
  5. Aktualizuje block_revision_id w sekcjach Konstruktora układu, które odwołują się do zapisanego bloku wstawianego.
  6. Zwiększa wartość stanu dxpr_builder.saves_count.

Zapis następuje tylko, gdy użytkownik ma dostęp update do bytu. Bez niego operacja wciąż zwraca odpowiedź pomyślną z pustym ciągiem.

Elementy CMS (bloki i widoki)

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_builder_get_cms_element_names Brak Tak Obiekt JSON z DxprBuilderService::getCmsElementNames() z kluczami list, disallowed i blockCategories.
dxpr_get_cms_element_settings name (wymagany): view-<view_id>-<display_id> albo block-<plugin_id>; ajax_page_state[libraries] (opcjonalny, rozdzielone przecinkami już wczytane biblioteki) Tak Obiekt JSON z css, js, settings i data. Dla widoku data to wyrenderowane widżety odsłoniętych filtrów; dla bloku data to formularz konfiguracji bloku owinięty w tagi <form>, z usuniętymi elementami provider, admin_label, label, label_display i context_mapping oraz wszystkimi otwartymi elementami details.
dxpr_builder_load_cms_element name (wymagany, parsowany przez parseStringForCmsElementInfo()); settings (wymagany); data (wymagany, tablica); ajax_page_state[libraries] (opcjonalny) Nie Obiekt JSON z css, js, settings i data, gdzie data to wyrenderowany blok albo wyświetlanie widoku.

W obu operacjach zwracających settings, css i js to wyrenderowane tagi zasobów, których nie ma jeszcze na stronie, a settings to zdekodowany obiekt drupalSettings albo pusty ciąg, gdy ich nie ma.

Szablony stron

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_get_page_templates Brak Tak Tablica JSON włączonych szablonów stron, każdy z title, uuid, module (zawsze null: byt go nie przechowuje), category, date, weight (liczba całkowita) i image (URL data: albo URL not-found.png modułu).
dxpr_load_page_template uuid (wymagany) Tak Odpowiedź HTML z markupem szablonu po podmianie tokenów bazowych; pusta, gdy żaden włączony szablon nie pasuje.

Szablony użytkowników

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_get_templates Brak Tak Tablica JSON szablonów bieżącego użytkownika albo oznaczonych jako globalne; szablony, których konto autora już nie istnieje, są pomijane. Każdy wpis ma id, uuid, name, global, current_user_is_author, author_id, author_name, type oraz, gdy zapisany, image (URL data:).
dxpr_load_template uuid (wymagany) Tak Odpowiedź HTML z markupem szablonu po podmianie tokenów bazowych; pusta, gdy żaden włączony szablon nie pasuje.
dxpr_save_template name (wymagany); template (wymagany, markup); type (opcjonalny, domyślnie custom); global (opcjonalny, rzutowany na wartość logiczną); image (opcjonalny: ciąg base64 albo URL data:image w treści POST albo wieloczęściowe pole pliku o nazwie image) Tak Obiekt JSON z message i code. code 200 przy pomyślnym zapisie; code 409 (status HTTP 200), gdy istnieje szablon o tej samej nazwie maszynowej; code 400 ze statusem HTTP 400, gdy obraz nie jest prawidłowym danymi obrazu.
dxpr_delete_template name (wymagany) Tak Pusty ciąg JSON.

Nazwa maszynowa powstaje z name przez małe litery i zamianę każdego ciągu znaków spoza a-z0-9_ na podkreślenie. type sięga do atrybutu data-azb w markupu, gdy zapisany szablon nie ma typu.

Obrazy

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_builder_get_image_urls entityIDs (wymagany, tablica); imageStyle (wymagany; original dla pliku bez stylu); entityType (wymagany; media rozwiązuje elementy multimedialne, każda inna wartość używana jest jako rodzaj bytu dla ID) Tak Treść tekstowa: rozdzielone przecinkami URLe obrazów. Pliki dają URL względny od korzenia z parametrem zapytania fid. Elementy multimedialne rodzaju image albo video rozwiązują się do pliku źródłowego. Elementy acquia_dam_image_asset dają URL DAM z dodanymi mid, acquiaDamAsset i imageStyle. Pozostałe elementy multimedialne są pomijane. HTTP 204 bez treści, gdy entityIDs jest puste albo gdy żaden element multimedialny nie daje się rozwiązać.
dxpr_builder_get_image_style_url imageStyle (wymagany); entityId (wymagany); entityTypeId (wymagany, file albo media) Tak Treść tekstowa. Dla pliku: jego URL względny od korzenia przez styl obrazu (pliki SVG i original pomijają styl), z parametrem zapytania fid. Dla elementu multimedialnego acquia_dam_image_asset: URL DAM. HTTP 204 bez treści dla każdego innego bytu albo gdy bytu nie znaleziono.
dxpr_builder_get_image_metadata entityId (wymagany); entityType (wymagany, file albo media) Tak (zwraca JSON 403 zamiast pustej odpowiedzi) {"data": {"alt": "...", "title": "..."}} z pola źródła obrazu elementu multimedialnego (zasób Acquia DAM daje swój tekst alt z DAM i pusty tytuł). Dla pliku wartości pochodzą z pierwszego elementu multimedialnego, którego field_media_image odwołuje się do niego. data to pusta tablica, gdy byt nie jest plikiem ani elementem multimedialnym albo gdy żadne multimedia nie odwołują się do pliku. Błędy: 400 {"error": "Missing required parameters"}, 404 {"error": "Entity not found"}, 500 {"error": "Failed to load entity"}, 403 {"error": "Access denied"}.

Blokady treści

Operacja Parametry Ponownie sprawdza rozliczalność Zwraca
dxpr_content_lock_status entity_id, revision_id, entity_type, langcode (wszystkie wymagane) Nie Obiekt JSON z status (wartość logiczna) i label (etykieta bytu); gdy zablokowane, także entity_lock_author_id i entity_lock_author_name.
dxpr_toggle_content_lock entity_id, revision_id, entity_type, langcode, toggle_action (wszystkie wymagane; lock tworzy blokadę, każda inna wartość ją usuwa) Nie Obiekt JSON z label i status (true po zablokowaniu, false po odblokowaniu). Pusta tablica JSON ([]), gdy bytu nie można wczytać albo użytkownik nie ma dostępu update.

Strony administracyjne

Wszystkie te trasy przyjmują każdą metodę (bez klucza methods). Ścieżki z {...} przyjmują ID bytu konfiguracji albo, dla {migration_id}, ID migracji.

Ścieżka Trasa Uprawnienie Cel
/admin/dxpr_studio dxpr_builder.admin.studio administer dxpr builder configuration Przegląd DXPR Studio; strona bloku menu administracji z rdzenia, wymieniająca strony podrzędne.
/admin/dxpr_studio/dxpr_builder dxpr_builder.admin.studio.builder administer dxpr builder configuration Przegląd DXPR Builder; strona bloku menu administracji z rdzenia.
/admin/dxpr_studio/dxpr_builder/settings dxpr_builder.settings administer dxpr builder configuration DxprBuilderSettingsForm: formularz ustawień modułu.
/admin/dxpr_studio/dxpr_builder/ai_settings dxpr_builder.ai_settings administer dxpr builder configuration DxprBuilderAiSettingsForm: formularz ustawień AI.
/admin/dxpr_studio/dxpr_builder/user_templates entity.dxpr_builder_user_template.collection administer site configuration Lista bytów konfiguracji dxpr_builder_user_template.
/admin/dxpr_studio/dxpr_builder/user_templates/add entity.dxpr_builder_user_template.add_form administer site configuration Dodawanie szablonu użytkownika.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template} entity.dxpr_builder_user_template.edit_form administer site configuration Edycja szablonu użytkownika.
/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}/delete entity.dxpr_builder_user_template.delete_form administer site configuration Usuwanie szablonu użytkownika (formularz potwierdzenia).
/admin/dxpr_studio/dxpr_builder/page_template entity.dxpr_builder_page_template.collection administer site configuration Lista bytów konfiguracji dxpr_builder_page_template.
/admin/dxpr_studio/dxpr_builder/page_template/add entity.dxpr_builder_page_template.add_form administer site configuration Dodawanie szablonu strony.
/admin/dxpr_studio/dxpr_builder/page_template/create dxpr_builder.create_page_template administer dxpr builder configuration PageController::createPageTemplate(): kopiuje włączony szablon użytkownika wskazany parametrem zapytania uuid do nowego szablonu strony o tym samym ID i kategorii DXPR. Ustawia komunikat o statusie albo błędzie i przekierowuje do listy szablonów użytkownika.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template} entity.dxpr_builder_page_template.edit_form administer site configuration Edycja szablonu strony.
/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}/delete entity.dxpr_builder_page_template.delete_form administer site configuration Usuwanie szablonu strony (formularz potwierdzenia).
/admin/dxpr_studio/dxpr_builder/profile entity.dxpr_builder_profile.collection administer dxpr_builder_profile Lista bytów konfiguracji dxpr_builder_profile.
/admin/dxpr_studio/dxpr_builder/profile/add entity.dxpr_builder_profile.add_form administer dxpr_builder_profile Dodawanie profilu.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile} entity.dxpr_builder_profile.edit_form administer dxpr_builder_profile Edycja profilu.
/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}/delete entity.dxpr_builder_profile.delete_form administer dxpr_builder_profile Usuwanie profilu (formularz potwierdzenia).
/admin/dxpr_studio/dxpr_builder/user_licenses dxpr_builder.user_licenses administer dxpr builder configuration PageController::userLicensesPage(): niecachowana tabela licencjonowanych użytkowników (kolumny User, Roles, Sites, Assigned i Operations). Nad nią strona renderuje własną kartę podsumowania licencji (dxpr-license-info), gdy informacje o licencji są dostępne, oraz, gdy zwolniona licencja odczeka swoje 30 dni, powiadomienie „Next license available on”. Na tej trasie blok License info nie renderuje niczego, więc podsumowanie nigdy nie pokazuje się dwa razy.
/admin/dxpr_studio/dxpr_builder/user_licenses/sites dxpr_builder.user_licenses.sites administer dxpr builder configuration PageController::userLicensesSitesPage(): lista domen zapisanych dla użytkownika podanego w parametrze żądania mail; otwierana w oknie modalnym z tabeli licencji.
/admin/dxpr_studio/dxpr_builder/content dxpr_builder.licensed_content administer dxpr builder configuration PageController::licensedContentPage(): stronicowana tabela (20 na stronę) elementów treści edytowanych za pomocą DXPR Builder, z podsumowaniem licencji elementów treści. Parametr zapytania needs_migration=1 pokazuje tylko elementy wymagające migracji treści. Pusta, gdy brak informacji o licencji.
/admin/dxpr_studio/dxpr_builder/migration-status dxpr_builder.migration_status administer dxpr builder configuration MigrationStatusController::statusPage(): niecachowana tabela zarejestrowanych migracji treści z ich oczekującymi elementami. Każda oczekująca migracja ma link Run now, a przycisk Run all pending migrations pojawia się, gdy jakieś oczekują.
/admin/dxpr_studio/dxpr_builder/migration-run/{migration_id} dxpr_builder.migration_run_confirm administer dxpr builder configuration MigrationRunConfirmForm: potwierdza, potem uruchamia jedną migrację jako proces wsadowy (batch) i wraca na stronę statusu.
/admin/dxpr_studio/dxpr_builder/migration-run-all dxpr_builder.migration_run_all_confirm administer dxpr builder configuration MigrationRunAllConfirmForm: potwierdza, potem uruchamia każdą zarejestrowaną migrację jako jeden proces wsadowy i wraca na stronę statusu.
/dxpr-builder/disavow-user dxpr_builder.disavow_user_confirm administer dxpr builder configuration DisavowUserConfirmForm: potwierdza wykluczenie użytkownika podanego w parametrze zapytania uid z edycji w DXPR Builder.
/dxpr-builder/delete-stale-user dxpr_builder.delete_stale_user_confirm administer dxpr builder configuration DeleteStaleUserConfirmForm: potwierdza usunięcie danych licencji dla adresu e-mail podanego w parametrze zapytania email.

Co dalej?

  • Opis konfiguracji dla ustawień sterujących przeglądarką mediów i zachowaniem AI używanymi przez te punkty końcowe.
  • PHP API dla usług, które wywołują kontrolery.
  • Hooks API dla hooków pozwalających innym modułom zmieniać zachowanie kreatora.