import {z} from 'zod' export type GetApiApiAudiencesAudienceIdUsageArgs = {audienceId: number}; export type GetApiApiAudiencesAudienceIdUsageOptions = {baseUrl: string, fetch?: typeof fetch | undefined}; export const audit = z.object({createdTime: z.string().optional(), modifiedTime: z.string().optional(), modifiedBy: z.string().max(32).optional()}); export const audienceCore = z.object({audit: audit.optional(), audienceId: z.number().int().optional(), membershipId: z.number().int().optional(), name: z.string().optional(), criterionType: z.enum(["AGE", "COMPOUND", "COURSE", "GROUP", "IDENTITY_PROVIDER", "PROFILE_QUESTION", "PROGRAM"]).optional(), criterionOperator: z.enum(["AND", "OR", "EQUALS", "NOT_EQUALS", "GREATER_THAN_OR_EQUALS", "LESS_THAN_OR_EQUALS"]).optional(), criterionValue: z.string().optional(), invalidTime: z.string().optional(), groupDescendantsIncluded: z.boolean().optional(), idpPluginId: z.number().int().optional()}); export const contentLocaleValues = z.object({title: z.string().max(255), subTitle: z.string().max(255).optional(), detail: z.string().optional(), body: z.string().optional(), externalCssUrl: z.string().max(255).optional(), addSubmissionLabel: z.string().max(100).optional()}); export const activityCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), contentLocaleValues)).optional(), contentId: z.number().int().optional(), contentType: z.string().optional(), membershipId: z.number().int().optional(), detail: z.string().optional(), previewing: z.boolean().optional(), subTitle: z.string().optional(), thumbnailImageUuid: z.string().optional(), title: z.string().optional(), keywords: z.string().optional(), body: z.string().optional(), properties: z.record(z.string(), z.object({})).optional(), managerAudienceId: z.number().int().optional(), externalPluginId: z.number().int().optional(), externalId: z.string().optional(), addSubmissionLabel: z.string().optional(), maxSubmissions: z.number().int().optional(), activityAccessCode: z.enum(["ADMIN", "MEMBER", "GUEST", "ANONYMOUS"]).optional(), groupTypeId: z.number().int().optional(), activitySubmissionReviewEnabled: z.boolean().optional(), locale: z.string().optional(), isPublished: z.boolean().optional()}); export const programLocaleValues = z.object({name: z.string().max(100), shortDescription: z.string().max(100).optional(), description: z.string().optional()}); export const programCategoryLocaleValues = z.object({name: z.string().max(80), description: z.string().optional()}); export const programCategoryCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), programCategoryLocaleValues)).optional(), programCategoryId: z.number().int().optional(), membershipId: z.number().int().optional(), typeCode: z.enum(["CERTIFICATION", "CHALLENGE", "MEMBERSHIP", "PASS"]).optional(), name: z.string().optional(), description: z.string().optional(), required: z.boolean().optional(), replacementCode: z.enum(["NONE", "REPLACE_ON_ENROLL", "REPLACE_ON_COMPLETION"]).optional(), downgradePolicyCode: z.enum(["NEVER", "DURING_RENEWAL", "ALWAYS_NO_REFUND", "ALWAYS_REFUND", "ALWAYS_REFUND_LESS_FEES"]).optional(), locale: z.string().optional()}); export const memberCertCore = z.object({audit: audit.optional(), token: z.string().optional(), enrollDate: z.string().optional(), firstEnrollDate: z.string().optional(), startDate: z.string().optional(), earnDate: z.string().optional(), firstEarnDate: z.string().optional(), renewalEligibleDate: z.string().optional(), expireDate: z.string().optional(), failDate: z.string().optional(), endDate: z.string().optional(), creditsEarned: z.number().optional(), pointsEarned: z.number().optional(), status: z.enum(["NOT_STARTED", "IN_PROGRESS", "COMPLETED", "FAILED", "EXPIRED"]).optional(), externalEnrollmentId: z.string().optional(), renewable: z.boolean().optional(), expiresSoon: z.boolean().optional()}); export const certCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), programLocaleValues)).optional(), certId: z.number().int().optional(), membershipId: z.number().int().optional(), typeCode: z.enum(["CERTIFICATION", "CHALLENGE", "MEMBERSHIP", "PASS"]).optional(), name: z.string().optional(), shortDescription: z.string().optional(), description: z.string().optional(), external: z.boolean().optional(), required: z.boolean().optional(), audienceId: z.number().int().optional(), externalPluginId: z.number().int().optional(), externalId: z.string().optional(), externalReferenceId: z.string().optional(), allowAdminEnroll: z.boolean().optional(), allowSelfEnroll: z.boolean().optional(), autoEnrollEnabled: z.boolean().optional(), autoRenewalEnabled: z.boolean().optional(), isOpen: z.boolean().optional(), active: z.boolean().optional(), unlisted: z.boolean().optional(), credits: z.number().optional(), pointsRequired: z.number().optional(), renewalPointsRequired: z.number().optional(), completionStrategy: z.enum(["ALL_PREREQ_COMPLETE", "ANY_PREREQ_COMPLETE", "EARNED_REQUIRED_POINTS"]).optional(), renewalStrategy: z.enum(["ALL_PREREQ_COMPLETE", "ANY_PREREQ_COMPLETE", "EARNED_REQUIRED_POINTS"]).optional(), certificateUuid: z.string().optional(), certificatesEnabled: z.boolean().optional(), enrollmentNotificationsEnabled: z.boolean().optional(), completionNotificationsEnabled: z.boolean().optional(), imageUuid: z.string().optional(), openDate: z.string().optional(), closeDate: z.string().optional(), termIntervalCode: z.enum(["DAY", "WEEK", "MONTH", "YEAR"]).optional(), termIntervalCount: z.number().int().optional(), termStartCode: z.enum(["EARN", "ENROLL", "FIRST_EARN", "FIRST_ENROLL", "ANCHOR", "ANCHOR_MONTH_DAY"]).optional(), expireReminderDays: z.number().int().optional(), earlyRenewalDays: z.number().int().optional(), renewalGracePeriodDays: z.number().int().optional(), renewalAnchorDate: z.string().optional(), renewalAnchorMonth: z.number().int().optional(), renewalAnchorDay: z.number().int().optional(), emailCompletionBody: z.string().optional(), tier: z.number().int().optional(), benefitTypeCode: z.enum(["PHYSICAL", "VIRTUAL", "HYBRID"]).optional(), programCategory: programCategoryCore.optional(), memberCert: memberCertCore.optional(), locale: z.string().optional()}); export const courseCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), contentLocaleValues)).optional(), contentId: z.number().int().optional(), contentType: z.string().optional(), membershipId: z.number().int().optional(), detail: z.string().optional(), previewing: z.boolean().optional(), subTitle: z.string().optional(), thumbnailImageUuid: z.string().optional(), title: z.string().optional(), keywords: z.string().optional(), body: z.string().optional(), properties: z.record(z.string(), z.object({})).optional(), managerAudienceId: z.number().int().optional(), externalPluginId: z.number().int().optional(), externalId: z.string().optional(), externalReferenceId: z.string().optional(), certificateUuid: z.string().optional(), credits: z.number().optional(), courseEmailCompletionBody: z.string().optional(), termIntervalCode: z.enum(["DAY", "WEEK", "MONTH", "YEAR"]).optional(), termIntervalCount: z.number().int().optional(), earlyRenewalDays: z.number().int().optional(), locale: z.string().optional(), certificatesEnabled: z.boolean().optional(), allowAdminEnroll: z.boolean().optional(), allowSelfEnroll: z.boolean().optional(), allowSelfEnrollReset: z.boolean().optional(), enrollmentNotificationsEnabled: z.boolean().optional(), completionNotificationsEnabled: z.boolean().optional(), creditsRepeatable: z.boolean().optional(), isPublished: z.boolean().optional()}); export const evalFormLocaleValues = z.object({title: z.string().max(100).optional(), description: z.string().max(255).optional(), body: z.string().optional()}); export const evalFormCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), evalFormLocaleValues)).optional(), evalFormId: z.number().int().optional(), membershipId: z.number().int().optional(), title: z.string().optional(), description: z.string().optional(), body: z.string().optional(), published: z.boolean().optional(), gradingMethodCode: z.enum(["NONE", "PERCENTAGE", "POINTS"]).optional(), passThresholdValue: z.number().optional(), typeCode: z.literal("GROUP_TYPE").optional(), subjectTypeCode: z.enum(["GROUP", "GROUP_MEMBER", "GROUP_MEMBER_SELF"]).optional(), evaluatorEmailEnabled: z.boolean().optional(), subjectEmailEnabled: z.boolean().optional(), tasksEnabled: z.boolean().optional(), previewEnabled: z.boolean().optional(), descriptionEnabled: z.boolean().optional(), summaryEnabled: z.boolean().optional(), modifyCompletedEvalAllowed: z.boolean().optional(), locale: z.string().optional()}); export const audiencePromoLocaleValues = z.object({actionText: z.string().optional()}); export const eventLocaleValues = z.object({title: z.string().max(100), description: z.string().max(255).optional(), body: z.string().optional(), location: z.string().max(255).optional(), contactLabel: z.string().max(100).optional(), audiencePromo: audiencePromoLocaleValues.optional()}); export const eventSeriesFull = z.object({audit: audit.optional(), eventSeriesId: z.number().int().optional(), period: z.enum(["DAILY", "WEEKLY"]).optional(), stepSize: z.number().int().optional(), endDate: z.string().optional(), endCount: z.number().int().optional()}); export const audiencePromo = z.object({contentId: z.number().int().optional(), actionText: z.string().max(40).optional(), localizedValues: audiencePromoLocaleValues.optional()}); export const eventSlim = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), eventLocaleValues)).optional(), eventId: z.number().int().optional(), membershipId: z.number().int().optional(), attendanceTypeCode: z.enum(["IN_PERSON", "VIRTUAL"]).optional(), registrationTypeCode: z.enum(["OPEN", "REGISTRATION", "REGISTRATION_WITH_RSVP", "TICKETED"]).optional(), eventSeries: eventSeriesFull.optional(), title: z.string().optional(), description: z.string().optional(), body: z.string().optional(), externalBody: z.string().optional(), location: z.string().optional(), startDateTime: z.string().optional(), endDateTime: z.string().optional(), registrationOpenDateTime: z.string().optional(), registrationCloseDateTime: z.string().optional(), timeZoneId: z.string().optional(), allDay: z.boolean().optional(), credits: z.number().optional(), published: z.boolean().optional(), unlisted: z.boolean().optional(), allowViewRegistrations: z.boolean().optional(), registrationTicketingEnabled: z.boolean().optional(), dependentRegistrationEnabled: z.boolean().optional(), cancelled: z.boolean().optional(), external: z.boolean().optional(), imageUuid: z.string().optional(), contactLabel: z.string().optional(), contactUrl: z.string().optional(), audienceId: z.number().int().optional(), audiencePromo: audiencePromo.optional(), reminder1Minutes: z.number().int().optional(), reminder2Minutes: z.number().int().optional(), emailRemindersEnabled: z.boolean().optional(), registrationsMax: z.number().int().optional(), registrationsMaxWarningThreshold: z.number().int().optional(), previewing: z.boolean().optional(), locale: z.string().optional()}); export const notificationCore = z.object({audit: audit.optional(), notificationId: z.number().int().optional(), membershipId: z.number().int().optional(), typeCode: z.enum(["EVENT", "GROUP", "MEMBER", "ORG"]).optional(), bodyHtml: z.string().optional(), bodyText: z.string().optional(), notificationStatusId: z.number().int().optional(), subject: z.string().optional(), previewText: z.string().optional(), replyToEmail: z.string().optional(), senderName: z.string().optional(), imageUuid: z.string().optional(), linkLabel: z.string().optional(), linkUrl: z.string().optional(), triggerTime: z.string().optional(), targetTime: z.string().optional(), eventNonRegistrantsIncluded: z.boolean().optional(), message: z.string().optional(), sendEmail: z.boolean().optional(), sendPush: z.boolean().optional(), sendSms: z.boolean().optional()}); export const pageLocaleValues = z.object({detail: z.string().optional(), body: z.string().optional(), shortTitle: z.string().max(40).optional(), subTitle: z.string().max(255).optional(), title: z.string().max(255), audiencePromo: audiencePromoLocaleValues.optional(), externalCssUrl: z.string().max(255).optional()}); export const pageCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), pageLocaleValues)).optional(), pageId: z.number().int().optional(), membershipId: z.number().int().optional(), token: z.string().optional(), typeCode: z.enum(["BLOCK", "BOOK", "PAGE", "SPLASH"]).optional(), sharedMembershipId: z.number().int().optional(), sharedPageId: z.number().int().optional(), title: z.string().optional(), subTitle: z.string().optional(), shortTitle: z.string().optional(), detail: z.string().optional(), body: z.string().optional(), slug: z.string().optional(), publishStartDate: z.string().optional(), publishEndDate: z.string().optional(), external: z.boolean().optional(), previewing: z.boolean().optional(), defaultViewType: z.string().optional(), defaultSort: z.enum(["ALPHABETICAL", "REVERSE_CHRONOLOGICAL", "PRIORITY"]).optional(), parentPageId: z.number().int().optional(), priority: z.number().int().optional(), coverImageUuid: z.string().optional(), thumbnailImageUuid: z.string().optional(), coverVideoUrl: z.string().optional(), externalPluginId: z.number().int().optional(), externalId: z.string().optional(), sponsorId: z.number().int().optional(), audienceId: z.number().int().optional(), audiencePromo: audiencePromo.optional(), splashDisplayMax: z.number().int().optional(), externalCssUrl: z.string().optional(), locale: z.string().optional(), isPublished: z.boolean().optional(), isPrivate: z.boolean().optional()}); export const profileSectionLocaleValues = z.object({name: z.string().max(100).optional(), description: z.string().optional()}); export const profileSectionCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), profileSectionLocaleValues)).optional(), profileSectionId: z.number().int().optional(), membershipId: z.number().int().optional(), name: z.string().optional(), description: z.string().optional(), seq: z.number().int().optional(), external: z.boolean().optional(), idpPluginId: z.number().int().optional(), locale: z.string().optional()}); export const productCore = z.object({audit: audit.optional(), productId: z.number().int().optional(), membershipId: z.number().int().optional(), name: z.string().optional(), detail: z.string().optional(), currency: z.enum(["AED", "ARS", "AUD", "CAD", "CHF", "CLP", "CNY", "EUR", "GBP", "INR", "JPY", "KRW", "MYR", "NZD", "PKR", "SGD", "USD", "ZAR"]).optional(), price: z.number().int().optional(), imageUuid: z.string().optional(), typeCode: z.enum(["CERT", "COURSE", "EVENT"]).optional(), salesStartTime: z.string().optional(), salesEndTime: z.string().optional(), eventCheckInStartTime: z.string().optional(), eventCheckInEndTime: z.string().optional(), availableForSale: z.boolean().optional(), availableForCheckIn: z.boolean().optional(), active: z.boolean().optional(), recurring: z.boolean().optional(), recurringInterval: z.enum(["DAY", "WEEK", "MONTH", "YEAR"]).optional(), recurringIntervalCount: z.number().int().optional(), allowProrate: z.boolean().optional(), taxEnabled: z.boolean().optional(), taxCode: z.string().optional(), enrollmentScopeCode: z.enum(["ENROLL", "ENROLL_AND_RENEW", "RENEW"]).optional(), audiencePromo: audiencePromo.optional(), previewing: z.boolean().optional(), programScopeCode: z.enum(["ENROLL", "ENROLL_AND_RENEW", "RENEW"]).optional()}); export const resourceCore = z.object({audit: audit.optional(), alternateLocales: z.object({empty: z.boolean().optional()}).and(z.record(z.string(), contentLocaleValues)).optional(), contentId: z.number().int().optional(), contentType: z.string().optional(), membershipId: z.number().int().optional(), detail: z.string().optional(), previewing: z.boolean().optional(), subTitle: z.string().optional(), thumbnailImageUuid: z.string().optional(), title: z.string().optional(), keywords: z.string().optional(), body: z.string().optional(), properties: z.record(z.string(), z.object({})).optional(), managerAudienceId: z.number().int().optional(), externalPluginId: z.number().int().optional(), externalId: z.string().optional(), durationMins: z.number().int().optional(), externalCssUrl: z.string().optional(), locale: z.string().optional(), isPublished: z.boolean().optional()}); export const audienceUsage = z.object({parents: z.array(audienceCore).optional(), activities: z.array(activityCore).optional(), certs: z.array(certCore).optional(), courses: z.array(courseCore).optional(), evalForms: z.array(evalFormCore).optional(), events: z.array(eventSlim).optional(), notifications: z.array(notificationCore).optional(), pages: z.array(pageCore).optional(), profileSections: z.array(profileSectionCore).optional(), products: z.array(productCore).optional(), resources: z.array(resourceCore).optional()}); export const audienceUsageResponse = z.object({success: z.boolean().optional(), error: z.string().optional(), usage: audienceUsage.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 usage information for a specific audience. Roles: admin. * * GET /api/audiences/{audienceId}/usage */ export const getApiApiAudiencesAudienceIdUsage = async (args: GetApiApiAudiencesAudienceIdUsageArgs, options: GetApiApiAudiencesAudienceIdUsageOptions) => { const {baseUrl, fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/api/audiences/${encodeURIComponent(String(args.audienceId))}/usage${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(audienceUsageResponse, await res.json()) };