This is the multi-page printable view of this section.
Click here to print.
Return to the regular view of this page.
Architecture and components
Aura Gateway API architecture and components
Development architecture and technical components of Aura Gateway API
Technical foundations
aura-gateway-api is mainly a web server built on Typescript 4.3 using nodejs as engine. It is api-first designed, using OpenAPI v3 to provide the API definition and openapi-backend to handle swagger specification.
aura-gateway-api server is composed by several plugins, which provide different functionalities to this component. From the different capabilities that aura-gateway-api can manage, certain plugins are used by all of them and others are specific of one capability.
A channel, service, or skill uses an application to connect with aura-gateway-api following this communication protocol.
Architecture overview
The following figure shows the main technical components of the aura-gateway-api.

ConfigurationManager
ConfigurationManager is a handler for configuration, obtained through a configuration file or environment variables.
RedisConnector
RedisConnector is a handler connection to redis.
Kpis-handler
KpisHandler is the module responsible for writing the KPIs entities.
HTTP server
Microservice is implemented as an HTTP server (AuraGatewayServer) that exposes an API to receive the request to be validated.
Middlewares
The route published in the API definition file is handled by a controller but, before a request lands on its controller, it goes through a series of middlewares that provides some common steps needed by all the controllers of the server such as: request validation, common parameters extraction, logging, metrics initialization, etc.
Plugins
Different plugins provide functionality to aura-gateway-api.
Check the available ones together with detailed information in: aura-gateway-api plugins.
1 - Plugins
Aura gateway API plugins
aura-gateway-api plugins are components that provide different functionalities to aura-gateway-api
Introduction
aura-gateway-api is composed of plugins, which provide functionality to this component. Plugins work independently, the same way as a service in microservices oriented architecture: isolated, self-contained and without affecting other existing functionalities in the system.
From the different types of plugins, only Api plugins are available in aura-gateway-api.
The following plugins are currently available in aura-gateway-api. From the different ATRIA capabilities that this component can manage, certain plugins are used by all or some of them and others are specific of one capability.
Discover detailed information regarding the available plugins in the left index.
Plugins management
aura-gateway-api uses the @architect/architect library for the management of plugins, so it is the architect library that is responsible for managing the dependencies injection in each module.
To create the architect application, aura-gateway-api uses the PluginManager module (located in the modules/plugin-manager folder). This module starts as the rest of modules at the aura-gateway-api start-up.
The PluginManager performs the following tasks:
- It starts the architect application with the plugins defined in
plugin-config.json file, located at the root of the aura-gateway-api component.
- It adds the core modules to the IOC context. See the section plugins modules.
- It stores the information of each module defined in the plugins.
Apart from the aura-gateway-api core environment variables, each plugin can define its own specific variables. Access the document aura-gateway-api environment variables and find them in the section corresponding to your plugin.
Plugin basic structure
Currently, aura-gateway-api uses @architect/architect library for plugins management.
A basic plugin must define at least:
- A
package.json file defining the library, like any other JavaScript library, with a plugin section defining which modules it consumes and supplies.
- A source code file that defines the modules that it supplies (
index.ts for example).
The structure of this basic plugin is as follows:
session-api
├── index.ts
└── package.json
Plugins modules
aura-gateway-api currently adds one module that can be used by the different plugins. To use it, it is only necessary to add the package.json dependencies on plugin.consumes (like any other module/component).
- configurationManager: Module with the aura-gateway-api configuration information.
- redisConnector: Module with the aura-gateway-api Redis connection.
A plugin can provide one or more plugin modules and each plugin module can be of a different type. Each type of module is intended to add a specific functionality to aura-gateway-api.
1.1 - aura-generative-api plugin
aura-generative-api plugin
Description of the aura-generative-api plugin
Introduction
The aura-generative-api plugin manages the endpoints for the communication with atria-model-gateway.
Consumes components (IOC)
| Name |
Type |
Description |
| generativeProcessService |
PluginType.Service |
Send data to model-gw and process the response |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
Provides components (IOC)
| Name |
Type |
Description |
| generativeApi |
PluginType.API |
Endpoints for the communication with generative APIs |
1.2 - aura-generative-process-service plugin
aura-generative-process-service plugin
Description of the aura-generative-process-service plugin
Introduction
The aura-generative-process-service plugin manages the communication with atria-model-gateway to allow applications to communicate with LLMs.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
Provides components (IOC)
| Name |
Type |
Description |
| generativeProcessService |
PluginType.Service |
Send data to model-gw and process the response |
1.3 - aura-nlp-resolution-api plugin
aura-nlp-resolution-api plugin
Technical description of the aura-nlp-resolution-api plugin
Introduction
The aura-nlp-resolution-api plugin manages the communication with NLP APIs to return a recognizer response.
Consumes components (IOC)
| Name |
Type |
Description |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
Provides components (IOC)
| Name |
Type |
Description |
| nlpResolutionApi |
PluginType.API |
Endpoints for the communication with NLP APIs |
1.4 - aura-nlp-resolution-process-service plugin
aura-nlp-resolution-process-service plugin
Technical description of the aura-nlp-resolution-process-service plugin
Introduction
The aura-nlp-resolution-process-service plugin manages the communication with NLP APIs to return a recognizer response.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
| channelsConfiguration |
PluginType.Service |
Configuration of channels |
Provides components (IOC)
1.5 - aura-development-api plugin
aura-development-api plugin
Technical description of the aura-development-api plugin
Introduction
aura-development-api plugin manages the configuration in development environments. Only available in development environments.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
| redisConnector |
PluginType.Service |
Redis connector |
Provides components (IOC)
| Name |
Type |
Description |
| developmentApi |
PluginType.API |
Endpoints to change development configuration |
| behaviorCache |
PluginType.Service |
Cache to store the configuration changes |
| behaviorManager |
PluginType.Service |
Management of changes |
1.6 - aura-feedback-api plugin
aura-feedback-api plugin
Description of the aura-feedback-api plugin
Introduction
The aura-feedback-api plugin manages the communication with atria-model-gateway to provide feedback about the Generative and RAG services behavior.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
Provides components (IOC)
| Name |
Type |
Description |
| feedbackApi |
PluginType.API |
Endpoints for the communication with feedback endpoint |
1.7 - aura-agents-api plugin
aura-agents-api plugin
Description of the aura-agents-api plugin
Introduction
The aura-agents-api plugin manages the endpoints for the communication with the agents-manager.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
| applicationConfiguration |
PluginType.Service |
Configuration of applications |
| agentsConfiguration |
PluginType.Service |
Configuration of agents |
Provides components (IOC)
| Name |
Type |
Description |
| agentsApi |
PluginType.API |
Endpoints for the communication with agents APIs |
| agentsManagerClient |
PluginType.Service |
Client of agents-manager |
1.8 - aura-operations-api plugin
aura-operations-api plugin
Description of the aura-operations-api plugin
Introduction
The aura-operations-api plugin manages the endpoints for operations related to Aura.
Consumes components (IOC)
| Name |
Type |
Description |
| configurationManager |
PluginType.Service |
Configuration manager |
Provides components (IOC)
| Name |
Type |
Description |
| operationsApi |
PluginType.API |
Endpoints for the communication with operations APIs |
| configWatcherOperationsClient |
PluginType.Service |
Client to make requests to the config-watcher |