mirror of
https://github.com/documenso/documenso.git
synced 2025-11-22 04:31:39 +10:00
65 lines
2.0 KiB
TypeScript
65 lines
2.0 KiB
TypeScript
import { z } from 'zod';
|
|
|
|
import { createDocumentFromDirectTemplate } from '@documenso/lib/server-only/template/create-document-from-direct-template';
|
|
import { extractNextApiRequestMetadata } from '@documenso/lib/universal/extract-request-metadata';
|
|
|
|
import { ZSignFieldWithTokenMutationSchema } from '../field-router/schema';
|
|
import { maybeAuthenticatedProcedure } from '../trpc';
|
|
|
|
export const ZCreateDocumentFromTemplateRequestSchema = z.object({
|
|
directRecipientName: z.string().optional(),
|
|
directRecipientEmail: z.string().email(),
|
|
directTemplateToken: z.string().min(1),
|
|
directTemplateExternalId: z.string().optional(),
|
|
signedFieldValues: z.array(ZSignFieldWithTokenMutationSchema),
|
|
templateUpdatedAt: z.date(),
|
|
});
|
|
|
|
export const ZCreateDocumentFromTemplateResponseSchema = z.object({
|
|
token: z.string(),
|
|
documentId: z.number(),
|
|
recipientId: z.number(),
|
|
});
|
|
|
|
export const createDocumentFromTemplateRoute = maybeAuthenticatedProcedure
|
|
.meta({
|
|
openapi: {
|
|
method: 'POST',
|
|
path: '/template/use',
|
|
summary: 'Use direct template',
|
|
description: 'Use a direct template to create a document',
|
|
tags: ['Template'],
|
|
},
|
|
})
|
|
.input(ZCreateDocumentFromTemplateRequestSchema)
|
|
.output(ZCreateDocumentFromTemplateResponseSchema)
|
|
.mutation(async ({ input, ctx }) => {
|
|
const {
|
|
directRecipientName,
|
|
directRecipientEmail,
|
|
directTemplateToken,
|
|
directTemplateExternalId,
|
|
signedFieldValues,
|
|
templateUpdatedAt,
|
|
} = input;
|
|
|
|
const requestMetadata = extractNextApiRequestMetadata(ctx.req);
|
|
|
|
return await createDocumentFromDirectTemplate({
|
|
directRecipientName,
|
|
directRecipientEmail,
|
|
directTemplateToken,
|
|
directTemplateExternalId,
|
|
signedFieldValues,
|
|
templateUpdatedAt,
|
|
user: ctx.user
|
|
? {
|
|
id: ctx.user.id,
|
|
name: ctx.user.name || undefined,
|
|
email: ctx.user.email,
|
|
}
|
|
: undefined,
|
|
requestMetadata,
|
|
});
|
|
});
|