@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
189 lines (188 loc) • 5.29 kB
JavaScript
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
};