import {z} from 'zod' export type StatusPageSubscriberNotificationTemplateSelectSchema = {_id?: boolean | undefined, createdAt?: boolean | undefined, updatedAt?: boolean | undefined, deletedAt?: boolean | undefined, projectId?: boolean | undefined, templateName?: boolean | undefined, templateDescription?: boolean | undefined, eventType?: boolean | undefined, notificationMethod?: boolean | undefined, emailSubject?: boolean | undefined, templateBody?: boolean | undefined, createdByUserId?: boolean | undefined}; export type CreateApiStatusPageSubscriberNotificationTemplateIdGetItemArgs = {id: string, body: {select?: StatusPageSubscriberNotificationTemplateSelectSchema | undefined}}; export type CreateApiStatusPageSubscriberNotificationTemplateIdGetItemOptions = {baseUrl?: string | undefined, ApiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const statusPageSubscriberNotificationTemplate = z.object({_id: z.string().optional(), createdAt: z.object({}).optional(), updatedAt: z.object({}).optional(), deletedAt: z.object({}).optional(), version: z.number().optional(), projectId: z.string(), templateName: z.string(), templateDescription: z.string().optional(), eventType: z.enum(["Subscriber Subscription Confirmation", "Subscriber Subscribed", "Subscriber Manage Subscription", "Subscriber Incident Created", "Subscriber Incident State Changed", "Subscriber Incident Note Created", "Subscriber Incident Note Updated", "Subscriber Incident Postmortem Published", "Subscriber Episode Created", "Subscriber Episode State Changed", "Subscriber Episode Note Created", "Subscriber Episode Note Updated", "Subscriber Announcement Created", "Subscriber Announcement Updated", "Subscriber Scheduled Maintenance Created", "Subscriber Scheduled Maintenance State Changed", "Subscriber Scheduled Maintenance Note Created", "Subscriber Scheduled Maintenance Note Updated", "Subscriber Report"]), notificationMethod: z.enum(["Email", "SMS", "Slack", "Microsoft Teams", "Webhook"]), emailSubject: z.string().optional(), templateBody: z.string(), createdByUserId: z.string().optional()}); export const createApiStatusPageSubscriberNotificationTemplateIdGetItemResponse = z.object({data: statusPageSubscriberNotificationTemplate.optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get Subscriber Notification Template * * POST /status-page-subscriber-notification-template/{id}/get-item */ export const createApiStatusPageSubscriberNotificationTemplateIdGetItem = async (args: CreateApiStatusPageSubscriberNotificationTemplateIdGetItemArgs, options?: CreateApiStatusPageSubscriberNotificationTemplateIdGetItemOptions) => { const {baseUrl = "https://oneuptime.com/api", fetch: fetchFn = fetch, ApiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (ApiKey !== undefined) headers.set("APIKey", ApiKey) const url = `${baseUrl.replace(/\/+$/, '')}/status-page-subscriber-notification-template/${encodeURIComponent(String(args.id))}/get-item${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(createApiStatusPageSubscriberNotificationTemplateIdGetItemResponse, await res.json()) };