---
url: 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/development/api'
title: 'APIリファレンス | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:27:50+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'DXPR Builderが定義するPHPサービス、JavaScript拡張ポイント、ルートです。サービスIDはdxpr_builder.services.ymlから、ルートはdxpr_builder.routing.ymlから来ます。各ルートのリクエスト・応答の詳細はAPIエンドポイントを参照。'
tags:
  - 'Architectuur en API’s'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T11:27:50+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が定義するPHPサービス、JavaScript拡張ポイント、ルートです。サービスIDはdxpr_builder.services.ymlから、ルートはdxpr_builder.routing.ymlから来ます。各ルートのリクエスト・応答の詳細はAPIエンドポイントを参照。'
      image:
        '@type': ImageObject
        url: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
        width: '1200'
        height: '630'
      datePublished: '2026-10-24T11:27:50+0000'
      dateModified: '2026-10-24T11:27:50+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/development/api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/ja/hc/documentation/learn-dxpr-builder/development/api'
      description: 'DXPR Builderが定義するPHPサービス、JavaScript拡張ポイント、ルートです。サービスIDはdxpr_builder.services.ymlから、ルートはdxpr_builder.routing.ymlから来ます。各ルートのリクエスト・応答の詳細はAPIエンドポイントを参照。'
      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) /[Extend](/hc/documentation/learn-dxpr-builder/extend) /[Architectuur en API’s](/hc/documentation/learn-dxpr-builder/extend/architecture) # APIリファレンス.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

DXPR Builderが定義するPHPサービス、JavaScript拡張ポイント、ルートです。サービスIDは`dxpr_builder.services.yml`から、ルートは`dxpr_builder.routing.yml`から来ます。各ルートのリクエスト・応答の詳細は[APIエンドポイント](/hc/documentation/learn-dxpr-builder/reference/api-endpoints)を参照。

## PHPサービス

| サービスID | クラス(`src/`内) | 目的 |
|---|---|---|
| `dxpr_builder.service` | `Service\DxprBuilderService` | 出力用にBuilderコンテンツを準備し、パストークンを処理してアイコンセットレジストリーを構築 |
| `dxpr_builder.license_service` | `Service\DxprBuilderLicenseService` | ライセンス状態、課金対象利用者、DXPRとの編集者同期 |
| `dxpr_builder.key_service` | `Service\DxprBuilderKeyService` | プロダクトキーの読み取りと保存 |
| `dxpr_builder.jwt_decoder` | `Service\DxprBuilderJWTDecoder` | プロダクトキーペイロードのデコード |
| `dxpr_builder.user_settings` | `Service\UserSettings` | 各編集者独自のエディター設定。利用者データに保持 |
| `dxpr_builder.content_lock` | `Service\ContentLock` | エンティティリビジョンを編集中の利用者を記録 |
| `dxpr_builder.content_migration` | `Service\ContentMigrationService` | コンテンツマイグレーションを実行します。収集対象はタグ`dxpr_builder.content_migration` |
| `dxpr_builder.profile_handler` | `Service\Handler\ProfileHandler` | プロフィールをエディター設定に変換 |
| `dxpr_builder.handler.block` | `Service\Handler\BlockHandler` | エレメントとして配置されたDrupalブロックをレンダー |
| `dxpr_builder.handler.view` | `Service\Handler\ViewHandler` | エレメントとして配置されたViewsディスプレイをレンダー |
| `dxpr_builder.template_image_validator` | `Service\TemplateImageValidator` | テンプレートプレビュー画像を検証 |
| `dxpr_builder.rl_variant.extractor`、`dxpr_builder.rl_variant.registrar` | `RlIntegration\Service\*` | A/Bテストバリアント。RLモジュールなしでは非活性 |
| `dxpr_builder.rl_sort.extractor`、`dxpr_builder.rl_sort.registrar` | `RlIntegration\Service\*` | スマートソート実験。RLモジュールなしでは非活性 |
| `logger.channel.dxpr_builder` | コアのロガーチャンネル | ログチャンネル`dxpr_builder` |

### DxprBuilderServiceInterface

実装は`dxpr_builder.service`。呼び出す可能性が高いメソッドです。

- `insertBaseTokens($content)`：このサイトのベースURL、ファイルディレクトリ、モジュールパスをトークンに置換します。エディターはこの形式でコンテンツを保存します。
- `replaceBaseTokens(&$content): void`：トークンを現在の環境のURLに戻します。
- `stripHtmlElementPersists(string $markup): string`：`data-az-persist`属性を取り除きます。エディター外で書いたマークアップに実行します。エディターは読み込み時に再構築します。
- `getCmsElementNames()`：エレメントとして提供されるブロックとViewsディスプレイ。キャッシュ済み。
- `getIconSets(): array`：YAML検出と`hook_dxpr_builder_icon_sets_alter()`の後のアイコンセットレジストリー。

```php
$markup = \Drupal::service('dxpr_builder.service')->insertBaseTokens($html);

```

### DxprBuilderLicenseServiceInterface

実装は`dxpr_builder.license_service`。

