From 5f082e11f8c82478d3e0ffbb23c65e28bc1f08d4 Mon Sep 17 00:00:00 2001 From: Keith Williams Date: Wed, 29 May 2024 13:16:49 -0300 Subject: [PATCH] fix: API booking issues (#15247) * fix: API booking issues * Put back the optional zod for user * fixed the imports * Using nullish * typing errors * missed one --- apps/api/v1/lib/validations/booking.ts | 2 +- apps/api/v1/pages/api/bookings/_post.ts | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/apps/api/v1/lib/validations/booking.ts b/apps/api/v1/lib/validations/booking.ts index 65f73fe8de..e9dda7865b 100644 --- a/apps/api/v1/lib/validations/booking.ts +++ b/apps/api/v1/lib/validations/booking.ts @@ -55,7 +55,7 @@ export const schemaBookingReadPublic = Booking.extend({ timeZone: true, locale: true, }) - .optional(), + .nullish(), payment: z .array( _PaymentModel.pick({ diff --git a/apps/api/v1/pages/api/bookings/_post.ts b/apps/api/v1/pages/api/bookings/_post.ts index 9fe55b773a..919a7a2bfc 100644 --- a/apps/api/v1/pages/api/bookings/_post.ts +++ b/apps/api/v1/pages/api/bookings/_post.ts @@ -2,6 +2,8 @@ import type { NextApiRequest } from "next"; import getBookingDataSchemaForApi from "@calcom/features/bookings/lib/getBookingDataSchemaForApi"; import handleNewBooking from "@calcom/features/bookings/lib/handleNewBooking"; +import { ErrorCode } from "@calcom/lib/errorCodes"; +import { HttpError } from "@calcom/lib/http-error"; import { defaultResponder } from "@calcom/lib/server"; import { getAccessibleUsers } from "~/lib/utils/retrieveScopedAccessibleUsers"; @@ -218,7 +220,16 @@ async function handler(req: NextApiRequest) { req.userId = requestedUserId || userId; } - return await handleNewBooking(req, getBookingDataSchemaForApi); + try { + return await handleNewBooking(req, getBookingDataSchemaForApi); + } catch (error: unknown) { + const knownError = error as Error; + if (knownError?.message === ErrorCode.NoAvailableUsersFound) { + throw new HttpError({ statusCode: 400, message: knownError.message }); + } + + throw error; + } } export default defaultResponder(handler);