/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v4-mini"; import { remap as remap$ } from "../../lib/primitives.js"; import { ClosedEnum } from "../../types/enums.js"; import { FilterCondition, FilterCondition$Outbound, FilterCondition$outboundSchema, } from "./filter-condition.js"; import { SortCondition, SortCondition$Outbound, SortCondition$outboundSchema, } from "./sort-condition.js"; import { Status, Status$outboundSchema } from "./status.js"; export const FeatureFilterOrder = { Asc: "asc", Desc: "desc", } as const; export type FeatureFilterOrder = ClosedEnum; export type FeatureFilter = { endTime?: Date | undefined; expand?: string | undefined; /** * Feature specific filters */ featureIds?: Array | undefined; /** * filters allows complex filtering based on multiple fields */ filters?: Array | undefined; limit?: number | undefined; lookupKey?: string | undefined; lookupKeys?: Array | undefined; meterIds?: Array | undefined; nameContains?: string | undefined; offset?: number | undefined; order?: FeatureFilterOrder | undefined; sort?: Array | undefined; startTime?: Date | undefined; status?: Status | undefined; }; /** @internal */ export const FeatureFilterOrder$outboundSchema: z.ZodMiniEnum< typeof FeatureFilterOrder > = z.enum(FeatureFilterOrder); /** @internal */ export type FeatureFilter$Outbound = { end_time?: string | undefined; expand?: string | undefined; feature_ids?: Array | undefined; filters?: Array | undefined; limit?: number | undefined; lookup_key?: string | undefined; lookup_keys?: Array | undefined; meter_ids?: Array | undefined; name_contains?: string | undefined; offset?: number | undefined; order?: string | undefined; sort?: Array | undefined; start_time?: string | undefined; status?: string | undefined; }; /** @internal */ export const FeatureFilter$outboundSchema: z.ZodMiniType< FeatureFilter$Outbound, FeatureFilter > = z.pipe( z.object({ endTime: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), expand: z.optional(z.string()), featureIds: z.optional(z.array(z.string())), filters: z.optional(z.array(FilterCondition$outboundSchema)), limit: z.optional(z.int()), lookupKey: z.optional(z.string()), lookupKeys: z.optional(z.array(z.string())), meterIds: z.optional(z.array(z.string())), nameContains: z.optional(z.string()), offset: z.optional(z.int()), order: z.optional(FeatureFilterOrder$outboundSchema), sort: z.optional(z.array(SortCondition$outboundSchema)), startTime: z.optional(z.pipe(z.date(), z.transform(v => v.toISOString()))), status: z.optional(Status$outboundSchema), }), z.transform((v) => { return remap$(v, { endTime: "end_time", featureIds: "feature_ids", lookupKey: "lookup_key", lookupKeys: "lookup_keys", meterIds: "meter_ids", nameContains: "name_contains", startTime: "start_time", }); }), ); export function featureFilterToJSON(featureFilter: FeatureFilter): string { return JSON.stringify(FeatureFilter$outboundSchema.parse(featureFilter)); }