@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
117 lines (116 loc) • 3.31 kB
JavaScript
import { z } from "zod";
import { getEnumFilterSchema, getQueryRequestBodySchema, getQueryResponseBodySchema, API_VERSION } from "../common.js";
const elementInstanceStateSchema = z.enum(["ACTIVE", "COMPLETED", "TERMINATED"]);
const elementInstanceTypeSchema = z.enum([
"UNSPECIFIED",
"PROCESS",
"SUB_PROCESS",
"EVENT_SUB_PROCESS",
"AD_HOC_SUB_PROCESS",
"START_EVENT",
"INTERMEDIATE_CATCH_EVENT",
"INTERMEDIATE_THROW_EVENT",
"BOUNDARY_EVENT",
"END_EVENT",
"SERVICE_TASK",
"RECEIVE_TASK",
"USER_TASK",
"MANUAL_TASK",
"TASK",
"EXCLUSIVE_GATEWAY",
"INCLUSIVE_GATEWAY",
"PARALLEL_GATEWAY",
"EVENT_BASED_GATEWAY",
"SEQUENCE_FLOW",
"MULTI_INSTANCE_BODY",
"CALL_ACTIVITY",
"BUSINESS_RULE_TASK",
"SCRIPT_TASK",
"SEND_TASK",
"UNKNOWN"
]);
const elementInstanceSchema = z.object({
processDefinitionId: z.string(),
startDate: z.string(),
endDate: z.string().optional(),
elementId: z.string(),
elementName: z.string(),
type: elementInstanceTypeSchema,
state: elementInstanceStateSchema,
hasIncident: z.boolean(),
tenantId: z.string(),
elementInstanceKey: z.string(),
processInstanceKey: z.string(),
processDefinitionKey: z.string(),
incidentKey: z.string().optional()
});
const elementInstanceFilterSchema = z.object({
processDefinitionId: z.string(),
state: z.union([elementInstanceStateSchema, getEnumFilterSchema(elementInstanceStateSchema)]),
type: elementInstanceTypeSchema,
elementId: z.string(),
elementName: z.string(),
hasIncident: z.boolean(),
tenantId: z.string(),
elementInstanceKey: z.string(),
processInstanceKey: z.string(),
processDefinitionKey: z.string(),
incidentKey: z.string(),
scopeKey: z.string()
}).partial();
const queryElementInstancesRequestBodySchema = getQueryRequestBodySchema({
sortFields: [
"elementInstanceKey",
"processInstanceKey",
"processDefinitionKey",
"processDefinitionId",
"startDate",
"endDate",
"elementId",
"elementName",
"type",
"state",
"incidentKey",
"tenantId"
],
filter: elementInstanceFilterSchema
});
const queryElementInstancesResponseBodySchema = getQueryResponseBodySchema(elementInstanceSchema);
const queryElementInstances = {
method: "POST",
getUrl() {
return `/${API_VERSION}/element-instances/search`;
}
};
const getElementInstance = {
method: "GET",
getUrl(params) {
const { elementInstanceKey } = params;
return `/${API_VERSION}/element-instances/${elementInstanceKey}`;
}
};
const getElementInstanceResponseBodySchema = elementInstanceSchema;
const updateElementInstanceVariablesRequestBodySchema = z.object({
variables: z.record(z.string(), z.unknown()),
local: z.boolean().optional()
});
const updateElementInstanceVariables = {
method: "PUT",
getUrl(params) {
const { elementInstanceKey } = params;
return `/${API_VERSION}/element-instances/${elementInstanceKey}/variables`;
}
};
export {
elementInstanceFilterSchema,
elementInstanceSchema,
elementInstanceStateSchema,
elementInstanceTypeSchema,
getElementInstance,
getElementInstanceResponseBodySchema,
queryElementInstances,
queryElementInstancesRequestBodySchema,
queryElementInstancesResponseBodySchema,
updateElementInstanceVariables,
updateElementInstanceVariablesRequestBodySchema
};