---
url: 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/reference/api-endpoints'
title: 'APIエンドポイント | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T08:49:41+00:00'
updated: '2026-10-24T09:09:48+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  このページではDXPR Builderがdxpr_builder.routing.ymlに登録する全ルートを
  挙げます。HTTPメソッド、アクセス要件、リクエストパラメーター、レスポンス形状は
  コントローラーの実装通りです。AJAXエンドポイントの想定クライアントはエディターの
  JavaScriptです。このページに安定した公開APIはなく、パラメーター名はリリース間で
  変わる場合があります。
  アクセス要件
  ルートは3種類の要件を使います。1つのルートが組み合わせることもあります。
tags:
  - 'Configuratie en API'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T09:09:48+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: APIエンドポイント
      description: |-
        このページではDXPR Builderがdxpr_builder.routing.ymlに登録する全ルートを
        挙げます。HTTPメソッド、アクセス要件、リクエストパラメーター、レスポンス形状は
        コントローラーの実装通りです。AJAXエンドポイントの想定クライアントはエディターの
        JavaScriptです。このページに安定した公開APIはなく、パラメーター名はリリース間で
        変わる場合があります。
        アクセス要件
        ルートは3種類の要件を使います。1つのルートが組み合わせることもあります。
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T08:49:41+0000'
      dateModified: '2026-10-24T09:09:48+0000'
      author:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
        url: 'https://dxpr.com/'
        logo:
          '@type': ImageObject
          url: 'https://dxpr.com/themes/custom/dxpr_com/dxpr-logo-dark.svg'
          width: '1348'
          height: '501'
      mainEntityOfPage: 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/reference/api-endpoints'
      articleSection: 'Configuratie en API'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/reference/api-endpoints'
      description: |-
        このページではDXPR Builderがdxpr_builder.routing.ymlに登録する全ルートを
        挙げます。HTTPメソッド、アクセス要件、リクエストパラメーター、レスポンス形状は
        コントローラーの実装通りです。AJAXエンドポイントの想定クライアントはエディターの
        JavaScriptです。このページに安定した公開APIはなく、パラメーター名はリリース間で
        変わる場合があります。
        アクセス要件
        ルートは3種類の要件を使います。1つのルートが組み合わせることもあります。
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: ホーム
            item: 'https://dxpr.com/ja'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: ja
---
[Help Center](/ja/node/75)/[Documentation](/ja/hc/documentation) /[Learn DXPR Builder](/hc/documentation/learn-dxpr-builder) /[Reference](/hc/documentation/learn-dxpr-builder/reference) /[Configuratie en API](/hc/documentation/learn-dxpr-builder/reference/config-and-api) # APIエンドポイント.

 Learn DXPR BuilderReferenceConfiguratie en API

   ## In this guide

 Related guides

- [設定リファレンス](/ja/hc/documentation/learn-dxpr-builder/reference/config-reference)
- [APIリファレンス](/ja/hc/documentation/learn-dxpr-builder/development/api)
- [Hooks APIリファレンス](/ja/hc/documentation/learn-dxpr-builder/development/hooks-api)

このページではDXPR Builderが`dxpr_builder.routing.yml`に登録する全ルートを 挙げます。HTTPメソッド、アクセス要件、リクエストパラメーター、レスポンス形状は コントローラーの実装通りです。AJAXエンドポイントの想定クライアントはエディターの JavaScriptです。このページに安定した公開APIはなく、パラメーター名はリリース間で 変わる場合があります。

## アクセス要件

ルートは3種類の要件を使います。1つのルートが組み合わせることもあります。

| Requirement | Meaning |
|---|---|
| `_permission` | ユーザーは指定のDrupal権限が必要です。DXPR Builderは`administer dxpr builder configuration`、`edit with dxpr builder`、`administer dxpr_builder_profile`を`dxpr_builder.permissions.yml`で定義します。`view media`と`administer site configuration`はコア由来です。 |
| `_csrf_token` | リクエストは`token`クエリーパラメーターに有効なCSRFトークンを持つ必要があります。主要AJAXハンドラー向けに、エディターはトークン付きURLを`/dxpr_builder/csrf` (または`dxpr_builder_csrf`オペレーション) から取得します。他ルート向けに、フィールドフォーマッターはトークン付きURLを`drupalSettings.dxprBuilder`に置きます (例: `fileUploadUrl`、`entityLinkSuggestionsUrl`、`userSettingsUrl`、`aiAgent.endpointUrl`)。 |
| `_dxpr_builder_billable_user` | ユーザーは課金対象ユーザーである必要があります。定義は下記の通りです。 |

