import {z} from 'zod' export type ObjectIDFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Includes', value: Array}; export type DateFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'GreaterThan', value: string} | {_type: 'LessThan', value: string} | {_type: 'GreaterThanOrEqual', value: string} | {_type: 'LessThanOrEqual', value: string} | {_type: 'InBetween', startValue: string, endValue: string}; export type ShortTextFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Search', value: string} | {_type: 'Includes', value: Array}; export type LongTextFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Search', value: string} | {_type: 'Includes', value: Array}; export type HTMLFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string}; export type StatusPageSubscriberNotificationTemplateQuerySchema = {_id?: ObjectIDFilter | undefined, createdAt?: DateFilter | undefined, updatedAt?: DateFilter | undefined, deletedAt?: DateFilter | undefined, projectId?: ObjectIDFilter | undefined, templateName?: ShortTextFilter | undefined, templateDescription?: LongTextFilter | undefined, eventType?: ShortTextFilter | undefined, notificationMethod?: ShortTextFilter | undefined, emailSubject?: ShortTextFilter | undefined, templateBody?: HTMLFilter | undefined, createdByUserId?: ObjectIDFilter | undefined}; 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 SortOrder = 'ASC' | 'DESC'; export type StatusPageSubscriberNotificationTemplateSortSchema = {_id?: SortOrder | undefined, createdAt?: SortOrder | undefined, updatedAt?: SortOrder | undefined, deletedAt?: SortOrder | undefined, projectId?: SortOrder | undefined, templateName?: SortOrder | undefined, templateDescription?: SortOrder | undefined, eventType?: SortOrder | undefined, notificationMethod?: SortOrder | undefined, emailSubject?: SortOrder | undefined, createdByUserId?: SortOrder | undefined}; export type CreateApiStatusPageSubscriberNotificationTemplateGetListArgs = {body: {query?: StatusPageSubscriberNotificationTemplateQuerySchema | undefined, select?: StatusPageSubscriberNotificationTemplateSelectSchema | undefined, sort?: StatusPageSubscriberNotificationTemplateSortSchema | undefined, limit?: number | undefined, skip?: number | undefined}}; export type CreateApiStatusPageSubscriberNotificationTemplateGetListOptions = {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 createApiStatusPageSubscriberNotificationTemplateGetListResponse = z.object({data: z.array(statusPageSubscriberNotificationTemplate).optional(), count: z.number().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 }; /** * List Subscriber Notification Template * * POST /status-page-subscriber-notification-template/get-list */ export const createApiStatusPageSubscriberNotificationTemplateGetList = async (args: CreateApiStatusPageSubscriberNotificationTemplateGetListArgs, options?: CreateApiStatusPageSubscriberNotificationTemplateGetListOptions) => { 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/get-list${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(createApiStatusPageSubscriberNotificationTemplateGetListResponse, await res.json()) };