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.