saleor-apps-redis_apl/apps/emails-and-messages/src/modules/sendgrid/configuration/sendgrid-config-input-schema.ts
2023-05-24 12:41:59 +02:00

55 lines
1.6 KiB
TypeScript

import { z } from "zod";
import { messageEventTypes } from "../../event-handlers/message-event-types";
export const sendgridConfigurationEventObjectSchema = z.object({
active: z.boolean(),
eventType: z.enum(messageEventTypes),
template: z.string(),
});
export const sendgridConfigurationBaseObjectSchema = z.object({
active: z.boolean(),
configurationName: z.string().min(1),
sandboxMode: z.boolean(),
apiKey: z.string().min(1),
senderName: z.string().min(1).optional(),
senderEmail: z.string().email().min(5).optional(),
channels: z.object({
excludedFrom: z.array(z.string()),
restrictedTo: z.array(z.string()),
}),
});
export const sendgridCreateConfigurationSchema = sendgridConfigurationBaseObjectSchema.omit({
senderEmail: true,
senderName: true,
});
export const sendgridUpdateOrCreateConfigurationSchema =
sendgridConfigurationBaseObjectSchema.merge(
z.object({
id: z.string().optional(),
})
);
export const sendgridGetConfigurationInputSchema = z.object({
id: z.string(),
});
export const sendgridDeleteConfigurationInputSchema = z.object({
id: z.string(),
});
export const sendgridGetConfigurationsInputSchema = z
.object({
ids: z.array(z.string()).optional(),
active: z.boolean().optional(),
})
.optional();
export const sendgridUpdateEventConfigurationInputSchema = z
.object({
configurationId: z.string(),
})
.merge(sendgridConfigurationEventObjectSchema);
export const sendgridGetEventConfigurationInputSchema = z.object({
configurationId: z.string(),
eventType: z.enum(messageEventTypes),
});