UNPKG

@vzeta/camunda-api-zod-schemas

Version:

Zod schemas and TypeScript types for Camunda 8 unified API

231 lines (230 loc) 8 kB
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 };