Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .markdownlint-cli2.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,19 @@ config:
table-pipe-style:
style: leading_and_trailing

no-alt-text: true
first-line-heading: true
list-marker-space: true
blanks-around-fences: true
single-title: true
no-multiple-space-atx: true
blanks-around-headings: true
ul-style: dash
ol-prefix:
style: one_or_ordered
ul-indent:
indent: 4

ignores:
- "docs/snippets/**"
- "docs/index.md"
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
title: Back office configuration
description: Configure default upload locations, pagination limits, and more settings for the back office.
---

Expand Down
3 changes: 2 additions & 1 deletion docs/administration/back_office/browser/add_browser_tab.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ The module governs the creation of the new tab.
## Add tab to webpack config

In `webpack.config.js`, add the following declaration:

```js
const ibexaConfigManager = require('./ibexa.webpack.config.manager.js');
```
Expand Down Expand Up @@ -91,7 +92,7 @@ Finally, create an image view by adding an `image.js` to `assets/js/image-tab/co
[[= include_file('code_samples/back_office/udw/assets/js/image-tab/components/image.js') =]]
```

## Add styles
## Add styles

Ensure that the new tab is styled by adding the following files to `assets/css/`.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
title: Default dashboard configuration
description: Configure default dashboard.
edition: experience
---
Expand Down
1 change: 0 additions & 1 deletion docs/administration/dashboard/customize_dashboard.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
title: Dashboard customization
description: Customize dashboard.
edition: experience
---
Expand Down
1 change: 0 additions & 1 deletion docs/administration/dashboard/php_api_dashboard_service.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
---
title: Dashboard service's PHP API
description: Use DashboardService to manage dashboards.
edition: experience
---
Expand Down
1 change: 1 addition & 0 deletions docs/administration/recent_activity/recent_activity.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ ibexa:
pagination:
activity_logs_limit: 20
```

A log item is a group of entries, or an entry without group.

### Disable activity log
Expand Down
2 changes: 1 addition & 1 deletion docs/ai_actions/ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

You can also extend it to perform other tasks or support additional AI services.

## Getting Started
## Getting Started

Check notice on line 14 in docs/ai_actions/ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/ai_actions.md#L14

[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings
Raw output
{"message": "[Ibexa.SentenceCapitalizationInHeadings] Use sentence-style capitalization in headings", "location": {"path": "docs/ai_actions/ai_actions.md", "range": {"start": {"line": 14, "column": 4}}}, "severity": "INFO"}

[[= cards([
"ai_actions/ai_actions_guide",
Expand Down
7 changes: 4 additions & 3 deletions docs/ai_actions/configure_ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@

2. Go to **API keys** and click **Create Key**.

4. Select the workspace, enter a **Key Name** and click **Add**.
3. Select the workspace, enter a **Key Name** and click **Add**.

5. Take a note of the API key, because it is displayed only once.
4. Take a note of the API key, because it is displayed only once.

Check notice on line 57 in docs/ai_actions/configure_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/configure_ai_actions.md#L57

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 57, "column": 43}}}, "severity": "INFO"}

Then, in the root folder of your project, modify the `.env` file: add an `ANTHROPIC_API_KEY` variable and populate its value with the API key that you got from the AI service.

Expand All @@ -79,6 +79,7 @@
claude-sonnet-4-20250514: 'Claude 4 Sonnet (2025-05-14)'
claude-opus-4-20250514: 'Claude Opus 4 (2025-05-14)'
```

You can now use the Anthropic connector in your project.

## Install Google Gemini connector [[% include 'snippets/lts-update_badge.md' %]]
Expand Down Expand Up @@ -109,7 +110,7 @@
1. Add project name, for example, "My project".
1. Modify the automatically generated **Project ID** if necessary.
1. Select location: choose your organization.
1. Click **Create**.
1. Click **Create**.

#### Configure billing

