Tag groups + Redoc

Registra grupos vía docs({ group, tags }) y adjunta la extensión x-tagGroups al documento antes de servirlo.

Registrar grupos

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 y tags en docs() son opcionales. tags debe coincidir con lo que ya pasas a ApiTags(): nestjs-docfy no llama a ApiTags por ti, solo usa esos nombres para construir el mapeo de x-tagGroups. Varias llamadas a docs() pueden contribuir al mismo group; los tags se fusionan y se eliminan duplicados.

Adjuntar al documento

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));

Llama a attachTagGroups() después de SwaggerModule.createDocument() y antes de SwaggerModule.setup(). Si ningún controller registró un group, la función es un no-op y devuelve el documento sin cambios. Redoc lee x-tagGroups de forma nativa y renderiza el sidebar agrupado. Detalles en Grupos de tags.