---
url: 'https://dxpr.com/fr/hc/documentation/apprendre-dxpr-builder/developpement/api'
title: 'Référence de l’API | DXPR'
author:
  name: Jurriaan
  url: 'https://dxpr.com/users/jurriaan'
date: '2026-10-24T11:00:32+00:00'
updated: '2026-10-24T19:36:26+00:00'
copyright: 'Copyright DXPR. All rights reserved.'
type: article
summary: 'Les services PHP, points d’extension JavaScript et routes définis par DXPR Builder. Les identifiants de service viennent de dxpr_builder.services.yml, les routes de dxpr_builder.routing.yml. Pour les détails de requête et réponse de chaque route, voir Points d’accès de l’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-24T19:36:26+0000'
  'image:alt': 'DXPR, powered by Drupal: AI-powered Drupal for marketers.'
schema:
  '@context': 'https://schema.org'
  '@graph':
    -
      mainEntity: {  }
    -
      '@type': TechArticle
      headline: 'Référence de l’API'
      description: 'Les services PHP, points d’extension JavaScript et routes définis par DXPR Builder. Les identifiants de service viennent de dxpr_builder.services.yml, les routes de dxpr_builder.routing.yml. Pour les détails de requête et réponse de chaque route, voir Points d’accès de l’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:00:32+0000'
      dateModified: '2026-10-24T19:36:26+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/fr/hc/documentation/apprendre-dxpr-builder/developpement/api'
      articleSection: 'Architecture et API'
    -
      '@type': WebPage
      '@id': 'https://dxpr.com/fr/hc/documentation/apprendre-dxpr-builder/developpement/api'
      description: 'Les services PHP, points d’extension JavaScript et routes définis par DXPR Builder. Les identifiants de service viennent de dxpr_builder.services.yml, les routes de dxpr_builder.routing.yml. Pour les détails de requête et réponse de chaque route, voir Points d’accès de l’API.'
      breadcrumb:
        '@type': BreadcrumbList
        itemListElement:
          -
            '@type': ListItem
            position: 1
            name: Accueil
            item: 'https://dxpr.com/fr'
      publisher:
        '@type': Organization
        '@id': 'https://dxpr.com/#organization'
        name: DXPR
      inLanguage: fr
---
[Centre d’aide](/fr/hc)/[Documentation](/fr/hc/documentation) /[Apprendre DXPR Builder](/fr/hc/documentation/learn-dxpr-builder) /[Étendre](/fr/hc/documentation/learn-dxpr-builder/extend) /[Architecture et API](/fr/hc/documentation/learn-dxpr-builder/extend/architecture) # Référence de l’API.

 Apprendre DXPR BuilderÉtendreArchitecture et API

   ## Dans ce guide

Les services PHP, points d’extension JavaScript et routes définis par DXPR Builder. Les identifiants de service viennent de `dxpr_builder.services.yml`, les routes de `dxpr_builder.routing.yml`. Pour les détails de requête et réponse de chaque route, voir [Points d’accès de l’API](/fr/hc/documentation/apprendre-dxpr-builder/reference/points-de-terminaison-d-api).

## Services PHP

| Identifiant de service | Classe (dans `src/`) | Rôle |
|---|---|---|
| `dxpr_builder.service` | `Service\DxprBuilderService` | Prépare le contenu du builder pour la sortie, gère les jetons de chemin, construit le registre des jeux d’icônes |
| `dxpr_builder.license_service` | `Service\DxprBuilderLicenseService` | Statut de licence, utilisateurs facturables, synchro des contributeurs avec DXPR |
| `dxpr_builder.key_service` | `Service\DxprBuilderKeyService` | Lit et stocke la clé de produit |
| `dxpr_builder.jwt_decoder` | `Service\DxprBuilderJWTDecoder` | Décode le contenu de la clé de produit |
| `dxpr_builder.user_settings` | `Service\UserSettings` | Les réglages d’éditeur propres à chaque contributeur, gardés dans les données utilisateur |
| `dxpr_builder.content_lock` | `Service\ContentLock` | Enregistre quel utilisateur modifie une révision d’entité |
| `dxpr_builder.content_migration` | `Service\ContentMigrationService` | Exécute les migrations de contenu ; collecte les services taggés `dxpr_builder.content_migration` |
| `dxpr_builder.profile_handler` | `Service\Handler\ProfileHandler` | Transforme un profil en réglages d’éditeur |
| `dxpr_builder.handler.block` | `Service\Handler\BlockHandler` | Rend les blocs Drupal placés comme éléments |
| `dxpr_builder.handler.view` | `Service\Handler\ViewHandler` | Rend les affichages de vues placés comme éléments |
| `dxpr_builder.template_image_validator` | `Service\TemplateImageValidator` | Valide les images d’aperçu des modèles |
| `dxpr_builder.rl_variant.extractor`, `dxpr_builder.rl_variant.registrar` | `RlIntegration\Service\*` | Variantes de test A/B ; inactif sans le module RL |
| `dxpr_builder.rl_sort.extractor`, `dxpr_builder.rl_sort.registrar` | `RlIntegration\Service\*` | Expériences de tri intelligent ; inactif sans le module RL |
| `logger.channel.dxpr_builder` | canal de log du cœur | Canal de log `dxpr_builder` |

