Przeglądaj źródła

Merge pull request #9787 from goofmint/fix/doc-v3-templates

support(jsdoc): Add swagger document to features/templates/server/routes/apiv3/index.ts
Yuki Takei 1 rok temu
rodzic
commit
b3553d698a

+ 1 - 0
apps/app/bin/swagger-jsdoc/definition-apiv3.js

@@ -89,6 +89,7 @@ module.exports = {
         'SlackIntegrationSettings (without proxy)',
         'SlackIntegrationLegacySetting',
         'ShareLink Management',
+        'Templates',
         'Staff',
         'UserGroupRelations',
         'UserGroups',

+ 1 - 0
apps/app/bin/swagger-jsdoc/generate-spec-apiv3.sh

@@ -11,6 +11,7 @@ swagger-jsdoc \
   -o "${OUT}" \
   -d "${APP_PATH}/bin/swagger-jsdoc/definition-apiv3.js" \
   "${APP_PATH}/src/features/external-user-group/server/routes/apiv3/*.ts" \
+  "${APP_PATH}/src/features/templates/server/routes/apiv3/*.ts" \
   "${APP_PATH}/src/features/growi-plugin/server/routes/apiv3/**/*.ts" \
   "${APP_PATH}/src/server/routes/apiv3/**/*.{js,ts}" \
   "${APP_PATH}/src/server/routes/login.js" \

+ 102 - 0
apps/app/src/features/templates/server/routes/apiv3/index.ts

@@ -36,6 +36,46 @@ let presetTemplateSummaries: TemplateSummary[];
 module.exports = (crowi: Crowi) => {
   const loginRequiredStrictly = require('~/server/middlewares/login-required')(crowi);
 
+  /**
+   * @swagger
+   *
+   * /templates:
+   *   get:
+   *     summary: /templates
+   *     security:
+   *       - cookieAuth: []
+   *     description: Get all templates
+   *     tags: [Templates]
+   *     parameters:
+   *       - name: includeInvalidTemplates
+   *         in: query
+   *         description: Whether to include invalid templates
+   *         required: false
+   *         type: boolean
+   *     responses:
+   *       200:
+   *         description: OK
+   *         content:
+   *           application/json:
+   *             schema:
+   *               type: object
+   *               properties:
+   *                 summaries:
+   *                   type: object
+   *                   additionalProperties:
+   *                     type: object
+   *                     properties:
+   *                       id:
+   *                         type: string
+   *                       isDefault:
+   *                         type: boolean
+   *                       isValid:
+   *                         type: boolean
+   *                       locale:
+   *                         type: string
+   *                       title:
+   *                         type: string
+   */
   router.get('/', loginRequiredStrictly, validator.list, apiV3FormValidator, async(req, res: ApiV3Response) => {
     const { includeInvalidTemplates } = req.query;
 
@@ -72,6 +112,34 @@ module.exports = (crowi: Crowi) => {
     });
   });
 
+  /**
+   * @swagger
+   *
+   * /templates/preset-templates/{templateId}/{locale}:
+   *   get:
+   *     tags: [Templates]
+   *     summary: /templates/preset-templates/{templateId}/{locale}
+   *     security:
+   *       - cookieAuth: []
+   *     description: Get a preset template
+   *     parameters:
+   *       - name: templateId
+   *         in: path
+   *         description: The template ID
+   *       - name: locale
+   *         in: path
+   *         description: The locale
+   *     responses:
+   *       200:
+   *         description: OK
+   *         content:
+   *           application/json:
+   *             schema:
+   *               type: object
+   *               properties:
+   *                 markdown:
+   *                   type: string
+   */
   router.get('/preset-templates/:templateId/:locale', loginRequiredStrictly, validator.get, apiV3FormValidator, async(req, res: ApiV3Response) => {
     const {
       templateId, locale,
@@ -88,6 +156,40 @@ module.exports = (crowi: Crowi) => {
     }
   });
 
+  /**
+   * @swagger
+   *
+   * /templates/plugin-templates/{organizationId}/{reposId}/{templateId}/{locale}:
+   *   get:
+   *     tags: [Templates]
+   *     summary: /templates/plugin-templates/{organizationId}/{reposId}/{templateId}/{locale}
+   *     security:
+   *       - cookieAuth: []
+   *     description: Get a plugin template
+   *     parameters:
+   *       - name: organizationId
+   *         in: path
+   *         description: The organization ID
+   *       - name: reposId
+   *         in: path
+   *         description: The repository ID
+   *       - name: templateId
+   *         in: path
+   *         description: The template ID
+   *       - name: locale
+   *         in: path
+   *         description: The locale
+   *     responses:
+   *       200:
+   *         description: OK
+   *         content:
+   *           application/json:
+   *             schema:
+   *               type: object
+   *               properties:
+   *                 markdown:
+   *                   type: string
+   */
   router.get('/plugin-templates/:organizationId/:reposId/:templateId/:locale', loginRequiredStrictly, validator.get, apiV3FormValidator, async(
       req, res: ApiV3Response,
   ) => {