Tag groups (x-tagGroups)

Organize controllers sob seções lógicas em ferramentas que suportam a extensão x-tagGroups, mais notavelmente o ReDoc.

Declarar grupos

Passe group e tags para docs():

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

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

tags deve casar com o que você já passa para ApiTags(). O nestjs-docfy não chama ApiTags por você, apenas constrói o mapeamento x-tagGroups a partir do que você declara.

Anexar ao documento

Para de fato anexar os grupos ao documento gerado, chame attachTagGroups() após SwaggerModule.createDocument():

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

const config = new DocumentBuilder().setTitle('My API').build();
const document = SwaggerModule.createDocument(app, config);

SwaggerModule.setup('api', app, attachTagGroups(document));

Extensão gerada

yaml
x-tagGroups:
  - name: Administration
    tags:
      - users
      - roles

Múltiplas chamadas docs() podem contribuir para o mesmo grupo: as tags são mescladas e deduplicadas. attachTagGroups() é um no-op (retorna o documento inalterado) quando nenhum controller declara um group.