UNPKG

@vzeta/camunda-api-zod-schemas

Version:

Zod schemas and TypeScript types for Camunda 8 unified API

189 lines (188 loc) 5.29 kB
import { z } from "zod"; import { getQueryRequestBodySchema, getQueryResponseBodySchema, API_VERSION } from "../common.js"; import { mappingRuleSchema } from "./mapping-rule.js"; import { userSchema } from "./user.js"; import { groupSchema, roleSchema } from "../group-role.js"; const createGroupRequestBodySchema = groupSchema; const createGroupResponseBodySchema = groupSchema; const createGroup = { method: "POST", getUrl() { return `/${API_VERSION}/groups`; } }; const getGroup = { method: "GET", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}`; } }; const getGroupResponseBodySchema = groupSchema; const updateGroupRequestBodySchema = groupSchema.pick({ name: true, description: true }); const updateGroupResponseBodySchema = groupSchema; const updateGroup = { method: "PUT", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}`; } }; const deleteGroup = { method: "DELETE", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}`; } }; const queryGroupsRequestBodySchema = getQueryRequestBodySchema({ sortFields: ["name", "groupId"], filter: groupSchema.pick({ groupId: true, name: true }).partial() }); const queryGroupsResponseBodySchema = getQueryResponseBodySchema(groupSchema); const queryGroups = { method: "POST", getUrl() { return `/${API_VERSION}/groups/search`; } }; const queryUsersByGroupRequestBodySchema = getQueryRequestBodySchema({ sortFields: ["username"], filter: z.never() }); const queryUsersByGroupResponseBodySchema = getQueryResponseBodySchema(userSchema.pick({ username: true })); const queryUsersByGroup = { method: "POST", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}/users/search`; } }; const queryClientsByGroupRequestBodySchema = getQueryRequestBodySchema({ sortFields: ["clientId"], filter: z.never() }); const queryClientsByGroupResponseBodySchema = getQueryResponseBodySchema( z.object({ clientId: z.string() }) ); const queryClientsByGroup = { method: "POST", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}/clients/search`; } }; const queryRolesByGroupRequestBodySchema = getQueryRequestBodySchema({ sortFields: ["name", "roleId"], filter: z.object({ roleId: z.string(), name: z.string() }).partial() }); const queryRolesByGroupResponseBodySchema = getQueryResponseBodySchema(roleSchema.pick({ roleId: true, name: true })); const queryRolesByGroup = { method: "POST", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}/roles/search`; } }; const queryMappingRulesByGroupRequestBodySchema = getQueryRequestBodySchema({ sortFields: ["claimName", "claimValue", "name"], filter: mappingRuleSchema.pick({ claimName: true, claimValue: true, name: true }).partial() }); const queryMappingRulesByGroupResponseBodySchema = getQueryResponseBodySchema(mappingRuleSchema); const queryMappingRulesByGroup = { method: "POST", getUrl(params) { const { groupId } = params; return `/${API_VERSION}/groups/${groupId}/mapping-rules/search`; } }; const assignUserToGroup = { method: "PUT", getUrl(params) { const { groupId, username } = params; return `/${API_VERSION}/groups/${groupId}/users/${username}`; } }; const unassignUserFromGroup = { method: "DELETE", getUrl(params) { const { groupId, username } = params; return `/${API_VERSION}/groups/${groupId}/users/${username}`; } }; const assignClientToGroup = { method: "PUT", getUrl(params) { const { groupId, clientId } = params; return `/${API_VERSION}/groups/${groupId}/clients/${clientId}`; } }; const unassignClientFromGroup = { method: "DELETE", getUrl(params) { const { groupId, clientId } = params; return `/${API_VERSION}/groups/${groupId}/clients/${clientId}`; } }; const assignMappingToGroup = { method: "PUT", getUrl(params) { const { groupId, mappingId } = params; return `/${API_VERSION}/groups/${groupId}/mapping-rules/${mappingId}`; } }; const unassignMappingFromGroup = { method: "DELETE", getUrl(params) { const { groupId, mappingId } = params; return `/${API_VERSION}/groups/${groupId}/mapping-rules/${mappingId}`; } }; export { assignClientToGroup, assignMappingToGroup, assignUserToGroup, createGroup, createGroupRequestBodySchema, createGroupResponseBodySchema, deleteGroup, getGroup, getGroupResponseBodySchema, groupSchema, queryClientsByGroup, queryClientsByGroupRequestBodySchema, queryClientsByGroupResponseBodySchema, queryGroups, queryGroupsRequestBodySchema, queryGroupsResponseBodySchema, queryMappingRulesByGroup, queryMappingRulesByGroupRequestBodySchema, queryMappingRulesByGroupResponseBodySchema, queryRolesByGroup, queryRolesByGroupRequestBodySchema, queryRolesByGroupResponseBodySchema, queryUsersByGroup, queryUsersByGroupRequestBodySchema, queryUsersByGroupResponseBodySchema, unassignClientFromGroup, unassignMappingFromGroup, unassignUserFromGroup, updateGroup, updateGroupRequestBodySchema, updateGroupResponseBodySchema };