### 「課金対象ユーザー」の意味

`DxprBuilderBillableUserAccessCheck`は、現在の アカウントに `DxprBuilderLicenseService::isBillableUser()`がtrueを返す場合に アクセスを許可します。そのメソッドはブロック済みアカウントと `dxpr_user_is_disavowed`フィールド設定済みアカウント (管理者がUser Licenses ページで編集から除外したユーザー) にfalseを返します。それ以外ではユーザー1と `edit with dxpr builder`権限を持つ全アカウントにtrueを返します。要するに、 課金対象ユーザーとはDXPR Builderでの編集を許可された有効な非除外アカウントであり、 ライセンスサービスはこのアカウントをプロダクトキーに対して数えます。

### HTTPメソッド

ルートが`methods`を宣言する場合、そのメソッドだけがルーティングされます。 宣言しない場合、ルートは任意のメソッドを受け付けます (Drupalの `MethodFilter`はメソッド宣言ルートだけを絞ります)。エディターの JavaScriptが実際に使うメソッドは、ソースで分かる場合に下の表に記載します。

## エディターAJAXエンドポイント

### CSRFトークンURL

|  |  |
|---|---|
| Path | `/dxpr_builder/csrf` |
| Route | `dxpr_builder.csrf_refresh` |
| Methods | Not declared (any method)。エディターはGETを送ります (`backend-connect.js`、`fetchCsrfTokenUrl()`)。 |
| Requirements | Billable user |
| Controller | `AjaxController::ajaxRefresh()` |

リクエストはヘッダー`X-Requested-With: XMLHttpRequest`を持つ必要があります。 ない場合、コントローラーはJSON本文`{"error": "Invalid request"}`付きで HTTP 403を返します。

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `enterprise` | Query string | Optional | 設定値`true`かつ`dxpr_builder_e`モジュールありの場合、トークンは`dxpr_builder_e.ajax_callback`ルート用に生成されます。そのモジュールなしで設定値`true`の場合、コントローラーは例外を投げます。 |

レスポンス: 主要AJAXハンドラーのURLと`token`クエリーパラメーターを持つ JSON文字列です。URLはサイトルートからのパスです (ベースパス含み、ホストなし)。 JavaScriptは全ビルダーオペレーションをこのURLにPOSTします。

### 主要AJAXハンドラー

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax` |
| Route | `dxpr_builder.ajax_callback` |
| Methods | Not declared (any method)。コントローラーは全パラメーターをPOST本文から読み、エディターはPOSTを送ります。 |
| Requirements | Billable user、CSRF token |
| Controller | `AjaxController::ajaxCallback()` |

POST本文のフィールド`action`がオペレーションを選びます。全オペレーションと パラメーターは[主要AJAXハンドラーオペレーション](#main-ajax-handler-operations)に 挙げます。`action`がないか不明な場合、コントローラーはコマンドなしの空Drupal `AjaxResponse`を返します。課金対象ユーザー状態を再確認する多くのオペレーションは、 確認失敗時に同じ空レスポンスを返します。表は2つの例外を注記します。

### AIチャット

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax/ai/chat` |
| Route | `dxpr_builder.ai_chat` |
| Methods | POST |
| Requirements | `edit with dxpr builder`、billable user、CSRF token |
| Controller | `AiChatController::chat()` |

リクエスト本文はJSONです。コントローラーはリクエストをDrupal `ai`モジュールの `dxpr`プロバイダーに代理するので、APIキーはブラウザーに届きません。呼び出し前に、 `ai_output_allowed_domains`設定のドメインを`ai`モジュールのホスト名フィルターに 統合します (そのサービスがある場合)。値`*`はフィルターを完全信頼にします。 フィルターは後で元に戻します。

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `messages` | JSON body | Required | オブジェクトの配列です。`role`と`content`を持ちます。 |
| `stream` | JSON body | Optional | 真偽値です。既定は`true`です。 |
| `model` | JSON body | Optional | 既定は`kavya-m1`です。 |
| `prediction` | JSON body | Optional | 配列としてプロバイダー設定に渡します。 |
| `providers` | JSON body | Optional | プロバイダー設定にそのまま渡します。 |
| `allowed_html_tags` | JSON body | Optional | プロバイダー設定にそのまま渡します。 |
| `allowed_html_classes` | JSON body | Optional | プロバイダー設定にそのまま渡します。 |
| `web_search` | JSON body | Optional | 値`false`だけが転送されます。他の値は無視します。 |
| `response_format` | JSON body | Optional | 配列としてプロバイダー設定に渡します。 |

