Группы тегов + Redoc

Регистрируйте группы через docs({ group, tags }) и присоединяйте расширение x-tagGroups к документу перед отдачей.

Регистрация групп

users.controller.docs.ts / roles.controller.docs.ts
docs(UsersController, {
  classDecorators: [ApiTags('users')],
  group: 'Administration',
  tags: ['users'],
});

docs(RolesController, {
  classDecorators: [ApiTags('roles')],
  group: 'Administration',
  tags: ['roles'],
});

group и tags в docs() необязательны. tags должны совпадать с тем, что вы уже передаёте в ApiTags(): nestjs-docfy не вызывает ApiTags за вас, он лишь берёт эти имена, чтобы построить отображение x-tagGroups. В одну group могут складываться несколько вызовов docs(), теги при этом объединяются, а дубликаты убираются.

Присоединение к документу

main.ts
import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger';
import { attachTagGroups } from 'nestjs-docfy';

const document = SwaggerModule.createDocument(app, new DocumentBuilder().build());
SwaggerModule.setup('api', app, attachTagGroups(document));

Вызывайте attachTagGroups() после SwaggerModule.createDocument() и до SwaggerModule.setup(). Если ни один контроллер не зарегистрировал group, функция ничего не делает и возвращает документ как есть. Redoc понимает x-tagGroups из коробки и рисует сгруппированную боковую панель. Подробности в разделе Группы тегов.

Generated x-tagGroups extension
x-tagGroups:
  - name: Administration
    tags:
      - users
      - roles