Expand Down
1 change: 1 addition & 0 deletions docs/ai_actions/extend_ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -331,6 +331,7 @@ This template embeds the AI component, but only if a dedicated `transcript` fiel
```

And add it to the SiteAccess configuration for the `admin_group`:

``` yaml
[[= include_file('code_samples/ai_actions/config/packages/ibexa_admin_ui.yaml') =]]
```
Expand Down
1 change: 1 addition & 0 deletions docs/api/event_reference/order_management_events.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ page_type: reference
---

# Order management events

| Event | Dispatched by | Properties |
|---|---|---|
|`BeforeCreateOrderEvent`|`OrderService::createOrder`|`OrderCreateStruct $createStruct`<br/>`?OrderInterface $orderResult = null`|
Expand Down
1 change: 1 addition & 0 deletions docs/api/graphql/graphql_queries.md
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,7 @@ Alternatively, you can query the `children` property of an `item` or `content` o
}
}
```

Response:

```json
Expand Down
46 changes: 24 additions & 22 deletions docs/api/notification_channels.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,17 @@

### Available notification types

* [`Ibexa\Contracts\FormBuilder\Notifications\FormSubmitted`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-FormBuilder-Notifications-FormSubmitted.html)
* [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotification.html)
* [`Ibexa\Contracts\OrderManagement\Notification\OrderStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-Notification-OrderStatusChange.html)
* [`Ibexa\Contracts\Payment\Notification\PaymentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Payment-Notification-PaymentStatusChange.html)
* [`Ibexa\Contracts\Shipping\Notification\ShipmentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Shipping-Notification-ShipmentStatusChange.html)
* [`Ibexa\Contracts\User\Notification\UserInvitation`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserInvitation.html)
* [`Ibexa\Contracts\User\Notification\UserPasswordReset`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserPasswordReset.html)
* [`Ibexa\Contracts\User\Notification\UserRegister`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserRegister.html)
* `Ibexa\Share\Notification\ContentEditInvitationNotification`
* `Ibexa\Share\Notification\ContentViewInvitationNotification`
* `Ibexa\Share\Notification\ExternalParticipantContentViewInvitationNotification`
- [`Ibexa\Contracts\FormBuilder\Notifications\FormSubmitted`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-FormBuilder-Notifications-FormSubmitted.html)
- [`Ibexa\Contracts\Notifications\SystemNotification\SystemNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-SystemNotification-SystemNotification.html)
- [`Ibexa\Contracts\OrderManagement\Notification\OrderStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-OrderManagement-Notification-OrderStatusChange.html)
- [`Ibexa\Contracts\Payment\Notification\PaymentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Payment-Notification-PaymentStatusChange.html)
- [`Ibexa\Contracts\Shipping\Notification\ShipmentStatusChange`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Shipping-Notification-ShipmentStatusChange.html)
- [`Ibexa\Contracts\User\Notification\UserInvitation`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserInvitation.html)
- [`Ibexa\Contracts\User\Notification\UserPasswordReset`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserPasswordReset.html)
- [`Ibexa\Contracts\User\Notification\UserRegister`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-Notification-UserRegister.html)
- `Ibexa\Share\Notification\ContentEditInvitationNotification`
- `Ibexa\Share\Notification\ContentViewInvitationNotification`
- `Ibexa\Share\Notification\ExternalParticipantContentViewInvitationNotification`

### Available notification channels

Expand All @@ -53,14 +53,14 @@
php bin/console debug:container --tag=notifier.channel
```

* `actito` - Notification forwarded as [transactional email](transactional_emails.md)
* `browser` - Notification forwarded as [flash message]([[= symfony_doc =]]/session.html#flash-messages)
* [`chat`]([[= symfony_doc =]]/notifier.html#chat-channel) - Notification forwarded to a communication platform like Slack, Microsoft Teams, or Google Chat
* [`desktop`]([[= symfony_doc =]]/notifier.html#desktop-channel) - Notification forwarded to desktop applications like JoliNotif
* [`email`]([[= symfony_doc =]]/notifier.html#email-channel) - Notification forwarded to email addresses
* `ibexa` - Notification forwarded as [back office user notifications](notifications.md#user-notifications)
* [`push`]([[= symfony_doc =]]/notifier.html#push-channel) - Notification forwarded to specific applications
* [`sms`]([[= symfony_doc =]]/notifier.html#sms-channel) - Notification forwarded to phone numbers
- `actito` - Notification forwarded as [transactional email](transactional_emails.md)
- `browser` - Notification forwarded as [flash message]([[= symfony_doc =]]/session.html#flash-messages)
- [`chat`]([[= symfony_doc =]]/notifier.html#chat-channel) - Notification forwarded to a communication platform like Slack, Microsoft Teams, or Google Chat
- [`desktop`]([[= symfony_doc =]]/notifier.html#desktop-channel) - Notification forwarded to desktop applications like JoliNotif
- [`email`]([[= symfony_doc =]]/notifier.html#email-channel) - Notification forwarded to email addresses
- `ibexa` - Notification forwarded as [back office user notifications](notifications.md#user-notifications)
- [`push`]([[= symfony_doc =]]/notifier.html#push-channel) - Notification forwarded to specific applications
- [`sms`]([[= symfony_doc =]]/notifier.html#sms-channel) - Notification forwarded to phone numbers

Check failure on line 63 in docs/api/notification_channels.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/notification_channels.md#L63

[Ibexa.Spellcheck] Did you really mean 'sms'?
Raw output
{"message": "[Ibexa.Spellcheck] Did you really mean 'sms'?", "location": {"path": "docs/api/notification_channels.md", "range": {"start": {"line": 63, "column": 45}}}, "severity": "ERROR"}

### Subscriptions configuration

Expand Down Expand Up @@ -142,10 +142,10 @@
- The optional second argument is an array of [`…\Value\RecipientInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-RecipientInterface.html).
This interface is implemented by the [`…\Value\Recipent\SymfonyRecipientAdapter`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-SymfonyRecipientAdapter.html)
used to wrap `Symfony\Component\Notifier\Recipient\RecipientInterface`.
- This Symfony interface is implemented by [`…\Value\Recipent\UserRecipient`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipient.html)
- This Symfony interface is implemented by [`…\Value\Recipent\UserRecipient`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipient.html)

Check notice on line 145 in docs/api/notification_channels.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/notification_channels.md#L145

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/notification_channels.md", "range": {"start": {"line": 145, "column": 30}}}, "severity": "INFO"}
which can wrap classes implementing the [`Ibexa\Contracts\Core\Repository\Values\User\UserReference` interface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-User-UserReference.html),
- The [`UserService` methods to load a user](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-UserService.html#method_loadUser) are returning objects implementing this `UserReference` interface.
- The [`PermissionResolver::getCurrentUserReference()` method](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-PermissionResolver.html#method_getCurrentUserReference) is returning objects implementing this `UserReference` interface.
- The [`UserService` methods to load a user](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-UserService.html#method_loadUser) are returning objects implementing this `UserReference` interface.
- The [`PermissionResolver::getCurrentUserReference()` method](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-PermissionResolver.html#method_getCurrentUserReference) is returning objects implementing this `UserReference` interface.

For example, to send a notification, you often use a combination like the following:

Expand Down Expand Up @@ -204,11 +204,13 @@
An empty template only extending the pagelayout is used for the demonstration.

`templates/themes/admin/notification-sender-controller.html.twig`:

``` twig
[[= include_code('code_samples/api/notifications/templates/themes/admin/notification-sender-controller.html.twig') =]]
```

`templates/themes/storefront/notification-sender-controller.html.twig`:

``` twig
[[= include_code('code_samples/api/notifications/templates/themes/storefront/notification-sender-controller.html.twig') =]]
```
Expand Down
14 changes: 7 additions & 7 deletions docs/api/rest_api/rest_api_usage/rest_api_usage.md
Original file line number Diff line number Diff line change
Expand Up @@ -93,12 +93,12 @@

## REST communication summary

* A REST route (URI) leads to a REST controller action. A REST route is composed of the root prefix (`ibexa.rest.path_prefix: /api/ibexa/v2`) and a resource path (for example, `/content/objects/{contentId}`).
* This controller action returns an `Ibexa\Rest\Value` descendant.
- A REST route (URI) leads to a REST controller action. A REST route is composed of the root prefix (`ibexa.rest.path_prefix: /api/ibexa/v2`) and a resource path (for example, `/content/objects/{contentId}`).

Check notice on line 96 in docs/api/rest_api/rest_api_usage/rest_api_usage.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/rest_api/rest_api_usage/rest_api_usage.md#L96

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/rest_api/rest_api_usage/rest_api_usage.md", "range": {"start": {"line": 96, "column": 70}}}, "severity": "INFO"}
- This controller action returns an `Ibexa\Rest\Value` descendant.
- This controller action might use the `Request` to build its result according to, for example, GET parameters, the `Accept` HTTP header, or the request payload and its `Content-Type` HTTP header.
- This controller action might wrap its return in a `CachedValue` which contains caching information for the reverse proxies.
* The `Ibexa\Bundle\Rest\EventListener\ResponseListener` attached to the `kernel.view event` is triggered, and passes the request and the controller action's result to the `AcceptHeaderVisitorDispatcher`.
* The `AcceptHeaderVisitorDispatcher` matches one of the `regexps` of an `ibexa.rest.output.visitor` service (an `Ibexa\Contracts\Rest\Output\Visitor`). The role of this `Output\Visitor` is to transform the value returned by the controller into XML or JSON output format. To do so, it combines an `Output\Generator` corresponding to the output format and a `ValueObjectVisitorDispatcher`. This `Output\Generator` is also adding the `media-type` attributes.
* The matched `Output\Visitor` uses its `ValueObjectVisitorDispatcher` to select the right `ValueObjectVisitor` according to the fully qualified class name (FQCN) of the controller result. A `ValueObjectVisitor` is a service tagged `ibexa.rest.output.value_object.visitor` and this tag has a property `type` pointing a FQCN.
* `ValueObjectVisitor`s recursively help to transform the controller result thanks to the abstraction layer of the `Generator`.
* The `Output\Visitor` returns the `Response` to send back to the client.
- The `Ibexa\Bundle\Rest\EventListener\ResponseListener` attached to the `kernel.view event` is triggered, and passes the request and the controller action's result to the `AcceptHeaderVisitorDispatcher`.

Check notice on line 100 in docs/api/rest_api/rest_api_usage/rest_api_usage.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/api/rest_api/rest_api_usage/rest_api_usage.md#L100

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/api/rest_api/rest_api_usage/rest_api_usage.md", "range": {"start": {"line": 100, "column": 94}}}, "severity": "INFO"}
- The `AcceptHeaderVisitorDispatcher` matches one of the `regexps` of an `ibexa.rest.output.visitor` service (an `Ibexa\Contracts\Rest\Output\Visitor`). The role of this `Output\Visitor` is to transform the value returned by the controller into XML or JSON output format. To do so, it combines an `Output\Generator` corresponding to the output format and a `ValueObjectVisitorDispatcher`. This `Output\Generator` is also adding the `media-type` attributes.
- The matched `Output\Visitor` uses its `ValueObjectVisitorDispatcher` to select the right `ValueObjectVisitor` according to the fully qualified class name (FQCN) of the controller result. A `ValueObjectVisitor` is a service tagged `ibexa.rest.output.value_object.visitor` and this tag has a property `type` pointing a FQCN.
- `ValueObjectVisitor`s recursively help to transform the controller result thanks to the abstraction layer of the `Generator`.
- The `Output\Visitor` returns the `Response` to send back to the client.
1 change: 1 addition & 0 deletions docs/cdp/cdp_activation/cdp_add_clientside_tracking.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ For example, add this tracker to the landing page template to track user entranc
```js
raptor.trackEvent('visit', ..., ...);
```

or purchases:

```js
Expand Down
37 changes: 20 additions & 17 deletions docs/cdp/cdp_data_customization.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
---

# Data customization

You can customize user, content, and product data exported to CDP and you can control what field type information you want to export.
By default, custom field types have basic export functionality.
It casts their `Value` object to string, thanks to `\Stringable` implementation.

## Export additional user data

You can extend user data exported to CDP by attaching custom information, for example user content fields or user preferences.
Expand Down Expand Up @@ -51,7 +51,7 @@
```

## Export field types

Field types are exported with metadata, for example, ID, field definition name, type, or value.
You can also provide your own [`\Ibexa\Contracts\Cdp\Export\Content\FieldProcessorInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cdp-Export-Content-FieldProcessorInterface.html) instance to extend metadata.
The provided implementation has to be defined as a service and tagged with `ibexa.cdp.export.content.field_processor`.
Expand All @@ -64,7 +64,7 @@
- **process** - takes `Field` instance and then returns a flat array of scalar values that are combined with the payload data.
A common field type is serialized to:

```json
{
"field_measurement_simple_id": 1792,
Expand All @@ -80,19 +80,20 @@
"field_measurement_simple_value_simple_base_unit": 800000000
}
```

Field identifier is a prefix that is automatically added to each key.
You can only use scalar values.

### Built in Field Processors for custom field types

You can provide your own CDP export functionality by using one of the system Field Processors:

#### `\Ibexa\Cdp\Export\Content\FieldProcessor\SkippingFieldProcessor`

It results in the field type being excluded from the exported payload.
To avoid adding the field type data to the payload, register a new service as follows:

```yaml
custom_fieldtype.cdp.export.field_processor:
class: Ibexa\Cdp\Export\Content\FieldProcessor\SkippingFieldProcessor
Expand All @@ -102,30 +103,31 @@
tags:
- { name: 'ibexa.cdp.export.content.field_processor', priority: 0 }
```

## Export field type values

To customize export of field type values, provide your own [`\Ibexa\Contracts\Cdp\Export\Content\FieldValueProcessorInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cdp-Export-Content-FieldValueProcessorInterface.html) instance.
New implementation has to be registered as a service manually or by using autoconfiguration.
The service has to use the tag `ibexa.cdp.export.content.field_value_processor`.
You can also provide `priority` property to override other Field Value Processors.
* `FieldValueProcessorInterface::process` - takes `Field` instance and returns an `array` with scalar values that are applied to export data payload.
- `FieldValueProcessorInterface::process` - takes `Field` instance and returns an `array` with scalar values that are applied to export data payload.

Check notice on line 114 in docs/cdp/cdp_data_customization.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/cdp/cdp_data_customization.md#L114

[Ibexa.Passive] Try to avoid passive tense, when possible.
Raw output
{"message": "[Ibexa.Passive] Try to avoid passive tense, when possible.", "location": {"path": "docs/cdp/cdp_data_customization.md", "range": {"start": {"line": 114, "column": 115}}}, "severity": "INFO"}
If the field type returns a single value, provides a `value` key in the array.
You can return multiple values.

* `FieldValueProcessorInterface::supports` - decides whether `FieldValueProcessor` can work with the `Field`.
- `FieldValueProcessorInterface::supports` - decides whether `FieldValueProcessor` can work with the `Field`.

### Built in Field Value Processors for custom field types

Several system Field Value Processors either work by default or can be registered for custom field types:

#### `\Ibexa\Cdp\Export\Content\FieldValueProcessor\CastToStringFieldValueProcessor`

This Processor is a default one, as long as no other Processor with higher priority is registered. It makes `\Stringable` implementation of the field type `\Ibexa\Core\FieldType\Value` object to use it as a value in the final payload.

#### `\Ibexa\Cdp\Export\Content\FieldValueProcessor\JsonHashFieldValueProcessor`

This Processor generates JSON data from hash representation of the field type (it uses [`\Ibexa\Contracts\Core\FieldType\FieldType::toHash`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-FieldType-FieldType.html#method_toHash) method).

!!! caution
Expand All @@ -134,6 +136,7 @@

To use `JsonHashFieldValueProcessor`, you need to register a new service:

```yaml
custom_fieldtype.cdp.export.field_processor:
class: Ibexa\Cdp\Export\Content\FieldValueProcessor\JsonHashFieldValueProcessor
Expand Down
Loading
Loading