---
url: 'https://dxpr.com/es/hc/documentation/learn-dxpr-builder/development/api'
title: 'Referencia de la API | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:18:05+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: |-
  Los servicios PHP, puntos de extensión JavaScript y rutas que
  DXPR Builder define. Los ID de servicio vienen de
  dxpr_builder.services.yml, las rutas de dxpr_builder.routing.yml.
  Para detalles de petición y respuesta de cada ruta, consulta
  Endpoints de la 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:18:05+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Referencia de la API'
      description: |-
        Los servicios PHP, puntos de extensión JavaScript y rutas que
        DXPR Builder define. Los ID de servicio vienen de
        dxpr_builder.services.yml, las rutas de dxpr_builder.routing.yml.
        Para detalles de petición y respuesta de cada ruta, consulta
        Endpoints de la 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:18:05+0000'
      dateModified: '2026-10-24T11:18:05+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/es/hc/documentation/learn-dxpr-builder/development/api'
      articleSection: 'Architectuur en API’s'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/es/hc/documentation/learn-dxpr-builder/development/api'
      description: |-
        Los servicios PHP, puntos de extensión JavaScript y rutas que
        DXPR Builder define. Los ID de servicio vienen de
        dxpr_builder.services.yml, las rutas de dxpr_builder.routing.yml.
        Para detalles de petición y respuesta de cada ruta, consulta
        Endpoints de la API.
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Inicio
            item: 'https://dxpr.com/es'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: es
---
[Help Center](/es/hc)/[Documentation](/es/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) # Referencia de la API.

 Learn DXPR BuilderExtendArchitectuur en API’s

   ## In this guide

Los servicios PHP, puntos de extensión JavaScript y rutas que DXPR Builder define. Los ID de servicio vienen de `dxpr_builder.services.yml`, las rutas de `dxpr_builder.routing.yml`. Para detalles de petición y respuesta de cada ruta, consulta [Endpoints de la API](/hc/documentation/learn-dxpr-builder/reference/api-endpoints).

## Servicios PHP

| ID de servicio | Clase (en `src/`) | Propósito |
|---|---|---|
| `dxpr_builder.service` | `Service\DxprBuilderService` | Prepara contenido del constructor para la salida, gestiona tokens de ruta, crea el registro de conjuntos de iconos |
| `dxpr_builder.license_service` | `Service\DxprBuilderLicenseService` | Estado de licencia, personas facturables, sincronización de edición con DXPR |
| `dxpr_builder.key_service` | `Service\DxprBuilderKeyService` | Lee y guarda la clave de producto |
| `dxpr_builder.jwt_decoder` | `Service\DxprBuilderJWTDecoder` | Decodifica el payload de la clave de producto |
| `dxpr_builder.user_settings` | `Service\UserSettings` | Ajustes de editor propios de cada persona que edita, guardados en datos de usuario |
| `dxpr_builder.content_lock` | `Service\ContentLock` | Registra qué persona edita una revisión de entidad |
| `dxpr_builder.content_migration` | `Service\ContentMigrationService` | Ejecuta migraciones de contenido; recoge servicios etiquetados `dxpr_builder.content_migration` |
| `dxpr_builder.profile_handler` | `Service\Handler\ProfileHandler` | Convierte un perfil en ajustes de editor |
| `dxpr_builder.handler.block` | `Service\Handler\BlockHandler` | Renderiza bloques Drupal puestos como elementos |
| `dxpr_builder.handler.view` | `Service\Handler\ViewHandler` | Renderiza pantallas de vistas puestas como elementos |
| `dxpr_builder.template_image_validator` | `Service\TemplateImageValidator` | Valida imágenes de vista previa de plantillas |
| `dxpr_builder.rl_variant.extractor`, `dxpr_builder.rl_variant.registrar` | `RlIntegration\Service\*` | Variantes de pruebas A/B; inactivo sin el módulo RL |
| `dxpr_builder.rl_sort.extractor`, `dxpr_builder.rl_sort.registrar` | `RlIntegration\Service\*` | Experimentos de ordenación inteligente; inactivo sin el módulo RL |
| `logger.channel.dxpr_builder` | canal de registro del núcleo | Canal de registro `dxpr_builder` |

### DxprBuilderServiceInterface

Implementado por `dxpr_builder.service`. Los métodos que más probablemente llamarás:

