// Public · Wiki — the published wiki: the page list, categories, tags and a // single page by slug. Read-only counterpart of admin/wiki.router.js. // // Mounted at /api/v1/public/wiki by public/index.js. No group gate; `siteMode` // is applied per route. // // Declaration order is load-bearing: `/categories` and `/tags` are literal paths // and MUST stay ahead of `/:slug`, or GET /public/wiki/categories dispatches as a // wiki page whose slug is "categories". routes.manifest.json sorts its entries // and therefore cannot catch a reordering — the same trap admin/wiki.router.js // carries (see docs/website/API_V2_PLAN.md § PR 3). const express = require('express') const ctrl = require('./public.controller') const siteMode = require('../../../middleware/siteMode') const wikiRouter = express.Router() wikiRouter.get( '/', // #swagger.tags = ['Public'] // #swagger.summary = 'List published wiki pages' /* #swagger.responses[200] = { description: 'Published wiki pages', content: { "application/json": { schema: { type: "array", items: { $ref: "#/components/schemas/WikiPage" } } } } } */ siteMode, ctrl.getWikiList, ) // Static paths must precede the :slug route so they aren't captured as a slug. wikiRouter.get( '/categories', // #swagger.tags = ['Public'] // #swagger.summary = 'List wiki categories' /* #swagger.responses[200] = { description: 'Wiki categories', content: { "application/json": { schema: { type: "array", items: { $ref: "#/components/schemas/WikiCategory" } } } } } */ siteMode, ctrl.getWikiCategories, ) wikiRouter.get( '/tags', // #swagger.tags = ['Public'] // #swagger.summary = 'List wiki tags' /* #swagger.responses[200] = { description: 'Wiki tags', content: { "application/json": { schema: { type: "array", items: { type: "string" } } } } } */ siteMode, ctrl.getWikiTags, ) wikiRouter.get( '/:slug', // #swagger.tags = ['Public'] // #swagger.summary = 'Get a single published wiki page' // #swagger.parameters['slug'] = { in: 'path', required: true, schema: { type: 'string' }, description: 'Wiki page slug.' } /* #swagger.responses[200] = { description: 'The wiki page', content: { "application/json": { schema: { $ref: "#/components/schemas/WikiPage" } } } } */ /* #swagger.responses[404] = { description: 'Not found', content: { "application/json": { schema: { $ref: "#/components/schemas/Error" } } } } */ siteMode, ctrl.getWikiPage, ) module.exports = wikiRouter