Skip to content
9 changes: 7 additions & 2 deletions docs/ai_actions/ai_actions_guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Wherever you look, artificial intelligence becomes more and more important by en
AI Actions is an extensible solution for integrating features provided by AI services into your workflows, all managed through a user-friendly interface.

Out-of-the-box, AI Actions solution includes two essential components: a framework package and an OpenAI connector package.
The Anthropic connector is also available - as an [LTS update](editions.md#lts-updates).
The Anthropic and Gemini connectors are also available - as [LTS updates](editions.md#lts-updates).
Comment thread
dabrt marked this conversation as resolved.

AI Actions can integrate with [[[= product_name_connect =]]]([[= connect_doc =]]/general/ibexa_connect/), to give you an opportunity to build complex data transformation workflows without having to rely on custom code.
From the developer's perspective, the integration removes the burden of maintaining third-party AI handlers, and accelerates the deployment of AI-based solutions.
Expand Down Expand Up @@ -163,9 +163,14 @@ With some customization, administrators could use the API to run a batch process

### Suggesting taxonomy entries

Content editors and product managers can use [taxonomy suggestions](taxonomy.md#taxonomy-suggestions) when assigning tags or product categorie to content items and products.
Content editors and product managers can use [taxonomy suggestions](taxonomy.md#taxonomy-suggestions) when assigning tags or product categories to content items and products.
Instead of manually browsing through extensive taxonomy trees, editors can request suggestions based on the content's text fields, such as name and description.

!!! note "Alternative suggestion provider"

By default, embeddings used by the taxonomy suggestions feature are generated with OpenAI.
If you install and configure the [Google Gemini connector](configure_ai_actions.md#install-google-gemini-connector), you can modify the [taxonomy suggestions settings](taxonomy.md#change-embeddings-provider-to-google-gemini) and use Google Gemini as an alternative embeddings provider.

### Performing advanced image to text analysis

With some additional customization, store managers could benefit from automating part of product management by integrating their [[= product_name =]] with Google Cloud Vision and the [product catalog](product_catalog_guide.md) by using [[= product_name_connect =]].
Expand Down
130 changes: 120 additions & 10 deletions docs/ai_actions/configure_ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@
AI Actions are available in [[= product_name =]] regardless of its edition.
To use this feature you must first configure the built-in service connectors or build your own ones.

!!! note "Next steps"
Once the framework is configured, before you can start using AI Actions, you can configure access to [[= product_name_base =]]-made service connectors by following the instructions below, or [create your own](extend_ai_actions.md#create-custom-action-handler).

Check notice on line 11 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#L11

[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": 11, "column": 20}}}, "severity": "INFO"}

Check notice on line 11 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#L11

[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.
Raw output
{"message": "[Ibexa.ByUsing] Prefer 'by using' or 'with' to plain 'using'.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 11, "column": 50}}}, "severity": "INFO"}

Once the framework is configured, before you can start using AI Actions, you can configure access to [[= product_name_base =]]-made service connectors by following the instructions below, or [create your own](extend_ai_actions.md#create-custom-action-handler).
Only then you can restart you application and start [working with the AI Actions feature]([[= user_doc =]]/ai_actions/work_with_ai_actions/).

Only then you can restart you application and start [working with the AI Actions feature]([[= user_doc =]]/ai_actions/work_with_ai_actions/).
!!! note "Taxonomy suggestions"

The default OpenAI or the optional Google Gemini connectors can used by the [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions) feature to generate embeddings for suggesting tags and product categories.
After you configure the OpenAI connector, or set up the optional Google Gemini connector and [modify the default taxonomy suggestions settings](taxonomy.md#change-embeddings-provider-to-google-gemini), you can [create AI actions that use the Text to Taxonomy action type]([[= user_doc =]]/ai_actions/work_with_ai_actions/#create-ai-actions-that-control-taxonomy-suggestions).
You can also create [your own embedding provider](taxonomy.md#replace-the-embedding-provider).

## Configure access to OpenAI (optional)
## Configure access to OpenAI

Check notice on line 21 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#L21

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

To use the built-in connector with the OpenAI service, you need to create an OpenAI account, [get an API key](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key), and make sure that you [set up a billing method](https://help.openai.com/en/articles/9038407-how-can-i-set-up-billing-for-my-account).

Expand All @@ -32,12 +36,6 @@

Based on these examples, which reflect the most common use cases, you can learn to configure your own AI actions with greater ease.

!!! note "Taxonomy suggestions"

OpenAI connector is also used by the [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions) feature to generate embeddings for suggesting tags and product categories.
After you configure the connector, you can [create AI actions that use the Text to Taxonomy action type]([[= user_doc =]]/ai_actions/work_with_ai_actions/#create-ai-actions-that-control-taxonomy-suggestions).
You can also create [your own embedding provider](taxonomy.md#replace-the-embedding-provider).

## Install Anthropic connector [[% include 'snippets/lts-update_badge.md' %]]

Run the following command to install the package:
Expand Down Expand Up @@ -83,6 +81,118 @@
```
You can now use the Anthropic connector in your project.

## Install Google Gemini connector [[% include 'snippets/lts-update_badge.md' %]]

Check notice on line 84 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#L84

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

Run the following command to install the package:

``` bash
composer require ibexa/connector-gemini
```

This command adds the feature code, including basic handlers that let you refine text or generate alternative text for images.

### Get API key

Check notice on line 94 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#L94

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

To use the connector with the Gemini services, you need to create an account, set up billing, enable Gemini API and get an API key.

Check warning on line 96 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#L96

[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.
Raw output
{"message": "[Ibexa.OxfordComma] Use a comma before the last 'and' or 'or' in a list of four or more items.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 96, "column": 1}}}, "severity": "WARNING"}

#### Create the Google Cloud project

Check notice on line 98 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#L98

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

Check notice on line 98 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#L98

[Ibexa.ArticlesInHeadings] Avoid articles in headings.
Raw output
{"message": "[Ibexa.ArticlesInHeadings] Avoid articles in headings.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 98, "column": 13}}}, "severity": "INFO"}

1. Sign in to the [Google Cloud Console](https://console.cloud.google.com/).
1. In the top bar, click **Default Gemini Project** to open a project picker.
1. Click **New project** and provide project details:
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**.

#### Configure billing

1. Navigate to the Google Cloud Console's **Billing** page.
1. If you do not have one, click **Add billing account** and add a payment method.
1. In **Your projects** tab, locate your project, and in its line, from the **Actions** menu, select **Change billing**.
1. Select your active billing account, and click **Set account**.

Check warning on line 113 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#L113

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 113, "column": 66}}}, "severity": "WARNING"}

#### Enable the Gemini API

Check notice on line 115 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#L115

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

Check notice on line 115 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#L115

[Ibexa.ArticlesInHeadings] Avoid articles in headings.
Raw output
{"message": "[Ibexa.ArticlesInHeadings] Avoid articles in headings.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 115, "column": 13}}}, "severity": "INFO"}

Check warning on line 115 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#L115

[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.
Raw output
{"message": "[Ibexa.EOLWhitespace] Remove whitespace characters from the end of the line.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 115, "column": 27}}}, "severity": "WARNING"}

1. Navigate to the Google Cloud Console's **APIs & Services** page.
1. From the left-hand menu, select **Library** and search for the Generative Language API.
1. In the API's details page, click **Enable**.

#### Generate the API key

Check notice on line 121 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#L121

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

Check notice on line 121 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#L121

[Ibexa.ArticlesInHeadings] Avoid articles in headings.
Raw output
{"message": "[Ibexa.ArticlesInHeadings] Avoid articles in headings.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 121, "column": 15}}}, "severity": "INFO"}

1. Go to [Google AI Studio](https://aistudio.google.com/app/api-keys)'s **API keys** page, and click **Create API key**.
1. Provide a name for the API key, select "My project" from a list of projects and click **Create key**.
1. Back in the **API keys** list, in your project's line, copy the API key.

### Set API key in configuration

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

```bash
###> ibexa/connector-gemini ###
GEMINI_API_KEY=<your_api_key>
###< ibexa/connector-gemini ###
```

!!! note "Different API keys for different SiteAccesses"

If there are multiple SiteAccesses in your installation, you can set different API keys for each SiteAccess.
To do it, set the keys under the `ibexa.system.<scope>` [configuration key](configuration.md#configuration-files), like so:

```yaml
ibexa:
system:
default:
connector_gemini:
gemini:
api_key: '%env(GEMINI_API_KEY)%'
base_url: 'https://generativelanguage.googleapis.com/v1beta/' # Google Gemini's API endpoint
```

### Configure default models

By default, when reaching out for responses, the Gemini connector uses the Gemini Pro [model](https://ai.google.dev/gemini-api/docs/models) for text refinement and Gemini Flash model for alternative text generation.
Users can override this setting at runtime when they [edit or create an AI action]([[= user_doc =]]/ai_actions/work_with_ai_actions/#edit-existing-ai-actions).
You can also change the default values globally.
To do it, in `config/packages` folder, create a YAML file similar to this example:

```yaml
ibexa_connector_gemini:
text_to_text:
models:
gemini-pro-latest:
label: 'Gemini Pro Latest'
max_tokens: 4096
gemini-flash-latest:
label: 'Gemini Flash Latest'
max_tokens: 4096
default_model: gemini-pro-latest
default_max_tokens: 4096 # Must be <= the model’s max_tokens
default_temperature: 0.8
image_to_text:
models:
gemini-flash-latest:
label: 'Gemini Flash Latest'
max_tokens: 4096
default_model: gemini-flash-latest
default_max_tokens: 4096
default_temperature: 1.0
```

When setting up models, make sure that you follow these rules:

- `default_model` must reference a configured model
- `default_max_tokens` must not exceed the model’s limit
- If you use the same model for different action types, settings must be consistent

Check notice on line 186 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#L186

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "docs/ai_actions/configure_ai_actions.md", "range": {"start": {"line": 186, "column": 1}}}, "severity": "INFO"}

!!! note "Google Gemini and taxonomy suggestions"

To use Google Gemini for generating taxonomy suggestions, ensure that you [change the embeddings provider and model setting accordingly](taxonomy.md#change-embeddings-provider-to-google-gemini).

You can now use the Gemini connector in your project.

For more information, see [Extend Gemini connector](extend_ai_actions.md#extend-google-gemini-connector).

## Configure access to [[= product_name_connect =]]

First, get the credentials by contacting [Ibexa Support](https://support.ibexa.co).
Expand Down
61 changes: 61 additions & 0 deletions docs/ai_actions/extend_ai_actions.md
Original file line number Diff line number Diff line change
Expand Up @@ -374,3 +374,64 @@
Your custom Action Type is now fully integrated into the back office UI and can be used by the Editors.

![Transcribe Audio Action Type integrated into the back office](img/transcribe_audio.png "Transcribe Audio Action Type integrated into the back office")

## Extend Google Gemini connector [[% include 'snippets/lts-update_badge.md' %]]

Check notice on line 378 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L378

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

The Gemini connector provides several extension points that allow you to customize available models, behavior, validation, and response handling, while remaining compatible with the AI Actions framework.

The connector builds Gemini requests in an options provider and formats responses through a response formatter.
Both components can be replaced or extended to customize how requests are constructed and how responses are normalized.

Check notice on line 383 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L383

[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/extend_ai_actions.md", "range": {"start": {"line": 383, "column": 21}}}, "severity": "INFO"}

Check notice on line 383 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L383

[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/extend_ai_actions.md", "range": {"start": {"line": 383, "column": 71}}}, "severity": "INFO"}

Check notice on line 383 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L383

[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/extend_ai_actions.md", "range": {"start": {"line": 383, "column": 105}}}, "severity": "INFO"}

### Add or customize models

You can register additional Gemini models or customize existing ones by extending the connector’s model [configuration](configure_ai_actions.md#configure-default-models).

Extend the models map by defining:

- a human-readable label
- a `max_tokens` limit

Optionally, you can set the default model that would be used for the action type that you're modifying, the default allowed tokens limit and the default temperature.

Check notice on line 394 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L394

[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/extend_ai_actions.md", "range": {"start": {"line": 394, "column": 54}}}, "severity": "INFO"}
Default values must stay within the limits supported by the [Gemini API](https://ai.google.dev/gemini-api/docs/models).

### Add a custom Action Handler

Check notice on line 397 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L397

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

Check notice on line 397 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L397

[Ibexa.ArticlesInHeadings] Avoid articles in headings.
Raw output
{"message": "[Ibexa.ArticlesInHeadings] Avoid articles in headings.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 397, "column": 9}}}, "severity": "INFO"}

To introduce a new Gemini-based AI action:

1. Create a handler that extends `Ibexa\Contracts\ConnectorAi\Action\AbstractActionHandler`.
1. Register the handler in `services/ai_action_handlers.yaml`.
1. Provide supporting components as needed:
- a prompt factory
- a form type for configuration
- validators for action options

This follows the same extension mechanism as other [custom AI actions](#create-custom-action-handler).

### Add custom response formatting

To change how Gemini responses are post-processed or normalized:

1. Implement the `Ibexa\ConnectorGemini\Response\GeminiResponseFormatterInterface` interface.
1. Alias your implementation in the service container to override the default formatter.

### Add custom validation

Add extra validation rules for Gemini action configuration options by tagging custom validators:

Check notice on line 420 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L420

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 420, "column": 1}}}, "severity": "INFO"}
- For `text-to-text` actions:

``` yaml
ibexa.connector_ai.action_configuration.options.validator.gemini_text_to_text
```

Check notice on line 426 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L426

[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.
Raw output
{"message": "[Ibexa.Lists] Verify list formatting: Full sentences should start with uppercase and end with a period. Sentence fragments should start with lowercase and have no period.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 426, "column": 1}}}, "severity": "INFO"}
- For `image-to-text` actions:

``` yaml
ibexa.connector_ai.action_configuration.options.validator.gemini_image_to_text
```

### Replace the Gemini client implementation

Check notice on line 433 in docs/ai_actions/extend_ai_actions.md

View workflow job for this annotation

GitHub Actions / vale

[vale] docs/ai_actions/extend_ai_actions.md#L433

[Ibexa.ArticlesInHeadings] Avoid articles in headings.
Raw output
{"message": "[Ibexa.ArticlesInHeadings] Avoid articles in headings.", "location": {"path": "docs/ai_actions/extend_ai_actions.md", "range": {"start": {"line": 433, "column": 13}}}, "severity": "INFO"}

To get full control over the low-level API communication without modifying the connector itself, you can swap the Gemini client implementation entirely with your own:

- Use dependency injection to bind your own implementation to `Ibexa\ConnectorGemini\Client\GeminiClientInterface`.
2 changes: 1 addition & 1 deletion docs/api/event_reference/event_reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ For example, copying a content item is connected with two events: `BeforeCopyCon
[[= cards([
"api/event_reference/ai_action_events",
"api/event_reference/cart_events",
"api/event_reference/catalog_events",
"api/event_reference/product_catalog_events",
"api/event_reference/collaboration_events",
"api/event_reference/content_events",
"api/event_reference/content_type_events",
Expand Down
Loading
Loading