- `insertBaseTokens($content)`: reemplaza la URL base de este sitio, el directorio de archivos y la ruta del módulo con tokens. El editor guarda contenido en esta forma.
- `replaceBaseTokens(&$content): void`: expande los tokens de vuelta a URL para el entorno actual.
- `stripHtmlElementPersists(string $markup): string`: quita los atributos `data-az-persist`. Ejecútalo en marcado escrito fuera del editor; el editor los reconstruye al cargar.
- `getCmsElementNames()`: los bloques y pantallas de vistas ofrecidos como elementos, en caché.
- `getIconSets(): array`: el registro de conjuntos de iconos tras el descubrimiento YAML y `hook_dxpr_builder_icon_sets_alter()`.

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

```

### DxprBuilderLicenseServiceInterface

Implementado por `dxpr_builder.license_service`.

- `isBillableUser(?AccountInterface $account = NULL): bool`: TRUE para el usuario 1 y para cuentas activas con `edit with dxpr builder`no excluidas de la edición con DXPR Builder.
- `getLicenseInfo()`: estado de licencia desde el servidor de licencias de DXPR, en caché. Sin clave de producto devuelve el nivel gratuito: una persona y 100 elementos de contenido.
- `syncAllUsersWithCentralStorage(string $operation, string $json_web_token = ''): void`: envía las personas que editan de este sitio a DXPR. `$operation` es una de las constantes de interfaz `DXPR_USER_SYNC_OPERATION` (`sync`), `DXPR_USER_ADD_OPERATION` (`add`) o `DXPR_USER_REMOVE_OPERATION`(`remove`).

### DxprBuilderKeyService

- `getApiKey(): ?string`: la clave de producto. Cuando el ajuste `api_key_storage`es `key`, lee la entidad Key nombrada en `key_provider`; si no, lee `json_web_token`.
- `setApiKey(string $key_value, string $storage_type = 'config', ?string $selected_key_id = NULL): void`: guarda la clave en configuración o en una entidad Key.

### DxprBuilderJWTDecoder

- `decodeJwt(string $access_token)`: devuelve los claims `sub`, `scope` y `dxpr_tier` de la clave de producto, cada uno NULL cuando el token no puede leerse. El resultado se guarda en caché por token.

## Puntos de extensión JavaScript

Los scripts del editor comparten dos arrays en `window.dxprBuilder`. Pon tus propios objetos en ellos entre el script que crea el array y `dxpr_builder.js`, que los lee una vez al ejecutarse.

| Array | Creado por | Lo que `dxpr_builder.js` hace con él |
|---|---|---|
| `dxpr_param_types` | `dxpr_param_types.js` | Registra cada objeto como tipo de parámetro con `register_param_type()` |
| `dxpr_elements` | `dxpr_elements.js` | `create_dxpr_elements()` registra cada definición con `register_animated_element()` y convierte sus `params` con `make_param_type()` |

Los tipos de parámetro que el módulo registra son `boxmodel`, `checkbox`, `checkboxes`, `colorpicker`, `datetime`, `dropdown`, `dxb_slider`, `html`, `icon`, `image`, `images`, `link`, `links`, `numericfield`, `row_layout`, `saved_datetime`, `social_links`, `textarea`, `textfield` y `video`. Un parámetro con un `type` desconocido se renderiza como una entrada de texto simple.

[Elementos personalizados](/hc/documentation/learn-dxpr-builder/development/custom-elements) muestra una definición completa de elemento y cómo cargarla en el momento justo.

## Rutas del editor

Leyenda de acceso: **billable** es la comprobación `_dxpr_builder_billable_user` (usuario 1, o una cuenta activa con `edit with dxpr builder`no excluida); **CSRF** es `_csrf_token`.

| Ruta | Nombre de ruta | Métodos | Acceso |
|---|---|---|---|
| `/dxpr_builder/ajax` | `dxpr_builder.ajax_callback` | cualquiera | 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` | cualquiera | billable |
| `/dxpr_builder/ajax/help_link_validator` | `dxpr_builder.ajax_help_link_validator` | cualquiera | billable |
| `/dxpr_builder/media-library` | `dxpr_builder.media_library` | cualquiera | `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 |

## Rutas de administración

Todas las páginas de administración están en **DXPR Studio &gt; DXPR Builder**. La columna de pestaña muestra la etiqueta en el menú de administración.

| Ruta | Pestaña | Permiso |
|---|---|---|
| `/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` |