import {z} from 'zod' export type DeleteApiApiV11FacetIdArgs = {id: number, 'X-HawkSearch-ApiKey': string}; export type DeleteApiApiV11FacetIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const apiFacetRangeModel = z.object({RangeId: z.number().int().optional(), Name: z.string(), LBound: z.string().optional(), UBound: z.string().optional(), SortOrder: z.number().int(), AssetName: z.string().optional(), AssetUrl: z.string().optional()}); export const facetValueOrderInfo = z.object({Value: z.string().optional(), SortOrder: z.number().int().optional()}); export const facetBoostBury = z.object({BoostValues: z.array(facetValueOrderInfo).optional(), BuryValues: z.array(facetValueOrderInfo).optional()}); export const facetModel = z.object({SyncGuid: z.string().optional(), FacetId: z.number().int().optional(), Name: z.string(), FacetType: z.string(), FieldType: z.string(), MaxCount: z.number().int(), MinHitCount: z.number().int(), Field: z.string(), Param: z.string().optional(), DisplayType: z.string(), ScrollHeight: z.number().int(), ScrollThreshold: z.number().int(), TruncateThreshold: z.number().int(), SearchThreshold: z.number().int(), SortOrder: z.number().int(), ExpandSelection: z.boolean(), IsCurrency: z.boolean(), IsNumeric: z.boolean(), IsSearch: z.boolean(), IsVisible: z.boolean(), UBound: z.string().optional(), LBound: z.string().optional(), Increment: z.string().optional(), NofVisible: z.number().int().optional(), Height: z.number().int().optional(), DisplayRuleXML: z.string().optional(), SortBy: z.string().optional(), ParentId: z.number().int().optional(), IsCollapsible: z.boolean(), IsCollapsedDefault: z.boolean(), SwatchData: z.string().optional(), FacetRangeDisplayType: z.number().int().optional(), PreloadChildren: z.boolean().optional(), Tooltip: z.string().optional(), ShowSliderInputs: z.boolean(), ShowFacetImageCount: z.boolean().optional(), FacetRanges: z.array(apiFacetRangeModel).optional(), Tags: z.string().optional(), CreateDate: z.string().optional(), ModifyDate: z.string().optional(), BoostBury: facetBoostBury.optional(), ListName: z.string().optional(), NumericPrecision: z.number().int().optional(), CurrencySymbol: z.string().optional(), DefaultItemType: z.string().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 }; /** * Delete facet by id * * DELETE /api/v11/Facet/{id} */ export const deleteApiApiV11FacetId = async (args: DeleteApiApiV11FacetIdArgs, options?: DeleteApiApiV11FacetIdOptions) => { const {baseUrl = "https://indexing-dev.hawksearch.net", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") if (args['X-HawkSearch-ApiKey'] != null) headers.set("X-HawkSearch-ApiKey", String(args['X-HawkSearch-ApiKey'])) const url = `${baseUrl.replace(/\/+$/, '')}/api/v11/Facet/${encodeURIComponent(String(args.id))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "DELETE", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(facetModel, await res.json()) };