Enhance file upload endpoint in FilesController

Added detailed Swagger annotations including headers, body schema, and operation summary to improve API documentation for the file upload endpoint. These updates provide clear information about the expected input parameters for better usability and integration.
This commit is contained in:
Mathis H (Avnyr) 2024-10-17 14:56:06 +02:00
parent 4547a22f5c
commit d9f0acac58
Signed by: Mathis
GPG Key ID: DD9E0666A747D126

View File

@ -23,13 +23,67 @@ import {
import { CreateFileTypeDto } from "apps/backend/src/app/files/files.dto";
import { AdminGuard, InsertAdminState } from "../auth/auth.guard";
import { FilesService } from "./files.service";
import { ApiBearerAuth, ApiSecurity, ApiTags } from '@nestjs/swagger';
import {
ApiBearerAuth, ApiBody, ApiConsumes,
ApiHeaders, ApiOperation,
ApiSecurity,
ApiTags
} from '@nestjs/swagger';
@ApiTags('Files')
@Controller("files")
export class FilesController {
constructor(private readonly filesService: FilesService) {}
@ApiOperation({ summary: "Uploader un fichier"})
@ApiConsumes("application/octet-stream")
@ApiBody({
schema: {
type: 'string',
format: 'binary'
}
})
@ApiHeaders([
{
name: "file_name",
description: "Nom du fichier",
example: "Logo marianne",
allowEmptyValue: false,
required: true
},
{
name: "group_id",
description: "Groupe de fichier optionnel",
example: "dfd0fbb1-2bf3-4dbe-b86d-89b1bff5106c",
allowEmptyValue: true
},
{
name: "machine_id",
description: "Identifiant(s) de machine(s)",
example: ["dfd0fbb1-2bf3-4dbe-b86d-89b1bff5106c", "dfd0fbb1-2bf3-4dbe-b86d-89b1bff5106c"],
allowEmptyValue: false,
required: true,
},
{
name: "uploaded_by",
description: "Pseudonyme requis mais au choix.",
example: "Jean Paul",
allowEmptyValue: false,
required: true,
},
{
name: "is_documentation",
description: "Admin uniquement, défini le fichier comme étant une documentation",
enum: ["true", "false"],
allowEmptyValue: false,
},
{
name: "is_restricted",
description: "Admin uniquement, rend impossible l'écrasement d'un fichier (non implémenté pour l'instant)",
enum: ["true", "false"],
allowEmptyValue: false,
},
])
@HttpCode(HttpStatus.OK)
@UseGuards(InsertAdminState)
@Post("new")