import {z} from 'zod' export type LegacyLabels = Array<'academic' | 'academic-session' | 'agriculture' | 'air-quality' | 'airport' | 'american-football' | 'animal' | 'architecture' | 'arson' | 'ashfall' | 'assassination' | 'attack' | 'attraction' | 'australian-football' | 'auto-racing' | 'automotive' | 'autumn-holiday' | 'avalanche' | 'badminton' | 'bars-closed' | 'bars-open' | 'baseball' | 'basketball' | 'bicycle' | 'biological-hazard' | 'blizzard' | 'bombing' | 'boxing' | 'business' | 'campus' | 'career' | 'chemical' | 'chemical-accident' | 'christmas-holiday' | 'civil' | 'climate-change' | 'closed-doors' | 'clothing' | 'club' | 'coastal-event' | 'cold-wave' | 'comedy' | 'comic' | 'community' | 'concert' | 'conference' | 'construction' | 'corporate' | 'course' | 'craft' | 'cricket' | 'cyclone' | 'daylight-savings' | 'debates' | 'delay' | 'design' | 'digital' | 'disaster' | 'disaster-warning' | 'drought' | 'dust' | 'earthquake' | 'easter-holiday' | 'education' | 'election' | 'entertainment' | 'entertainment-closed' | 'entertainment-open' | 'environment' | 'environment-pollution' | 'epidemic' | 'epidemic-hazard' | 'esports' | 'estimated' | 'exam' | 'execution' | 'explosion' | 'expo' | 'extreme-weather' | 'f1' | 'family' | 'fashion' | 'festival' | 'fighting' | 'fire' | 'flood' | 'fog' | 'food' | 'football' | 'fundraiser' | 'furniture' | 'gaming' | 'golf' | 'graduation' | 'gymnastics' | 'hail' | 'hazardous-surf' | 'hazmat' | 'health' | 'health-warning' | 'heat-wave' | 'hijacking' | 'hockey' | 'holiday' | 'holiday-christian' | 'holiday-hebrew' | 'holiday-hindu' | 'holiday-local' | 'holiday-local-common' | 'holiday-muslim' | 'holiday-national' | 'holiday-observed' | 'holiday-orthodox' | 'holiday-religious' | 'horse-racing' | 'horticulture' | 'hostage-crisis' | 'household' | 'hurricane' | 'hybrid-session' | 'ice-hockey' | 'in-person-session' | 'industrial' | 'indycar' | 'instrument' | 'ironman' | 'jewelry' | 'landslide' | 'local-market' | 'lockdown' | 'lpga' | 'marathon' | 'marine' | 'mass-shooting' | 'medical' | 'mineral' | 'minor-league' | 'mlb' | 'mls' | 'mma' | 'monster-truck' | 'motocross' | 'motogp' | 'movie' | 'music' | 'nascar' | 'natural' | 'nba' | 'nba-gleague' | 'ncaa' | 'nfl' | 'nhl' | 'nuclear' | 'nursing' | 'observance' | 'observance-local' | 'observance-season' | 'observance-united-nations' | 'observance-worldwide' | 'office' | 'olympic' | 'online-session' | 'outdoor' | 'packaging' | 'paper' | 'parade' | 'parliament' | 'performing-arts' | 'personal-care-closed' | 'personal-care-open' | 'pet' | 'pga' | 'plastic' | 'politics' | 'president' | 'print' | 'product' | 'rain' | 'rallies' | 'real-estate' | 'recreation-closed' | 'recreation-open' | 'referendum' | 'religion' | 'research-development' | 'restaurant-closed' | 'restaurant-open' | 'retail-closed' | 'retail-open' | 'rodeo' | 'rugby' | 'running' | 'sales' | 'sand' | 'school' | 'science' | 'seminar' | 'shooting' | 'skating' | 'snow' | 'soccer' | 'social' | 'space' | 'sport' | 'spring-holiday' | 'stabbing' | 'storm' | 'storm-surge' | 'summer-holiday' | 'suspected-attack' | 'suspected-bombing' | 'table-tennis' | 'technology' | 'tennis' | 'terror' | 'thanksgiving-holiday' | 'thunderstorm' | 'tool' | 'tornado' | 'tourism' | 'training' | 'transportation' | 'travel' | 'triathlon' | 'tropical-storm' | 'tsunami' | 'typhoon' | 'vehicle-accident' | 'volcano' | 'volleyball' | 'weather' | 'weather-warning' | 'wedding' | 'wildfire' | 'wind' | 'winter-holiday' | 'wnba' | 'worship-closed' | 'worship-open' | 'wrestling' | 'wwe' | 'youth-sport'>; export type GetApiV1EventsCountArgs = {'active.gte'?: string | undefined, 'active.gt'?: string | undefined, 'active.lte'?: string | undefined, 'active.lt'?: string | undefined, 'active.tz'?: string | undefined, 'beam.analysis_id'?: string | undefined, 'beam.group_id'?: string | undefined, 'brand_unsafe.exclude'?: ('true' | 'false') | undefined, 'cancelled.gte'?: string | undefined, 'cancelled.gt'?: string | undefined, 'cancelled.lte'?: string | undefined, 'cancelled.lt'?: string | undefined, 'cancelled.tz'?: string | undefined, category?: (Array<'academic' | 'school-holidays' | 'public-holidays' | 'observances' | 'politics' | 'conferences' | 'expos' | 'concerts' | 'festivals' | 'performing-arts' | 'sports' | 'community' | 'daylight-savings' | 'airport-delays' | 'severe-weather' | 'disasters' | 'terror' | 'health-warnings'>) | undefined, country?: Array | undefined, deleted_reason?: (Array<'cancelled' | 'invalid' | 'duplicate' | 'postponed'>) | undefined, 'end.gte'?: string | undefined, 'end.gt'?: string | undefined, 'end.lte'?: string | undefined, 'end.lt'?: string | undefined, 'end.tz'?: string | undefined, 'entity.id'?: Array | undefined, 'first_seen.gte'?: string | undefined, 'first_seen.gt'?: string | undefined, 'first_seen.lte'?: string | undefined, 'first_seen.lt'?: string | undefined, 'first_seen.tz'?: string | undefined, id?: Array | undefined, 'impact.gte'?: string | undefined, 'impact.gt'?: string | undefined, 'impact.lte'?: string | undefined, 'impact.lt'?: string | undefined, 'impact.tz'?: string | undefined, 'impact.industry'?: ('accommodation' | 'cpg' | 'tourism' | 'marketing' | 'parking' | 'restaurants' | 'retail' | 'transportation') | undefined, label?: LegacyLabels | undefined, 'local_rank.gte'?: number | undefined, 'local_rank.gt'?: number | undefined, 'local_rank.lte'?: number | undefined, 'local_rank.lt'?: number | undefined, local_rank_level?: (Array<1 | 2 | 3 | 4 | 5>) | undefined, 'location_confidence_score.gte'?: number | undefined, 'location_confidence_score.gt'?: number | undefined, 'location_confidence_score.lte'?: number | undefined, 'location_confidence_score.lt'?: number | undefined, 'parent.include'?: ('true' | 'false' | 'only') | undefined, 'phq_attendance.gte'?: number | undefined, 'phq_attendance.gt'?: number | undefined, 'phq_attendance.lte'?: number | undefined, 'phq_attendance.lt'?: number | undefined, phq_label?: Array | undefined, 'phq_label.op'?: ('all' | 'any') | undefined, 'phq_label.exclude'?: Array | undefined, 'phq_label.exclude.op'?: ('all' | 'any') | undefined, 'place.scope'?: Array | undefined, 'place.exact'?: Array | undefined, placekey?: Array | undefined, 'postponed.gte'?: string | undefined, 'postponed.gt'?: string | undefined, 'postponed.lte'?: string | undefined, 'postponed.lt'?: string | undefined, 'postponed.tz'?: string | undefined, 'predicted_end.gte'?: string | undefined, 'predicted_end.gt'?: string | undefined, 'predicted_end.lte'?: string | undefined, 'predicted_end.lt'?: string | undefined, 'predicted_end.tz'?: string | undefined, 'predicted_event_spend.gte'?: number | undefined, 'predicted_event_spend.gt'?: number | undefined, 'predicted_event_spend.lte'?: number | undefined, 'predicted_event_spend.lt'?: number | undefined, 'predicted_event_spend_industry..'?: number | undefined, 'private.include'?: ('true' | 'false' | 'only') | undefined, 'private.user_id'?: Array | undefined, 'private.org_review'?: (Array<'approved' | 'pending' | 'rejected'>) | undefined, q?: string | undefined, 'rank.gte'?: number | undefined, 'rank.gt'?: number | undefined, 'rank.lte'?: number | undefined, 'rank.lt'?: number | undefined, rank_level?: (Array<1 | 2 | 3 | 4 | 5>) | undefined, 'saved_location.location_id'?: Array | undefined, sort?: (Array<'id' | '-id' | 'title' | '-title' | 'start' | '-start' | 'end' | '-end' | 'first_seen' | '-first_seen' | 'predicted_end' | '-predicted_end' | 'updated' | '-updated' | 'rank' | '-rank' | 'local_rank' | '-local_rank' | 'phq_attendance' | '-phq_attendance' | 'category' | '-category' | 'duration' | '-duration' | 'country' | '-country' | 'labels' | '-labels' | 'predicted_event_spend' | '-predicted_event_spend' | 'predicted_event_spend_industry.accommodation' | '-predicted_event_spend_industry.accommodation' | 'predicted_event_spend_industry.hospitality' | '-predicted_event_spend_industry.hospitality' | 'predicted_event_spend_industry.transportation' | '-predicted_event_spend_industry.transportation'>) | undefined, 'start.gte'?: string | undefined, 'start.gt'?: string | undefined, 'start.lte'?: string | undefined, 'start.lt'?: string | undefined, 'start.tz'?: string | undefined, 'start_date_confidence_score.gte'?: number | undefined, 'start_date_confidence_score.gt'?: number | undefined, 'start_date_confidence_score.lte'?: number | undefined, 'start_date_confidence_score.lt'?: number | undefined, state?: (Array<'active' | 'deleted' | 'predicted'>) | undefined, 'updated.gte'?: string | undefined, 'updated.gt'?: string | undefined, 'updated.lte'?: string | undefined, 'updated.lt'?: string | undefined, 'updated.tz'?: string | undefined, within?: string | undefined}; export type GetApiV1EventsCountOptions = {baseUrl?: string | undefined, BearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; export const rankLevelCounts = z.object({"1": z.number().int().gte(0), "2": z.number().int().gte(0), "3": z.number().int().gte(0), "4": z.number().int().gte(0), "5": z.number().int().gte(0)}); export const eventsCountResponse = z.object({count: z.number().int().gte(0).optional(), top_rank: z.number().int().gte(0).lte(100).optional(), top_local_rank: z.number().int().gte(0).lte(100).optional(), top_aviation_rank: z.number().int().gte(0).lte(100).optional(), rank_levels: rankLevelCounts.optional(), local_rank_levels: rankLevelCounts.optional(), aviation_rank_levels: rankLevelCounts.optional(), categories: z.record(z.string(), z.number().int().gte(1)).optional(), labels: z.record(z.string(), z.number().int().gte(1)).optional(), phq_labels: z.record(z.string(), z.number().int().gte(1)).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 Event Counts * * GET /v1/events/count/ */ export const getApiV1EventsCount = async (args: GetApiV1EventsCountArgs, options?: GetApiV1EventsCountOptions) => { const {baseUrl = "https://api.predicthq.com", fetch: fetchFn = fetch, BearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args['active.gte'] != null) query.append("active.gte", String(args['active.gte'])) if (args['active.gt'] != null) query.append("active.gt", String(args['active.gt'])) if (args['active.lte'] != null) query.append("active.lte", String(args['active.lte'])) if (args['active.lt'] != null) query.append("active.lt", String(args['active.lt'])) if (args['active.tz'] != null) query.append("active.tz", String(args['active.tz'])) if (args['beam.analysis_id'] != null) query.append("beam.analysis_id", String(args['beam.analysis_id'])) if (args['beam.group_id'] != null) query.append("beam.group_id", String(args['beam.group_id'])) if (args['brand_unsafe.exclude'] != null) query.append("brand_unsafe.exclude", String(args['brand_unsafe.exclude'])) if (args['cancelled.gte'] != null) query.append("cancelled.gte", String(args['cancelled.gte'])) if (args['cancelled.gt'] != null) query.append("cancelled.gt", String(args['cancelled.gt'])) if (args['cancelled.lte'] != null) query.append("cancelled.lte", String(args['cancelled.lte'])) if (args['cancelled.lt'] != null) query.append("cancelled.lt", String(args['cancelled.lt'])) if (args['cancelled.tz'] != null) query.append("cancelled.tz", String(args['cancelled.tz'])) if (args.category != null) query.append("category", args.category.join(',')) if (args.country != null) query.append("country", args.country.join(',')) if (args.deleted_reason != null) query.append("deleted_reason", args.deleted_reason.join(',')) if (args['end.gte'] != null) query.append("end.gte", String(args['end.gte'])) if (args['end.gt'] != null) query.append("end.gt", String(args['end.gt'])) if (args['end.lte'] != null) query.append("end.lte", String(args['end.lte'])) if (args['end.lt'] != null) query.append("end.lt", String(args['end.lt'])) if (args['end.tz'] != null) query.append("end.tz", String(args['end.tz'])) if (args['entity.id'] != null) query.append("entity.id", args['entity.id'].join(',')) if (args['first_seen.gte'] != null) query.append("first_seen.gte", String(args['first_seen.gte'])) if (args['first_seen.gt'] != null) query.append("first_seen.gt", String(args['first_seen.gt'])) if (args['first_seen.lte'] != null) query.append("first_seen.lte", String(args['first_seen.lte'])) if (args['first_seen.lt'] != null) query.append("first_seen.lt", String(args['first_seen.lt'])) if (args['first_seen.tz'] != null) query.append("first_seen.tz", String(args['first_seen.tz'])) if (args.id != null) query.append("id", args.id.join(',')) if (args['impact.gte'] != null) query.append("impact.gte", String(args['impact.gte'])) if (args['impact.gt'] != null) query.append("impact.gt", String(args['impact.gt'])) if (args['impact.lte'] != null) query.append("impact.lte", String(args['impact.lte'])) if (args['impact.lt'] != null) query.append("impact.lt", String(args['impact.lt'])) if (args['impact.tz'] != null) query.append("impact.tz", String(args['impact.tz'])) if (args['impact.industry'] != null) query.append("impact.industry", String(args['impact.industry'])) if (args.label != null) query.append("label", args.label.join(',')) if (args['local_rank.gte'] != null) query.append("local_rank.gte", String(args['local_rank.gte'])) if (args['local_rank.gt'] != null) query.append("local_rank.gt", String(args['local_rank.gt'])) if (args['local_rank.lte'] != null) query.append("local_rank.lte", String(args['local_rank.lte'])) if (args['local_rank.lt'] != null) query.append("local_rank.lt", String(args['local_rank.lt'])) if (args.local_rank_level != null) query.append("local_rank_level", args.local_rank_level.join(',')) if (args['location_confidence_score.gte'] != null) query.append("location_confidence_score.gte", String(args['location_confidence_score.gte'])) if (args['location_confidence_score.gt'] != null) query.append("location_confidence_score.gt", String(args['location_confidence_score.gt'])) if (args['location_confidence_score.lte'] != null) query.append("location_confidence_score.lte", String(args['location_confidence_score.lte'])) if (args['location_confidence_score.lt'] != null) query.append("location_confidence_score.lt", String(args['location_confidence_score.lt'])) if (args['parent.include'] != null) query.append("parent.include", String(args['parent.include'])) if (args['phq_attendance.gte'] != null) query.append("phq_attendance.gte", String(args['phq_attendance.gte'])) if (args['phq_attendance.gt'] != null) query.append("phq_attendance.gt", String(args['phq_attendance.gt'])) if (args['phq_attendance.lte'] != null) query.append("phq_attendance.lte", String(args['phq_attendance.lte'])) if (args['phq_attendance.lt'] != null) query.append("phq_attendance.lt", String(args['phq_attendance.lt'])) if (args.phq_label != null) query.append("phq_label", args.phq_label.join(',')) if (args['phq_label.op'] != null) query.append("phq_label.op", String(args['phq_label.op'])) if (args['phq_label.exclude'] != null) query.append("phq_label.exclude", args['phq_label.exclude'].join(',')) if (args['phq_label.exclude.op'] != null) query.append("phq_label.exclude.op", String(args['phq_label.exclude.op'])) if (args['place.scope'] != null) query.append("place.scope", args['place.scope'].join(',')) if (args['place.exact'] != null) query.append("place.exact", args['place.exact'].join(',')) if (args.placekey != null) query.append("placekey", args.placekey.join(',')) if (args['postponed.gte'] != null) query.append("postponed.gte", String(args['postponed.gte'])) if (args['postponed.gt'] != null) query.append("postponed.gt", String(args['postponed.gt'])) if (args['postponed.lte'] != null) query.append("postponed.lte", String(args['postponed.lte'])) if (args['postponed.lt'] != null) query.append("postponed.lt", String(args['postponed.lt'])) if (args['postponed.tz'] != null) query.append("postponed.tz", String(args['postponed.tz'])) if (args['predicted_end.gte'] != null) query.append("predicted_end.gte", String(args['predicted_end.gte'])) if (args['predicted_end.gt'] != null) query.append("predicted_end.gt", String(args['predicted_end.gt'])) if (args['predicted_end.lte'] != null) query.append("predicted_end.lte", String(args['predicted_end.lte'])) if (args['predicted_end.lt'] != null) query.append("predicted_end.lt", String(args['predicted_end.lt'])) if (args['predicted_end.tz'] != null) query.append("predicted_end.tz", String(args['predicted_end.tz'])) if (args['predicted_event_spend.gte'] != null) query.append("predicted_event_spend.gte", String(args['predicted_event_spend.gte'])) if (args['predicted_event_spend.gt'] != null) query.append("predicted_event_spend.gt", String(args['predicted_event_spend.gt'])) if (args['predicted_event_spend.lte'] != null) query.append("predicted_event_spend.lte", String(args['predicted_event_spend.lte'])) if (args['predicted_event_spend.lt'] != null) query.append("predicted_event_spend.lt", String(args['predicted_event_spend.lt'])) if (args['predicted_event_spend_industry..'] != null) query.append("predicted_event_spend_industry..", String(args['predicted_event_spend_industry..'])) if (args['private.include'] != null) query.append("private.include", String(args['private.include'])) if (args['private.user_id'] != null) query.append("private.user_id", args['private.user_id'].join(',')) if (args['private.org_review'] != null) query.append("private.org_review", args['private.org_review'].join(',')) if (args.q != null) query.append("q", String(args.q)) if (args['rank.gte'] != null) query.append("rank.gte", String(args['rank.gte'])) if (args['rank.gt'] != null) query.append("rank.gt", String(args['rank.gt'])) if (args['rank.lte'] != null) query.append("rank.lte", String(args['rank.lte'])) if (args['rank.lt'] != null) query.append("rank.lt", String(args['rank.lt'])) if (args.rank_level != null) query.append("rank_level", args.rank_level.join(',')) if (args['saved_location.location_id'] != null) query.append("saved_location.location_id", args['saved_location.location_id'].join(',')) if (args.sort != null) query.append("sort", args.sort.join(',')) if (args['start.gte'] != null) query.append("start.gte", String(args['start.gte'])) if (args['start.gt'] != null) query.append("start.gt", String(args['start.gt'])) if (args['start.lte'] != null) query.append("start.lte", String(args['start.lte'])) if (args['start.lt'] != null) query.append("start.lt", String(args['start.lt'])) if (args['start.tz'] != null) query.append("start.tz", String(args['start.tz'])) if (args['start_date_confidence_score.gte'] != null) query.append("start_date_confidence_score.gte", String(args['start_date_confidence_score.gte'])) if (args['start_date_confidence_score.gt'] != null) query.append("start_date_confidence_score.gt", String(args['start_date_confidence_score.gt'])) if (args['start_date_confidence_score.lte'] != null) query.append("start_date_confidence_score.lte", String(args['start_date_confidence_score.lte'])) if (args['start_date_confidence_score.lt'] != null) query.append("start_date_confidence_score.lt", String(args['start_date_confidence_score.lt'])) if (args.state != null) query.append("state", args.state.join(',')) if (args['updated.gte'] != null) query.append("updated.gte", String(args['updated.gte'])) if (args['updated.gt'] != null) query.append("updated.gt", String(args['updated.gt'])) if (args['updated.lte'] != null) query.append("updated.lte", String(args['updated.lte'])) if (args['updated.lt'] != null) query.append("updated.lt", String(args['updated.lt'])) if (args['updated.tz'] != null) query.append("updated.tz", String(args['updated.tz'])) if (args.within != null) query.append("within", String(args.within)) if (BearerAuth !== undefined) headers.set('authorization', `Bearer ${BearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/v1/events/count/${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(eventsCountResponse, await res.json()) };