diff --git a/src/controllers/plugins.controller.ts b/src/controllers/plugins.controller.ts
index cd0955bd03a2cd46502c4307fba062497c9ce0ff..273b6c219224208089807ea0fdd6fc5432086d0f 100644
--- a/src/controllers/plugins.controller.ts
+++ b/src/controllers/plugins.controller.ts
@@ -30,27 +30,52 @@ export class PluginsController {
     this.configureRouter();
   }
 
-  /**
-   * @swagger
-   *
-   * /plugins:arch:
-   *   get:
-   *     description: Returns the plugins for a given architecture
-   *     tags:
-   *       - Example
-   *       - Time
-   *     produces:
-   *       - application/json
-   *     responses:
-   *       200:
-   *         schema:
-   *           $ref: '#/definitions/Message'
-   */
   private configureRouter(): void {
-    // GET /plugins
     if (this.router === undefined) {
       this.router = Router();
     }
+    /**
+     * @swagger
+     * tags:
+     *   name: Example
+     *   description: Example API endpoints
+     *   externalDocs:
+     *     description: Find out more about Example
+     *     url: http://example.com
+     *
+     * /plugins:
+     *   get:
+     *     summary: Get plugins for a given architecture
+     *     description: Returns the plugins for a given architecture.
+     *     tags: [Example, Time]
+     *     parameters:
+     *       - name: arch
+     *         in: query
+     *         description: The architecture for which plugins are requested.
+     *         required: true
+     *         schema:
+     *           type: string
+     *     responses:
+     *       '200':
+     *         description: Successful response with the plugins data.
+     *         content:
+     *           application/json:
+     *             schema:
+     *               type: array
+     *               items:
+     *                 type: object
+     *                 properties:
+     *                   name:
+     *                     type: string
+     *                   version:
+     *                     type: string
+     *                   author:
+     *                     type: string
+     *       '400':
+     *         description: Bad request - When the 'arch' parameter is missing.
+     *       '500':
+     *         description: Internal server error - Something went wrong on the server.
+     */
     // eslint-disable-next-line @typescript-eslint/no-misused-promises
     this.router.get('/', async (req: Request, res: Response) => {
       try {
@@ -66,6 +91,48 @@ export class PluginsController {
       }
     });
 
+    /**
+     * @swagger
+     *
+     * /details/:id:
+     *   get:
+     *     summary: Get details of a plugin for a given ID and architecture
+     *     description: Returns details of a plugin for a given ID and architecture.
+     *     tags: [Example, Time]
+     *     parameters:
+     *       - name: id
+     *         in: path
+     *         description: The ID of the plugin.
+     *         required: true
+     *         schema:
+     *           type: string
+     *       - name: arch
+     *         in: query
+     *         description: The architecture for which the plugin details are requested.
+     *         required: true
+     *         schema:
+     *           type: string
+     *     responses:
+     *       '200':
+     *         description: Successful response with the plugin details.
+     *         content:
+     *           application/json:
+     *             schema:
+     *               type: object
+     *               properties:
+     *                 name:
+     *                   type: string
+     *                 version:
+     *                   type: string
+     *                 author:
+     *                   type: string
+     *       '400':
+     *         description: Bad request - When the 'id' or 'arch' parameter is missing.
+     *       '404':
+     *         description: Not found - When the plugin with the specified ID is not found.
+     *       '500':
+     *         description: Internal server error - Something went wrong on the server.
+     */
     // GET /details/:id?arch=:arch
     // eslint-disable-next-line @typescript-eslint/no-misused-promises
     this.router.get('/details/:id', async (req: Request, res: Response) => {
@@ -88,6 +155,44 @@ export class PluginsController {
       }
     });
 
+    /**
+     * @swagger
+     *
+     * /download/{arch}/{id}:
+     *   get:
+     *     summary: Download a plugin file for a given ID and architecture
+     *     description: Download a plugin file for a given ID and architecture.
+     *     tags: [Example, Time]
+     *     parameters:
+     *       - name: id
+     *         in: path
+     *         description: The ID of the plugin to be downloaded.
+     *         required: true
+     *         schema:
+     *           type: string
+     *       - name: arch
+     *         in: path
+     *         description: The architecture for which the plugin is requested.
+     *         required: true
+     *         schema:
+     *           type: string
+     *     responses:
+     *       '200':
+     *         description: Successful response with the plugin file download.
+     *         content:
+     *           application/octet-stream:
+     *             schema:
+     *               type: string
+     *               format: binary
+     *       '400':
+     *         description: Bad request - When the 'id' or 'arch' parameter is missing.
+     *       '404':
+     *         description: Not found - When the plugin file with the specified ID and architecture is not found.
+     *       '500':
+     *         description: Internal server error - Something went wrong on the server.
+     *
+     */
+
     // GET /download/:arch/:id
     // eslint-disable-next-line @typescript-eslint/no-misused-promises
     this.router.get(
@@ -123,7 +228,44 @@ export class PluginsController {
       }
     );
 
-    // GET /icon/:id?arch=:arch
+    /**
+     * @swagger
+     *
+     * /icons/{id}:
+     *   get:
+     *     summary: Get the icon for a plugin with a given ID and architecture
+     *     description: Returns the icon for a plugin with a given ID and architecture.
+     *     tags: [Example, Time]
+     *     parameters:
+     *       - name: id
+     *         in: path
+     *         description: The ID of the plugin to get the icon for.
+     *         required: true
+     *         schema:
+     *           type: string
+     *       - name: arch
+     *         in: query
+     *         description: The architecture for which the plugin icon is requested.
+     *         required: true
+     *         schema:
+     *           type: string
+     *     responses:
+     *       '200':
+     *         description: Successful response with the plugin icon image.
+     *         content:
+     *           image/svg+xml:
+     *             schema:
+     *               type: string
+     *               format: binary
+     *       '400':
+     *         description: Bad request - When the 'id' or 'arch' parameter is missing.
+     *       '404':
+     *         description: Not found - When the plugin icon with the specified ID and architecture is not found.
+     *       '500':
+     *         description: Internal server error - Something went wrong on the server.
+     */
+
+    // GET /icons/:id?arch=:arch
     // eslint-disable-next-line
     this.router.get('/icons/:id', async (req: Request, res: Response) => {
       try {
@@ -146,6 +288,38 @@ export class PluginsController {
       }
     });
 
+    /**
+     * @swagger
+     *
+     * /versions:
+     *   get:
+     *     summary: Get the versions of a plugin for a given architecture
+     *     description: Returns the versions of a plugin for a given architecture.
+     *     tags: [Example, Time]
+     *     parameters:
+     *       - name: arch
+     *         in: query
+     *         description: The architecture for which plugin versions are requested.
+     *         required: true
+     *         schema:
+     *           type: string
+     *     responses:
+     *       '200':
+     *         description: Successful response with the plugin versions.
+     *         content:
+     *           application/json:
+     *             schema:
+     *               type: array
+     *               items:
+     *                 type: string
+     *       '400':
+     *         description: Bad request - When the 'arch' parameter is missing.
+     *       '404':
+     *         description: Not found - When no plugin versions are available for the specified architecture.
+     *       '500':
+     *         description: Internal server error - Something went wrong on the server.
+     */
+
     // GET /versions/:id?arch=:arch
     // eslint-disable-next-line @typescript-eslint/no-misused-promises
     this.router.get('/versions/', async (req: Request, res: Response) => {