/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; import { remap as remap$ } from "../../lib/primitives.js"; import { safeParse } from "../../lib/schemas.js"; import { ClosedEnum } from "../../types/enums.js"; import { Result as SafeParseResult } from "../../types/fp.js"; import { SDKValidationError } from "../errors/sdkvalidationerror.js"; /** * The dimension to group traffic data by. */ export const GetAnalyticsWebinarsWebinarIdTrafficGroupBy = { UtmCampaign: "utm_campaign", UtmSource: "utm_source", UtmMedium: "utm_medium", ReferrerDomain: "referrer_domain", } as const; /** * The dimension to group traffic data by. */ export type GetAnalyticsWebinarsWebinarIdTrafficGroupBy = ClosedEnum< typeof GetAnalyticsWebinarsWebinarIdTrafficGroupBy >; /** * The metric to sort results by. */ export const GetAnalyticsWebinarsWebinarIdTrafficSortBy = { Registrations: "registrations", Attendees: "attendees", Impressions: "impressions", } as const; /** * The metric to sort results by. */ export type GetAnalyticsWebinarsWebinarIdTrafficSortBy = ClosedEnum< typeof GetAnalyticsWebinarsWebinarIdTrafficSortBy >; /** * The sort direction. */ export const GetAnalyticsWebinarsWebinarIdTrafficSortDirection = { Asc: "asc", Desc: "desc", } as const; /** * The sort direction. */ export type GetAnalyticsWebinarsWebinarIdTrafficSortDirection = ClosedEnum< typeof GetAnalyticsWebinarsWebinarIdTrafficSortDirection >; export type GetAnalyticsWebinarsWebinarIdTrafficRequest = { /** * The hashed ID of the webinar. */ webinarId: string; /** * The dimension to group traffic data by. */ groupBy: GetAnalyticsWebinarsWebinarIdTrafficGroupBy; /** * The metric to sort results by. */ sortBy?: GetAnalyticsWebinarsWebinarIdTrafficSortBy | undefined; /** * The sort direction. */ sortDirection?: GetAnalyticsWebinarsWebinarIdTrafficSortDirection | undefined; }; /** * Each item contains the group_by field and associated metrics. */ export type GetAnalyticsWebinarsWebinarIdTrafficResponse = { /** * The UTM campaign value (present when group_by is utm_campaign). */ utmCampaign?: string | undefined; /** * The UTM source value (present when group_by is utm_source). */ utmSource?: string | undefined; /** * The UTM medium value (present when group_by is utm_medium). */ utmMedium?: string | undefined; /** * The referrer domain (present when group_by is referrer_domain). */ referrerDomain?: string | undefined; /** * The number of registrations from this traffic source. */ registrations?: number | undefined; /** * The number of attendees from this traffic source. */ attendees?: number | undefined; /** * The number of registration page impressions from this traffic source. */ impressions?: number | undefined; }; /** @internal */ export const GetAnalyticsWebinarsWebinarIdTrafficGroupBy$outboundSchema: z.ZodNativeEnum = z .nativeEnum(GetAnalyticsWebinarsWebinarIdTrafficGroupBy); /** @internal */ export const GetAnalyticsWebinarsWebinarIdTrafficSortBy$outboundSchema: z.ZodNativeEnum = z .nativeEnum(GetAnalyticsWebinarsWebinarIdTrafficSortBy); /** @internal */ export const GetAnalyticsWebinarsWebinarIdTrafficSortDirection$outboundSchema: z.ZodNativeEnum = z .nativeEnum(GetAnalyticsWebinarsWebinarIdTrafficSortDirection); /** @internal */ export type GetAnalyticsWebinarsWebinarIdTrafficRequest$Outbound = { webinarId: string; group_by: string; sort_by: string; sort_direction: string; }; /** @internal */ export const GetAnalyticsWebinarsWebinarIdTrafficRequest$outboundSchema: z.ZodType< GetAnalyticsWebinarsWebinarIdTrafficRequest$Outbound, z.ZodTypeDef, GetAnalyticsWebinarsWebinarIdTrafficRequest > = z.object({ webinarId: z.string(), groupBy: GetAnalyticsWebinarsWebinarIdTrafficGroupBy$outboundSchema, sortBy: GetAnalyticsWebinarsWebinarIdTrafficSortBy$outboundSchema.default( "registrations", ), sortDirection: GetAnalyticsWebinarsWebinarIdTrafficSortDirection$outboundSchema.default( "desc", ), }).transform((v) => { return remap$(v, { groupBy: "group_by", sortBy: "sort_by", sortDirection: "sort_direction", }); }); export function getAnalyticsWebinarsWebinarIdTrafficRequestToJSON( getAnalyticsWebinarsWebinarIdTrafficRequest: GetAnalyticsWebinarsWebinarIdTrafficRequest, ): string { return JSON.stringify( GetAnalyticsWebinarsWebinarIdTrafficRequest$outboundSchema.parse( getAnalyticsWebinarsWebinarIdTrafficRequest, ), ); } /** @internal */ export const GetAnalyticsWebinarsWebinarIdTrafficResponse$inboundSchema: z.ZodType< GetAnalyticsWebinarsWebinarIdTrafficResponse, z.ZodTypeDef, unknown > = z.object({ utm_campaign: z.string().optional(), utm_source: z.string().optional(), utm_medium: z.string().optional(), referrer_domain: z.string().optional(), registrations: z.number().int().optional(), attendees: z.number().int().optional(), impressions: z.number().int().optional(), }).transform((v) => { return remap$(v, { "utm_campaign": "utmCampaign", "utm_source": "utmSource", "utm_medium": "utmMedium", "referrer_domain": "referrerDomain", }); }); export function getAnalyticsWebinarsWebinarIdTrafficResponseFromJSON( jsonString: string, ): SafeParseResult< GetAnalyticsWebinarsWebinarIdTrafficResponse, SDKValidationError > { return safeParse( jsonString, (x) => GetAnalyticsWebinarsWebinarIdTrafficResponse$inboundSchema.parse( JSON.parse(x), ), `Failed to parse 'GetAnalyticsWebinarsWebinarIdTrafficResponse' from JSON`, ); }