レスポンス:

| Case | Status | Body |
|---|---|---|
| Streamed (`stream` true and the provider streams) | 200、`Content-Type: text/event-stream` | サーバー送信イベントです。各イベントは`data: <JSON>`で、JSONは`choices[0].delta.content`を持ち、プロバイダーが提供する場合は`id`、`object`、`created`、`model`、`original_model`、`usage`を持ちます。ストリームは`data: [DONE]`で終わります。 |
| Non-streamed | 200、`application/json` | `{"choices": [{"message": {"role": "assistant", "content": "<text>"}}]}` |
| Body is not JSON, or `messages` is missing or empty | 400、plain text | `Invalid request: messages required` |
| `model` not in the `allowed_models` list of `ai_provider_dxpr.settings` (only checked when the `ai_provider_dxpr` module is installed and the list is set) | 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."}}` |

### AI画像生成

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax/ai/image` |
| Route | `dxpr_builder.ai_image` |
| Methods | POST |
| Requirements | `edit with dxpr builder`、billable user、CSRF token |
| Controller | `AiImageController::generate()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `prompt` | JSON body | Required | テキストプロンプトです。 |
| `model` | JSON body | Optional | 既定は`kavya-image`です。 |
| `size` | JSON body | Optional | 空でない場合にプロバイダー設定へ転送します。 |
| `quality` | JSON body | Optional | 空でない場合にプロバイダー設定へ転送します。 |
| `background` | JSON body | Optional | 空でない場合にプロバイダー設定へ転送します。 |

レスポンス:

| Case | Status | Body |
|---|---|---|
| Success | 200 | `{"data": [{"b64_json": "<base64 image>"}]}` (生成画像の最初の1点だけを返します) |
| Body is not JSON, or `prompt` is missing | 400 | `{"error": {"message": "Invalid request: prompt required"}}` |
| Provider returned no image | 500 | `{"error": {"message": "No image was generated"}}` |
| Provider exception | 500 | `{"error": {"message": "Image generation failed. Please try again."}}` |

### AI画像編集

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax/ai/image/edit` |
| Route | `dxpr_builder.ai_image_edit` |
| Methods | POST |
| Requirements | `edit with dxpr builder`、billable user、CSRF token |
| Controller | `AiImageController::edit()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `prompt` | JSON body | Required | 編集指示です。 |
| `image` | JSON body | Required | Base64エンコードの元画像 (厳密デコード) です。 |
| `mimeType` | JSON body | Optional | 既定は`image/png`です。サブタイプがプロバイダーに渡すファイル拡張子になります。 |
| `model` | JSON body | Optional | 既定は`kavya-image`です。 |
| `size`、`quality`、`background` | JSON body | Optional | 空でない場合にプロバイダー設定へ転送します。 |

レスポンス:

| Case | Status | Body |
|---|---|---|
| Success | 200 | `{"data": [{"b64_json": "<base64 image>"}]}` |
| Body is not JSON, or `prompt` or `image` is missing | 400 | `{"error": {"message": "Invalid request: prompt and image required"}}` |
| `image` is not valid base64 | 400 | `{"error": {"message": "Invalid image data: base64 decode failed"}}` |
| Provider returned no image | 500 | `{"error": {"message": "No image was generated"}}` |
| Provider exception | 500 | `{"error": {"message": "Image editing failed. Please try again."}}` |

### ファイルアップロード

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax/file_upload` |
| Route | `dxpr_builder.ajax_file_upload_callback` |
| Methods | POST、DELETE (ルーティングで宣言。コントローラーは単一のアップロードハンドラーで、個別の削除分岐なし) |
| Requirements | Billable user、CSRF token |
| Controller | `UploadFileController::fileUpload()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `upload` | マルチパートフォームのファイル。`upload[]` | Required | 1点以上のアップロードファイルです。 |

コントローラーは各ファイルをクライアントMIMEタイプの前半で振り分けます。 `<default scheme>://dxpr_builder_images`、 `dxpr_builder_videos`、`dxpr_builder_files`のいずれかです。 画像はMIMEタイプ`image/gif`、`jpg`、`jpeg`、`png`、 `webp`、`avif`、`svg`の拡張子が必要です。動画は`video/webm`、 `ogv`、`ogg`、`mp4`、`quicktime`のいずれかです (例: `.mov`)。 サイズ上限はPHPのアップロード上限です。同名かつ同一SHA-256内容の既存管理ファイルで ユーザーが閲覧できるものがある場合、再保存せず再利用します。 `media`モジュールがあり、`image`、`media_image`、`video`、 `media_video`のいずれかのメディアタイプがある場合、ファイルの公開メディア エンティティーを作成 (または再利用) します。ファイル利用は`dxpr_builder`モジュール下に記録します。

