import { Application } from "express"; import * as swaggerUiExpress from "swagger-ui-express"; import { getMetadataArgsStorage } from "routing-controllers"; import { routingControllersToSpec } from "routing-controllers-openapi"; import { validationMetadatasToSchemas } from "class-validator-jsonschema"; export default async (app: Application) => { const storage = getMetadataArgsStorage(); const schemas = validationMetadatasToSchemas({ refPointerPrefix: "#/components/schemas/", }); const spec = routingControllersToSpec( storage, { routePrefix: "/api" }, { components: { schemas, }, info: { description: "The the backend API for the LfK! runner system.", title: "LfK! Backend API", version: "1.0.0", }, } ); const options = { explorer: true, }; app.use( "/api/docs", swaggerUiExpress.serve, swaggerUiExpress.setup(spec, options) ); app.get(["/api/openapi.json", "/api/swagger.json"], (req, res) => { res.json(spec); }); return app; };