The entrypoint of the service is a REST API provided by a [NestJS](https://github.com/nestjs/nest) application.
<!-- It depends on two other services:
* The Legacy Authentication Middleware to verify the identity of the user and retrieve its profile (called through our api gateway: Kong)
* The Admin API of Kong to get the user specific secrets in order to sign the JSON Web Tokens -->
## API documentation
NestJS provides a [swagger module](https://docs.nestjs.com/recipes/swagger) that can be easily integrated. Using specific annotations alongside your endpoints declaration, this module will automatically generates a swagger documentation, reachable at `/api-doc`.
## Service health
NestJS provides a [health module](https://github.com/nestjs/terminus) based on Terminus, that gives you the opportunity to declare predefined or custom health indicators. It exposes the health status of the service at `/health`.
This service will return a `200` http status code when all indicators are healthy. Otherwise it will return a `503` http status code.
<!-- For this service we declared two health indicators that verify that:
* the Kong API gateway is up
* the legacy authentication middleware is up -->
## Stats
We are using a Node module called [swagger-stats](http://swaggerstats.io/).
It traces API calls, monitors API performance and usage statistics. It exposes the metrics in different formats, such as Prometheus format, so you may use Prometheus and Graphana for API monitoring and alerting.
Those metrics are available at `/swagger-stats/metrics`.
For more information about this module, visit the [official swagger-stat page](http://swaggerstats.io/docs.html).
## Docker
It is possible to run this service using Docker containers, using the `docker-compose.yml` and `Dockerfile` files.
For more information, refer to the project [legacy-auth-middleware][add a link]