レスポンス:

| Case | Status | Body |
|---|---|---|
| Success | 201 | JSON配列です。ファイルごとに1オブジェクト。`url` (絶対ファイルURL)、`uuid`と`id` (メディアエンティティーがある場合はそのID、なければファイルID)、`fid` (ファイルID)、`entity_type` (`media`または`file`)。 |
| No `upload` files | 400 | `{"message": "No files were uploaded."}` |
| Invalid upload, unwritable destination or save failure | 500 | `{"message": "<reason>"}` |
| Validation failure (extension or size) | 422 | `{"message": "<violation messages>"}` |
| Filename already locked by another request | 503 | `{"message": "File \"<name>\" is already locked for writing."}` |

### メディアライブラリーダイアログ

|  |  |
|---|---|
| Path | `/dxpr_builder/media-library` |
| Route | `dxpr_builder.media_library` |
| Methods | Not declared (any method)。パラメーターはクエリー文字列から読みます。 |
| Requirements | `view media`。admin route |
| Controller | `AjaxController::openImageMediaLibrary()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `media_type` | Query string | Optional | `image` (既定) または`video`です。 |
| `remaining_slots` | Query string | Optional | 開き手が受け付ける件数です。既定は1です。 |
| `uuid` | Query string | Optional | 開き手には`opener_parameters.uuid`として渡します。 |

提供するメディアタイプは`media_browser`設定に依存します。 `media_library`は`image`または`video`メディアタイプを直接使い、 `media_library_acquia_dam`はそのメディアタイプがある場合に `acquia_dam_image_asset`または`acquia_dam_video_asset`を使います。

レスポンス:

| Case | Result |
|---|---|
| Success | 描画配列は`MediaLibraryUiBuilder::buildUi()`で作ります。開き手は`media_library.opener.dxpr_builder`です。Drupalはiframe向けHTMLページとして描画します。 |
| `media_library` module not installed | 403、plain text `Media Library is not enabled. Please enable it to access this feature.` |
| Unsupported `media_type` | 400、plain text `Unsupported media type "<value>".` |
| `media_browser` setting has no usable media type | 400、plain text `The "<setting>" settings is not supported.` |

### ヘルプリンク検証

|  |  |
|---|---|
| Path | `/dxpr_builder/ajax/help_link_validator` |
| Route | `dxpr_builder.ajax_help_link_validator` |
| Methods | Not declared (any method)。開発スクリプト`dxpr_builder_dev.js`はフォームエンコード本文でPOSTを送ります。 |
| Requirements | Billable user |
| Controller | `AjaxController::validateHelpLink()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `help_link` | POST body | Required for a meaningful answer | 確認対象は`http`または`https`のURLで、ホスト`dxpr.com`、パス先頭`/documentation/`のものだけです。 |

レスポンスはJSON配列です。リンクへのHEADリクエスト (リダイレクト追従なし) が 200を返す場合に`[true]`、HTTPクライアントが例外の場合に`[false]`、 それ以外の場合 (パラメーターなし、URL不一致、非200ステータス含む) に`[]`です。

### エンティティーリンク候補

|  |  |
|---|---|
| Path | `/dxpr_builder/entity-link-suggestions` |
| Route | `dxpr_builder.entity_link_suggestions` |
| Methods | GET |
| Requirements | `edit with dxpr builder`、CSRF token。`no_cache` route option |
| Controller | `EntityLinkSuggestionsController::suggestions()` |

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `q` | Query string | Required for results | 検索テキストです。小文字化します。`/node/123`のような値はそのエンティティーを直接読み込みます。 |
| `langcode` | Query string | Optional | ホストエンティティーの言語です。既定は現在の言語です。この言語で利用できるエンティティーだけを返します。 |

バンドルはバンドル情報で`ckeditor5_link_suggestions`有効のものです。 設定がない場合は全ノードバンドルを検索します。エンティティータイプごとに最大 100エンティティーを、コアのエンティティー参照選択プラグインによる `CONTAINS`検索で照合します。

