import {z} from 'zod' export type GetApiNotificationV1TemplatesDefaultOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const notificationAudienceType = z.enum(["NEW_USER", "EXISTING_USER", "EXISTING_USER_WITHOUT_COMPANY_PARAM", "PRODUCT_OWNER", "CHANNEL_ADMIN", "CHANNEL_ADMIN_WITHOUT_PARAM", "CHANNEL_SUPPORT", "PRODUCT_USER", "COMPANY_ADMIN", "APP_DEVELOPER", "CUSTOM_INTEGRATION_APP_SUPPORT", "RESELLER", "RESELLER_WITHOUT_PARAM", "RESELLER_MANAGER", "RESELLER_MANAGER_WITHOUT_PARAM", "RESELLER_COMPANY_ADMIN", "SALES_SUPPORT", "SALES_SUPPORT_WITHOUT_PARAMS", "TICKET_SUPPORT", "DOMAIN_SUPPORT", "SUPER_SUPPORT"]); export const notificationTemplateCategory = z.enum(["ACCOUNTS", "PRODUCTS", "VENDORS", "BILLING", "MARKETPLACE", "DOMAIN_REGISTRATION", "ASSISTED_SALES", "MISC"]); export const notificationMethod = z.enum(["EMAIL", "SMS"]); export const notificationMethodTemplateWS = z.object({enabled: z.boolean().optional(), method: notificationMethod.optional()}); export const notificationReminderType = z.enum(["NONE", "BEFORE", "AFTER"]); export const notificationTemplateType = z.enum(["ACCOUNT_ACTIVATION", "ACCOUNT_ACTIVATION_AFTER_MIGRATION", "BRANDED_ACCOUNT_ACTIVATION", "ACCOUNT_ACTIVATION_CREATED_BY_ASSISTED_SALES", "ACTIVE_USER_TEMP_PASSWORD", "NEW_USER", "INVITE_USER", "BAAS_MARKETPLACE_SIGN_UP_REQUEST", "LISTING_MARKETPLACE_SIGN_UP_REQUEST", "STORE_MARKETPLACE_SIGN_UP_REQUEST", "LISTING_MARKETPLACE_SIGN_UP_REMINDER", "STORE_MARKETPLACE_SIGN_UP_REMINDER", "PASSWORD_RESET", "PASSWORD_CHANGED_NOTICE", "PRIMARY_EMAIL_CHANGED_NOTICE", "EMAIL_VERIFICATION", "IMPERSONATE_REQUEST", "PASSWORD_REMINDER", "REGISTRATION_REMINDER", "FIRST_TIME_LOGIN", "INACTIVE_USER_LOGIN_REMINDER", "INACTIVE_USER_PURCHASE_REMINDER", "ACCOUNT_ACTIVATION_FOR_EMAIL_CHANGE", "TWO_FACTOR_AUTHENTICATION_EMAIL", "ASSIGNMENT_NOTICE", "UNASSIGNMENT_NOTICE", "ASSIGNED_USERS_LIMIT", "ADOPTION_NOTICE", "SUBSCRIPTION_ADOPTION", "APPLICATION_ACCESS_REQUEST_NOTICE", "APPLICATION_PURCHASE_REQUEST_NOTICE", "EXPIRED_APPLICATION_REQUEST", "SUSPENDED_APPLICATION_REQUEST", "UPDATED_DOWNLOAD", "REVIEW_PURCHASE_REMINDER", "DENY_REVIEW", "DISCOUNT_DEACTIVATED", "CHANGE_OWNERSHIP", "REACTIVATE_DOMAIN", "SUBSCRIPTION_ORDER", "SUBSCRIPTION_ORDER_SINGLE_USER", "SUBSCRIPTION_ORDER_FREE_TRIAL", "PERSONAL_SUBSCRIPTION_NOTICE", "SUBSCRIPTION_ORDER_DOCUMENT", "SUBSCRIPTION_ORDER_MODULE", "FAILED_ORDER", "SUBSCRIPTION_UPGRADE", "FREE_TRIAL_OVER", "FREE_TRIAL_AUTO_UPGRADE_TO_PAID", "EXPIRED_TRIAL_UPGRADE_REMINDER", "INVOICE", "PAYMENT_SUCCESSFUL", "PAYMENT_FAILED", "REFUND", "EXPIRED_CREDIT_CARD", "SUBSCRIPTION_SUSPENDED_OVERDUE_INVOICE", "SUBSCRIPTION_SUSPENDED", "SUBSCRIPTION_CANCEL", "SUBSCRIPTION_CANCEL_SCHEDULED", "SCHEDULED_CANCELLATION_REMINDER", "TICKET_SUPPORT_SUBSCRIPTION_CANCEL", "FAILED_TO_REMOVE_USER", "FAILED_TO_REMOVE_USER_HAS_ACTIVE_OR_PENDING_APPS", "FAILED_TO_REMOVE_USER_OWNS_APPS", "FAILED_TO_REMOVE_USER_SOLE_SYSADMIN", "END_OF_CONTRACT", "OFF_PURCHASE_ORDER", "ORDER_APPROVAL_REQUEST", "SUBSCRIPTION_ORDER_RESELLER", "SUBSCRIPTION_CHANGE_RESELLER", "PUBLISH_REQUEST_PENDING_APPROVAL", "APPLICATION_PUBLISHED", "PUBLISH_DENIED", "VENDOR_NOTIFICATION", "VENDOR_REVIEW", "QUESTION_ASKED", "VENDOR_PUBLISH_REQUEST", "NETWORK_APPLICATION_REPUBLISHED", "MANUAL_EVENT_RESOLUTION", "NEW_REPORT_AVAILABLE", "REPORT_GENERATED", "REPORT_SUMMARY", "NEW_REPORT_SPECIFIC_NOTIFICATION", "OFFLINE_ORDER", "OFFLINE_ASSIGNMENT", "PRODUCT_CREDENTIALS", "MOSI_BOOST_FAILURE", "CREST_NEW_ADMIN", "MOSI_NEW_ADMIN", "MOSI_NEW_USER", "MOSI_UPDATE_USERNAME", "MOSI_ORDER_PLACED", "GOOGLE_NEW_ADMIN_USER", "GOOGLE_NEW_USER", "SENDGRID_PURCHASE", "MCAFEE_PURCHASE", "SCALEXTREME_ACCOUNT", "SYMANTEC_CLOUD_NEW_ACCOUNT", "SYMANTEC_CLOUD_OLD_ACCOUNT", "SYMANTEC_EV_CLOUD_NOTIFICATION", "MOZY_NEW_USER", "NORTON_NEW_USER_PC", "WEBEX_NEW_USER", "ASYNCHRONOUS_PRODUCT_PURCHASE_NOTIFICATION", "MARKETPLACE_REQUEST_TO_ADD_PRODUCT", "VENDOR_ADD_REQUEST", "PRODUCT_ADDED", "VENDOR_APPROVED", "AZURE_SYNC_INVITE_NEW_USER", "AZURE_SYNC_INVITE_USER", "DOCUSIGN_PURCHASE", "DOCUSIGN_ASSIGN", "RESELLER_LINKED", "RESELLER_UNLINKED", "RESELLER_SIGNUP_REQUESTED", "RESELLER_SIGNUP_APPROVED", "RESELLER_SIGNUP_DENIED", "TBILL_VALIDATION", "TBILL_APPROVED_USER_NOTIFICATION", "TBILL_REJECTED_USER_NOTIFICATION", "TBILL_APPROVED_CHANNEL_NOTIFICATION", "TBILL_REJECTED_CHANNEL_NOTIFICATION", "TBILL_INVALID_NOTIFICATION", "LEFTRONIC_ACCOUNT_ACTIVATION", "DOMAIN_REGISTRATION_DOMAIN_PURCHASED_NEW", "DOMAIN_REGISTRATION_DOMAIN_PURCHASED_TRANSFER", "DOMAIN_REGISTRATION_DOMAIN_TRANSFER_COMPLETE", "DOMAIN_REGISTRATION_END_OF_CONTRACT", "DOMAIN_REGISTRATION_END_OF_CONTRACT_MANUAL_RENEWAL", "DOMAIN_REGISTRATION_DOMAIN_SUSPENDED", "DOMAIN_REGISTRATION_DOMAIN_CANCELED", "O365_RESET_DOMAIN_USER_PASSWORDS", "SALES_LEAD_CREATED", "SALES_LEAD_ACCEPTED", "SALES_LEAD_DENIED", "SALES_LEAD_ASSIGNED", "SALES_LEAD_WON", "SALES_LEAD_LOST", "LEAD_PRODUCT_CREATED_ADMIN", "LEAD_MANUAL_CREATED_RESELLER", "LEAD_MANUAL_CREATED_DEVELOPER", "LEAD_PRODUCT_CREATED_SSR", "LEAD_REFERRED_COMPANY_SSR", "LEAD_REFERRED_COMPANY_RESELLER", "LEAD_CONVERTED_ADMIN", "LEAD_CONVERTED_SSR", "PRODUCT_PROFILE_LEAD_CREATED", "CUSTOM_AD_HOC", "SALES_OPPORTUNITY_CREATED", "SALES_OPPORTUNITY_APPROVED", "SALES_OPPORTUNITY_DENIED", "RESELLER_PROFILE_PUBLICATION_REQUESTED", "RESELLER_PROFILE_PUBLICATION_REQUEST_CANCELLED", "RESELLER_PROFILE_UNPUBLISHED", "RESELLER_PROFILE_PUBLICATION_APPROVED", "RESELLER_PROFILE_PUBLICATION_DENIED", "MICROSOFT_CREDENTIALS_SENT", "FAILED_CONTRACT", "WHOLESALES_PRICE_END_USER_ACTION_PENDING_PRICE_GRANTED", "WHOLESALE_PRICE_END_USER_ACTION_PENDING_PRICE_GRANTED_BY_SALES_SUPPORT", "WHOLESALE_PRICE_END_USER_ACTION_PENDING_REJECTED", "WHOLESALE_PRICE_END_USER_ACTION_PENDING_REJECTED_BY_CHANNEL", "WHOLESALES_PRICE_RESELLER_ACTION_PENDING_PRICE_REQUESTED", "WHOLESALE_PRICE_SALES_SUPPORT_ACTION_PENDING_PRICE_REQUESTED", "WHOLESALES_PRICE_RESELLER_ACTION_PENDING_PRICE_REQUESTED_FOR_COMPANY_ADMIN", "WHOLESALE_PRICE_RESELLER_ACTION_PENDING_REJECTED_BY_RESELLER_MANAGER", "WHOLESALE_PRICE_SALES_SUPPORT_ACTION_PENDING_REJECTED_BY_CHANNEL_ADMIN", "WHOLESALE_PRICE_RESELLER_ACTION_PENDING_REJECTED_BY_END_USER", "WHOLESALE_PRICE_SALES_SUPPORT_ACTION_PENDING_REJECTED_BY_END_USER", "WHOLESALES_PRICE_RESELLER_ACTION_PENDING_MANAGER_APPROVED", "WHOLESALES_PRICE_RESELLER_MANAGER_ACTION_PENDING_PRICE_REQUESTED", "WHOLESALES_PRICE_RESELLER_MANAGER_ACTION_PENDING_PRICE_REQUESTED_FOR_CHANNEL_ADMIN", "API_ALERT", "WELCOME_USER", "CREDIT_CARD_REQUIRED"]); export const notificationTemplateDefinitionWS = z.object({audience: notificationAudienceType.optional(), category: notificationTemplateCategory.optional(), generated: z.boolean().optional(), methods: z.array(notificationMethodTemplateWS).optional(), reminder: notificationReminderType.optional(), required: z.boolean().optional(), type: notificationTemplateType.optional()}); export const getApiNotificationV1TemplatesDefaultResponse = z.array(notificationTemplateDefinitionWS); 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 }; /** * Read default notification templates available for the current channel. * * GET /notification/v1/templates/default */ export const getApiNotificationV1TemplatesDefault = async (options?: GetApiNotificationV1TemplatesDefaultOptions) => { const {baseUrl = "https://marketplace.appdirect.com/api", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/notification/v1/templates/default${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(getApiNotificationV1TemplatesDefaultResponse, await res.json()) };