@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
78 lines (77 loc) • 1.84 kB
JavaScript
import { z } from "zod";
import { getQueryRequestBodySchema, advancedStringFilterSchema, getQueryResponseBodySchema, API_VERSION } from "../common.js";
const userSchema = z.object({
username: z.string(),
name: z.string(),
email: z.string()
});
const createUserRequestBodySchema = userSchema.pick({
username: true,
name: true,
email: true
}).extend({
password: z.string()
});
const createUserResponseBodySchema = userSchema;
const updateUserRequestBodySchema = userSchema.pick({
username: true,
name: true,
email: true
}).extend({
password: z.string()
}).partial();
const queryUsersRequestBodySchema = getQueryRequestBodySchema({
sortFields: ["username", "name", "email"],
filter: z.object({
username: advancedStringFilterSchema.optional(),
name: advancedStringFilterSchema.optional(),
email: advancedStringFilterSchema.optional()
})
});
const queryUsersResponseBodySchema = getQueryResponseBodySchema(userSchema);
const createUser = {
method: "POST",
getUrl() {
return `/${API_VERSION}/users`;
}
};
const queryUsers = {
method: "POST",
getUrl() {
return `/${API_VERSION}/users/search`;
}
};
const getUser = {
method: "GET",
getUrl(params) {
const { username } = params;
return `/${API_VERSION}/users/${username}`;
}
};
const deleteUser = {
method: "DELETE",
getUrl(params) {
const { username } = params;
return `/${API_VERSION}/users/${username}`;
}
};
const updateUser = {
method: "PATCH",
getUrl(params) {
const { username } = params;
return `/${API_VERSION}/users/${username}`;
}
};
export {
createUser,
createUserRequestBodySchema,
createUserResponseBodySchema,
deleteUser,
getUser,
queryUsers,
queryUsersRequestBodySchema,
queryUsersResponseBodySchema,
updateUser,
updateUserRequestBodySchema,
userSchema
};