- add POST rest/batch/<OBJECT> endpoint - rearrange rest api code with Twenty quality standard - unify REST API error format - Added PATCH verb to update objects - In openapi schema, we replaced PUT with PATCH verb to comply with REST standard - fix openApi schema to match the REST api ### Batch Create  ### Replace PUT by PATCH in open Api  ### Error format unification   
61 lines
1.8 KiB
TypeScript
61 lines
1.8 KiB
TypeScript
import {
|
|
Controller,
|
|
Get,
|
|
Delete,
|
|
Post,
|
|
Req,
|
|
Res,
|
|
Patch,
|
|
Put,
|
|
} from '@nestjs/common';
|
|
|
|
import { Request, Response } from 'express';
|
|
|
|
import { RestApiMetadataService } from 'src/engine/api/rest/services/rest-api-metadata.service';
|
|
import { cleanGraphQLResponse } from 'src/engine/api/rest/utils/clean-graphql-response.utils';
|
|
|
|
@Controller('rest/metadata/*')
|
|
export class RestApiMetadataController {
|
|
constructor(
|
|
private readonly restApiMetadataService: RestApiMetadataService,
|
|
) {}
|
|
|
|
@Get()
|
|
async handleApiGet(@Req() request: Request, @Res() res: Response) {
|
|
const result = await this.restApiMetadataService.get(request);
|
|
|
|
res.status(200).send(cleanGraphQLResponse(result.data));
|
|
}
|
|
|
|
@Delete()
|
|
async handleApiDelete(@Req() request: Request, @Res() res: Response) {
|
|
const result = await this.restApiMetadataService.delete(request);
|
|
|
|
res.status(200).send(cleanGraphQLResponse(result.data));
|
|
}
|
|
|
|
@Post()
|
|
async handleApiPost(@Req() request: Request, @Res() res: Response) {
|
|
const result = await this.restApiMetadataService.create(request);
|
|
|
|
res.status(201).send(cleanGraphQLResponse(result.data));
|
|
}
|
|
|
|
@Patch()
|
|
async handleApiPatch(@Req() request: Request, @Res() res: Response) {
|
|
const result = await this.restApiMetadataService.update(request);
|
|
|
|
res.status(200).send(cleanGraphQLResponse(result.data));
|
|
}
|
|
|
|
// This endpoint is not documented in the OpenAPI schema.
|
|
// We keep it to avoid a breaking change since it initially used PUT instead of PATCH,
|
|
// and because the PUT verb is often used as a PATCH.
|
|
@Put()
|
|
async handleApiPut(@Req() request: Request, @Res() res: Response) {
|
|
const result = await this.restApiMetadataService.update(request);
|
|
|
|
res.status(200).send(cleanGraphQLResponse(result.data));
|
|
}
|
|
}
|