import {z} from 'zod' export type ServiceChannelServicesMessagingAssetsAssetLocationNote = {Id?: number | undefined, Header?: string | undefined, Note?: string | undefined}; export type ServiceChannelServicesMessagingAssetsGetFilteredAssetsRequest = {AssetIds?: Array | undefined, AssetStatuses?: Array | undefined, ParentIds?: Array | undefined, LocationIds?: Array | undefined, StoreIds?: Array | undefined, AssetTypes?: Array | undefined, AssetTypeNames?: Array | undefined, RefrigerantTypesIds?: Array | undefined, TradeIds?: Array | undefined, ProviderTrades?: Array | undefined, TagIds?: Array | undefined, ModelNumbers?: Array | undefined, SerialNumbers?: Array | undefined, WorkOrderAreas?: Array | undefined, LeakDetectorIds?: Array | undefined, WarantyExpirationDateFrom?: string | undefined, WarrantyExpirationDateTo?: string | undefined, InstallDeactivatedDateFrom?: string | undefined, InstallDeactivatedDateTo?: string | undefined, DeactivatedDateFrom?: string | undefined, DeactivatedDateTo?: string | undefined, InstallDateFrom?: string | undefined, InstallDateTo?: string | undefined, PurchaseDateFrom?: string | undefined, PurchaseDateTo?: string | undefined, LeaseDateFrom?: string | undefined, LeaseDateTo?: string | undefined, CreatedDateFrom?: string | undefined, CreatedDateTo?: string | undefined, ModifiedDateFrom?: string | undefined, ModifiedDateTo?: string | undefined, SortField?: ('None' | 'AssetType' | 'Trade' | 'Brand' | 'LastUpdatedDate' | 'AssetTag' | 'ModelNo' | 'SerialNo' | 'Location') | undefined, SortDirection?: string | undefined, IsWoDateNecessary?: boolean | undefined, RefrigerantOnly?: boolean | undefined, NonRefrigerantOnly?: boolean | undefined, IncludeDeactivated?: boolean | undefined, DeactivatedOnly?: boolean | undefined, HasCircuits?: boolean | undefined, IsCircuit?: boolean | undefined, HasComponents?: boolean | undefined, IsComponent?: boolean | undefined, HasAssetTag?: boolean | undefined, AttachmentsFlag?: ('Default' | 'WithAttachments' | 'WithoutAttachments') | undefined, ChronicLeakRate?: boolean | undefined, StartIndex?: number | undefined, PageSize?: number | undefined, Conditions?: Array | undefined, AssetUpdatesStatuses?: Array | undefined, SearchAdditionalTrades?: boolean | undefined, IsLeakDetector?: boolean | undefined, IncludeRetiredContracts?: boolean | undefined, SearchByText?: string | undefined, SubscriberId?: number | undefined, AssetTypeGroupIds?: Array | undefined, AssetTags?: Array | undefined, ApplianceTypes?: Array | undefined, RefrigerantSubSectors?: Array | undefined, Districts?: Array | undefined, Regions?: Array | undefined, Countries?: Array | undefined, States?: Array | undefined, LocationNames?: Array | undefined, Cities?: Array | undefined, AssetStatus?: string | undefined, AssetUpdatesStatus?: string | undefined, RecIds?: Array | undefined, UncategorizedOnly?: boolean | undefined, WarrantyStatuses?: Array | undefined, ExternalSubscriberIds?: Array | undefined, ShowOnlyExternalAssets?: boolean | undefined, IncludeTotalCostOfOwnership?: boolean | undefined, AssetValidationStatuses?: Array | undefined, IncludeCustomAttributes?: boolean | undefined, WithoutCircuitsOnly?: boolean | undefined, LocationNotes?: Array | undefined, WithoutAssetTags?: boolean | undefined, SubscriberIds?: Array | undefined, Brands?: Array | undefined}; export type CreateApiAssetsGetfilteredassetsArgs = {body: ServiceChannelServicesMessagingAssetsGetFilteredAssetsRequest}; export type CreateApiAssetsGetfilteredassetsOptions = {baseUrl?: string | undefined, oauth2?: string | undefined, fetch?: typeof fetch | undefined}; export const systemObject = z.object({}); 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 Filtered Assets * * POST /assets/getfilteredassets */ export const createApiAssetsGetfilteredassets = async (args: CreateApiAssetsGetfilteredassetsArgs, options?: CreateApiAssetsGetfilteredassetsOptions) => { const {baseUrl = "https://sb2api.servicechannel.com/v3", fetch: fetchFn = fetch, oauth2} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (oauth2 !== undefined) headers.set('authorization', `Bearer ${oauth2}`) const url = `${baseUrl.replace(/\/+$/, '')}/assets/getfilteredassets${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(systemObject, await res.json()) };