@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
93 lines (92 loc) • 3.53 kB
JavaScript
import { z } from "zod";
import { advancedStringFilterSchema, basicStringFilterSchema, advancedDateTimeFilterSchema, getOrFilterSchema, getCollectionResponseBodySchema, getQueryRequestBodySchema, getQueryResponseBodySchema, API_VERSION } from "../common.js";
import { processInstanceStateSchema, processDefinitionStatisticSchema, processDefinitionSchema } from "../processes.js";
const getProcessDefinition = {
method: "GET",
getUrl: ({ processDefinitionKey }) => `/${API_VERSION}/process-definitions/${processDefinitionKey}`
};
const getProcessDefinitionXml = {
method: "GET",
getUrl: ({ processDefinitionKey }) => `/${API_VERSION}/process-definitions/${processDefinitionKey}/xml`
};
const getProcessStartForm = {
method: "GET",
getUrl: ({ processDefinitionKey }) => `/${API_VERSION}/process-definitions/${processDefinitionKey}/form`
};
const advancedProcessInstanceStateFilterSchema = z.object({
$eq: processInstanceStateSchema,
$neq: processInstanceStateSchema,
$exists: z.boolean(),
$in: z.array(processInstanceStateSchema),
$like: z.string()
}).partial();
const processDefinitionStatisticsFilterFieldsSchema = z.object({
startDate: advancedDateTimeFilterSchema,
endDate: advancedDateTimeFilterSchema,
state: advancedProcessInstanceStateFilterSchema,
hasIncident: z.boolean(),
tenantId: advancedStringFilterSchema,
variables: z.array(
z.object({
name: z.string(),
value: z.string()
})
),
processInstanceKey: basicStringFilterSchema,
parentProcessInstanceKey: basicStringFilterSchema,
parentElementInstanceKey: basicStringFilterSchema,
batchOperationId: advancedStringFilterSchema,
errorMessage: advancedStringFilterSchema,
hasRetriesLeft: z.boolean(),
elementInstanceState: advancedProcessInstanceStateFilterSchema,
elementId: advancedStringFilterSchema,
hasElementInstanceIncident: z.boolean(),
incidentErrorHashCode: z.number()
});
const getProcessDefinitionStatisticsRequestBodySchema = z.object({
filter: getOrFilterSchema(processDefinitionStatisticsFilterFieldsSchema.partial())
}).partial();
const getProcessDefinitionStatisticsResponseBodySchema = getCollectionResponseBodySchema(
processDefinitionStatisticSchema
);
const getProcessDefinitionStatistics = {
method: "POST",
getUrl: ({ processDefinitionKey, statisticName = "element-instances" }) => `/${API_VERSION}/process-definitions/${processDefinitionKey}/statistics/${statisticName}`
};
const queryProcessDefinitionsRequestBodySchema = getQueryRequestBodySchema({
sortFields: [
"processDefinitionKey",
"name",
"resourceName",
"version",
"versionTag",
"processDefinitionId",
"tenantId"
],
filter: processDefinitionSchema.omit({
processDefinitionId: true,
name: true
}).extend({
isLatestVersion: z.boolean(),
processDefinitionId: advancedStringFilterSchema,
name: advancedStringFilterSchema
}).partial()
});
const queryProcessDefinitionsResponseBodySchema = getQueryResponseBodySchema(processDefinitionSchema);
const queryProcessDefinitions = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-definitions/search`
};
export {
getProcessDefinition,
getProcessDefinitionStatistics,
getProcessDefinitionStatisticsRequestBodySchema,
getProcessDefinitionStatisticsResponseBodySchema,
getProcessDefinitionXml,
getProcessStartForm,
processDefinitionSchema,
processDefinitionStatisticSchema,
queryProcessDefinitions,
queryProcessDefinitionsRequestBodySchema,
queryProcessDefinitionsResponseBodySchema
};