import {z} from 'zod' export type ObjectIDFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Includes', value: Array}; export type DateFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'GreaterThan', value: string} | {_type: 'LessThan', value: string} | {_type: 'GreaterThanOrEqual', value: string} | {_type: 'LessThanOrEqual', value: string} | {_type: 'InBetween', startValue: string, endValue: string}; export type ShortTextFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Search', value: string} | {_type: 'Includes', value: Array}; export type SlugFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Includes', value: Array}; export type LongTextFilter = string | {_type: 'EqualTo', value: string} | {_type: 'NotEqual', value: string} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string} | {_type: 'Search', value: string} | {_type: 'Includes', value: Array}; export type JSONFilter = {_type: 'IsNull'} | {_type: 'NotNull'} | {[key: string]: string | number | boolean | {_type: 'EqualTo', value: string | number | boolean} | {_type: 'NotEqual', value: string | number | boolean} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: string | number | boolean} | {_type: 'Search', value: string} | {_type: 'Includes', value: Array} | {_type: 'GreaterThan', value: string | number | boolean} | {_type: 'LessThan', value: string | number | boolean} | {_type: 'GreaterThanOrEqual', value: string | number | boolean} | {_type: 'LessThanOrEqual', value: string | number | boolean} | {_type: 'InBetween', startValue: string | number | boolean, endValue: string | number | boolean}}; export type BooleanFilter = boolean | {_type: 'EqualTo', value: boolean} | {_type: 'NotEqual', value: boolean} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: boolean}; export type NumberFilter = number | {_type: 'EqualTo', value: number} | {_type: 'NotEqual', value: number} | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'EqualToOrNull', value: number} | {_type: 'GreaterThan', value: number} | {_type: 'LessThan', value: number} | {_type: 'GreaterThanOrEqual', value: number} | {_type: 'LessThanOrEqual', value: number} | {_type: 'InBetween', startValue: number, endValue: number}; export type EntityArrayFilter = Array | {_type: 'IsNull'} | {_type: 'NotNull'} | {_type: 'Includes', value: Array}; export type NetworkDeviceQuerySchema = {_id?: ObjectIDFilter | undefined, createdAt?: DateFilter | undefined, updatedAt?: DateFilter | undefined, deletedAt?: DateFilter | undefined, projectId?: ObjectIDFilter | undefined, name?: ShortTextFilter | undefined, slug?: SlugFilter | undefined, description?: LongTextFilter | undefined, hostname?: ShortTextFilter | undefined, dnsName?: LongTextFilter | undefined, otherAddresses?: LongTextFilter | undefined, discoveredName?: ShortTextFilter | undefined, discoveredNameSource?: ShortTextFilter | undefined, discoveredDetails?: JSONFilter | undefined, macAddress?: ShortTextFilter | undefined, isMacAddressLearned?: BooleanFilter | undefined, probeId?: ObjectIDFilter | undefined, siteId?: ObjectIDFilter | undefined, oidTemplateId?: ObjectIDFilter | undefined, snmpCredentialProfileId?: ObjectIDFilter | undefined, currentMonitorStatusId?: ObjectIDFilter | undefined, monitoringMethod?: ShortTextFilter | undefined, deviceRole?: ShortTextFilter | undefined, networkDeviceRoleId?: ObjectIDFilter | undefined, monitorId?: ObjectIDFilter | undefined, snmpVersion?: ShortTextFilter | undefined, snmpCommunityString?: ShortTextFilter | undefined, snmpPort?: NumberFilter | undefined, snmpV3Auth?: JSONFilter | undefined, snmpV3SecurityLevel?: ShortTextFilter | undefined, snmpV3Username?: ShortTextFilter | undefined, snmpV3AuthProtocol?: ShortTextFilter | undefined, snmpV3AuthKey?: LongTextFilter | undefined, snmpV3PrivProtocol?: ShortTextFilter | undefined, snmpV3PrivKey?: LongTextFilter | undefined, isPollingEnabled?: BooleanFilter | undefined, pollingIntervalInMinutes?: NumberFilter | undefined, walkInterfaces?: BooleanFilter | undefined, collectEndpoints?: BooleanFilter | undefined, snmpOids?: JSONFilter | undefined, snmpTables?: JSONFilter | undefined, autoApplyVendorHealthTemplate?: BooleanFilter | undefined, nextPollAt?: DateFilter | undefined, lastWalkLog?: JSONFilter | undefined, sysDescr?: LongTextFilter | undefined, sysName?: ShortTextFilter | undefined, sysObjectId?: ShortTextFilter | undefined, sysLocation?: ShortTextFilter | undefined, sysContact?: ShortTextFilter | undefined, vendor?: ShortTextFilter | undefined, deviceModel?: ShortTextFilter | undefined, serialNumber?: ShortTextFilter | undefined, firmwareVersion?: ShortTextFilter | undefined, softwareVersion?: ShortTextFilter | undefined, lastRebootedAt?: DateFilter | undefined, cdpNeighbors?: JSONFilter | undefined, lldpNeighbors?: JSONFilter | undefined, snmpTableSnapshot?: JSONFilter | undefined, transceiverSnapshot?: JSONFilter | undefined, lastSeenAt?: DateFilter | undefined, lastPolledAt?: DateFilter | undefined, isReachable?: BooleanFilter | undefined, isSnmpReachable?: BooleanFilter | undefined, lastSnmpSeenAt?: DateFilter | undefined, refreshRequestedAt?: DateFilter | undefined, interfacesTotal?: NumberFilter | undefined, interfacesUp?: NumberFilter | undefined, interfacesDown?: NumberFilter | undefined, createdByUserId?: ObjectIDFilter | undefined, isArchived?: BooleanFilter | undefined, archivedAt?: DateFilter | undefined, archivedByUserId?: ObjectIDFilter | undefined, deletedByUserId?: ObjectIDFilter | undefined, labels?: EntityArrayFilter | undefined}; export type LabelRelationSelectSchema = {_id?: boolean | undefined, createdAt?: boolean | undefined, updatedAt?: boolean | undefined, deletedAt?: boolean | undefined, name?: boolean | undefined, projectId?: boolean | undefined, color?: boolean | undefined, isArchived?: boolean | undefined}; export type NetworkDeviceSelectSchema = {_id?: boolean | undefined, createdAt?: boolean | undefined, updatedAt?: boolean | undefined, deletedAt?: boolean | undefined, projectId?: boolean | undefined, name?: boolean | undefined, slug?: boolean | undefined, description?: boolean | undefined, hostname?: boolean | undefined, dnsName?: boolean | undefined, otherAddresses?: boolean | undefined, discoveredName?: boolean | undefined, discoveredNameSource?: boolean | undefined, discoveredDetails?: boolean | undefined, macAddress?: boolean | undefined, isMacAddressLearned?: boolean | undefined, probeId?: boolean | undefined, siteId?: boolean | undefined, oidTemplateId?: boolean | undefined, snmpCredentialProfileId?: boolean | undefined, currentMonitorStatusId?: boolean | undefined, monitoringMethod?: boolean | undefined, deviceRole?: boolean | undefined, networkDeviceRoleId?: boolean | undefined, monitorId?: boolean | undefined, snmpVersion?: boolean | undefined, snmpCommunityString?: boolean | undefined, snmpPort?: boolean | undefined, snmpV3Auth?: boolean | undefined, snmpV3SecurityLevel?: boolean | undefined, snmpV3Username?: boolean | undefined, snmpV3AuthProtocol?: boolean | undefined, snmpV3AuthKey?: boolean | undefined, snmpV3PrivProtocol?: boolean | undefined, snmpV3PrivKey?: boolean | undefined, isPollingEnabled?: boolean | undefined, pollingIntervalInMinutes?: boolean | undefined, walkInterfaces?: boolean | undefined, collectEndpoints?: boolean | undefined, snmpOids?: boolean | undefined, snmpTables?: boolean | undefined, autoApplyVendorHealthTemplate?: boolean | undefined, nextPollAt?: boolean | undefined, lastWalkLog?: boolean | undefined, sysDescr?: boolean | undefined, sysName?: boolean | undefined, sysObjectId?: boolean | undefined, sysLocation?: boolean | undefined, sysContact?: boolean | undefined, vendor?: boolean | undefined, deviceModel?: boolean | undefined, serialNumber?: boolean | undefined, firmwareVersion?: boolean | undefined, softwareVersion?: boolean | undefined, lastRebootedAt?: boolean | undefined, cdpNeighbors?: boolean | undefined, lldpNeighbors?: boolean | undefined, snmpTableSnapshot?: boolean | undefined, transceiverSnapshot?: boolean | undefined, lastSeenAt?: boolean | undefined, lastPolledAt?: boolean | undefined, isReachable?: boolean | undefined, isSnmpReachable?: boolean | undefined, lastSnmpSeenAt?: boolean | undefined, refreshRequestedAt?: boolean | undefined, interfacesTotal?: boolean | undefined, interfacesUp?: boolean | undefined, interfacesDown?: boolean | undefined, createdByUserId?: boolean | undefined, isArchived?: boolean | undefined, archivedAt?: boolean | undefined, archivedByUserId?: boolean | undefined, deletedByUserId?: boolean | undefined, labels?: LabelRelationSelectSchema | undefined}; export type SortOrder = 'ASC' | 'DESC'; export type NetworkDeviceSortSchema = {_id?: SortOrder | undefined, createdAt?: SortOrder | undefined, updatedAt?: SortOrder | undefined, deletedAt?: SortOrder | undefined, projectId?: SortOrder | undefined, name?: SortOrder | undefined, slug?: SortOrder | undefined, description?: SortOrder | undefined, hostname?: SortOrder | undefined, dnsName?: SortOrder | undefined, otherAddresses?: SortOrder | undefined, discoveredName?: SortOrder | undefined, discoveredNameSource?: SortOrder | undefined, macAddress?: SortOrder | undefined, isMacAddressLearned?: SortOrder | undefined, probeId?: SortOrder | undefined, siteId?: SortOrder | undefined, oidTemplateId?: SortOrder | undefined, snmpCredentialProfileId?: SortOrder | undefined, currentMonitorStatusId?: SortOrder | undefined, monitoringMethod?: SortOrder | undefined, deviceRole?: SortOrder | undefined, networkDeviceRoleId?: SortOrder | undefined, monitorId?: SortOrder | undefined, snmpVersion?: SortOrder | undefined, snmpCommunityString?: SortOrder | undefined, snmpPort?: SortOrder | undefined, snmpV3SecurityLevel?: SortOrder | undefined, snmpV3Username?: SortOrder | undefined, snmpV3AuthProtocol?: SortOrder | undefined, snmpV3AuthKey?: SortOrder | undefined, snmpV3PrivProtocol?: SortOrder | undefined, snmpV3PrivKey?: SortOrder | undefined, isPollingEnabled?: SortOrder | undefined, pollingIntervalInMinutes?: SortOrder | undefined, walkInterfaces?: SortOrder | undefined, collectEndpoints?: SortOrder | undefined, autoApplyVendorHealthTemplate?: SortOrder | undefined, nextPollAt?: SortOrder | undefined, sysDescr?: SortOrder | undefined, sysName?: SortOrder | undefined, sysObjectId?: SortOrder | undefined, sysLocation?: SortOrder | undefined, sysContact?: SortOrder | undefined, vendor?: SortOrder | undefined, deviceModel?: SortOrder | undefined, serialNumber?: SortOrder | undefined, firmwareVersion?: SortOrder | undefined, softwareVersion?: SortOrder | undefined, lastRebootedAt?: SortOrder | undefined, lastSeenAt?: SortOrder | undefined, lastPolledAt?: SortOrder | undefined, isReachable?: SortOrder | undefined, isSnmpReachable?: SortOrder | undefined, lastSnmpSeenAt?: SortOrder | undefined, refreshRequestedAt?: SortOrder | undefined, interfacesTotal?: SortOrder | undefined, interfacesUp?: SortOrder | undefined, interfacesDown?: SortOrder | undefined, createdByUserId?: SortOrder | undefined, isArchived?: SortOrder | undefined, archivedAt?: SortOrder | undefined, archivedByUserId?: SortOrder | undefined, deletedByUserId?: SortOrder | undefined}; export type CreateApiNetworkDeviceGetListArgs = {body: {query?: NetworkDeviceQuerySchema | undefined, select?: NetworkDeviceSelectSchema | undefined, sort?: NetworkDeviceSortSchema | undefined, limit?: number | undefined, skip?: number | undefined}}; export type CreateApiNetworkDeviceGetListOptions = {baseUrl?: string | undefined, ApiKey?: string | undefined, fetch?: typeof fetch | undefined}; export const networkDevice = z.object({_id: z.string().optional(), createdAt: z.object({}).optional(), updatedAt: z.object({}).optional(), deletedAt: z.object({}).optional(), version: z.number().optional(), projectId: z.string(), name: z.string(), slug: z.string(), description: z.string().optional(), hostname: z.string(), dnsName: z.string().optional(), otherAddresses: z.string().optional(), discoveredName: z.string().optional(), discoveredNameSource: z.string().optional(), discoveredDetails: z.object({}).optional(), macAddress: z.string().optional(), isMacAddressLearned: z.boolean().optional(), probeId: z.string().optional(), siteId: z.string().optional(), oidTemplateId: z.string().optional(), snmpCredentialProfileId: z.string().optional(), currentMonitorStatusId: z.string().optional(), monitoringMethod: z.string().optional(), deviceRole: z.string().optional(), networkDeviceRoleId: z.string().optional(), monitorId: z.string().optional(), snmpVersion: z.string().optional(), snmpCommunityString: z.string().optional(), snmpPort: z.number().optional(), snmpV3Auth: z.object({}).optional(), snmpV3SecurityLevel: z.string().optional(), snmpV3Username: z.string().optional(), snmpV3AuthProtocol: z.string().optional(), snmpV3AuthKey: z.string().optional(), snmpV3PrivProtocol: z.string().optional(), snmpV3PrivKey: z.string().optional(), isPollingEnabled: z.boolean(), pollingIntervalInMinutes: z.number().optional(), walkInterfaces: z.boolean(), collectEndpoints: z.boolean(), snmpOids: z.object({}).optional(), snmpTables: z.object({}).optional(), autoApplyVendorHealthTemplate: z.boolean(), nextPollAt: z.object({}), lastWalkLog: z.object({}).optional(), sysDescr: z.string().optional(), sysName: z.string().optional(), sysObjectId: z.string().optional(), sysLocation: z.string().optional(), sysContact: z.string().optional(), vendor: z.string().optional(), deviceModel: z.string().optional(), serialNumber: z.string().optional(), firmwareVersion: z.string().optional(), softwareVersion: z.string().optional(), lastRebootedAt: z.object({}).optional(), cdpNeighbors: z.object({}).optional(), lldpNeighbors: z.object({}).optional(), snmpTableSnapshot: z.object({}).optional(), transceiverSnapshot: z.object({}).optional(), lastSeenAt: z.object({}).optional(), lastPolledAt: z.object({}).optional(), isReachable: z.boolean().optional(), isSnmpReachable: z.boolean().optional(), lastSnmpSeenAt: z.object({}).optional(), refreshRequestedAt: z.object({}).optional(), interfacesTotal: z.number().optional(), interfacesUp: z.number().optional(), interfacesDown: z.number().optional(), createdByUserId: z.string().optional(), isArchived: z.boolean(), archivedAt: z.object({}).optional(), archivedByUserId: z.string().optional(), deletedByUserId: z.string().optional(), labels: z.array(z.object({_id: z.string().optional()})).optional()}); export const createApiNetworkDeviceGetListResponse = z.object({data: z.array(networkDevice).optional(), count: z.number().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 }; /** * List Network Device * * POST /network-device/get-list */ export const createApiNetworkDeviceGetList = async (args: CreateApiNetworkDeviceGetListArgs, options?: CreateApiNetworkDeviceGetListOptions) => { const {baseUrl = "https://oneuptime.com/api", fetch: fetchFn = fetch, ApiKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (ApiKey !== undefined) headers.set("APIKey", ApiKey) const url = `${baseUrl.replace(/\/+$/, '')}/network-device/get-list${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(createApiNetworkDeviceGetListResponse, await res.json()) };