Atualizar swagger
Atualizar todo o swagger.
- Revisar com o squad de front as informações atualizadas no swagger.
- Avisar para o time quando estiver pronto.
Para atualizar o swagger, seguir os passos: para cada DTO, verificar o schema de validação do Zod para o mesmo, pois ele mostra quais são os campos obrigatórios e permitidos para cada caso. Onde? dentro do módulo, no diretório "dto", haverá um arquivo "algumacoisa.schema.ts". Esse é o arquivo de validação que é o primeiro a ser chamado pelo Pipe da rota chamada no request, e valida os campos antes de chamar o endpoint do backend. O DTO pode ser encontrado no mesmo diretório, e haverão no mínimo dois, sendo um "create.algumacoisa.dto.ts" e "updadte.algumacoisa.dto.ts". Esses arquivos devem refletir o schema, pois é a partir deles que o Swagger expõe os campos para fora da api.
Atenção: não deverão ser alterados os campos existentes, pois interferem no funcionamento do código do backend. Apenas use os decorators do Swagger para "explicar" o que cada campo faz, dar exemplos, quais são obrigatórios, etc. Caso precise incluir campos ali para refletir a funcionalidade do Zod, poderá fazer, marcando eles como "readonly".
O Swagger também vê e expõe os endpoints do "controller" que tem os decorators informados. Quando existir orderBy ou outra informação relevante, deve ser declarada ali para ficar visível.
A seguir um exemplo prático: módulo: categories zod: categories.schema.ts conteúdo do schema: import * as z from 'zod';
export const CreateCategorySchema = z.object({ description: z.string().min(3, 'Description is required') });
export const UpdateCategorySchema = z.object({ description: z.string().min(3, 'Description is required').optional(), active: z.boolean().optional() });
Dtos: create.categories.dto.ts conteúdo: import { ApiProperty } from '@nestjs/swagger'; // aqui chama o swagger
export class CreateCategoriesDto { @ApiProperty({ description: 'Category description', minLength: 3, example: 'Category' }) readonly description: string;
nesse exemplo, usa-se o "@ApiProperty" para exibir informações sobre os dados.
Dicas:
-
verifique antes de mexer como o Swagger está sendo exibido, para ter uma ideia de como aparece.
-
o atalho "ctrl+espaço" exibe as opções disponíveis.
-
users
-
categories
-
occurrences
-
persons
-
production
-
production-steps
-
products
-
stock
-
stock-locations