- `isBillableUser(?AccountInterface $account = NULL): bool`：利用者1と、DXPR Builder編集から除外されていない`edit with dxpr builder`付きの有効アカウントにTRUE。
- `getLicenseInfo()`：DXPRライセンスサーバーからのライセンス状態。キャッシュ済み。プロダクトキーなしではフリーティア(1利用者、100コンテンツアイテム)を返します。
- `syncAllUsersWithCentralStorage(string $operation, string $json_web_token = ''): void`：このサイトの編集者をDXPRに送信します。`$operation`はインターフェース定数`DXPR_USER_SYNC_OPERATION`(`sync`)、`DXPR_USER_ADD_OPERATION`(`add`)、`DXPR_USER_REMOVE_OPERATION`(`remove`)のいずれか。

### DxprBuilderKeyService

- `getApiKey(): ?string`：プロダクトキー。`api_key_storage`設定が`key`の場合、`key_provider`で指定されたKeyエンティティを読み取ります。そうでなければ`json_web_token`を読み取ります。
- `setApiKey(string $key_value, string $storage_type = 'config', ?string $selected_key_id = NULL): void`：キーを設定またはKeyエンティティに保存します。

### DxprBuilderJWTDecoder

- `decodeJwt(string $access_token)`：プロダクトキーの`sub`、`scope`、`dxpr_tier`クレームを返します。トークンが読めない場合は各NULLです。結果はトークンごとにキャッシュされます。

## JavaScript拡張ポイント

エディタースクリプトは`window.dxprBuilder`上の2つの配列を共有します。配列を作るスクリプトと`dxpr_builder.js`(実行時に1度読み取る)の間で独自オブジェクトをプッシュします。

| 配列 | 作成者 | 何を`dxpr_builder.js`が処理するか |
|---|---|---|
| `dxpr_param_types` | `dxpr_param_types.js` | 各オブジェクトのパラメータータイプ登録は`register_param_type()` |
| `dxpr_elements` | `dxpr_elements.js` | `create_dxpr_elements()`は各定義を`register_animated_element()`で登録します。`params`の変換は`make_param_type()` |

モジュールが登録するパラメータータイプは`boxmodel`、`checkbox`、`checkboxes`、`colorpicker`、`datetime`、`dropdown`、`dxb_slider`、`html`、`icon`、`image`、`images`、`link`、`links`、`numericfield`、`row_layout`、`saved_datetime`、`social_links`、`textarea`、`textfield`、`video`です。不明な`type`のパラメーターは通常のテキスト入力としてレンダーされます。

[カスタムエレメント](/hc/documentation/learn-dxpr-builder/development/custom-elements)は完全なエレメント定義と適切なタイミングでの読み込み方法を示します。

## エディタールート

アクセス凡例。**billable**は`_dxpr_builder_billable_user`チェック(利用者1、または除外されていない`edit with dxpr builder`付きの有効アカウント)です。**CSRF**は`_csrf_token`です。

| パス | ルート名 | メソッド | アクセス |
|---|---|---|---|
| `/dxpr_builder/ajax` | `dxpr_builder.ajax_callback` | any | billable, CSRF |
| `/dxpr_builder/ajax/file_upload` | `dxpr_builder.ajax_file_upload_callback` | POST, DELETE | billable, CSRF |
| `/dxpr_builder/ajax/ai/chat` | `dxpr_builder.ai_chat` | POST | `edit with dxpr builder`, billable, CSRF |
| `/dxpr_builder/ajax/ai/image` | `dxpr_builder.ai_image` | POST | `edit with dxpr builder`, billable, CSRF |
| `/dxpr_builder/ajax/ai/image/edit` | `dxpr_builder.ai_image_edit` | POST | `edit with dxpr builder`, billable, CSRF |
| `/dxpr_builder/csrf` | `dxpr_builder.csrf_refresh` | any | billable |
| `/dxpr_builder/ajax/help_link_validator` | `dxpr_builder.ajax_help_link_validator` | any | billable |
| `/dxpr_builder/media-library` | `dxpr_builder.media_library` | any | `view media` |
| `/dxpr_builder/entity-link-suggestions` | `dxpr_builder.entity_link_suggestions` | GET | `edit with dxpr builder`, CSRF |
| `/dxpr_builder/user-settings` | `dxpr_builder.user_settings` | POST | `edit with dxpr builder`, CSRF |

## 管理ルート

すべての管理ページは**DXPR Studio &gt; DXPR Builder**配下にあります。タブ列は管理メニューのラベルを示します。

| パス | タブ | 権限 |
|---|---|---|
| `/admin/dxpr_studio` | DXPR Studio | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder` | DXPR Builder | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/settings` | General Settings | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/ai_settings` | AI | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/content` | Content Items | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/migration-status` | Migrations (under Content Items) | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/page_template` | Page Templates | `administer site configuration` |
| `/admin/dxpr_studio/dxpr_builder/user_licenses` | User Licenses | `administer dxpr builder configuration` |
| `/admin/dxpr_studio/dxpr_builder/profile` | User Profiles | `administer dxpr_builder_profile` |
| `/admin/dxpr_studio/dxpr_builder/user_templates` | User Templates | `administer site configuration` |