Categories:
Aura configuration API engine filter plugin
Engine filter API plugin description for aura-configuration-api
Introduction
The engine filter plugin defines services associated with the management of engine filter in aura-configuration-api server.
All these services are defined in the routing-filters namespace (/routing-filters).
Servers definition
By default, the servers defined in the swagger include the base path (for v2): /aura-services/v2.
Therefore, in order to access the services, the base path and service path must be used.
Examples:
- aura-services/v2/configuration/routing-filters/summary/{filterType}
- aura-services/v2/configuration/routing-filters/{filterId}/items/{itemId}
Endpoints
| Path | Method | Description |
|---|---|---|
| /routing-filters/summary/{filterType} | GET | Get all summary for filter by type. |
| /routing-filters/entities/files | POST | Add entity data to engine filter. |
| /routing-filters/{filterId}/items/{itemId} | GET | Obtain the elements that have fulfilled the given filter for an itemId. |
You can read the complete documentation of each service in the aura-configuration-api swagger file.
Engine filters steps
When a filter has been created, it is associated to one or more entities. Each time data is uploaded from a service for one of these entities, this data is also uploaded to the dataFilterCollection via the /routing-filters/entities/files endpoint.
This data is stored in the filter’s raw data collection and is periodically processed to obtain the summaries that are stored in the filter’s dataSummaryCollection.
This processing period is defined by the AURA_ROUTING_FILTER_SUMMARY_GENERATION_INTERVAL environment variable which defaults to 30 seconds. Note that data that has been summarized in previous processes is no longer processed again.
An example of raw data could be the following:
{
"seqId" : 1758107048147.0,
"itemId" : "NsPjrmwbT-WJSlgImZ9NKg",
"year" : 2025,
"month" : 8,
"day" : 13,
"fieldForMatch" : "MESSAGE",
"valueForMatch" : "{\"type\":\"suggestion\",\"value\":{\"intent\":\"intent.core-dialogs.ping\",\"entities\":[]}}",
"expiresAt" : "2025-09-17T11:05:37.147+0000"
},
{
"seqId" : 1758107048147.0,
"itemId" : "IN-ewXp7S8u4mL0RlKJStA",
"year" : 2025,
"month" : 8,
"day" : 13,
"fieldForMatch" : "MESSAGE",
"valueForMatch" : "{\"type\":\"tv.init.type\",\"value\":{\"intent\":\"tv.init\",\"entities\":[{\"type\":\"tv.init.type\",\"value\":\"post_start\",\"score\":1}]}}",
"expiresAt" : "2025-09-17T11:05:37.147+0000"
},
{
"seqId" : 1758107048147.0,
"itemId" : "fh-71N2FRGKyXL-bCzhQkQ",
"year" : 2025,
"month" : 8,
"day" : 13,
"fieldForMatch" : "MESSAGE",
"valueForMatch" : "Poner subtítulos",
"expiresAt" : "2025-09-17T11:05:37.147+0000"
}
....
And an example of the data already grouped would be:
...
{
"itemId" : "alrBKOZzQ1CYVHLZ70k6GQ",
"month" : 8,
"year" : 2025,
"expiresAt" : "2025-09-17T11:06:08.069+0000",
"total" : 3,
"updatedAt" : "2025-09-17T11:04:39.069+0000"
},
{
"itemId" : "aQLB8B3vQ6COn7s6caLpew",
"month" : 8,
"year" : 2025,
"expiresAt" : "2025-09-17T11:06:08.070+0000",
"total" : 12,
"updatedAt" : "2025-09-17T11:04:39.070+0000"
},
{
"itemId" : "OcjR3z8lQU-DnFpHV1W1qQ",
"month" : 8,
"year" : 2025,
"expiresAt" : "2025-09-17T11:06:08.071+0000",
"total" : 1,
"updatedAt" : "2025-09-17T11:04:39.071+0000"
}
...
When the grouped data is generated, a cache is generated in memory containing the ItemId that match the filter, this is necessary to improve performance when querying items to see if they match a given filter.
Retrieving information from engine filters
Check if a user matches a filter
You can validate whether a user matches a certain filter, and if so, whether they have a predetermined action to perform.
curl --location 'http://aura-configuration-api:8999/aura-services/v2/routing-filters/[FILTER_ID]/items/[ITEM_ID] ' \
--header 'correlator: 1a25aac1-d5fa-42af-9930-3e5706288cea' \
--header 'Authorization: SECRET_API_KEY' \
--header 'Accept: application/json' \
Response example:
{
"value": false,
"actions": []
}
Retrieving specific fields from engine filter information
It is possible to get only a specific list of fields for engine filter information, reducing the amount of data transmitted when necessary, using the includeFields query parameter.
curl --location 'http://aura-configuration-api:8999/aura-services/v2/routing-filters/summary/userId ' \
--header 'correlator: 1a25aac1-d5fa-42af-9930-3e5706288cea' \
--header 'Authorization: SECRET_API_KEY' \
--header 'Accept: application/json' \
Response example:
[
{
"data": {
"preset-filter-conversational-search-es": {
"data": [
{
"month": 8,
"itemId": "ksRuPPkRS4ax0IdaZdoFHA",
"year": 2025,
"total": 40
},
{
"month": 8,
"itemId": "alrBKOZzQ1CYVHLZ70k6GQ",
"year": 2025,
"total": 120
},
{
"month": 8,
"itemId": "bk3iI3GwQWO2-4YI0etc0w",
"year": 2025,
"total": 40
},
{
"month": 8,
"itemId": "DYoM_OOPSZ-EMNxiFxWe4w",
"year": 2025,
"total": 40
}
],
"actions": [
{
"type": "CUSTOM_MESSAGE",
"params": {
"intent": "internal.send.custom.message",
"entities": [{
"type": "message",
"value": "core:limit.exceed.llm"
}]
}
]
}
}
}
]
Database
The complete definition of the data model can be found in routing-filters collection section within the administration module.