UNPKG

@vzeta/camunda-api-zod-schemas

Version:

Zod schemas and TypeScript types for Camunda 8 unified API

78 lines (77 loc) 1.84 kB
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 };