Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

@ApiImplicitQuery swagger - can't configure 'enum'

You can see in the nest swagger documentation how to configure enums, but it isn't working.

import {SwaggerEnumType} from '../types/swagger-enum.type';

export declare const ApiImplicitQuery: (metadata: {
    name: string;
    description?: string;
    required?: boolean;
    type?: 'String' | 'Number' | 'Boolean' | any;
    enum?: SwaggerEnumType;
    isArray?: boolean;
    collectionFormat?: "csv" | "ssv" | "tsv" | "pipes" | "multi";
}) => MethodDecorator;

Above you can see what I've changed in the code of the swagger module. Below you can see my code.

 @ApiImplicitQuery({name: "orderBy", enum: ['Admin', 'Moderator', 'User']})
    @ApiResponse({status: 200, description: "Successful getting registration list for admin"})
    @Get('registrations/list')
    public async getAdmin(@Req() req, @Res() res: Response,
                          @Query('page') page: number,
                          @Query('perPage') perPage: number,
                          @Query('orderBy') orderBy: UserRole = UserRole.User,
                          @Query('orderDir') orderDir: number
    ) {
        try {
            let token = await getCompaignIdFromAdminToken(req.headers['authorization']);
            let helper: HelperClass = new HelperClass();
            await helper.isUserAdmin(token);
            let users = await this.adminFacade.getAllUsersList(orderBy, orderDir);
            let entity = await this.adminFacade.parseRegistrationUsersList(users);
            let pagePar = (page) ? page : 0;
            let perPagePar = (perPage) ? perPage : users.length;
            let response = await returnResponseByPageAndPerPageValues(entity, pagePar, perPagePar);
            res.status(HttpStatus.OK).json({response: response, entries: users.length});
        } catch (err) {
            errorResponse(res, err.message, HttpStatus.BAD_REQUEST);
        }
    }

export enum UserRole {
    Admin = 'Admin',
    Moderator = 'Moderator',
    User = 'User'
}

And below you can see the generated swagger docs: Sample Image

What am I doing wrong?

like image 836
Andrey Radkevich Avatar asked Dec 13 '25 17:12

Andrey Radkevich


1 Answers

Update August 18

The pull request was just merged and is available in version v5.2.0.

Original post

The pull request introducing enum support for ApiImplicitQuery is not yet merged, hence the feature is not yet available. Unfortunately, the docs were updated too early:

The doc is already update but not the code.

Follow the pull request to get notified when the feature will be available. Then you can update the @nestjs/swagger package.

like image 93
Kim Kern Avatar answered Dec 15 '25 08:12

Kim Kern



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!