レスポンス: `{"suggestions": [...]}`です。非公開キャッシュ可能性と最大 300秒です。各候補は`description`、`entity_type_id`、`entity_uuid`、 `group`、`label`、`path`を持ちます。`q`が何にも一致しない場合、 配列は`description`、`label` (小文字化した入力) 、`path`(有効URLの場合は入力、それ以外は空文字列) を持つ手動リンク候補1点を持ちます。 `q`が空の場合、`suggestions`は空配列です。

### ユーザーエディター設定

|  |  |
|---|---|
| Path | `/dxpr_builder/user-settings` |
| Route | `dxpr_builder.user_settings` |
| Methods | POST |
| Requirements | `edit with dxpr builder`、CSRF token。`no_cache` route option |
| Controller | `UserSettingsController::save()` |

ユーザーが自分のエディター設定を変える場合にエディターがこのリクエストを送ります (例: **Editor settings**下)。値は`user.data`にユーザーアカウントと共に 格納します。モジュールは`dxpr_builder`です。

| Parameter | Source | Required | Notes |
|---|---|---|---|
| `controls_layout` | JSON body | Required (the only setting) | `element`、`breadcrumb`、`default`のいずれか。`default`はユーザーの選択を削除し、プロファイルまたはサイト設定が適用されます。 |

レスポンス:

| Case | Status | Body |
|---|---|---|
| Saved | 200 | `{"settings": {"controls_layout": "<value>"}}`。保存後の全設定です。選択の格納がないユーザーには`default`です。 |
| Body is not a non-empty JSON object, or a name or value is invalid | 400 | `{"error": "Invalid setting or value."}`。何も格納しません。 |

## 主要AJAXハンドラーオペレーション

全オペレーションは`/dxpr_builder/csrf`から得たトークンクエリーパラメーター付きで `/dxpr_builder/ajax`に行きます。オペレーション名はPOST本文のフィールド `action`で送ります。他の全パラメーターは別記なき限りPOST本文のフィールドです。 「Re-checks billable」カラムはスイッチ内で`isBillableUser()`を再呼び出しする オペレーションを示します。確認失敗時は行の別記なき限り上記の空 `AjaxResponse`を返します。

### セッションとアクセス

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_login` | None | No | JSON真偽値です。現在のユーザーが課金対象かどうかです。 |
| `dxpr_builder_csrf` | None | Yes | JSON文字列です。トークン (`token`) クエリーパラメーター付きハンドラーURLです。`/dxpr_builder/csrf`と同じですが、`enterprise`選択肢はありません。 |

### コンテナー (DXPR Builderフォーマッターで描画するフィールド)

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_get_container_types` | None | Yes | JSONオブジェクトは`entity_type\|bundle`をキー、`entity_type - bundle`を値とします。既定ビューディスプレイが最低1フィールドに`dxpr_builder_text`フォーマッターを使うバンドルごとに1項目です。 |
| `dxpr_get_container_names` | `container_type` (required、`entity_type\|bundle`) | Yes (returns an empty JSON string instead of the empty response) | JSONオブジェクトは`entity_id\|field_name` (翻訳可能エンティティーでは`entity_id\|field_name\|langcode`) をキー、`entity label\|field label`を値とします。`container_type`がない場合や課金確認の失敗時は空JSON文字列のレスポンスです。 |
| `dxpr_save_container` | `type` (required、`entity_type\|bundle`)。`name` (required、`entity_id\|field_name`または`entity_id\|revision_id\|field_name`)。`htmlContent` (required、encoded markup)。`lang` (optional、defaults to the site default language) | Yes | 成功時はJSON空文字列です。`htmlContent`が文字列でない場合や言語が非翻訳可能エンティティーに適用されない場合はJSONメッセージ付きHTTP 400、要求翻訳がない場合は404、エンティティーを読み込めない場合は500です。 |

`dxpr_save_container`は次を行います。

1. 復号対象は`htmlContent`です。各バイトを7でXORし、URLデコードします。
2. 結果を指定フィールドの最初のデルタに書き込みます。
3. エンティティータイプがリビジョン対応の場合、ログメッセージ`Saved with DXPR builder`付きで新しい既定リビジョンを作ります。
4. エンティティーのコンテンツロックを削除します。
5. 保存したインラインブロックを参照するLayout Builderセクションの`block_revision_id`を更新します。
6. 状態値`dxpr_builder.saves_count`を増やします。

保存はユーザーがエンティティーへの`update`アクセスを持つ場合だけ行います。 ない場合も、オペレーションは空文字列の成功レスポンスを返します。

