feat: api for uploading contacts in bulk (#5053)

Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
This commit is contained in:
Anshuman Pandey
2025-03-30 13:14:17 +05:30
committed by GitHub
parent 709cdf260d
commit f5ce42fc2d
49 changed files with 1293 additions and 96 deletions
+29
View File
@@ -257,6 +257,34 @@ const successResponse = ({
);
};
export const multiStatusResponse = ({
data,
meta,
cors = false,
cache = "private, no-store",
}: {
data: Object;
meta?: Record<string, unknown>;
cors?: boolean;
cache?: string;
}) => {
const headers = {
...(cors && corsHeaders),
"Cache-Control": cache,
};
return Response.json(
{
data,
meta,
} as ApiSuccessResponse,
{
status: 207,
headers,
}
);
};
export const responses = {
badRequestResponse,
unauthorizedResponse,
@@ -267,4 +295,5 @@ export const responses = {
tooManyRequestsResponse,
internalServerErrorResponse,
successResponse,
multiStatusResponse,
};
+11 -6
View File
@@ -1,6 +1,6 @@
import { responses } from "@/modules/api/v2/lib/response";
import { ApiErrorResponseV2 } from "@/modules/api/v2/types/api-error";
import { ZodError } from "zod";
import { ZodCustomIssue, ZodIssue } from "zod";
import { logger } from "@formbricks/logger";
export const handleApiError = (request: Request, err: ApiErrorResponseV2): Response => {
@@ -34,11 +34,16 @@ export const handleApiError = (request: Request, err: ApiErrorResponseV2): Respo
}
};
export const formatZodError = (error: ZodError) => {
return error.issues.map((issue) => ({
field: issue.path.join("."),
issue: issue.message,
}));
export const formatZodError = (error: { issues: (ZodIssue | ZodCustomIssue)[] }) => {
return error.issues.map((issue) => {
const issueParams = issue.code === "custom" ? issue.params : undefined;
return {
field: issue.path.join("."),
issue: issue.message ?? "An error occurred while processing your request. Please try again later.",
...(issueParams && { meta: issueParams }),
};
});
};
export const logApiRequest = (request: Request, responseStatus: number): void => {