@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
231 lines (230 loc) • 8 kB
JavaScript
import { z } from "zod";
import { advancedStringFilterSchema, advancedDateTimeFilterSchema, basicStringFilterSchema, getQueryRequestBodySchema, getOrFilterSchema, getQueryResponseBodySchema, getCollectionResponseBodySchema, API_VERSION } from "../common.js";
import { variableSchema } from "./variable.js";
import { processInstanceStateSchema, processInstanceSchema, processDefinitionStatisticSchema } from "../processes.js";
import { batchOperationTypeSchema } from "./batch-operation.js";
const processInstanceVariableFilterSchema = z.object({
name: z.string(),
value: z.string()
});
const advancedProcessInstanceStateFilterSchema = z.object({
$eq: processInstanceStateSchema,
$neq: processInstanceStateSchema,
$exists: z.boolean(),
$in: z.array(processInstanceStateSchema),
$like: z.string()
}).partial();
const queryProcessInstancesFilterSchema = z.object({
processDefinitionId: advancedStringFilterSchema,
processDefinitionName: advancedStringFilterSchema,
processDefinitionVersion: z.number().int(),
processDefinitionVersionTag: advancedStringFilterSchema,
processDefinitionKey: basicStringFilterSchema,
processInstanceKey: basicStringFilterSchema,
parentProcessInstanceKey: basicStringFilterSchema,
parentElementInstanceKey: basicStringFilterSchema,
startDate: advancedDateTimeFilterSchema,
endDate: advancedDateTimeFilterSchema,
state: advancedProcessInstanceStateFilterSchema,
hasIncident: z.boolean(),
tenantId: advancedStringFilterSchema,
variables: z.array(processInstanceVariableFilterSchema),
batchOperationKey: z.string(),
errorMessage: advancedStringFilterSchema,
hasRetriesLeft: z.boolean(),
elementInstanceState: advancedProcessInstanceStateFilterSchema,
elementId: advancedStringFilterSchema,
hasElementInstanceIncidents: z.boolean(),
incidentErrorHashCode: z.number().int()
}).partial();
const queryProcessInstancesRequestBodySchema = getQueryRequestBodySchema({
sortFields: [
"processInstanceKey",
"processDefinitionId",
"processDefinitionName",
"processDefinitionVersion",
"processDefinitionVersionTag",
"processDefinitionKey",
"parentProcessInstanceKey",
"parentElementInstanceKey",
"startDate",
"endDate",
"state",
"hasIncident",
"tenantId"
],
filter: getOrFilterSchema(queryProcessInstancesFilterSchema)
});
const queryProcessInstancesResponseBodySchema = getQueryResponseBodySchema(processInstanceSchema);
const cancelProcessInstanceRequestBodySchema = z.object({
operationReference: z.number().int()
}).optional();
const queryProcessInstanceIncidentsRequestBodySchema = getQueryRequestBodySchema({
sortFields: [
"incidentKey",
"errorType",
"errorMessage",
"state",
"creationTime",
"processInstanceKey",
"processDefinitionKey",
"elementInstanceKey",
"jobKey",
"tenantId"
],
filter: z.never()
});
const getProcessInstance = {
method: "GET",
getUrl: ({ processInstanceKey }) => `/${API_VERSION}/process-instances/${processInstanceKey}`
};
const createProcessInstanceRequestBodySchema = z.object({
variables: z.record(z.string(), variableSchema).optional(),
operationReference: z.number().optional(),
startInstructions: z.array(z.string()).optional(),
awaitCompletion: z.boolean().optional(),
fetchVariables: z.array(z.string()).optional(),
requestTimeout: z.number().optional(),
...processInstanceSchema.pick({
processDefinitionId: true,
processDefinitionVersion: true,
tenantId: true,
processDefinitionKey: true
}).partial().shape
});
const createProcessInstanceResponseBodySchema = z.object({
variables: z.record(z.string(), variableSchema).optional(),
...processInstanceSchema.pick({
processDefinitionId: true,
processDefinitionVersion: true,
tenantId: true,
processDefinitionKey: true,
processInstanceKey: true
}).shape
});
const createProcessInstance = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances`
};
const queryProcessInstances = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances/search`
};
const cancelProcessInstance = {
method: "POST",
getUrl: ({ processInstanceKey }) => `/${API_VERSION}/process-instances/${processInstanceKey}/cancellation`
};
const queryProcessInstanceIncidents = {
method: "POST",
getUrl: ({ processInstanceKey }) => `/${API_VERSION}/process-instances/${processInstanceKey}/incidents/search`
};
const getProcessInstanceCallHierarchy = {
method: "GET",
getUrl: ({ processInstanceKey }) => `/${API_VERSION}/process-instances/${processInstanceKey}/call-hierarchy`
};
const callHierarchySchema = z.object({
processInstanceKey: z.string(),
processDefinitionKey: z.string(),
processDefinitionName: z.string()
});
const getProcessInstanceCallHierarchyResponseBodySchema = z.array(callHierarchySchema);
const getProcessInstanceStatistics = {
method: "GET",
getUrl: ({ processInstanceKey, statisticName = "element-instances" }) => `/${API_VERSION}/process-instances/${processInstanceKey}/statistics/${statisticName}`
};
const getProcessInstanceStatisticsResponseBodySchema = getCollectionResponseBodySchema(
processDefinitionStatisticSchema
);
const getProcessInstanceSequenceFlows = {
method: "GET",
getUrl: ({ processInstanceKey }) => `/${API_VERSION}/process-instances/${processInstanceKey}/sequence-flows`
};
const sequenceFlowSchema = z.object({
processInstanceKey: z.string(),
sequenceFlowId: z.string(),
processDefinitionKey: z.string(),
processDefinitionId: z.string(),
elementId: z.string(),
tenantId: z.string()
});
const getProcessInstanceSequenceFlowsResponseBodySchema = getCollectionResponseBodySchema(sequenceFlowSchema);
z.object({
batchOperationKey: z.string(),
batchOperationType: batchOperationTypeSchema
});
const createIncidentResolutionBatchOperation = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances/incident-resolution`
};
z.object({
batchOperationKey: z.string(),
batchOperationType: batchOperationTypeSchema
});
const createCancellationBatchOperation = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances/cancellation`
};
z.object({
filter: getOrFilterSchema(queryProcessInstancesFilterSchema),
migrationPlan: z.object({
mappingInstructions: z.array(
z.object({
sourceElementId: z.string(),
targetElementId: z.string()
})
),
targetProcessDefinitionKey: z.string()
})
});
z.object({
batchOperationKey: z.string(),
batchOperationType: batchOperationTypeSchema
});
const createMigrationBatchOperation = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances/migration`
};
z.object({
filter: getOrFilterSchema(queryProcessInstancesFilterSchema),
moveInstructions: z.array(
z.object({
sourceElementId: z.string(),
targetElementId: z.string()
})
)
});
z.object({
batchOperationKey: z.string(),
batchOperationType: batchOperationTypeSchema
});
const createModificationBatchOperation = {
method: "POST",
getUrl: () => `/${API_VERSION}/process-instances/modification`
};
export {
callHierarchySchema,
cancelProcessInstance,
cancelProcessInstanceRequestBodySchema,
createCancellationBatchOperation,
createIncidentResolutionBatchOperation,
createMigrationBatchOperation,
createModificationBatchOperation,
createProcessInstance,
createProcessInstanceRequestBodySchema,
createProcessInstanceResponseBodySchema,
getProcessInstance,
getProcessInstanceCallHierarchy,
getProcessInstanceCallHierarchyResponseBodySchema,
getProcessInstanceSequenceFlows,
getProcessInstanceSequenceFlowsResponseBodySchema,
getProcessInstanceStatistics,
getProcessInstanceStatisticsResponseBodySchema,
processInstanceSchema,
processInstanceStateSchema,
queryProcessInstanceIncidents,
queryProcessInstanceIncidentsRequestBodySchema,
queryProcessInstances,
queryProcessInstancesRequestBodySchema,
queryProcessInstancesResponseBodySchema,
sequenceFlowSchema
};