@vzeta/camunda-api-zod-schemas
Version:
Zod schemas and TypeScript types for Camunda 8 unified API
111 lines (110 loc) • 3.18 kB
JavaScript
import { z } from "zod";
import { API_VERSION } from "../common.js";
const documentMetadataSchema = z.object({
contentType: z.string(),
fileName: z.string(),
expiresAt: z.string(),
size: z.number(),
processDefinitionId: z.string(),
processInstanceKey: z.string(),
customProperties: z.record(z.string(), z.unknown())
});
const documentReferenceSchema = z.object({
"camunda.document.type": z.literal("camunda"),
storeId: z.string(),
documentId: z.string(),
contentHash: z.string(),
metadata: documentMetadataSchema
});
const documentCreationFailureDetailSchema = z.object({
fileName: z.string(),
detail: z.string()
});
const createDocumentsResponseBodySchema = z.object({
createdDocuments: z.array(documentReferenceSchema),
failedDocuments: z.array(documentCreationFailureDetailSchema)
});
const documentLinkRequestBodySchema = z.object({
timeToLive: z.number().optional().default(36e5)
});
const documentLinkSchema = z.object({
url: z.string(),
expiresAt: z.string()
});
const createDocument = {
method: "POST",
getUrl({ storeId, documentId }) {
const searchParams = new URLSearchParams();
if (storeId) {
searchParams.set("storeId", storeId);
}
if (documentId) {
searchParams.set("documentId", documentId);
}
const query = searchParams.toString();
return `/${API_VERSION}/documents${query ? `?${query}` : ""}`;
}
};
const createDocuments = {
method: "POST",
getUrl({ storeId } = {}) {
const searchParams = new URLSearchParams();
if (storeId) {
searchParams.set("storeId", storeId);
}
const query = searchParams.toString();
return `/${API_VERSION}/documents/batch${query ? `?${query}` : ""}`;
}
};
const getDocument = {
method: "GET",
getUrl({ documentId, storeId, contentHash }) {
const searchParams = new URLSearchParams();
if (storeId) {
searchParams.set("storeId", storeId);
}
if (contentHash) {
searchParams.set("contentHash", contentHash);
}
const query = searchParams.toString();
return `/${API_VERSION}/documents/${documentId}${query ? `?${query}` : ""}`;
}
};
const deleteDocument = {
method: "DELETE",
getUrl({ documentId, storeId }) {
const searchParams = new URLSearchParams();
if (storeId) {
searchParams.set("storeId", storeId);
}
const query = searchParams.toString();
return `/${API_VERSION}/documents/${documentId}${query ? `?${query}` : ""}`;
}
};
const createDocumentLink = {
method: "POST",
getUrl({ documentId, storeId, contentHash }) {
const searchParams = new URLSearchParams();
if (storeId) {
searchParams.set("storeId", storeId);
}
if (contentHash) {
searchParams.set("contentHash", contentHash);
}
const query = searchParams.toString();
return `/${API_VERSION}/documents/${documentId}/links${query ? `?${query}` : ""}`;
}
};
export {
createDocument,
createDocumentLink,
createDocuments,
createDocumentsResponseBodySchema,
deleteDocument,
documentCreationFailureDetailSchema,
documentLinkRequestBodySchema,
documentLinkSchema,
documentMetadataSchema,
documentReferenceSchema,
getDocument
};