### CMSエレメント (ブロックとビュー)

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_builder_get_cms_element_names` | None | Yes | JSONオブジェクトは`DxprBuilderService::getCmsElementNames()`由来です。キー`list`、`disallowed`、`blockCategories`です。 |
| `dxpr_get_cms_element_settings` | `name` (required)。`view-<view_id>-<display_id>`または`block-<plugin_id>`。`ajax_page_state[libraries]` (optional、comma-separated libraries already loaded) | Yes | JSONオブジェクトは`css`、`js`、`settings`、`data`を持ちます。ビューの場合、`data`は描画済み公開フィルターウィジェットです。ブロックの場合、`data`は`<form>`タグで包んだブロック設定フォームです。`provider`、`admin_label`、`label`、`label_display`、`context_mapping`の各エレメントを除き、全detailsエレメントを開きます。 |
| `dxpr_builder_load_cms_element` | `name` (required、parsed by `parseStringForCmsElementInfo()`)。`settings` (required)。`data` (required、array)。`ajax_page_state[libraries]` (optional) | No | JSONオブジェクトは`css`、`js`、`settings`、`data`を持ちます。`data`は描画済みブロックまたはビューディスプレイです。 |

両方の`settings`返却オペレーションで、`css`と`js`はページにまだない 描画済みアセットタグであり、`settings`は復号済み`drupalSettings`オブジェクトです。ない場合は空文字列です。

### ページテンプレート

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_get_page_templates` | None | Yes | 有効ページテンプレートのJSON配列です。各項目は`title`、`uuid`、`module` (常に`null`。エンティティーは格納しません)、`category`、`date`、`weight` (整数)、`image` (`data:` URL、またはモジュールの`not-found.png` URL) を持ちます。 |
| `dxpr_load_page_template` | `uuid` (required) | Yes | 基本トークン置換済みテンプレートマークアップを含むHTMLレスポンスです。一致する有効テンプレートがない場合は空です。 |

### ユーザーテンプレート

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_get_templates` | None | Yes | 現在のユーザーが所有するテンプレートまたはグローバル指定のテンプレートのJSON配列です。作者アカウントがもうないテンプレートは除きます。各項目は`id`、`uuid`、`name`、`global`、`current_user_is_author`、`author_id`、`author_name`、`type`を持ち、格納時は`image` (`data:` URL) を持ちます。 |
| `dxpr_load_template` | `uuid` (required) | Yes | 基本トークン置換済みテンプレートマークアップを含むHTMLレスポンスです。一致する有効テンプレートがない場合は空です。 |
| `dxpr_save_template` | `name` (required)。`template` (required、markup)。`type` (optional、defaults to `custom`)。`global` (optional、cast to boolean)。`image` (optional。POST本文のbase64文字列または`data:image` URL、または`image`名のマルチパートファイルフィールド) | Yes | JSONオブジェクトは`message`と`code`を持ちます。成功時は`code` 200、同マシン名のテンプレートがある場合は`code` 409 (HTTPステータス200)、画像が有効な画像データでない場合はHTTP 400で`code` 400です。 |
| `dxpr_delete_template` | `name` (required) | Yes | JSON空文字列です。 |

マシン名は`name`を小文字化し、`a-z0-9_`外の文字の連続をアンダー スコアに置き換えて作ります。格納済みテンプレートにタイプがない場合、 `type`はマークアップの`data-azb`属性にフォールバックします。

### 画像

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_builder_get_image_urls` | `entityIDs` (required、array)。`imageStyle` (required。`original` for the unstyled file)。`entityType` (required。`media` resolves media items、any other value is used as the entity type of the IDs) | Yes | テキスト本文です。カンマ区切り画像URL。`fid`クエリーパラメーター付きルート相対URLをファイルが与えます。`image`/`video`タイプのメディアアイテムは元ファイルに解決します。`acquia_dam_image_asset`アイテムは`mid`、`acquiaDamAsset`、`imageStyle`付きDAM URLを与えます。他のメディアアイテムは飛ばします。`entityIDs`が空の場合や解決できるメディアアイテムがない場合は本文なしHTTP 204です。 |
| `dxpr_builder_get_image_style_url` | `imageStyle` (required)。`entityId` (required)。`entityTypeId` (required、`file`または`media`) | Yes | テキスト本文です。ファイルの場合: 画像スタイル経由のルート相対URL (SVGファイルと`original`はスタイルを飛ばします) で`fid`クエリーパラメーター付き。`acquia_dam_image_asset`メディアアイテムの場合: DAM URL。他の全エンティティーやエンティティー未検出の場合は本文なしHTTP 204です。 |
| `dxpr_builder_get_image_metadata` | `entityId` (required)。`entityType` (required、`file`または`media`) | Yes (returns 403 JSON instead of the empty response) | `{"data": {"alt": "...", "title": "..."}}`はメディアアイテムの画像ソースフィールド由来です (Acquia DAMアセットはDAM代替テキストと空タイトルを与えます)。ファイルの場合、値はそのファイルを`field_media_image`で参照する最初のメディアアイテム由来です。エンティティーがファイルでもメディアアイテムでもない場合や、ファイルを参照するメディアがない場合、`data`は空配列です。エラー: 400 `{"error": "Missing required parameters"}`、404 `{"error": "Entity not found"}`、500 `{"error": "Failed to load entity"}`、403 `{"error": "Access denied"}`。 |

