---
url: 'https://dxpr.com/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/api'
title: 'Довідник API | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T19:26:48+00:00'
updated: '2026-10-24T20:15:47+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  Служби PHP, точки розширення JavaScript і маршрути, які
  визначає DXPR Builder. ID служб походять із
  dxpr_builder.services.yml, маршрути з dxpr_builder.routing.yml.
  Деталі запитів і відповідей кожного маршруту див. на
  сторінці Кінцеві точки API.
tags:
  - 'Architecture and APIs'
image: 'https://dxpr.com/themes/custom/dxpr_com/images/dxpr-share-card.jpg'
published: true
og:
  site_name: DXPR
  updated_time: '2026-10-24T20:15:47+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Довідник API'
      description: |-
        Служби PHP, точки розширення JavaScript і маршрути, які
        визначає DXPR Builder. 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-24T19:26:48+0000'
      dateModified: '2026-10-24T20:15:47+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/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/api'
      articleSection: 'Архітектура та API'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/api'
      description: |-
        Служби PHP, точки розширення JavaScript і маршрути, які
        визначає DXPR Builder. ID служб походять із
        dxpr_builder.services.yml, маршрути з dxpr_builder.routing.yml.
        Деталі запитів і відповідей кожного маршруту див. на
        сторінці Кінцеві точки API.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Home
            item: 'https://dxpr.com/uk'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: uk
---
[Help Center](/uk/hc)/[Documentation](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F) /[Вивчення DXPR Builder](/uk/hc/documentation/learn-dxpr-builder) /[Розширення](/uk/hc/documentation/learn-dxpr-builder/extend) /[Архітектура та API](/uk/hc/documentation/learn-dxpr-builder/extend/architecture) # Довідник API.

 Вивчення DXPR BuilderРозширенняАрхітектура та API

   ## In this guide

Служби PHP, точки розширення JavaScript і маршрути, які визначає DXPR Builder. ID служб походять із `dxpr_builder.services.yml`, маршрути з `dxpr_builder.routing.yml`. Деталі запитів і відповідей кожного маршруту див. на сторінці [Кінцеві точки API](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D0%B4%D0%BE%D0%B2%D1%96%D0%B4%D0%BD%D0%B8%D0%BA/api-%D0%BA%D1%96%D0%BD%D1%86%D0%B5%D0%B2%D1%96-%D1%82%D0%BE%D1%87%D0%BA%D0%B8).

## Служби PHP

| ID служби | Клас (у `src/`) | Призначення |
|---|---|---|
| `dxpr_builder.service` | `Service\DxprBuilderService` | Готує вміст конструктора для виводу, обробляє токени шляхів, будує реєстр наборів піктограм |
| `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` | Рендерить покази подань, розміщені як елементи |
| `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()`: блоки та покази подань, запропоновані як елементи, кешовано.
- `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`: TRUE для користувача 1 та активних облікових записів із `edit with dxpr builder`, які не виключено з редагування DXPR Builder.
- `getLicenseInfo()`: статус ліцензії із сервера ліцензій DXPR, кешовано. Без ключа продукту повертає безкоштовний рівень: один користувач і 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, названу в `key_provider`; інакше він читає `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`. Додавайте власні об’єкти до них між скриптом, що створює масив, і `dxpr_builder.js`, який читає їх один раз під час запуску.

| Масив | Створено | Що `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` рендериться як звичайне текстове поле.

[Власні елементи](/uk/hc/%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D1%96%D1%8F/%D0%BD%D0%B0%D0%B2%D1%87%D0%B0%D0%BD%D0%BD%D1%8F-dxpr-builder/%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0/%D0%B2%D0%BB%D0%B0%D1%81%D0%BD%D1%96-%D0%B5%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B8) показують повне визначення елемента і як завантажити його в правильний момент.

## Маршрути редактора

Легенда доступу: **billable** це перевірка `_dxpr_builder_billable_user`(користувач 1, або активний обліковий запис із `edit with dxpr builder`, який не виключено); **CSRF** це `_csrf_token`.

| Шлях | Назва маршруту | Методи | Доступ |
|---|---|---|---|
| `/dxpr_builder/ajax` | `dxpr_builder.ajax_callback` | будь-який | 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` | будь-який | billable |
| `/dxpr_builder/ajax/help_link_validator` | `dxpr_builder.ajax_help_link_validator` | будь-який | billable |
| `/dxpr_builder/media-library` | `dxpr_builder.media_library` | будь-який | `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 (під 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` |