@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
84 lines (83 loc) • 2.99 kB
JavaScript
import { z } from "zod";
import { getQueryRequestBodySchema, basicStringFilterSchema, advancedDateTimeFilterSchema, getQueryResponseBodySchema, API_VERSION } from "../common.js";
import { matchedDecisionRuleItemSchema, evaluatedDecisionInputItemSchema } from "./decision-definition.js";
const decisionDefinitionTypeSchema = z.enum(["DECISION_TABLE", "LITERAL_EXPRESSION", "UNSPECIFIED", "UNKNOWN"]);
const decisionInstanceStateSchema = z.enum(["EVALUATED", "FAILED", "UNSPECIFIED", "UNKNOWN"]);
const decisionInstanceSchema = z.object({
decisionInstanceId: z.string(),
state: decisionInstanceStateSchema,
evaluationDate: z.string(),
evaluationFailure: z.string(),
decisionDefinitionId: z.string(),
decisionDefinitionName: z.string(),
decisionDefinitionVersion: z.number(),
decisionDefinitionType: decisionDefinitionTypeSchema,
result: z.string(),
tenantId: z.string(),
decisionInstanceKey: z.string(),
processDefinitionKey: z.string(),
processInstanceKey: z.string(),
decisionDefinitionKey: z.string(),
elementInstanceKey: z.string()
});
const queryDecisionInstancesRequestBodySchema = getQueryRequestBodySchema({
sortFields: [
"decisionInstanceKey",
"decisionInstanceId",
"state",
"evaluationDate",
"evaluationFailure",
"processDefinitionKey",
"processInstanceKey",
"processInstanceId",
"decisionDefinitionKey",
"decisionDefinitionId",
"decisionDefinitionName",
"decisionDefinitionVersion",
"decisionDefinitionType",
"tenantId",
"elementInstanceKey"
],
filter: z.object({
evaluationDate: advancedDateTimeFilterSchema,
decisionDefinitionKey: basicStringFilterSchema,
...decisionInstanceSchema.pick({
decisionInstanceId: true,
state: true,
evaluationFailure: true,
decisionDefinitionId: true,
decisionDefinitionName: true,
decisionDefinitionVersion: true,
decisionDefinitionType: true,
tenantId: true,
decisionInstanceKey: true,
processDefinitionKey: true,
processInstanceKey: true,
elementInstanceKey: true
}).shape
}).partial()
});
const queryDecisionInstancesResponseBodySchema = getQueryResponseBodySchema(decisionInstanceSchema);
const getDecisionInstanceResponseBodySchema = z.object({
evaluatedInputs: z.array(evaluatedDecisionInputItemSchema).optional(),
matchedRules: z.array(matchedDecisionRuleItemSchema).optional(),
...decisionInstanceSchema.shape
});
const queryDecisionInstances = {
method: "POST",
getUrl: () => `/${API_VERSION}/decision-instances/search`
};
const getDecisionInstance = {
method: "GET",
getUrl: ({ decisionInstanceId }) => `/${API_VERSION}/decision-instances/${decisionInstanceId}`
};
export {
decisionDefinitionTypeSchema,
decisionInstanceSchema,
decisionInstanceStateSchema,
getDecisionInstance,
getDecisionInstanceResponseBodySchema,
queryDecisionInstances,
queryDecisionInstancesRequestBodySchema,
queryDecisionInstancesResponseBodySchema
};