### コンテンツロック

| Operation | Parameters | Re-checks billable | Returns |
|---|---|---|---|
| `dxpr_content_lock_status` | `entity_id`、`revision_id`、`entity_type`、`langcode` (all required) | No | JSONオブジェクトは`status` (真偽値) と`label` (エンティティーラベル) を持ちます。ロック時は`entity_lock_author_id`と`entity_lock_author_name`も持ちます。 |
| `dxpr_toggle_content_lock` | `entity_id`、`revision_id`、`entity_type`、`langcode`、`toggle_action` (all required。`lock`はロックを作り、他値は解除します) | No | JSONオブジェクトは`label`と`status` (ロック後は`true`、解除後は`false`) を持ちます。エンティティーを読み込めない場合やユーザーに`update`アクセスがない場合は空JSON配列 (`[]`) です。 |

## 管理ページ

これらの全ルートは任意のメソッドを受け付けます (`methods`キーなし)。 `{...}`を含むパスは設定エンティティーIDを取ります。`{migration_id}`は 移行IDです。

| Path | Route | Permission | Purpose |
|---|---|---|---|
| `/admin/dxpr_studio` | `dxpr_builder.admin.studio` | `administer dxpr builder configuration` | DXPR Studio概要です。子ページを挙げるコアの管理メニューブロックページです。 |
| `/admin/dxpr_studio/dxpr_builder` | `dxpr_builder.admin.studio.builder` | `administer dxpr builder configuration` | DXPR Builder概要です。コアの管理メニューブロックページです。 |
| `/admin/dxpr_studio/dxpr_builder/settings` | `dxpr_builder.settings` | `administer dxpr builder configuration` | `DxprBuilderSettingsForm`。モジュール設定フォームです。 |
| `/admin/dxpr_studio/dxpr_builder/ai_settings` | `dxpr_builder.ai_settings` | `administer dxpr builder configuration` | `DxprBuilderAiSettingsForm`。AI設定フォームです。 |
| `/admin/dxpr_studio/dxpr_builder/user_templates` | `entity.dxpr_builder_user_template.collection` | `administer site configuration` | 設定エンティティー`dxpr_builder_user_template`の一覧です。 |
| `/admin/dxpr_studio/dxpr_builder/user_templates/add` | `entity.dxpr_builder_user_template.add_form` | `administer site configuration` | ユーザーテンプレートを追加します。 |
| `/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}` | `entity.dxpr_builder_user_template.edit_form` | `administer site configuration` | ユーザーテンプレートを編集します。 |
| `/admin/dxpr_studio/dxpr_builder/user_templates/{dxpr_builder_user_template}/delete` | `entity.dxpr_builder_user_template.delete_form` | `administer site configuration` | ユーザーテンプレートを削除します (確認フォーム)。 |
| `/admin/dxpr_studio/dxpr_builder/page_template` | `entity.dxpr_builder_page_template.collection` | `administer site configuration` | 設定エンティティー`dxpr_builder_page_template`の一覧です。 |
| `/admin/dxpr_studio/dxpr_builder/page_template/add` | `entity.dxpr_builder_page_template.add_form` | `administer site configuration` | ページテンプレートを追加します。 |
| `/admin/dxpr_studio/dxpr_builder/page_template/create` | `dxpr_builder.create_page_template` | `administer dxpr builder configuration` | `PageController::createPageTemplate()`。`uuid`クエリーパラメーターで指定した有効ユーザーテンプレートを、同IDとカテゴリー`DXPR`の新しいページテンプレートに複写します。ステータスまたはエラーメッセージを設定し、ユーザーテンプレート一覧へリダイレクトします。 |
| `/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}` | `entity.dxpr_builder_page_template.edit_form` | `administer site configuration` | ページテンプレートを編集します。 |
| `/admin/dxpr_studio/dxpr_builder/page_template/{dxpr_builder_page_template}/delete` | `entity.dxpr_builder_page_template.delete_form` | `administer site configuration` | ページテンプレートを削除します (確認フォーム)。 |
| `/admin/dxpr_studio/dxpr_builder/profile` | `entity.dxpr_builder_profile.collection` | `administer dxpr_builder_profile` | 設定エンティティー`dxpr_builder_profile`の一覧です。 |
| `/admin/dxpr_studio/dxpr_builder/profile/add` | `entity.dxpr_builder_profile.add_form` | `administer dxpr_builder_profile` | プロファイルを追加します。 |
| `/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}` | `entity.dxpr_builder_profile.edit_form` | `administer dxpr_builder_profile` | プロファイルを編集します。 |
| `/admin/dxpr_studio/dxpr_builder/profile/{dxpr_builder_profile}/delete` | `entity.dxpr_builder_profile.delete_form` | `administer dxpr_builder_profile` | プロファイルを削除します (確認フォーム)。 |
| `/admin/dxpr_studio/dxpr_builder/user_licenses` | `dxpr_builder.user_licenses` | `administer dxpr builder configuration` | `PageController::userLicensesPage()`。ライセンス済みユーザーの非キャッシュ表です (カラムUser、Roles、Sites、Assigned、Operations)。その上に、ライセンス情報がある場合は独自ライセンス概要カード (`dxpr-license-info`) を描画し、解放済みライセンスが30日待ちの間は「Next license available on」通知を出します。このルートでは**License info**ブロックは何も描画しないので、概要が二重に出ることはありません。 |
| `/admin/dxpr_studio/dxpr_builder/user_licenses/sites` | `dxpr_builder.user_licenses.sites` | `administer dxpr builder configuration` | `PageController::userLicensesSitesPage()`。`mail`リクエストパラメーター指定ユーザーの記録済みドメインの項目一覧です。ライセンス表からモーダルで開きます。 |
| `/admin/dxpr_studio/dxpr_builder/content` | `dxpr_builder.licensed_content` | `administer dxpr builder configuration` | `PageController::licensedContentPage()`。DXPR Builderで編集したコンテンツアイテムのページ付き表 (20件ごと) です。コンテンツアイテムライセンス概要付きです。`needs_migration=1`クエリーパラメーターはコンテンツ移行が必要な項目だけを表示します。ライセンス情報がない場合は空です。 |
| `/admin/dxpr_studio/dxpr_builder/migration-status` | `dxpr_builder.migration_status` | `administer dxpr builder configuration` | `MigrationStatusController::statusPage()`。登録済みコンテンツ移行と保留項目の非キャッシュ表です。各保留移行には**Run now**リンクがあり、保留があれば**Run all pending migrations**ボタンが現れます。 |
| `/admin/dxpr_studio/dxpr_builder/migration-run/{migration_id}` | `dxpr_builder.migration_run_confirm` | `administer dxpr builder configuration` | `MigrationRunConfirmForm`。確認して1つの移行をバッチ実行し、ステータスページに戻ります。 |
| `/admin/dxpr_studio/dxpr_builder/migration-run-all` | `dxpr_builder.migration_run_all_confirm` | `administer dxpr builder configuration` | `MigrationRunAllConfirmForm`。確認して登録済み全移行を1バッチ実行し、ステータスページに戻ります。 |
| `/dxpr-builder/disavow-user` | `dxpr_builder.disavow_user_confirm` | `administer dxpr builder configuration` | `DisavowUserConfirmForm`。`uid`クエリーパラメーター指定ユーザーのDXPR Builder編集からの除外を確認します。 |
| `/dxpr-builder/delete-stale-user` | `dxpr_builder.delete_stale_user_confirm` | `administer dxpr builder configuration` | `DeleteStaleUserConfirmForm`。`email`クエリーパラメーター指定メールアドレスのライセンスデータ削除を確認します。 |

## 次はこちら

- [設定リファレンス](/ja/hc/documentation/learn-dxpr-builder/reference/config-reference)。これらの エンドポイントが使うメディアブラウザーとAI動作を制御する設定です。
- [PHP API](/hc/documentation/learn-dxpr-builder/development/api)。コントローラーが 呼び出すサービスです。
- [フックAPI](/hc/documentation/learn-dxpr-builder/development/hooks-api)。他モジュールが ビルダー動作を変更するフックです。