### DxprBuilderServiceInterface

Implémenté par `dxpr_builder.service`. Les méthodes que vous appellerez le plus probablement :

- `insertBaseTokens($content)` : remplace l’URL de base de ce site, le répertoire des fichiers et le chemin du module par des jetons. L’éditeur stocke le contenu sous cette forme.
- `replaceBaseTokens(&$content): void` : réétend les jetons en URL pour l’environnement actuel.
- `stripHtmlElementPersists(string $markup): string` : retire les attributs `data-az-persist`. Exécutez-la sur du balisage écrit hors de l’éditeur ; l’éditeur les reconstruit au chargement.
- `getCmsElementNames()` : les affichages de blocs et de vues proposés comme éléments, mis en cache.
- `getIconSets(): array` : le registre des jeux d’icônes après découverte YAML et `hook_dxpr_builder_icon_sets_alter()`.

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

```

### DxprBuilderLicenseServiceInterface

Implémenté par `dxpr_builder.license_service`.

- `isBillableUser(?AccountInterface $account = NULL): bool` : TRUE pour l’utilisateur 1 et pour les comptes actifs avec `edit with dxpr builder` qui ne sont pas exclus de la modification DXPR Builder.
- `getLicenseInfo()` : statut de licence depuis le serveur de licences DXPR, mis en cache. Sans clé de produit, il renvoie le palier gratuit : un utilisateur et 100 contenus.
- `syncAllUsersWithCentralStorage(string $operation, string $json_web_token = ''): void` : envoie les contributeurs de ce site à DXPR. `$operation` est l’une des constantes d’interface `DXPR_USER_SYNC_OPERATION` (`sync`), `DXPR_USER_ADD_OPERATION` (`add`) ou `DXPR_USER_REMOVE_OPERATION` (`remove`).

### DxprBuilderKeyService

- `getApiKey(): ?string` : la clé de produit. Quand le réglage `api_key_storage` vaut `key`, il lit l’entité Key nommée dans `key_provider` ; sinon il lit `json_web_token`.
- `setApiKey(string $key_value, string $storage_type = 'config', ?string $selected_key_id = NULL): void` : stocke la clé en config ou dans une entité Key.

### DxprBuilderJWTDecoder

- `decodeJwt(string $access_token)` : renvoie les claims `sub`, `scope` et `dxpr_tier` de la clé de produit, chacun NULL quand le jeton ne peut pas être lu. Le résultat est mis en cache par jeton.

## Points d’extension JavaScript

Les scripts de l’éditeur partagent deux tableaux sur `window.dxprBuilder`. Empilez vos propres objets dessus entre le script qui crée le tableau et `dxpr_builder.js`, qui les lit une fois à son exécution.

| Tableau | Créé par | Ce que `dxpr_builder.js` en fait |
|---|---|---|
| `dxpr_param_types` | `dxpr_param_types.js` | Enregistre chaque objet comme type de paramètre avec `register_param_type()` |
| `dxpr_elements` | `dxpr_elements.js` | `create_dxpr_elements()` enregistre chaque définition avec `register_animated_element()` et convertit ses `params` avec `make_param_type()` |

Les types de paramètres enregistrés par le module sont `boxmodel`, `checkbox`, `checkboxes`, `colorpicker`, `datetime`, `dropdown`, `dxb_slider`, `html`, `icon`, `image`, `images`, `link`, `links`, `numericfield`, `row_layout`, `saved_datetime`, `social_links`, `textarea`, `textfield` et `video`. Un paramètre avec un `type` inconnu est rendu comme un champ de texte brut.

[Éléments personnalisés](/fr/hc/documentation/apprendre-dxpr-builder/developpement/elements-personnalises) montre une définition complète d’élément et comment la charger au bon moment.

## Routes de l’éditeur

Légende d’accès : **billable** est la vérification `_dxpr_builder_billable_user` (utilisateur 1, ou un compte actif avec `edit with dxpr builder` qui n’est pas exclu) ; **CSRF** est `_csrf_token`.

| Chemin | Nom de route | Méthodes | Accès |
|---|---|---|---|
| `/dxpr_builder/ajax` | `dxpr_builder.ajax_callback` | toutes | 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` | toutes | billable |
| `/dxpr_builder/ajax/help_link_validator` | `dxpr_builder.ajax_help_link_validator` | toutes | billable |
| `/dxpr_builder/media-library` | `dxpr_builder.media_library` | toutes | `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 |

## Routes d’admin

Toutes les pages d’admin se trouvent sous **DXPR Studio &gt; DXPR Builder**. La colonne des onglets montre le libellé dans le menu d’admin.

| Chemin | Onglet | Permission |
|---|---|---|
| `/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 (sous 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` |