@deviceinsight/ng-ui-api-client 10.54.0 → 10.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +804 -1332
- package/dist/index.js.map +1 -1
- package/package.json +10 -10
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/axios.ts","../src/aggregation.ts","../src/pagination.ts","../src/assetGroup.ts","../src/asset.ts","../src/authorities.ts","../src/assetDefinition.ts","../src/assetGroupHierarchies.ts","../src/assetGroupDefinition.ts","../src/blobox.ts","../src/configuration.ts","../src/datapoint.ts","../src/adxData.ts","../src/dataProcessingDefinition.ts","../src/kpi.ts","../src/event.ts","../src/locale.ts","../src/grantedAccess.ts","../src/namedquery.ts","../src/oauth.ts","../src/property.ts","../src/role.ts","../src/ruleDefinition.ts","../src/notificationTemplates.ts","../src/subscription.ts","../src/units.ts","../src/user.ts","../src/userGroup.ts","../src/licenses.ts","../src/version.ts","../src/remoteservice.ts","../src/preparedCommand.ts","../src/commands.ts","../src/authorizationServers.ts","../src/dryRun.ts","../src/shadowKeys.ts","../src/bundles.ts","../src/auditLog.ts","../src/powerBi.ts","../src/tsi.ts","../src/ux4iot.ts","../src/adx.ts","../src/initialAccountGroupAssignmentRules.ts"],"sourcesContent":["import {AxiosInstance, AxiosRequestConfig, AxiosResponse} from 'axios';\n\nexport const extractData = <T>(response: AxiosResponse<T>): T => {\n\tif (!response || response.data === undefined) {\n\t\tthrow Error('response object has no \"data\" entry');\n\t}\n\n\treturn response.data;\n};\n\ndeclare global {\n\tinterface Window {\n\t\tnguiAxios: AxiosInstance;\n\t}\n}\n\nexport const setAxios = (_axios: AxiosInstance, force?: boolean): void => {\n\tif (force || !window.nguiAxios) {\n\t\twindow.nguiAxios = _axios;\n\t} else {\n\t\tconsole.warn('window.nguiAxios instance already set');\n\t}\n};\nexport const getAxios = (): AxiosInstance => {\n\tif (window.nguiAxios == null) {\n\t\tthrow Error('window.nguiAxios instance not set');\n\t}\n\n\treturn window.nguiAxios;\n};\n\nexport const setAxiosConfig = (config: AxiosRequestConfig): void => {\n\tif (window.nguiAxios) {\n\t\tfor (const key in Object.keys(config)) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(window.nguiAxios.defaults, key)) {\n\t\t\t\tthrow Error(`Trying to set an unknown axios config property: ${key}`);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error checked, and it works\n\t\twindow.nguiAxios.defaults = {\n\t\t\t...window.nguiAxios.defaults,\n\t\t\t...config\n\t\t};\n\t}\n};\n\nexport const retryRequest = async <T = unknown>(requestFn: () => Promise<T>, retries = 5, delay = 100): Promise<T> => {\n\tfor (let attempt = 0; attempt < retries; attempt++) {\n\t\ttry {\n\t\t\treturn await requestFn();\n\t\t} catch (error: unknown) {\n\t\t\tif (attempt < retries - 1) {\n\t\t\t\tconst waitTime = delay * Math.pow(2, attempt) + Math.random() * 100;\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, waitTime));\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new Error('retryRequest: no attempts made');\n};\n","import {extractData, getAxios} from './axios';\n\ntype AggregationGrouping = {\n\tfield: string;\n\tsize?: number;\n\tnumberInterval?: number;\n\tdateInterval?: string;\n\tprecision?: number;\n\tminDocCount?: number;\n};\n\ntype AggregationSorting = {\n\tcolumnName: string;\n\torder: 'asc' | 'desc';\n};\n\nexport type MetricFunction =\n\t'avg' | 'cardinality' | 'max' | 'min' | 'sum' | 'count' | 'stats' | 'percentile' | 'percentileRanks';\n\ntype AggregationMetric = {\n\tfunction: MetricFunction;\n\tfield: string;\n\tcolumnName: string;\n};\n\nexport type AggregationConfig = {\n\tquery: string;\n\taggregationGrouping: AggregationGrouping[];\n\taggregationMetrics: AggregationMetric[];\n\taggregationSorting: AggregationSorting;\n};\n\ntype Column = {\n\tcolumnName: string;\n\tdatatype: string;\n};\n\ntype Row = Record<string, unknown>;\n\nexport type AggregationResult = {\n\tgroupingColumns: Column[];\n\tmetricColumns: Column[];\n\ttotalHits: number;\n\trows: Row;\n};\n\nexport const fetchAggregation = (aggregationConfig: AggregationConfig): Promise<AggregationResult> =>\n\tgetAxios().post('/v2/assets/aggregation', aggregationConfig).then(extractData);\n","import {PaginationRequestPropertyAdxData} from './adxData';\n\nexport type Pageable<T> = {\n\tcontent: Array<T>;\n\ttotalElements: number;\n\ttotalElementsAccurate: boolean;\n\ttotalPages: number;\n\tnumber: number; // page number\n\tfirst: boolean;\n\tlast: boolean;\n\tsize: number;\n\tsort: Array<Sort>;\n};\n\nexport type SortDirection = 'ASC' | 'DESC';\n\nexport type Sort = {\n\tproperty: string;\n\tdirection: SortDirection;\n};\n\nexport type PaginationSettings = {\n\tpage: number;\n\tsize: number;\n\tsort: Sort;\n};\n\nexport function paginationSettingsToQueryParams(paginationSettings: PaginationSettings | undefined) {\n\tif (paginationSettings) {\n\t\tconst {\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort: {property, direction}\n\t\t} = paginationSettings;\n\t\treturn {page, size, sort: `${property},${direction}`};\n\t}\n}\n\nexport type PaginationSettingsAdxData = {\n\tsort: string;\n\tpage: number;\n\tsize: number;\n\ttotalElements: number;\n\ttotalPages: number;\n\tfirstPage: boolean;\n\tlastPage: boolean;\n};\n\nexport type PaginationRequestAdxData = {\n\tsort: Sort;\n\tpage: number;\n\tsize: number;\n};\n\nexport function paginationSettingsAdxToQueryParams(\n\tpaginationSettings: PaginationRequestAdxData | undefined\n): PaginationRequestPropertyAdxData | undefined {\n\tif (paginationSettings) {\n\t\tconst {\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort: {property, direction}\n\t\t} = paginationSettings;\n\t\treturn {page, size, sort: `${property},${direction}`};\n\t}\n\treturn undefined;\n}\n","import {getAxios, extractData} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {PropertyValues} from './property';\nimport {paginationSettingsToQueryParams} from './pagination';\n\nexport type AssetGroupNew = {\n\tdefinitionId: number;\n\tdefinitionName: string;\n\tparentId: number | null | undefined;\n\tname: string;\n\tdisplayName: string | null | undefined;\n\tproperties: PropertyValues;\n\tstaticProperties: PropertyValues;\n};\n\nexport type AssetGroup = AssetGroupNew & {\n\tid: number;\n};\n\ntype FetchAssetGroupsParams = {\n\truleId: number;\n\tdefinitionId: number;\n\tdefinitionName: string;\n\tprocessingDefinitionId: number;\n\tshadow: boolean;\n};\n\nexport const fetchAssetGroups = (\n\tqueryParams?: Partial<FetchAssetGroupsParams>,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get('/v2/assetGroups', {params: {...queryParams, ...paginationSettingsToQueryParams(paginationSettings)}})\n\t\t.then(extractData);\n};\n\nexport const fetchAssetGroupsById = (id: number[]): Promise<AssetGroup[]> => {\n\treturn getAxios().get('/v2/assetGroups', {params: {id}}).then(extractData);\n};\n\nexport const fetchAssetGroupById = (id: number): Promise<AssetGroup> => {\n\treturn getAxios().get(`/v2/assetGroups/${id}`).then(extractData);\n};\n\nexport const fetchAssetGroupsByDataProcessingDefinitionId = (\n\tdataProcessingDefinitionId: number\n): Promise<Array<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups?processingDefinitionId=${dataProcessingDefinitionId}`)\n\t\t.then(extractData)\n\t\t.then(({content}) => content);\n};\n\nexport const fetchAssetGroupsByRuleId = (ruleId: number): Promise<Array<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups?ruleId=${ruleId}`)\n\t\t.then(extractData)\n\t\t.then(({content}) => content);\n};\n\nexport const createAssetGroup = (assetGroup: AssetGroupNew): Promise<AssetGroup> => {\n\treturn getAxios().post(`/v2/assetGroupDefinitions/${assetGroup.definitionId}/groups`, assetGroup).then(extractData);\n};\n\nexport const updateAssetGroup = (assetGroup: AssetGroup): Promise<AssetGroup> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroup.id}`, assetGroup).then(extractData);\n};\n\nexport const deleteAssetGroup = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${id}`);\n};\n\nexport const searchAssetGroups = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\tconst {page, size, sort} = paginationSettings;\n\tconst params = {\n\t\tpage: page || 0,\n\t\tsize,\n\t\tsort: `${sort.property},${sort.direction}`,\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.post(`/v2/assetGroups/search`, query || '*:*', {\n\t\t\tparams,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const assignAssetsByIds = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'ADD',\n\t\tassetIds\n\t});\n};\n\nexport const assignAssetsByQuery = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'ADD',\n\t\tquery\n\t});\n};\n\nexport const unassignAssetsByIds = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'REMOVE',\n\t\tassetIds\n\t});\n};\n\nexport const unassignAssetsByQuery = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'REMOVE',\n\t\tquery\n\t});\n};\n\nexport const getAncestorGroups = (id: number): Promise<Array<AssetGroup>> => {\n\treturn getAxios().get(`/v2/assetGroups/${id}/ancestorGroups`).then(extractData);\n};\n\nexport const fetchGroupsByIds = (ids: Array<number>): Promise<Array<AssetGroup>> => {\n\tif (!ids.length) {\n\t\treturn Promise.resolve([]);\n\t}\n\n\treturn searchAssetGroups(`id:(${ids.join(' OR ')})`, {\n\t\tpage: 0,\n\t\tsize: 2000,\n\t\tsort: {\n\t\t\tproperty: 'name',\n\t\t\tdirection: 'ASC'\n\t\t}\n\t}).then((result) => result.content);\n};\n\nexport const listAllChildAssetGroups = (\n\tassetGroupId: number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\tconst params = paginationSettings\n\t\t? {\n\t\t\t\tsize: paginationSettings.size,\n\t\t\t\tpage: paginationSettings.page,\n\t\t\t\tsort: `${paginationSettings.sort.property},${paginationSettings.sort.direction}`\n\t\t\t}\n\t\t: {\n\t\t\t\tsize: 1000\n\t\t\t};\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/children`, {params}).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\nimport {Pageable, PaginationSettings, paginationSettingsToQueryParams} from './pagination';\nimport {PropertyValues} from './property';\nimport {fetchAssetGroupsById} from './assetGroup';\n\nexport type GatewayTransportChannel = 'JUMP' | 'IOTHUB';\n\nexport type AssetNew = {\n\tassetDefinitionId: number | null | undefined;\n\tname: string;\n\turn: string;\n\tgatewayId: number | null | undefined;\n\tproperties: PropertyValues;\n\tshadow?: PropertyValues;\n\tisGateway: boolean;\n\ttransportChannel?: GatewayTransportChannel;\n\tassetGroupIds: Array<number>;\n\tancestorAssetGroupIds: Array<number>;\n\tcertificateBootstrapping?: boolean;\n\ttimeZone?: string;\n};\n\nexport type Asset = AssetNew & {\n\tid: number;\n};\n\nexport type Gateway = Asset & {\n\tisGateway: true;\n\tgatewayId: null;\n};\n\nexport type CertificateDetails = {\n\tcontent: string;\n\tcreatedAt: number;\n\trevokedAt: number;\n\tlastUsedAt: number;\n};\n\nexport type GeoDistanceParams = {\n\tdistance: string;\n\tgeoField: string;\n\tpinLocation: string;\n};\n\nexport type GeoBoundingBoxParams = {\n\tgeoField: string;\n\ttopLeft: string;\n\tbottomRight: string;\n};\n\nexport const fetchAssetWithShadowById = (id: number): Promise<Asset> => {\n\treturn getAxios().get(`/v2/assets/${id}/shadow`).then(extractData);\n};\n\nexport const fetchGatewayById = (id: number): Promise<Gateway> => {\n\treturn getAxios().get(`/v2/gateways/${id}`).then(extractData);\n};\n\nexport const fetchAssetByUrn = (urn: string): Promise<Asset> => {\n\treturn getAxios()\n\t\t.get(`/v2/assets/urn/${encodeURIComponent(urn)}`)\n\t\t.then(extractData);\n};\n\nexport type FetchAssetsParams = {\n\tid?: number;\n\tname?: string;\n\turn?: string;\n\tassetType?: 'ASSET' | 'GATEWAY';\n\tassetGroup?: number;\n\tassignedToAnyAssetGroup?: boolean;\n\tgatewayId?: number;\n\tgatewayUrn?: string;\n\truleId?: number;\n\tassetGroupRuleId?: number;\n\tprocessingDefinitionId?: number;\n\tassetGroupProcessingDefinitionId?: number;\n\tshadow?: boolean;\n};\n\nexport const fetchAssets = (\n\tqueryParams?: FetchAssetsParams,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\treturn getAxios()\n\t\t.get('/v2/assets', {params: {...queryParams, ...paginationSettingsToQueryParams(paginationSettings)}})\n\t\t.then(extractData);\n};\n\nexport const fetchAssetsByUrn = (urn: string | string[]): Promise<Array<Asset>> => {\n\treturn getAxios().get('/v2/assets', {params: {urn}}).then(extractData);\n};\n\nexport const fetchAssetsByAssetGroupId = (\n\tassetGroupId: number,\n\tshadow?: boolean,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\treturn fetchAssets({assetGroup: assetGroupId, shadow}, paginationSettings);\n};\n\nexport const fetchAssetsByRuleId = (ruleId: number): Promise<Array<Asset>> => {\n\treturn fetchAssets({ruleId}).then(({content}) => content);\n};\n\nexport const fetchAssetsByDataProcessingDefinitionId = (dataProcessingDefinitionId: number): Promise<Array<Asset>> => {\n\treturn fetchAssets({processingDefinitionId: dataProcessingDefinitionId}).then(({content}) => content);\n};\n\nexport const createAsset = (asset: AssetNew): Promise<Asset> => {\n\tif (asset.isGateway) {\n\t\treturn getAxios().post(`/v2/gateways`, asset).then(extractData);\n\t} else {\n\t\treturn getAxios().post(`/v2/assets`, asset).then(extractData);\n\t}\n};\n\nexport const updateAsset = (asset: Asset): Promise<Asset> => {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst {assetGroupIds, ...formData} = asset;\n\tif (asset.isGateway) {\n\t\treturn getAxios().put(`/v2/gateways/${asset.id}`, formData).then(extractData);\n\t} else {\n\t\treturn getAxios().put(`/v2/assets/${asset.id}`, formData).then(extractData);\n\t}\n};\n\nexport const deleteAsset = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${id}`);\n};\n\nexport const searchAssets = (query: string, paginationSettings?: PaginationSettings): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(`/v2/assets/search`, query || '*:*', {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchAssetsWithOpenEvents = (\n\tquery: string,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(`/v2/assets/search`, query || '*:*', {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true,\n\t\t\t\tassetsWithEventsOnly: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchAssetsByProperty = (\n\tproperty: string,\n\tvalue: string | number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.get(`/v2/assets/search`, {\n\t\t\tparams: {\n\t\t\t\tproperty,\n\t\t\t\tvalue,\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchGateways = (query: string, paginationSettings: PaginationSettings): Promise<Pageable<Gateway>> => {\n\treturn searchAssets(`${query} isGateway:true`, paginationSettings) as Promise<Pageable<Gateway>>;\n};\n\nexport const searchAssetsWithGeoDistance = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings,\n\tgeoDistanceParams: GeoDistanceParams\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\tconst {distance, geoField, pinLocation} = geoDistanceParams;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assets/geoDistance`,\n\t\t\t{\n\t\t\t\tdistance,\n\t\t\t\tgeoField,\n\t\t\t\tpinLocation,\n\t\t\t\tquery: query || '*:*'\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tignoreCase: true,\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || ''\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const searchAssetsByGeoBoundingBox = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings,\n\t{geoField, topLeft, bottomRight}: GeoBoundingBoxParams\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assets/geoBoundingBox`,\n\t\t\t{\n\t\t\t\tgeoField,\n\t\t\t\tquery: query || '*:*',\n\t\t\t\ttopLeft,\n\t\t\t\tbottomRight\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tignoreCase: true,\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: sort ? `${sort.property},${sort.direction}` : ''\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const fetchAssetGroupIds = (assetId: number): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/groups`).then(extractData);\n};\n\nexport const assignAssetGroup = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/groups/${assetGroupId}`);\n};\n\nexport const unassignAssetGroup = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/groups/${assetGroupId}`);\n};\n\nexport const updateAssetGroupIds = async (assetId: number, assetGroupIds: Array<number>): Promise<void[]> => {\n\tconst oldAssetGroupIds = await fetchAssetGroupIds(assetId);\n\tlet availableOldAssetGroupIds: number[] = [];\n\tif (oldAssetGroupIds.length > 0) {\n\t\tavailableOldAssetGroupIds = (await fetchAssetGroupsById(oldAssetGroupIds)).map(({id}) => id);\n\t}\n\tconst addedAssetGroupIds = assetGroupIds.filter((id) => !oldAssetGroupIds.includes(id));\n\tconst removedAssetGroupIds = availableOldAssetGroupIds.filter((id) => assetGroupIds && !assetGroupIds.includes(id));\n\treturn Promise.all([\n\t\t...addedAssetGroupIds.map((assetGroupId) => assignAssetGroup(assetId, assetGroupId)),\n\t\t...removedAssetGroupIds.map((assetGroupId) => unassignAssetGroup(assetId, assetGroupId))\n\t]);\n};\n\nexport const assignGateway = async (assetId: number, gatewayId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/gatewayAssignment`, {\n\t\tgatewayId\n\t});\n};\n\nexport const unassignGateway = async (assetId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/gatewayAssignment`);\n};\n\nexport const getGatewayConfigurationsSyncStatus = (assetId: number): Promise<unknown> => {\n\treturn getAxios().get(`/v2/gateways/${assetId}/configurationSyncStatus`).then(extractData);\n};\n\nexport const triggerGatewayConfigurationsSync = async (assetId: number): Promise<void> => {\n\tawait getAxios().post(`/v2/gateways/${assetId}/configurationSync`);\n};\n\nexport const retrieveAssetBootstrapJson = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios().post(`/beta/gateways/urn/${encodeURIComponent(assetUrn)}/bootstrap.json`);\n};\n\nexport const retrieveAssetBootstrapShellCommand = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/beta/gateways/urn/${encodeURIComponent(assetUrn)}/bootstrapCommandLine`,\n\t\t\t{},\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: 'text/plain'\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const getGatewayCertificateSummary = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates`)\n\t\t.then(extractData);\n};\n\nexport const getCertificateDetails = (assetUrn: string, fingerPrint: string): Promise<CertificateDetails> => {\n\treturn getAxios()\n\t\t.get(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/${fingerPrint}`)\n\t\t.then(extractData);\n};\n\nexport const revokeGatewayCertificate = async (assetUrn: string, fingerprint: string): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/${fingerprint}/revocation`);\n};\n\nexport const revokeAllGatewayCertificates = async (assetUrn: string): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/revocation`);\n};\n\nexport const fetchGatewayCommandResponses = (gatewayId: number, commandId: number): Promise<Array<unknown>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/commands/${commandId}/responses`).then(extractData);\n};\n\nexport const requestApplicationLogCommand = (gatewayId: number): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/gateways/${gatewayId}/commands`,\n\t\t\t{\n\t\t\t\texpirySeconds: 60,\n\t\t\t\tcontent: {\n\t\t\t\t\ttype: 'transmitApplicationLogCommand'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const fetchGatewayCapabilities = (gatewayId: number): Promise<Array<string>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/capabilities`).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type Authority = {\n\tauthority: string;\n\tinternal?: boolean;\n};\n\nexport function fetchAuthorities(): Promise<Array<Authority>> {\n\treturn getAxios().get('/v2/authorities').then(extractData);\n}\n\nexport function fetchAuthorityByName(authorityName: string): Promise<Authority> {\n\treturn getAxios().get(`/v2/authorities/${authorityName}`).then(extractData);\n}\n\nexport function createAuthority(authorityName: string): Promise<Authority> {\n\treturn getAxios().put(`/v2/authorities/${authorityName}`).then(extractData);\n}\n\nexport async function deleteAuthority(authorityName: string): Promise<void> {\n\tawait getAxios().delete(`/v2/authorities/${authorityName}`);\n}\n","import {Datapoint} from './datapoint';\nimport {extractData, getAxios} from './axios';\n\nexport type AssetDefinitionProperty = {\n\tkey: string;\n\trequired: boolean;\n};\n\nexport type AssetDefinitionStaticProperty = {\n\tkey: string;\n\tvalue: string | number | boolean | null | undefined;\n};\n\nexport type AssetDefinitionNew = {\n\tname: string;\n\tproperties: AssetDefinitionProperty[];\n\tstaticProperties: AssetDefinitionStaticProperty[];\n\tdatapoints?: Datapoint[];\n};\n\nexport type AssetDefinition = AssetDefinitionNew & {\n\tid: number;\n};\n\nexport async function fetchAssetDefinitions(): Promise<Array<AssetDefinition>> {\n\treturn getAxios()\n\t\t.get('/v2/assetDefinitions', {\n\t\t\tparams: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000,\n\t\t\t\tsort: 'name,ASC',\n\t\t\t\tignoreCase: true\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n}\n\nexport async function fetchAssetDefinition(id: number): Promise<AssetDefinition> {\n\treturn getAxios().get(`/v2/assetDefinitions/${id}`).then(extractData);\n}\n\nexport async function deleteAssetDefinition(id: number): Promise<void> {\n\tawait getAxios().delete(`/v2/assetDefinitions/${id}`);\n}\n\nexport async function updateAssetDefinition(assetDefinition: AssetDefinition): Promise<AssetDefinition> {\n\treturn getAxios().put(`/v2/assetDefinitions/${assetDefinition.id}`, assetDefinition).then(extractData);\n}\n\nexport async function createAssetDefinition(assetDefinition: AssetDefinitionNew): Promise<AssetDefinition> {\n\treturn getAxios().post('/v2/assetDefinitions', assetDefinition).then(extractData);\n}\n\nexport async function createAssetDefinitionDatapoint(assetDefinitionId: number, datapoint: Datapoint): Promise<void> {\n\tconst {unit, ...params} = datapoint;\n\tif (unit) (params as Record<string, unknown>).unit = unit.name;\n\tawait getAxios().post(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapoint.name)}`,\n\t\tparams\n\t);\n}\n\nexport async function createAssetDefinitionDatapoints(\n\tassetDefinitionId: number,\n\tdatapoints: Map<string, Datapoint>\n): Promise<void> {\n\t// this conversion is necessary because the API expects the unit to be a string\n\tconst newDatapoints = new Map(\n\t\tArray.from(datapoints, ([name, dp]) => {\n\t\t\tconst {unit, ...params} = dp;\n\t\t\treturn [name, unit ? {...params, unit: unit.name} : params];\n\t\t})\n\t);\n\tawait getAxios().post(`/v2/assetDefinitions/${assetDefinitionId}/datapoints`, Object.fromEntries(newDatapoints));\n}\n\nexport async function deleteAssetDefinitionDatapoint(assetDefinitionId: number, datapointName: string): Promise<void> {\n\tawait getAxios().delete(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapointName)}`\n\t);\n}\n\nexport async function updateAssetDefinitionDatapoint(assetDefinitionId: number, datapoint: Datapoint): Promise<void> {\n\tconst {unit, ...params} = datapoint;\n\tif (unit) (params as Record<string, unknown>).unit = unit.name;\n\tawait getAxios().put(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapoint.name)}`,\n\t\tparams\n\t);\n}\n","import {extractData, getAxios} from './axios';\n\nexport type AssetGroupHierarchyElement = {\n\tid: number;\n\tparentId: number | null;\n\tname: string;\n\tdisplayName: string;\n\tassetGroupDefinitionId: number;\n\tassetGroupDefinitionName: string;\n\tlevel: number;\n\tassetGroupChildCountDirect: number;\n\tassetGroupChildCountTransitive: number;\n\tassetCountDirect: number;\n\tassetCountTransitive: number;\n};\n\nexport type AssetGroupHierarchyParams = {\n\tassetDefinitionId?: number;\n\tmaxLevel?: number;\n};\n\nexport async function getAssetGroupHierarchies(\n\tassetGroupId: number,\n\tparams?: AssetGroupHierarchyParams\n): Promise<AssetGroupHierarchyElement[]> {\n\tconst response = await getAxios().get(`/v2/assetGroupHierarchies/${assetGroupId}`, {params});\n\treturn extractData(response);\n}\n\nexport type AssetGroupHierarchyRoot = {\n\tid: number;\n\tname: string;\n\tdisplayName: string;\n\tassetCountTransitive: number;\n};\n\nexport type AssetGroupHierarchyRootParams = {\n\tassetDefinitionId?: number;\n};\n\nexport async function getAssetGroupHierarchyRoots(\n\tparams: AssetGroupHierarchyParams = {}\n): Promise<AssetGroupHierarchyRoot[]> {\n\tconst response = await getAxios().get('/v2/assetGroupHierarchyRoots', {params});\n\treturn extractData(response);\n}\n","import {getAxios, extractData} from './axios';\n\ntype PropertyDefinition = {\n\tkey: string;\n\trequired: boolean;\n};\n\ntype StaticPropertyDefinition = {\n\tkey: string;\n\tvalue: number | boolean | string;\n};\n\nexport type NewAssetGroupDefinition = {\n\tname: string;\n\tchildrenPreventDeletion?: boolean;\n\tassetGroupProperties?: PropertyDefinition[];\n\tassetGroupStaticProperties?: StaticPropertyDefinition[];\n};\n\nexport type AssetGroupDefinition = NewAssetGroupDefinition & {\n\tid: number;\n};\n\nexport const fetchAssetGroupDefinitionById = (id: number): Promise<AssetGroupDefinition> => {\n\treturn getAxios().get(`/v2/assetGroupDefinitions/${id}`).then(extractData);\n};\n\nexport const fetchAssetGroupDefinitionByName = (name: string): Promise<AssetGroupDefinition> => {\n\treturn getAxios().get(`/v2/assetGroupDefinitions/name/${name}`).then(extractData);\n};\n\nexport const fetchAssetGroupDefinitions = (): Promise<Array<AssetGroupDefinition>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: 'name,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get('/v2/assetGroupDefinitions', {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => {\n\t\t\tconst restPagePromises = new Array(Math.max(0, pageable.totalPages - 1)).fill(null).map((_, num) => {\n\t\t\t\tconst page = num + 1;\n\t\t\t\treturn getAxios()\n\t\t\t\t\t.get('/v2/assetGroupDefinitions', {\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t...params,\n\t\t\t\t\t\t\tpage\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.then(extractData)\n\t\t\t\t\t.then((data) => data.content);\n\t\t\t});\n\t\t\treturn Promise.all(restPagePromises).then((restPages) =>\n\t\t\t\trestPages.reduce((acc, content) => acc.concat(content), pageable.content)\n\t\t\t);\n\t\t});\n};\n\nexport const createAssetGroupDefinition = (\n\tassetGroupDefinition: NewAssetGroupDefinition\n): Promise<AssetGroupDefinition> => {\n\treturn getAxios().post('/v2/assetGroupDefinitions', assetGroupDefinition).then(extractData);\n};\n\nexport const updateAssetGroupDefinition = (\n\tassetGroupDefinition: AssetGroupDefinition\n): Promise<AssetGroupDefinition> => {\n\treturn getAxios()\n\t\t.put(`/v2/assetGroupDefinitions/${assetGroupDefinition.id}`, assetGroupDefinition)\n\t\t.then(extractData);\n};\n\nexport const deleteAssetGroupDefinition = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroupDefinitions/${id}`);\n};\n","import {getAxios, extractData} from './axios';\nimport {AxiosInstance} from 'axios';\n\nexport type LegalPage = 'imprint' | 'privacy';\n\nexport type UserPaginationSettings = {\n\tsize: number;\n};\n\nexport type AdvancedSearchDefaultProperty = {\n\tkey: string;\n\ttype: string;\n};\n\ntype ResourceType = 'assets' | 'assetGroups' | 'assetDefinitions' | 'accounts' | 'accountGroups' | 'tenant';\n\nexport type BlobMeta = {\n\tblobKey: string;\n\tlastModified: string;\n\tcontentType: string;\n\tuserMetadata: {\n\t\t'X-Blob-Meta-Filename': string;\n\t};\n};\n\nconst createUrl = (type: ResourceType, id: string | number | undefined, path: string) => {\n\treturn ['', 'v2', type, id ? encodeURIComponent(id) : null, 'blobs', path]\n\t\t.filter((segment) => segment != null)\n\t\t.join('/');\n};\n\nconst readObject = (\n\ttype: ResourceType,\n\tid: string | number | undefined,\n\tpath: string,\n\tasArrayBuffer: boolean\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(createUrl(type, id, path), asArrayBuffer ? {responseType: 'arraybuffer'} : {})\n\t\t.then(extractData);\n\nconst writeObject = (\n\ttype: ResourceType,\n\tid: string | number | undefined,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> =>\n\t(axiosInstance ?? getAxios()).post(createUrl(type, id, path), value, headers ? {headers} : undefined);\n\nconst deleteObject = (type: ResourceType, id: string | number | undefined, path: string): Promise<void> =>\n\tgetAxios().delete(createUrl(type, id, path));\n\nconst checkObject = (type: ResourceType, id: string | number | undefined, path: string) =>\n\tgetAxios().head(createUrl(type, id, path));\n\nexport const readAssetObject = (assetUrn: string, path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('assets', assetUrn, path, !!asArrayBuffer);\n\nexport const writeAssetObject = (\n\tassetUrn: string,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assets', assetUrn, path, value, headers, axiosInstance);\n\nexport const deleteAssetObject = (assetUrn: string, path: string): Promise<void> =>\n\tdeleteObject('assets', assetUrn, path);\n/*\n * Asset Definition Blobox\n */\nexport const readAssetDefinitionObject = (\n\tassetDefinitionId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> => readObject('assetDefinitions', assetDefinitionId, path, !!asArrayBuffer);\n\nexport const writeAssetDefinitionObject = (\n\tassetDefinitionId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assetDefinitions', assetDefinitionId, path, value, headers, axiosInstance);\n\nexport const deleteAssetDefinitionObject = (assetDefinitionId: number, path: string): Promise<void> =>\n\tdeleteObject('assetDefinitions', assetDefinitionId, path);\n\n/*\n * Asset Group Blobox\n */\nexport const readAssetGroupObject = (assetGroupId: number, path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('assetGroups', assetGroupId, path, !!asArrayBuffer);\n\nexport const writeAssetGroupObject = (\n\tassetGroupId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assetGroups', assetGroupId, path, value, headers, axiosInstance);\n\nexport const deleteAssetGroupObject = (assetGroupId: number, path: string): Promise<void> =>\n\tdeleteObject('assetGroups', assetGroupId, path);\n\n/*\n * Tenant Blobox\n */\nexport const readTenantObject = (path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('tenant', undefined, path, !!asArrayBuffer);\n\nexport const writeTenantObject = (\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('tenant', undefined, path, value, headers, axiosInstance);\n\nexport const deleteTenantObject = (path: string): Promise<void> => deleteObject('tenant', undefined, path);\n\nexport const readUIConfigurations = (): Promise<unknown> => readTenantObject('uiConfigurations/default');\n\nexport const readUISecrets = (): Promise<unknown> => readTenantObject('uiSecrets/default');\n\nexport const writeUIConfigurations = (value: unknown): Promise<void> =>\n\twriteTenantObject('uiConfigurations/default', value);\n\nexport const deleteUIConfigurations = (): Promise<void> => deleteTenantObject('uiConfigurations/default');\n\nexport const readConditionMonitoringPriorities = (): Promise<unknown> =>\n\treadTenantObject('uiConfigurations/conditionmonitoringpriorities');\n\nexport const writeConditionMonitoringPriorities = (value: unknown): Promise<void> =>\n\twriteTenantObject('uiConfigurations/conditionmonitoringpriorities', value);\n\nexport const deleteConditionMonitoringPriorities = (): Promise<void> =>\n\tdeleteTenantObject('uiConfigurations/conditionmonitoringpriorities');\n\nexport const readEULA = (localeCode: string): Promise<ArrayBuffer> =>\n\treadTenantObject(`terms/eula-${localeCode}`, true) as Promise<ArrayBuffer>;\n\nexport const readEULAList = (): Promise<BlobMeta[]> => readTenantObject('terms?meta=true') as Promise<BlobMeta[]>;\n\nexport const writeEULA = (\n\tlocaleCode: string,\n\tvalue: unknown,\n\tfileName: string,\n\tcontentType: string,\n\taxiosInstance?: AxiosInstance\n): Promise<void> =>\n\twriteTenantObject(\n\t\t`terms/eula-${localeCode}`,\n\t\tvalue,\n\t\t{\n\t\t\t'X-Blob-Meta-Filename': fileName,\n\t\t\t'Content-Type': contentType\n\t\t},\n\t\taxiosInstance\n\t);\n\nexport const deleteEULA = (localeCode: string): Promise<void> => deleteTenantObject(`terms/eula-${localeCode}`);\n\nexport const readLegalPage = (legalPage: LegalPage): Promise<unknown> => readTenantObject(`terms/${legalPage}`);\n\n/*\n * User Blobox\n */\n\nconst checkAccountObject = async (path: string): Promise<void> => {\n\tawait checkObject('accounts', 'me', path);\n};\n\nexport const readAccountObject = (path: string): Promise<unknown> => readObject('accounts', 'me', path, false);\n\nexport const writeAccountObject = (path: string, value: unknown): Promise<void> =>\n\twriteObject('accounts', 'me', path, value);\n\nexport const deleteAccountObject = (path: string): Promise<void> => deleteObject('accounts', 'me', path);\n\nexport const checkStartPage = (): Promise<void> => checkAccountObject('uiConfigurations/startpage');\n\nexport const readStartPage = (): Promise<string> => readAccountObject('uiConfigurations/startpage') as Promise<string>;\n\nexport const writeStartPage = (value: string): Promise<void> => writeAccountObject('uiConfigurations/startpage', value);\n\nexport const writeReleaseNotesVersionsViewed = (value: string[]): Promise<void> =>\n\twriteAccountObject('uiConfigurations/releasenotesversionsviewed', value);\n\nexport const readReleaseNotesVersionsViewed = (): Promise<string[]> =>\n\treadAccountObject('uiConfigurations/releasenotesversionsviewed') as Promise<string[]>;\n\nexport const readReleaseNotesSubscription = (): Promise<boolean> =>\n\treadAccountObject('uiConfigurations/releasenotessubscription') as Promise<boolean>;\n\nexport const writeReleaseNotesSubscription = (value: boolean): Promise<void> =>\n\twriteAccountObject('uiConfigurations/releasenotessubscription', value);\n\nexport const checkShowUserDocumentation = (): Promise<void> =>\n\tcheckAccountObject('uiConfigurations/showuserdocumentation');\n\nexport const readShowUserDocumentation = (): Promise<boolean> =>\n\treadAccountObject('uiConfigurations/showuserdocumentation') as Promise<boolean>;\n\nexport const writeShowUserDocumentation = (value: boolean): Promise<void> =>\n\twriteAccountObject('uiConfigurations/showuserdocumentation', value);\n\nexport const writePaginationSettings = (value: UserPaginationSettings): Promise<void> =>\n\twriteAccountObject('uiConfigurations/paginationsettings', value);\n\nexport const readPaginationSettings = (): Promise<UserPaginationSettings> =>\n\treadAccountObject('uiConfigurations/paginationsettings') as Promise<UserPaginationSettings>;\n\nexport const writeFavorites = (value: unknown): Promise<void> =>\n\twriteAccountObject('uiConfigurations/favorites', value);\n\nexport const readFavorites = (): Promise<unknown> => readAccountObject('uiConfigurations/favorites');\n\nexport const deleteStartPage = (): Promise<void> => deleteAccountObject('uiConfigurations/startpage');\n\nexport const writeAdvancedSearchDefaultProperties = (\n\tdefaultProperties: AdvancedSearchDefaultProperty[],\n\tcontext: string\n): Promise<void> => writeAccountObject(`uiConfigurations/advsearchprops${context}`, defaultProperties);\n\nexport const readAdvancedSearchDefaultProperties = (context: string): Promise<unknown> =>\n\treadAccountObject(`uiConfigurations/advsearchprops${context}`);\n\n/*\nAsset Blob Series\n */\nexport const readAssetBlobSeries = (assetUrn: string, from: number, to: number): Promise<Array<unknown>> => {\n\tconst params = {\n\t\tfrom: new Date(from).toISOString(),\n\t\tto: new Date(to).toISOString()\n\t};\n\treturn Promise.all([\n\t\tgetAxios()\n\t\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs`, {\n\t\t\t\tparams\n\t\t\t})\n\t\t\t.then(extractData),\n\t\tgetAxios()\n\t\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs`, {\n\t\t\t\tparams: {...params, meta: true}\n\t\t\t})\n\t\t\t.then(extractData)\n\t]).then(([urls, metaData]) => {\n\t\treturn urls.map((url: string, index: number) => {\n\t\t\tconst urlSegments = url.split('/');\n\t\t\tconst uniqueKey = urlSegments.slice(urlSegments.length - 2).join('/');\n\t\t\treturn {...metaData[index], blobUniqueKey: uniqueKey};\n\t\t});\n\t});\n};\n\nexport const downloadAssetBlobSeriesItem = (assetUrn: string, itemKey: string): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs/${itemKey}`, {\n\t\t\tresponseType: 'arraybuffer'\n\t\t})\n\t\t.then(extractData);\n\n/*\nAdministration Blob\n */\nexport const readAccountGroupObject = (\n\taccountGroupId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(\n\t\t\t`/beta/administration/accountGroups/${accountGroupId}/blobs/${path}`,\n\t\t\tasArrayBuffer ? {responseType: 'arraybuffer'} : {}\n\t\t)\n\t\t.then(extractData);\n\n/*\nAccount Groups Blob\n */\nexport const readAccountGroupObjectBasedOnMembership = (\n\taccountGroupId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> => readObject('accountGroups', accountGroupId, path, !!asArrayBuffer);\n\nexport const writeAccountGroupObject = (\n\taccountGroupId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('accountGroups', accountGroupId, path, value, headers, axiosInstance);\n\nexport const deleteAccountGroupObject = (accountGroupId: number, path: string): Promise<void> =>\n\tdeleteObject('accountGroups', accountGroupId, path);\n\nexport type AzureB2cConfiguration = {\n\tclientId: string;\n\t// Format of the authority field: See https://learn.microsoft.com/en-us/answers/questions/1275356/error-sample-nodejs-app-authetication-with-azure-b?orderby=oldest\n\tauthority: string;\n\tauthorityDomain: string;\n\tregisterMFADevicePolicyUrl?: string;\n};\nexport const readAzureB2cConfiguration = async (): Promise<AzureB2cConfiguration | undefined> => {\n\treturn readTenantObject('uiConfigurations/adb2c') as Promise<AzureB2cConfiguration | undefined>;\n};\n","import {getAxios, extractData} from './axios';\nimport type {Asset} from './asset';\nimport type {PaginationSettings} from './pagination';\n\ntype Datatype = 'Float' | 'String' | 'Boolean' | 'Binary' | 'Integer';\n\ntype ModbusType = 'output' | 'input' | 'inputbit' | 'outputbit';\n\ntype OperationMode = 'read' | 'write' | 'readWrite';\n\ntype ModbusWidth = 16 | 32 | 64;\n\ntype AbstractConfigurationBody = {\n\tsamplingInterval: number;\n\tassetUrn: string | null | undefined;\n\tassetTypeUrn?: string;\n};\n\nexport type ModbusConfigurationBody = AbstractConfigurationBody & {\n\tconfigurationType: 'modbus';\n\tuseSameTimestamp: boolean;\n\tpollingDelay: number;\n\tdisableBlockReading: boolean;\n\tuseSerial: boolean;\n\tip: string | null | undefined;\n\tport: number | null | undefined;\n\tserialDevice: string | null | undefined;\n\tserialParity: string | null | undefined;\n\tserialBaudrate: number | null | undefined;\n\tserialDataBit: number | null | undefined;\n\tserialStopBit: number | null | undefined;\n\tserialMode: string | null | undefined;\n\tconnectorElements: Array<ModbusConnectorElement>;\n};\n\nexport type TestDataConfigurationBody = AbstractConfigurationBody & {\n\tconfigurationType: 'testData';\n\tinterval?: number;\n\trandomValue?: boolean;\n\trandomIndex?: boolean;\n\tdatapointKey?: string;\n\tdatatype?: Datatype;\n\tvalues?: Array<number>;\n};\n\nexport type DataVariable = {\n\tnodeId: string;\n\tnodeIdType: string;\n\tnodeIdNamespaceIndex: number;\n\tkey: string;\n\tsamplingInterval: number | null | undefined;\n\tpolling: boolean;\n\tqueueSize: number | null | undefined;\n\tpublishingInterval: number | null | undefined;\n\ttransformArrayToString: boolean | null | undefined;\n\tarrayStringDelimiter: string | null | undefined;\n};\n\nexport type Configuration = {\n\tid?: number;\n\tname: string;\n\tcontent: ModbusConfigurationBody | TestDataConfigurationBody;\n};\n\nexport type ModbusConnectorElement = {\n\treactableKey?: string;\n\ttype: 'modbusElement';\n\tkey: string;\n\tdatatype: Datatype;\n\tunit: string;\n\taddress: number;\n\tslave: number;\n\tfactor: number;\n\tmodbusType: ModbusType;\n\tsigned: boolean;\n\tmode: OperationMode;\n\tsamplingInterval: (number | string) | null | undefined;\n\thexString: boolean;\n\tbigEndian: boolean;\n\tstringLength: number;\n\twidth: ModbusWidth | null | undefined;\n};\n\nexport type ConfigurationListObject = Record<string, Configuration>;\n\nexport type ConfigurationKeyToId = Record<string, number>;\n\nexport const fetchConfigurations = (assetId: number): Promise<ConfigurationListObject> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/configurations`).then(extractData);\n};\n\nexport const fetchConfigurationByName = (name: string): Promise<Configuration> => {\n\treturn getAxios()\n\t\t.get(`/v2/configurations/name/${encodeURIComponent(name)}`)\n\t\t.then(extractData);\n};\n\nexport const createConfiguration = (configuration: Configuration): Promise<Configuration> => {\n\treturn getAxios().post(`/v2/configurations`, configuration).then(extractData);\n};\n\nexport const updateConfiguration = (configuration: Configuration): Promise<Configuration> => {\n\treturn getAxios() // $FlowIgnore configuration.id is present in update case\n\t\t.put(`/v2/configurations/${configuration.id}`, configuration)\n\t\t.then(extractData);\n};\n\nexport const deleteConfiguration = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/configurations/${id}`);\n};\n\nexport const assignConfigurationsToAsset = (\n\tassetId: number,\n\tconfigurationKeyToIdObject: ConfigurationKeyToId\n): Promise<ConfigurationListObject> => {\n\treturn getAxios().put(`/v2/assets/${assetId}/configurations`, configurationKeyToIdObject).then(extractData);\n};\n\nexport const fetchAssignedGatewaysToConfiguration = (\n\tid: number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Asset[]> => {\n\tconst settings = paginationSettings\n\t\t? {...paginationSettings}\n\t\t: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000,\n\t\t\t\tsort: ''\n\t\t\t};\n\treturn getAxios()\n\t\t.get(`/v2/configurations/${id}/gateways`, {\n\t\t\tparams: settings\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type DataType = 'BOOLEAN' | 'DOUBLE' | 'LONG' | 'TEXT' | 'GEO_POSITION' | 'STRUCTURED';\n\nexport type DatapointType = 'RAW' | 'CALCULATED';\n\nexport type Unit = {\n\tname: string;\n\tprint: string;\n};\n\nexport type Thresholds = {\n\tthreshold1?: number | null | undefined;\n\tthreshold2?: number | null | undefined;\n};\n\nexport type Datapoint = {\n\tname: string;\n\tdatatype: DataType;\n\tdatapointType: DatapointType;\n\tunit?: Unit;\n\tthresholds: Thresholds;\n\tproperties?: Record<string, string | number | boolean>;\n};\n\nexport type DatapointValueGeoPositionType = {\n\tlatitude: number;\n\tlongitude: number;\n};\n\nexport type DatapointValueType = boolean | number | string | DatapointValueGeoPositionType;\n\nexport type DatapointValue = [number, DatapointValueType, DatapointValueType];\n\nexport const fetchDatapointsByAssetId = (assetId: number): Promise<Array<Datapoint>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/datapoints`).then(extractData);\n};\n\nexport const createDatapoint = (assetId: number, datapoint: Datapoint): Promise<Datapoint> => {\n\tconst {name, datatype, unit} = datapoint;\n\tconst queryParams: Record<string, unknown> = {\n\t\tdatatype\n\t};\n\tif (unit) queryParams.unit = unit.name;\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(name)}`, queryParams)\n\t\t.then(extractData);\n};\n\nexport const updateDatapointThresholds = (assetId: number, datapoint: Datapoint): Promise<Datapoint> => {\n\tconst {name, datatype, thresholds} = datapoint;\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(name)}`, {\n\t\t\tdatatype,\n\t\t\tthresholds\n\t\t})\n\t\t.then(extractData);\n};\n\nfunction datatypeToDatapointType(datatype: DataType): string {\n\tswitch (datatype) {\n\t\tcase 'GEO_POSITION':\n\t\t\treturn 'geoPosition';\n\t\tdefault:\n\t\t\treturn datatype.toLowerCase();\n\t}\n}\n\nexport const getDatapointValues = (\n\tassetUrn: string,\n\tdpName: string,\n\tdataType: DataType,\n\tstart: number | null | undefined,\n\tend: number | null | undefined,\n\tonlyChangedValues = false,\n\torder: 'ASC' | 'DESC' = 'ASC',\n\tlimit = 10000\n): Promise<Array<DatapointValue>> => {\n\treturn getAxios()\n\t\t.get(\n\t\t\t`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(\n\t\t\t\tdpName\n\t\t\t)}/${datatypeToDatapointType(dataType)}/entries`,\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tstart: start ? new Date(start).toISOString() : '',\n\t\t\t\t\tend: end ? new Date(end).toISOString() : '',\n\t\t\t\t\torder,\n\t\t\t\t\tlimit,\n\t\t\t\t\tonlyChangedValues\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const getDatapointGeoPositionValues = (\n\tassetUrn: string,\n\tstart?: number,\n\tend?: number,\n\torder: 'ASC' | 'DESC' = 'ASC',\n\tlimit = 10000,\n\tonlyChangedValues = false\n): Promise<Array<DatapointValue>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/geoPosition/geoPosition/entries`, {\n\t\t\tparams: {\n\t\t\t\tstart: start ? new Date(start).toISOString() : '',\n\t\t\t\tend: end ? new Date(end).toISOString() : '',\n\t\t\t\torder,\n\t\t\t\tlimit,\n\t\t\t\tonlyChangedValues\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const getDatapointSamples = (\n\tassetUrn: string,\n\tdpName: string,\n\tdataType: DataType,\n\tstart: number,\n\tend: number,\n\tslices: number\n): Promise<Array<DatapointValue>> => {\n\tconst url = `/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(\n\t\tdpName\n\t)}/${datatypeToDatapointType(dataType)}/samples`;\n\n\treturn getAxios()\n\t\t.get(url, {\n\t\t\tparams: {\n\t\t\t\tstart: new Date(start).toISOString(),\n\t\t\t\tend: new Date(end).toISOString(),\n\t\t\t\tslices,\n\t\t\t\tincludeFirst: false,\n\t\t\t\tincludeLast: false\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const updateDatapointUnit = (\n\tassetId: number,\n\tdpName: string,\n\tunit: Unit | null | undefined\n): Promise<unknown> => {\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(dpName)}/unit`, unit)\n\t\t.then(extractData);\n};\n\nexport const deleteDatapoint = async (assetId: number, dpName: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(dpName)}`);\n};\n\nfunction transformDatatypeToUrlSegment(datatype: DataType) {\n\tswitch (datatype) {\n\t\tcase 'GEO_POSITION':\n\t\t\treturn 'geoPosition';\n\t\tdefault:\n\t\t\treturn datatype.toLowerCase();\n\t}\n}\n\nexport const deleteDatapointEntries = async (\n\tassetUrn: string,\n\tdp: Datapoint,\n\tstartOptional?: string,\n\tendOptional?: string\n): Promise<void> => {\n\tconst DEFAULT_START = new Date(0).toISOString();\n\tconst start = startOptional || DEFAULT_START;\n\tconst body = endOptional\n\t\t? {\n\t\t\t\tstart,\n\t\t\t\tend: endOptional\n\t\t\t}\n\t\t: {\n\t\t\t\tstart\n\t\t\t};\n\tconst dataType = transformDatatypeToUrlSegment(dp.datatype);\n\tawait getAxios().delete(\n\t\t`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(dp.name)}/${dataType}/entries`,\n\t\t{\n\t\t\tparams: body\n\t\t}\n\t);\n};\n","import {extractData, getAxios, retryRequest} from './axios';\nimport {DatapointValueGeoPositionType, DataType} from './datapoint';\nimport {PaginationRequestAdxData, PaginationSettingsAdxData, paginationSettingsAdxToQueryParams} from './pagination';\n\nexport type StructuredDatapointsNodeDataType = 'string' | 'number' | 'boolean' | 'array';\n\nexport type PropertyNode = {\n\tpropertyPath: string;\n\tdatatypes: StructuredDatapointsNodeDataType[];\n};\n\nexport type StructuredDatapointPropertyNodes = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tpropertyNodes: PropertyNode[];\n\tresultLimitExceeded: boolean;\n};\n\ntype DistinctValuesResponseArrays = (string | number | boolean | object)[][] | (string | number | boolean | object)[];\n\nexport type DistinctValuesResponse = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tpropertyPath: string;\n\tdistinctValues: string[] | number[] | boolean[] | DistinctValuesResponseArrays;\n\tresultLimitExceeded: boolean;\n};\n\ntype Condition = {\n\tpropertyPath?: string;\n\toperator:\n\t\t'is' | 'larger_than' | 'larger_or_equal_than' | 'less_than' | 'less_or_equal_than' | 'contains' | 'exists';\n\tvalue: string | number | boolean | number[] | string[] | boolean[];\n};\n\nexport type AdxDistinctValuesDataType = 'double' | 'long' | 'boolean' | 'text' | 'geo_position' | 'structured';\n\nexport const DataTypeToAdxDistinctDatapointType: Record<DataType, AdxDistinctValuesDataType> = {\n\tBOOLEAN: 'boolean',\n\tDOUBLE: 'double',\n\tLONG: 'long',\n\tTEXT: 'text',\n\tGEO_POSITION: 'geo_position',\n\tSTRUCTURED: 'structured'\n};\n\ntype Filter = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tdatatype: AdxDistinctValuesDataType;\n\tconditions: Condition[];\n};\n\nexport type PaginationRequestPropertyAdxData = {\n\tsort: string;\n\tpage: number;\n\tsize: number;\n};\n\ntype DatapointValuesRequest = {\n\tinterval: {\n\t\tstart: string;\n\t\tend: string;\n\t};\n\tfilters: Filter[];\n};\n\ntype DatapointValueContent = string | number | DatapointValueGeoPositionType | NestedDatapointValue;\ntype NestedDatapointValue = Record<string, string | number>;\n\ntype DatapointValue = {\n\ttimestamp: string;\n\tassetUrn: string;\n\tdatapointName: string;\n\tvalue: DatapointValueContent;\n};\n\nexport type DatapointValuesResponse = {\n\tcontent: DatapointValue[];\n\tpagination: PaginationSettingsAdxData;\n\tqueryId: string;\n};\n\nexport const getStructuredDatapointPropertyNodes = (\n\tassetUrn: string,\n\tdatapointName: string,\n\tdatatype: DataType,\n\ttsFrom: string,\n\ttsTo: string\n): Promise<StructuredDatapointPropertyNodes> => {\n\tconst queryParameters: Record<string, string> = {\n\t\tdatatype: DataTypeToAdxDistinctDatapointType[datatype],\n\t\tstart: tsFrom,\n\t\tend: tsTo\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/assets/${assetUrn}/datapoints/${datapointName}/propertyNodes`, {params: queryParameters})\n\t\t.then(extractData);\n};\n\nexport const getStructuredDatapointDistinctValues = (\n\tassetUrn: string,\n\tdatapointName: string,\n\tdatatype: DataType,\n\ttsFrom: string,\n\ttsTo: string,\n\tpropertyPath?: string // Optional because it's unnecessary for primitive datapoints\n): Promise<DistinctValuesResponse> => {\n\tconst queryParameters: Record<string, string | number> = {\n\t\tdatatype: DataTypeToAdxDistinctDatapointType[datatype],\n\t\tstart: tsFrom,\n\t\tend: tsTo,\n\t\tpropertyPath: propertyPath || ''\n\t};\n\n\tif (propertyPath) {\n\t\tqueryParameters.propertyPath = propertyPath;\n\t}\n\n\treturn retryRequest(() =>\n\t\tgetAxios()\n\t\t\t.get(`/v2/assets/${assetUrn}/datapoints/${datapointName}/distinctValues`, {\n\t\t\t\tparams: queryParameters\n\t\t\t})\n\t\t\t.then(extractData)\n\t);\n};\n\nexport const getDatapointValuesByFilters = (\n\tstart: string,\n\tend: string,\n\tfilters: Filter[],\n\tpaginationSettings: PaginationRequestAdxData,\n\tstoreQueryResult?: boolean\n): Promise<DatapointValuesResponse> => {\n\tconst requestPayload: DatapointValuesRequest = {\n\t\tinterval: {\n\t\t\tstart,\n\t\t\tend\n\t\t},\n\t\tfilters\n\t};\n\n\tconst queryString = buildDatapointValuesQueryString(paginationSettings, storeQueryResult);\n\treturn retryRequest(() =>\n\t\tgetAxios().post(`/v2/assets/datapointValues${queryString}`, requestPayload).then(extractData)\n\t);\n};\n\nexport const getDatapointValuesByQueryId = (\n\tpaginationSettings: PaginationRequestAdxData,\n\tqueryId: string\n): Promise<DatapointValuesResponse> => {\n\tconst queryString = buildDatapointValuesQueryString(paginationSettings);\n\treturn retryRequest(() => getAxios().get(`/v2/assets/datapointValues/${queryId}${queryString}`).then(extractData));\n};\n\nconst buildDatapointValuesQueryString = (\n\tpaginationSettings: PaginationRequestAdxData,\n\tstoreQueryResult?: boolean\n): string => {\n\tconst queryParams = paginationSettingsAdxToQueryParams(paginationSettings);\n\n\tlet params: Record<string, string> = {};\n\n\tif (queryParams !== undefined) {\n\t\tparams = {\n\t\t\tpage: queryParams.page.toString(),\n\t\t\tsize: queryParams.size.toString(),\n\t\t\tsort: queryParams.sort\n\t\t};\n\t}\n\n\tif (storeQueryResult !== undefined) {\n\t\tparams.storeQueryResult = storeQueryResult.toString();\n\t}\n\n\treturn Object.keys(params).length > 0 ? `?${new URLSearchParams(params).toString()}` : '';\n};\n","import {extractData, getAxios} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\n\nexport type DataProcessingDefinitionDatapointDataType = 'BOOLEAN' | 'DOUBLE' | 'LONG' | 'TEXT';\n\nexport type DataProcessingDefinitionProcessingDefType = 'expressionPD';\n\nexport type DataProcessingDefinitionProcessingPeriod = 'INSTANT' | 'MIN1' | 'MIN15' | 'MIN30' | 'HOUR';\n\nexport type DataProcessingDefinitionDatapoint = {\n\tdatapointKey: string;\n\tvariableName: string;\n\tdataType: DataProcessingDefinitionDatapointDataType;\n\trequiresValueInCurrentPeriod: boolean;\n};\n\nexport type DataProcessingDefinitionOutput = {\n\toutputKey: string;\n\tvariableName: string;\n};\n\nexport type DataProcessingDefinitionBody = {\n\tid?: string;\n\tversion?: number;\n\tprocessingDefType: string;\n\tkpiName: string;\n\tprocessingPeriod: DataProcessingDefinitionProcessingPeriod;\n\tresetTo: string;\n\tensureBoundaryValues: boolean;\n\texpression: string;\n\tinput: Array<DataProcessingDefinitionDatapoint>;\n\toutput: Array<DataProcessingDefinitionOutput>;\n\tpublishAsDatapointValues?: boolean;\n};\n\nexport type DataProcessingDefinition = {\n\tid: number;\n\tdirectlyAssigned: boolean;\n\tetag?: string | null | undefined;\n\tdefinition: DataProcessingDefinitionBody;\n};\n\nexport type DataProcessingDefinitionAssignment = {\n\tid: number;\n\tkpiName: string;\n};\n\nexport type AssetAssignment = {\n\tassetId: number;\n\tassetUrn: string;\n\tassetName: string;\n};\n\nexport type DataProcessingDefinitionAssetAssignment = DataProcessingDefinitionAssignment & {\n\tassignedToAssets: Array<AssetAssignment>;\n};\n\nexport type AssetGroupAssignment = {\n\tassetGroupId: number;\n\tassetGroupName: string;\n\tassetGroupDisplayName: string;\n};\n\nexport type DataProcessingDefinitionAssetGroupAssignment = DataProcessingDefinitionAssignment & {\n\tassignedToAssetGroups: Array<AssetGroupAssignment>;\n};\n\nexport type AccountGroupAssignment = {\n\taccountGroupId: number;\n\taccountGroupName: string;\n\taccountGroupDisplayName: string;\n};\n\nexport type DataProcessingDefinitionAccountGroupAssignment = DataProcessingDefinitionAssignment & {\n\taccessesForAccountGroups: Array<AccountGroupAssignment>;\n};\n\nexport type DataProcessingDefinitionValidation = {\n\tid: number;\n\tname: string;\n\tcompatibleDatapoints: Array<string>;\n\tmissingDatapoints: Array<string>;\n};\n\nexport type DataProcessingDefinitionAccessList = {\n\taccountGroupId: number;\n};\n\ntype EvaluationsParamsInput = {\n\tvariableName: string;\n\tdatapointKey: string;\n\tdataType: string;\n};\n\nexport type EvaluationsParams = {\n\texpression: string;\n\tperiod: string;\n\tfrom: string;\n\tto: string;\n\tinputs: Array<EvaluationsParamsInput>;\n};\n\nexport type DataProcessingDefinitionEvaluationSeries = {\n\tseries: Array<{\n\t\tvariable: string;\n\t\ttype: string;\n\t\tdata: Array<[string, number]>;\n\t}>;\n};\n\nexport type DataProcessingDefinitionsListFilterSettings = {\n\tkpiName?: string;\n\tpublishAsDatapointValues?: string;\n};\n\nexport const listDataProcessingDefinitions = (\n\tfilterSettings: DataProcessingDefinitionsListFilterSettings,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<DataProcessingDefinition>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 10,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\tconst params = {\n\t\t...filterSettings,\n\t\tpage,\n\t\tsize,\n\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions', {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAssetAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAssetAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/assets', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAssetGroupAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAssetGroupAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/assetGroups', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAccountGroupAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAccountGroupAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/accesses', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const getDataProcessingDefinitionById = (definitionId: number): Promise<DataProcessingDefinition> => {\n\treturn getAxios()\n\t\t.get(`/v2/dataProcessingDefinitions/${definitionId}`)\n\t\t.then((response) => {\n\t\t\tconst data = extractData(response);\n\t\t\tconst etag = response.headers?.etag || '';\n\t\t\treturn {...data, etag};\n\t\t});\n};\n\nexport const fetchDataProcessingDefinitionsAssignedToAsset = (\n\tassetId: number\n): Promise<Array<DataProcessingDefinition>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/dataProcessingDefinitions`).then(extractData);\n};\n\nexport const fetchDataProcessingDefinitionsAssignedToAssetGroup = (\n\tassetGroupId: number\n): Promise<Array<DataProcessingDefinition>> => {\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitions`).then(extractData);\n};\n\nexport const createDataProcessingDefinition = (dataProcessingDefinition: {\n\tdefinition: DataProcessingDefinitionBody;\n\tassetIdsWithAccess?: number[];\n\taccountGroupIdsWithAccess?: number[];\n}): Promise<DataProcessingDefinition> => {\n\treturn getAxios().post('/v2/dataProcessingDefinitions', dataProcessingDefinition).then(extractData);\n};\n\nexport const updateDataProcessingDefinition = (data: DataProcessingDefinition): Promise<DataProcessingDefinition> => {\n\tconst {etag, ...dataProcessingDefinition} = data;\n\treturn getAxios()\n\t\t.put(`/v2/dataProcessingDefinitions/${dataProcessingDefinition.id}`, dataProcessingDefinition, {\n\t\t\theaders: etag\n\t\t\t\t? {\n\t\t\t\t\t\t'If-Match': etag\n\t\t\t\t\t}\n\t\t\t\t: {}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const assignDataProcessingDefinitionsToAsset = (\n\tassetId: number,\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/dataProcessingDefinitionsById`, dataProcessingDefinitionIds)\n\t\t.then(extractData);\n};\n\nexport const assignDataProcessingDefinitionsToAssetGroup = (\n\tassetGroupId: number,\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.put(`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitionsById`, dataProcessingDefinitionIds)\n\t\t.then(extractData);\n};\n\nexport const deleteDataProcessingDefinition = async (dataProcessingDefinitionId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/dataProcessingDefinitions/${dataProcessingDefinitionId}`);\n};\n\nexport const validateDataProcessingDefinitionForAssetGroup = (\n\tdataProcessingDefinition: DataProcessingDefinition,\n\tassetGroupId: number,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<DataProcessingDefinitionValidation>> => {\n\tconst {definition} = dataProcessingDefinition;\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 10,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitionValidation`,\n\t\t\t{\n\t\t\t\tdefinition\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: sort ? `${sort.property},${sort.direction}` : '',\n\t\t\t\t\tignoreCase: true\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAccesses = (\n\tdefinitionId: number\n): Promise<DataProcessingDefinitionAccessList> => {\n\treturn getAxios().get(`/v2/dataProcessingDefinitions/${definitionId}/access`).then(extractData);\n};\n\nexport const addAccessToDataProcessingDefinition = async (\n\tdefinitionId: number,\n\taccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().put(`/v2/dataProcessingDefinitions/${definitionId}/access/${accountGroupId}`);\n};\n\nexport const removeAccessToDataProcessingDefinition = async (\n\tdefinitionId: number,\n\taccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/dataProcessingDefinitions/${definitionId}/access/${accountGroupId}`);\n};\n\nexport const getDataProcessingDefinitionEvaluations = (\n\turn: string,\n\tparams: EvaluationsParams\n): Promise<DataProcessingDefinitionEvaluationSeries> =>\n\tgetAxios()\n\t\t.post(`/v2/dataProcessingDefinitionEvaluations/${encodeURIComponent(urn)}`, params)\n\t\t.then(extractData);\n","import {getAxios} from './axios';\n\nexport type AggregatedFact = {\n\taggregatedValue: number | null | undefined;\n\trangeEnd: string;\n\trangeStart: string;\n};\n\nexport type AggregatedFacts = {\n\taggregatedFacts: Array<AggregatedFact> | null | undefined;\n};\n\ntype KpiQueryType = 'QUERY_SUM' | 'QUERY_AVERAGE' | 'QUERY_MAX' | 'QUERY_MIN' | 'QUERY_ALL';\n\nexport type KpiQueryAssetsBy = 'BY_ASSET_ID' | 'BY_SITE_GROUP_ID' | 'BY_ROBOT_SYSTEM_GROUP_ID';\n\nexport type KpiParams = {\n\tkpiName: string;\n\tqueryAssetsBy: KpiQueryAssetsBy;\n\tqueryAssetsById: number;\n\tqueryType: KpiQueryType;\n\tdaysOfWeek?: string;\n\tdateFrom: string;\n\tdateTo: string;\n\ttsFrom?: string;\n\ttsTo?: string;\n\ttimeFrom?: string;\n\ttimeTo?: string;\n\tuserId?: number;\n\texternalUuid?: string | null | undefined;\n\tgroupBy?: string;\n};\n\nexport const getKpiGenericWithTimestamp = (params: KpiParams): Promise<AggregatedFacts> =>\n\tgetAxios()\n\t\t.get('/v2/kpis/facts', {\n\t\t\tparams: {...params}\n\t\t})\n\t\t.then(({data}) => data);\n\nexport const getKpiGeneric = (params: KpiParams): Promise<Array<number>> =>\n\tgetAxios()\n\t\t.get('/v2/kpis/facts/generic', {\n\t\t\tparams: {...params}\n\t\t})\n\t\t.then(({data}) => data);\n","import {getAxios, extractData} from './axios';\n\nconst DAY_MILLIS = 24 * 60 * 60 * 1000;\n\nexport type EventType = 'STATEFUL' | 'ONE_TIME';\n\nexport type Event = {\n\tassetId: number;\n\teventType: EventType;\n\teventKey: string;\n\tpriority: number;\n\toccurredAt: number;\n\tclearedAt: number | null | undefined;\n\tacknowledgeAt: number | null | undefined;\n\ttext: string;\n\textraProperties: Record<string, string>;\n};\n\nexport const fetchEventsByAssetId = (\n\tassetId: number,\n\tfrom?: number,\n\tto?: number,\n\texcludeAcknowledged?: boolean\n): Promise<Array<Event>> => {\n\tconst now = Date.now();\n\tconst defaultTo = now;\n\tconst defaultFrom = now - 28 * DAY_MILLIS;\n\tconst extraParams =\n\t\ttypeof excludeAcknowledged !== 'undefined'\n\t\t\t? {\n\t\t\t\t\texcludeAcknowledged\n\t\t\t\t}\n\t\t\t: {};\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/history/${assetId}`, {\n\t\t\tparams: {\n\t\t\t\tfrom: new Date(from ?? defaultFrom).toISOString(),\n\t\t\t\tto: new Date(to ?? defaultTo).toISOString(),\n\t\t\t\t...extraParams\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.events.map(parseEvent));\n};\n\nexport const fetchOpenStatefulEventsByAssetId = (\n\tassetId: number,\n\texcludeAcknowledged = true\n): Promise<Array<Event>> => {\n\tconst params = {\n\t\texcludeAcknowledged\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/stateful/${assetId}/open`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => (data.events && data.events.map(parseEvent)) || []);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parseEvent = (event: any): Event => {\n\treturn {\n\t\t...event,\n\t\toccurredAt: parseIsoDateString(event.occurredAt),\n\t\tclearedAt: parseIsoDateString(event.clearedAt),\n\t\tacknowledgeAt: parseIsoDateString(event.acknowledgeAt)\n\t};\n};\n\nconst parseIsoDateString = (isoString: string | null | undefined): number | null | undefined => {\n\treturn isoString ? new Date(isoString).getTime() : null;\n};\n\n/** @deprecated use acknowledgeStatefulEvent or acknowledgeStatelessEvent instead. */\nexport const acknowledgeEvent = async (assetId: number, eventKey: string): Promise<void> => {\n\tawait getAxios().put(`/v2/eventLog/stateful/${assetId}/${encodeURIComponent(eventKey)}/acknowledge`);\n};\n\nexport const acknowledgeStatefulEvent = async (assetId: number, eventKey: string): Promise<void> => {\n\tawait getAxios().put(`/v2/eventLog/stateful/${assetId}/${encodeURIComponent(eventKey)}/acknowledge`);\n};\n\nexport const acknowledgeStatelessEvent = async (\n\tassetId: number,\n\teventKey: string,\n\toccurredAt: number\n): Promise<void> => {\n\tawait getAxios().put(\n\t\t`/v2/eventLog/stateless/${assetId}/${encodeURIComponent(eventKey)}/acknowledge?occurredAt=${new Date(\n\t\t\toccurredAt\n\t\t).toISOString()}`\n\t);\n};\n\nexport const deleteHistoricEvents = async (assetId: number, from?: number, to?: number): Promise<void> => {\n\tconst params: Record<string, unknown> = {};\n\tif (from != null) params.from = new Date(from).toISOString();\n\tif (to != null) params.to = new Date(to).toISOString();\n\tawait getAxios().delete(`/v2/eventLog/history/${assetId}`, {params});\n};\n\nexport const fetchOpenEventsOfMultipleAssets = (assetIds: number[]): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/stateful/assets/open`, {\n\t\t\tparams: {\n\t\t\t\tassetId: assetIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchHistoricEventsOfMultipleAssets = (assetIds: number[], from: number, to: number): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/history/assets`, {\n\t\t\tparams: {\n\t\t\t\tassetId: assetIds,\n\t\t\t\tfrom: new Date(from).toISOString(),\n\t\t\t\tto: new Date(to).toISOString()\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.events.map(parseEvent));\n};\n","import {getAxios, extractData} from './axios';\n\ntype Locale = {\n\tid: number;\n\ttag: string;\n};\n\nexport type LocaleLanguageAndCountry = {\n\tlocale: string;\n};\n\nexport const fetchLocales = (): Promise<Array<string>> => {\n\treturn getAxios()\n\t\t.get<Locale[]>('/v2/locales')\n\t\t.then(extractData)\n\t\t.then((result) => result.map((locale) => locale.tag));\n};\n","import {getAxios, extractData} from './axios';\n\nexport type GrantedAccess = {\n\tid: number;\n\taccountGroup: number;\n\trequiredAssetGroups: Array<number>;\n};\n\nexport const fetchGrantedAccesses = (userGroupId: number): Promise<Array<GrantedAccess>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 999,\n\t\tsort: 'id,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${userGroupId}/grantedAccesses`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchGrantedAccessesForAssetGroup = (assetGroupId: number): Promise<Array<GrantedAccess>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 999,\n\t\tsort: 'id,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups/${assetGroupId}/grantedAccesses`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const createGrantedAccess = (\n\tuserGroupId: number,\n\trequiredAssetGroups: Array<number>\n): Promise<GrantedAccess> => {\n\treturn getAxios()\n\t\t.post(`/v2/accountGroups/${userGroupId}/grantedAccesses`, {\n\t\t\trequiredAssetGroups\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const updateGrantedAccess = (accessId: number, updatedGrantedAccess: GrantedAccess): Promise<GrantedAccess> => {\n\treturn getAxios().put(`/v2/grantedAccesses/${accessId}`, updatedGrantedAccess).then(extractData);\n};\n\nexport const deleteGrantedAccess = async (accessId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/grantedAccesses/${accessId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport const fetchNamedQueries = (): Promise<Array<unknown>> => {\n\treturn getAxios().get('/beta/namedQuery').then(extractData);\n};\n\nexport const executeNamedQuery = (id: string, params: Record<string, unknown>): Promise<Array<unknown>> => {\n\treturn getAxios()\n\t\t.put(`/beta/namedQuery/${id}/execute`, params)\n\t\t.then((result) => {\n\t\t\treturn extractData(result);\n\t\t});\n};\n","import {jwtDecode} from 'jwt-decode';\nimport {getAxios, extractData} from './axios';\n\nexport type AuthInfo = {\n\taccountNumber: string;\n\tprincipal: string;\n\taccessToken: string;\n\texpiresAt: number;\n\trefreshToken: string;\n\ttenant: string;\n\tusesOAuth?: boolean;\n};\n\nexport type NGCoreJWTClaims = {\n\texp: number;\n\tjti: string;\n\ttenant: string;\n\tclient_id: string;\n\tuser_name: string;\n\taccount_number: string;\n\tscope: string[];\n};\n\nexport type AuthorizationServerOption = {\n\tname: string;\n\tdisplayName: string;\n\tauthorizationUri: string;\n};\n\nexport type AuthorizationOptions = {\n\tauthorizationServers: Array<AuthorizationServerOption>;\n};\n\nconst OAUTH2_CLIENT_USERNAME = 'OAUTH2_CLIENT';\nconst OAUTH2_CLIENT_PASSWORD = OAUTH2_CLIENT_USERNAME;\n\nexport const requestToken = (principal: string, password: string): Promise<AuthInfo> => {\n\tconst params = new URLSearchParams({\n\t\tgrant_type: 'password',\n\t\tusername: principal,\n\t\tpassword\n\t}).toString();\n\treturn getAxios()\n\t\t.post('/v2/oauth/token', params, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then(({access_token, expires_in, refresh_token}) => createAuthInfo(access_token, expires_in, refresh_token));\n};\n\nexport const refreshToken = (token: string): Promise<AuthInfo> => {\n\tconst params = new URLSearchParams({\n\t\tgrant_type: 'refresh_token',\n\t\trefresh_token: token\n\t}).toString();\n\treturn getAxios()\n\t\t.post('/v2/oauth/token', params, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then(({access_token, expires_in, refresh_token}) => createAuthInfo(access_token, expires_in, refresh_token));\n};\n\nconst revokeToken = async (token: string, tokenTypeHint: string): Promise<void> => {\n\tconst params = new URLSearchParams({\n\t\ttoken: token,\n\t\ttoken_type_hint: tokenTypeHint\n\t}).toString();\n\tawait getAxios().post('/v2/oauth/revoke', params, {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t},\n\t\tauth: {\n\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t}\n\t});\n};\n\nexport const revokeAccessToken = (accessToken: string): Promise<void> => {\n\treturn revokeToken(accessToken, 'access_token');\n};\n\nexport const revokeRefreshToken = (accessToken: string): Promise<void> => {\n\treturn revokeToken(accessToken, 'refresh_token');\n};\n\nconst createAuthInfo = (accessToken: string, expiresIn: number, refreshToken: string): AuthInfo => {\n\tconst {account_number, user_name, tenant} = jwtDecode<NGCoreJWTClaims>(accessToken);\n\treturn {\n\t\taccountNumber: account_number,\n\t\tprincipal: user_name,\n\t\taccessToken,\n\t\texpiresAt: new Date().getTime() + expiresIn * 1000,\n\t\trefreshToken,\n\t\ttenant\n\t};\n};\n\nexport const fetchAuthorizationOptions = (): Promise<AuthorizationOptions> => {\n\treturn getAxios().get(`/v2/authorizationOptions`).then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type PropertyType = 'STRING' | 'TEXT' | 'DATE' | 'LONG' | 'DOUBLE' | 'BOOLEAN' | 'IP' | 'GEO';\n\nexport type EntityTarget = 'ASSET' | 'ASSET_GROUP' | 'ACCOUNT' | 'ACCOUNT_GROUP' | 'DATAPOINT';\n\nexport type Property = {\n\tkey: string;\n\ttype: PropertyType;\n\tentityTargets: Array<EntityTarget>;\n\tdeletable: boolean;\n\taddToAll: boolean;\n\tunique?: boolean;\n\trequired?: boolean;\n\tfinal?: boolean;\n\tminLength?: number | null;\n\tmaxLength?: number | null;\n\tregularExpression?: string | null;\n\tallowedValues?: string[] | null;\n};\n\nexport type PropertyValues = Record<string, (number | boolean | string) | null | undefined>;\n\nexport const fetchProperties = (): Promise<Array<Property>> => {\n\treturn getAxios()\n\t\t.get('/v2/properties?size=2000')\n\t\t.then(extractData)\n\t\t.then((response) => response.content);\n};\n\nexport const getPropertyById = (propertyKey: string): Promise<Property> => {\n\treturn getAxios().get(`/v2/properties/${propertyKey}`).then(extractData);\n};\n\nexport const createProperty = (property: Property): Promise<Property> => {\n\treturn getAxios().post('/v2/properties', property).then(extractData);\n};\n\nexport const updateProperty = (property: Property): Promise<Property> => {\n\treturn getAxios().put(`/v2/properties/${property.key}`, property).then(extractData);\n};\n\nexport const deleteProperty = async (property: Property): Promise<void> => {\n\tawait getAxios().delete(`/v2/properties/${property.key}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RoleNew = {\n\tname: string;\n\tdescription?: string;\n\tlicenseName?: string | null;\n\tlicenseDisplayName?: string | null;\n};\n\nexport type Role = {\n\tid: number;\n\t/** Whether the current user can assign this role. If undefined, the role is considered assignable. */\n\tassignable?: boolean;\n} & RoleNew;\n\nexport const fetchRoleById = (id: number): Promise<Role> => {\n\treturn getAxios().get(`/v2/roles/${id}`).then(extractData);\n};\n\nexport const fetchRoleByIds = (ids: number[]): Promise<Array<Role>> => {\n\treturn getAxios()\n\t\t.get(`/v2/roles`, {\n\t\t\tparams: {\n\t\t\t\tid: ids,\n\t\t\t\tpage: 0,\n\t\t\t\tsize: ids.length\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchRolesForLicense = (licenseName: string): Promise<Array<Role>> => {\n\treturn getAxios().get(`/v2/licenses/${licenseName}/roles`).then(extractData);\n};\n\nexport const createRole = (item: RoleNew): Promise<Role> => {\n\treturn getAxios().post(`/v2/roles`, item).then(extractData);\n};\n\nexport const createRoleWithLicense = (item: RoleNew, licenseName: string): Promise<Role> => {\n\treturn getAxios().post(`/v2/licenses/${licenseName}/roles`, item).then(extractData);\n};\n\nexport const updateRole = (item: Role): Promise<Role> => {\n\treturn getAxios().put(`/v2/roles/${item.id}`, item).then(extractData);\n};\n\nexport const deleteRole = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/roles/${id}`);\n};\n\nexport const fetchRoles = (): Promise<Array<Role>> => {\n\treturn getAxios()\n\t\t.get('/v2/roles', {\n\t\t\tparams: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchAuthoritiesOfRole = (id: number): Promise<Array<string>> => {\n\treturn getAxios().get(`/v2/roles/${id}/authorities`).then(extractData);\n};\n\nexport const setAuthoritiesOfRole = (id: number, authorities: Array<string>): Promise<Array<string>> => {\n\treturn getAxios().put(`/v2/roles/${id}/authorities`, authorities).then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RuleDefinitionGeoPosition = {\n\tlatitude: number;\n\tlongitude: number;\n};\n\nexport type RuleDefinitionConfig = {\n\tid: string;\n\tassetId?: number;\n\tinternal: boolean;\n\tcheckType: string;\n\tthresholdValue?: number;\n\tupperThreshold?: boolean;\n\tgeneratedEventKey: string;\n\tdatapointKeys?: Array<string>;\n\tgeneratedEventPriority: number;\n\tdriftType?: string;\n\twindowSizeMs?: number;\n\tupperLimit?: number;\n\tlowerLimit?: number;\n\tnumberOfEvents?: number;\n\tdurationInSeconds?: number;\n\toperation?: string;\n\teventKeys?: Array<string>;\n\tvalue?: string | number | boolean;\n\tvalueDatatype?: string;\n\tepsilon?: number;\n\tgeoFence?: Array<RuleDefinitionGeoPosition>;\n\tthresholdEnter?: number;\n\tthresholdLeave?: number;\n\ttimeFrameSizeMillis?: number;\n};\n\nexport type RuleDefinition = {\n\tid: number;\n\tname: string;\n\tconfig: RuleDefinitionConfig;\n\tdisplayName?: string;\n\tdirectlyAssigned: boolean;\n};\n\nexport type EventTemplateMapping = {\n\tid?: number | null | undefined;\n\truleId?: string | null | undefined;\n\ttemplateName: string;\n\teventKey: string;\n\teventStatus: 'COME' | 'GONE';\n\tlocale: string | null | undefined;\n\tmailAddresses: Array<string> | null | undefined;\n};\n\nexport const fetchAssignedAssetRules = (assetId: number): Promise<Array<RuleDefinition>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/ruleDefinitions`).then(extractData);\n};\n\nexport const fetchAssignedAssetGroupRules = (assetGroupId: number): Promise<Array<RuleDefinition>> => {\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/ruleDefinitions`).then(extractData);\n};\n\nexport const createRule = (rule: RuleDefinition): Promise<RuleDefinition> => {\n\treturn getAxios().post('/v2/ruleDefinitions/', rule).then(extractData);\n};\n\nexport const updateRule = (rule: RuleDefinition): Promise<RuleDefinition> => {\n\treturn getAxios().put(`/v2/ruleDefinitions/${rule.id}`, rule).then(extractData);\n};\n\nexport const assignAssetRules = (assetId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/assets/${assetId}/ruleDefinitionsById`, ruleIds).then(extractData);\n};\n\nexport const assignAssetGroupRules = (assetGroupId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroupId}/ruleDefinitionsById`, ruleIds).then(extractData);\n};\n\nexport const unassignAssetRules = (assetId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn fetchAssignedAssetRules(assetId).then((assignedRules) =>\n\t\tassignAssetRules(\n\t\t\tassetId,\n\t\t\tassignedRules.map((r) => r.id).filter((id) => !ruleIds.includes(id))\n\t\t)\n\t);\n};\n\nexport const unassignAssetGroupRules = (assetGroupId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn fetchAssignedAssetGroupRules(assetGroupId).then((assignedRules) =>\n\t\tassignAssetGroupRules(\n\t\t\tassetGroupId,\n\t\t\tassignedRules.map((r) => r.id).filter((id) => !ruleIds.includes(id))\n\t\t)\n\t);\n};\n\nexport const deleteRule = async (ruleId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/ruleDefinitions/${ruleId}`);\n};\n\nexport const fetchRuleByName = (name: string): Promise<RuleDefinition> => {\n\treturn getAxios().get(`/v2/ruleDefinitions/name/${name}`).then(extractData);\n};\n\n/** @deprecated unused in NGUI */\nexport const checkRuleNameUniquenes = (name: string): Promise<boolean> => {\n\tif (!name || !name.length) {\n\t\treturn Promise.resolve(true);\n\t}\n\n\treturn fetchRuleByName(name)\n\t\t.then(() => false)\n\t\t.catch(() => true);\n};\n\nexport const fetchEventTemplateMappingsOfRule = (ruleUuid: string): Promise<Array<EventTemplateMapping>> => {\n\treturn getAxios()\n\t\t.get('/v1/eventTemplateMapping', {\n\t\t\tparams: {\n\t\t\t\truleId: ruleUuid\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((eventTemplateMappings) => eventTemplateMappings.content);\n};\n\nexport const createEventTemplateMapping = (e: EventTemplateMapping): Promise<EventTemplateMapping> => {\n\treturn getAxios().post('/v1/eventTemplateMapping', e).then(extractData);\n};\n\nexport const deleteAllEventTemplateMappingsOfRule = async (ruleUuid: string): Promise<void> => {\n\tawait getAxios().delete(`/v1/eventTemplateMapping/ruleId/${ruleUuid}`);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type NotificationTemplateAccess = {\n\taccountGroupIds: number[];\n};\n\nexport type NotificationTemplateNew = {\n\tname: string;\n\tdisplayName: string;\n\ttenant: string;\n\tlocale: string | null | undefined;\n\tsubject: string;\n\ttext: string;\n\tscope: 'ACCOUNTS' | 'CONDITION_MONITORING';\n\taccountGroupsWithAccess?: number[];\n};\n\nexport type NotificationTemplate = NotificationTemplateNew & {\n\tid: number;\n};\n\nexport const fetchEmailTemplateById = (id: number): Promise<NotificationTemplate> => {\n\treturn getAxios().get(`/v2/emailTemplates/${id}`).then(extractData);\n};\n\nexport const fetchEmailTemplateAccessById = (id: number): Promise<NotificationTemplateAccess> => {\n\treturn getAxios().get(`/v2/emailTemplates/${id}/access`).then(extractData);\n};\n\nexport const fetchEmailTemplates = (params: Record<string, unknown>): Promise<Array<NotificationTemplate>> => {\n\treturn getAxios()\n\t\t.get('/v2/emailTemplates', {\n\t\t\tparams: {\n\t\t\t\tscope: 'CONDITION_MONITORING',\n\t\t\t\t...params\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((emailTemplates) => emailTemplates.content);\n};\n\nexport const createEmailTemplate = (notificationTemplate: NotificationTemplateNew): Promise<NotificationTemplate> => {\n\treturn getAxios().post('/v2/emailTemplates', notificationTemplate).then(extractData);\n};\n\nexport const updateEmailTemplate = (notificationTemplate: NotificationTemplate): Promise<NotificationTemplate> => {\n\treturn getAxios().put(`/v2/emailTemplates/${notificationTemplate.id}`, notificationTemplate).then(extractData);\n};\n\nexport const deleteEmailTemplate = async (notificationTemplateId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/emailTemplates/${notificationTemplateId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type Subscription = {\n\tsubscriptionId: string;\n\tsubscriptionUris: Array<string>;\n};\n\nexport const subscribeAssets = (\n\tassetIds: Array<number>,\n\ttypes: Array<string> = ['datapointValuesReceived', 'eventUpdate', 'statefulEvent']\n): Promise<Subscription> => {\n\treturn getAxios()\n\t\t.post('/v2/subscriptions', {\n\t\t\tassetIds,\n\t\t\ttypes,\n\t\t\tdurable: false\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const subscribeAssetGroups = (\n\tassetGroupIds: Array<number>,\n\ttypes: Array<string> = ['datapointValuesReceived', 'eventUpdate', 'statefulEvent']\n): Promise<Subscription> => {\n\treturn getAxios()\n\t\t.post('/v2/subscriptions', {\n\t\t\tassetGroupIds,\n\t\t\ttypes,\n\t\t\tdurable: false\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const unsubscribe = async (subscriptionId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/subscriptions/${subscriptionId}`);\n};\n","import {getAxios, extractData} from './axios';\nimport {Unit} from './datapoint';\n\nexport const fetchUnits = (): Promise<Array<Unit>> => {\n\treturn getAxios().get(`/v2/units`).then(extractData);\n};\n\nexport const addUnit = (unit: Unit): Promise<Unit> => {\n\treturn getAxios().put(`/v2/units/${unit.name}`, unit).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\nimport type {UserGroup} from './userGroup';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {paginationSettingsToQueryParams} from './pagination';\nimport {PropertyValues} from './property';\nimport {License} from './licenses';\nimport {LocaleLanguageAndCountry} from './locale';\n\nexport type UserState = 'ACTIVE' | 'INACTIVE' | 'TERMINATED' | 'TERMS_ACCEPTANCE_PENDING' | 'INVITED';\n\ntype UserPrincipals = {\n\tUSERNAME?: Array<{\n\t\tname: string;\n\t}>;\n\tEMAIL?: Array<{\n\t\tname: string;\n\t}>;\n\tOPEN_ID_CONNECT_LINK?: Array<{\n\t\tname: string;\n\t}>;\n};\n\nexport type UserNew = {\n\tdisplayName?: string | undefined;\n\tname?: string | undefined;\n\tprincipals: {\n\t\tUSERNAME?: [{name: string}];\n\t\tEMAIL: [{name: string}];\n\t};\n\tinitialState?: UserState;\n\tlocale: string;\n\ttimezone?: string;\n\taccountGroupIds?: Array<number>;\n\tproperties?: PropertyValues;\n};\n\nexport type User = {\n\tid: number;\n\tnumber: string;\n\tstate: UserState;\n\tprincipals: UserPrincipals;\n\tauthorities: Array<string>;\n\tproperties: PropertyValues;\n\tlocale: string;\n\ttimezone: string;\n\tdisplayName: string;\n\t/** @deprecated name field is deprecated, use displayName instead. */\n\tname?: string | undefined;\n\taccountGroupIds: Array<number>;\n\troleIds: Array<number>;\n\tlicense?: License;\n\tlastSuccessfulLogin: string | null | undefined;\n\tpendingInvitation?: boolean;\n\ttwoFactorResetPossible?: boolean;\n\ttwoFactorDeviceRegisteredCount?: number;\n};\n\nexport const fetchUserByAccountNumber = (accountNumber: string): Promise<User> => {\n\treturn getAxios().get(`/v2/accounts/${accountNumber}`).then(extractData);\n};\n\nexport const fetchMe = (): Promise<User> => {\n\treturn getAxios().get(`/v2/accounts/me`).then(extractData);\n};\n\nexport const fetchUsers = (paginationSettings: PaginationSettings): Promise<Pageable<User>> => {\n\treturn getAxios()\n\t\t.get('/v2/accounts', {params: paginationSettingsToQueryParams(paginationSettings)})\n\t\t.then(extractData);\n};\n\nexport const createUser = (user: UserNew): Promise<User> => {\n\tconst userToCreate: Record<string, unknown> = {\n\t\tdisplayName: user.displayName,\n\t\tname: user.name,\n\t\tinitialState: user.initialState,\n\t\temailAddress: user.principals.EMAIL[0].name,\n\t\tlocale: user.locale,\n\t\ttimezone: user.timezone,\n\t\taccountGroupIds: user.accountGroupIds,\n\t\tproperties: user.properties\n\t};\n\n\tif (user.principals.USERNAME && user.principals.USERNAME[0].name) {\n\t\tuserToCreate.username = user.principals.USERNAME[0].name;\n\t}\n\n\treturn getAxios().post('/v2/accounts/registrationsWithEmail', userToCreate).then(extractData);\n};\n\nexport const inviteUser = async (accountNumber: string, initialState: UserState): Promise<void> => {\n\tawait getAxios().post(`/v2/accounts/${accountNumber}/invite`, {initialState});\n};\n\nexport const updateUser = (user: User): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/${user.number}`, user).then(extractData);\n};\n\nexport const updateMe = (user: User): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/me`, user).then(extractData);\n};\n\nexport const searchUsers = (query: string, paginationSettings: PaginationSettings): Promise<Pageable<User>> => {\n\tconst {page, size, sort} = paginationSettings;\n\treturn getAxios()\n\t\t.get('/v2/accounts/search', {\n\t\t\tparams: {\n\t\t\t\tq: query,\n\t\t\t\tpage: page || 0,\n\t\t\t\tsize,\n\t\t\t\tsort: `${sort.property},${sort.direction}`,\n\t\t\t\tignoreCase: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchUserGroupsOfUser = (accountNumber: string): Promise<Array<UserGroup>> => {\n\treturn getAxios().get(`/v2/accountGroups?accountNumber=${accountNumber}`).then(extractData);\n};\n\nexport const setUserPassword = async (token: string, password: string): Promise<void> => {\n\tawait getAxios().put(`/v2/accountPassword`, {\n\t\ttoken,\n\t\tpassword\n\t});\n};\n\nexport const deleteUser = async (accountNumber: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/${accountNumber}`);\n};\n\nexport const deleteMyAccount = async (): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/me`);\n};\n\nexport const triggerPasswordReset = async (email: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountPasswordReset`, {\n\t\temail\n\t});\n};\n\nexport const triggerEmailChange = async (\n\taccountNumber: string,\n\toldEmailAddress: string,\n\tnewEmailAddress: string\n): Promise<void> => {\n\tawait getAxios().post(`/v2/accounts/${accountNumber}/emailChange `, {\n\t\toldEmailAddress,\n\t\tnewEmailAddress\n\t});\n};\n\nexport const changeEmail = async (token: string): Promise<void> => {\n\tawait getAxios().post('/v2/emailChange', {\n\t\ttoken\n\t});\n};\n\nexport const updateUserGroupsOfUser = async (\n\taccountNumber: string,\n\taddedUserGroupIds: Array<number>,\n\tremovedUserGroupIds: Array<number>\n): Promise<void> => {\n\tconst changes = [];\n\n\tif (addedUserGroupIds.length) {\n\t\tchanges.push({\n\t\t\taction: 'ADD',\n\t\t\tgroupIds: addedUserGroupIds\n\t\t});\n\t}\n\n\tif (removedUserGroupIds.length) {\n\t\tchanges.push({\n\t\t\taction: 'REMOVE',\n\t\t\tgroupIds: removedUserGroupIds\n\t\t});\n\t}\n\n\tawait getAxios().patch(`/v2/accounts/${accountNumber}/groups`, {\n\t\tchanges\n\t});\n};\n\nexport const fetchRolesOfUser = (accountNumber: string): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/accounts/${accountNumber}/roles`).then(extractData);\n};\n\nexport const updateRolesOfUser = (accountNumber: string, roleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/accounts/${accountNumber}/roles`, roleIds).then(extractData);\n};\n\nexport const updateLocaleOfUser = (locale: LocaleLanguageAndCountry): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/me/locale`, locale).then(extractData);\n};\n\nexport const acceptEULA = (): Promise<User> => {\n\treturn getAxios()\n\t\t.put(`/v2/accounts/me/acceptTerms`)\n\t\t.then(() => fetchMe());\n};\n\nexport const setUserState = async (accountNumber: string, state: UserState): Promise<void> => {\n\tawait getAxios().put<{\n\t\tstate: UserState;\n\t}>(`/v2/accounts/${accountNumber}/state`, {\n\t\tstate\n\t});\n};\n\nexport const delete2FADevice = async (accountNumber: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/${accountNumber}/authenticationDevices`);\n};\n","import {getAxios, extractData} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {PropertyValues} from './property';\nimport {paginationSettingsToQueryParams} from './pagination';\n\nexport type NewUserGroup = {\n\tname: string;\n\tdescription?: string;\n\tdisplayName?: string;\n\tproperties?: PropertyValues;\n\taccountGroupsWithAccess?: Array<number>;\n};\n\nexport type UserGroup = NewUserGroup & {\n\tid: number;\n\troleIds?: Array<number>;\n};\n\nexport const fetchUserGroups = (paginationSettings: PaginationSettings): Promise<Pageable<UserGroup>> => {\n\treturn getAxios()\n\t\t.get('/v2/accountGroups', {params: paginationSettingsToQueryParams(paginationSettings)})\n\t\t.then(extractData);\n};\n\nexport const fetchUserGroupById = (id: number): Promise<UserGroup> => {\n\treturn getAxios().get(`/v2/accountGroups/${id}`).then(extractData);\n};\n\nexport const createUserGroup = (usergroup: NewUserGroup): Promise<UserGroup> => {\n\treturn getAxios().post(`/v2/accountGroups`, usergroup).then(extractData);\n};\n\nexport const updateUserGroup = (usergroup: UserGroup): Promise<UserGroup> => {\n\treturn getAxios().put(`/v2/accountGroups/${usergroup.id}`, usergroup).then(extractData);\n};\n\nexport const deleteUserGroup = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/accountGroups/${id}`);\n};\n\nexport const searchUserGroups = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<UserGroup>> => {\n\tconst params = {\n\t\tq: query,\n\t\tignoreCase: true,\n\t\t...paginationSettingsToQueryParams(paginationSettings)\n\t};\n\treturn getAxios()\n\t\t.get('/v2/accountGroups/search', {\n\t\t\tparams,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchRoleIdsOfUserGroup = (id: number): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/accountGroups/${id}/roles`).then(extractData);\n};\n\nexport const updateRoleIdsOfUserGroup = (id: number, roleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/accountGroups/${id}/roles`, roleIds).then(extractData);\n};\n\nexport const assignUsersToUserGroupByIds = async (usergroup: UserGroup, userIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'ADD',\n\t\taccountIds: userIds\n\t});\n};\n\nexport const assignUsersToUserGroupByQuery = async (usergroup: UserGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'ADD',\n\t\tquery\n\t});\n};\n\nexport const unassignUsersFromUserGroupByIds = async (usergroup: UserGroup, userIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'REMOVE',\n\t\taccountIds: userIds\n\t});\n};\n\nexport const unassignUsersFromUserGroupByQuery = async (usergroup: UserGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'REMOVE',\n\t\tquery\n\t});\n};\n\nexport const fetchAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/assetGroupsAccesses`)\n\t\t.then(extractData)\n\t\t.then((result) => result.assetGroupIds);\n};\n\nexport const addAccess = async (accountGroupId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assetGroups/${assetGroupId}/access/${accountGroupId}`);\n};\n\nexport const deleteAccess = async (accountGroupId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${assetGroupId}/access/${accountGroupId}`);\n};\n\nexport const fetchAccountGroupAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/accountGroupsAccesses`)\n\t\t.then(extractData)\n\t\t.then((result) => result.accountGroupIds);\n};\n\nexport const fetchInverseAccountGroupAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/access`)\n\t\t.then(extractData)\n\t\t.then((result) => result.accountGroupIds);\n};\n\nexport const addAccountGroupAccess = async (\n\tgivingAccessAccountGroupId: number,\n\treceivingAccessAccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().put(`/v2/accountGroups/${givingAccessAccountGroupId}/access/${receivingAccessAccountGroupId}`);\n};\n\nexport const deleteAccountGroupAccess = async (\n\tgivingAccessAccountGroupId: number,\n\treceivingAccessAccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/accountGroups/${givingAccessAccountGroupId}/access/${receivingAccessAccountGroupId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type License = {\n\tname: string;\n\tdisplayName: string;\n\tdescription: string;\n};\n\nexport const fetchLicenses = (): Promise<Array<License>> => {\n\treturn getAxios().get(`v2/licenses`).then(extractData);\n};\n\nexport const fetchLicenseByName = (licenseName: string): Promise<License> => {\n\treturn getAxios().get(`v2/licenses/${licenseName}`).then(extractData);\n};\n\nexport const createLicense = (license: License): Promise<License> => {\n\treturn getAxios().post(`v2/licenses`, license).then(extractData);\n};\n\nexport const updateLicense = (license: License): Promise<License> => {\n\treturn getAxios().put(`/v2/licenses/${license.name}`, license).then(extractData);\n};\n\nexport const deleteLicense = async (licenseName: string): Promise<void> => {\n\tawait getAxios().delete(`v2/licenses/${licenseName}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport const getVersion = (): Promise<string> => {\n\treturn getAxios()\n\t\t.get('/v2/version', {\n\t\t\theaders: {\n\t\t\t\tAccept: 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RemoteServiceConnectionInfo = {\n\taccountNumber: string;\n\taccountConnected: boolean | null | undefined;\n\taccountVpnIp: string | null | undefined;\n\tgatewayUrn: string;\n\tgatewayConnected: boolean;\n\tgatewayVpnIp: string | null | undefined;\n\ttargetNetwork: string | null | undefined;\n\tcreatedAt: string;\n};\n\nexport const initializeRemoteServiceConnection = async (gatewayUrn: string, targetNetwork: string): Promise<void> => {\n\tawait getAxios().put(\n\t\t`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`,\n\t\ttargetNetwork\n\t\t\t? {\n\t\t\t\t\ttargetNetwork\n\t\t\t\t}\n\t\t\t: {}\n\t);\n};\n\nexport const fetchRemoteServiceConnectionInfo = (gatewayUrn: string): Promise<RemoteServiceConnectionInfo> =>\n\tgetAxios().get(`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`).then(extractData);\n\nexport const terminateRemoteServiceConnection = async (gatewayUrn: string): Promise<void> => {\n\tawait getAxios().delete(`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type WriteCommand = {\n\tdatapointKey: string;\n\tvalue: string;\n\treadBack: boolean;\n};\n\nexport type PreparedCommand = {\n\tid?: number;\n\tname: string;\n\texpirySeconds: number;\n\tcontent: {\n\t\ttype: string;\n\t\tassetUrn: string;\n\t\ttransmitImmediately: boolean;\n\t\twriteOperations: Array<WriteCommand>;\n\t};\n};\n\nexport const fetchPreparedCommands = (gatewayId: number): Promise<Array<PreparedCommand>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/preparedCommands`).then(extractData);\n};\n\nexport const createPreparedCommand = (preparedCommand: PreparedCommand): Promise<PreparedCommand> => {\n\treturn getAxios().post(`/v2/preparedCommands`, preparedCommand).then(extractData);\n};\n\nexport const updatePreparedCommand = (preparedCommand: PreparedCommand): Promise<PreparedCommand> => {\n\treturn getAxios().put(`/v2/preparedCommands/${preparedCommand.id}`, preparedCommand).then(extractData);\n};\n\nexport const deletePreparedCommand = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/preparedCommands/${id}`);\n};\n\nexport const assignPreparedCommandsToGateway = async (\n\tgatewayId: number,\n\tpreparedCommandIds: Array<number>\n): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/${gatewayId}/preparedCommandsById`, preparedCommandIds);\n};\n\nexport const executePreparedCommand = (gatewayId: number, preparedCommand: PreparedCommand): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/gateways/${gatewayId}/preparedCommands/${preparedCommand.id}/execution`)\n\t\t.then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type CommandType = {\n\tid: number;\n\tsentAt: Date;\n\texpiresAt: Date;\n\tcontent: {\n\t\ttype: string;\n\t};\n};\n\nexport type CommandResult = {\n\tid: number;\n\treceivedAt: Date;\n\tcontent: {\n\t\ttype: string;\n\t\terrorCode: number;\n\t\tproperties: unknown;\n\t\titems: Array<unknown> | null | undefined;\n\t};\n};\n\nexport const invokeDiscoveryCommand = (gatewayId: number, discoveryParameters: unknown): Promise<CommandType> => {\n\tconst discoveryPayload = {\n\t\texpirySeconds: 60,\n\t\tcontent: {\n\t\t\ttype: 'discoveryCommand',\n\t\t\tdiscoveryParameters\n\t\t}\n\t};\n\treturn getAxios().post(`/v2/gateways/${gatewayId}/commands`, discoveryPayload).then(extractData);\n};\n\nexport const fetchSentCommandResponses = (gatewayId: number, commandId: number): Promise<Array<CommandResult>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/commands/${commandId}/responses`).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type AuthorizationServer = {\n\tname: string;\n\tdisplayName: string;\n\tclientId: string;\n\tclientSecret: string;\n\tauthorizationUri: string;\n\tredirectUri: string;\n\ttokenUri: string;\n\tuiCallbackUri: string;\n\tuserinfoUri: string;\n\trevocationUri: string;\n\tjwksUri: string;\n\tscope: string | null | undefined;\n};\n\nexport type AuthorizationServerRule = {\n\tname: string;\n\tdisplayName: string;\n\tacceptedEmailHostname: string;\n\tacceptedEmailPattern: string;\n\taccountGroupId: number;\n\tdisableEmailVerifiedCheck: boolean;\n\twebhookUri: string | null | undefined;\n};\n\nexport const createOrUpdateAuthorizationServer = (\n\tauthorizationServer: AuthorizationServer\n): Promise<AuthorizationServer> =>\n\tgetAxios().put(`/v2/authorizationServers/${authorizationServer.name}`, authorizationServer).then(extractData);\n\nexport const deleteAuthorizationServer = async (name: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/authorizationServers/${name}`);\n};\n\nexport const fetchAuthorizationServer = (name: string): Promise<AuthorizationServer> =>\n\tgetAxios().get(`/v2/authorizationServers/${name}`).then(extractData);\n\nexport const fetchAuthorizationServers = (): Promise<Array<AuthorizationServer>> =>\n\tgetAxios().get('/v2/authorizationServers').then(extractData);\n\nexport const createOrUpdateAuthorizationServerRule = (\n\tauthorizationServerName: string,\n\trule: AuthorizationServerRule\n): Promise<AuthorizationServerRule> =>\n\tgetAxios().put(`/v2/authorizationServers/${authorizationServerName}/rules/${rule.name}`, rule).then(extractData);\n\nexport const fetchAuthorizationServerRules = (\n\tauthorizationServerName: string\n): Promise<Array<AuthorizationServerRule>> =>\n\tgetAxios().get(`/v2/authorizationServers/${authorizationServerName}/rules`).then(extractData);\n\nexport const fetchAuthorizationServerRule = (\n\tauthorizationServerName: string,\n\truleName: string\n): Promise<AuthorizationServerRule> =>\n\tgetAxios().get(`/v2/authorizationServers/${authorizationServerName}/rules/${ruleName}`).then(extractData);\n\nexport const deleteAuthorizationServerRule = async (\n\tauthorizationServerName: string,\n\truleName: string\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/authorizationServers/${authorizationServerName}/rules/${ruleName}`);\n};\n","import {extractData, getAxios} from './axios';\nimport {Asset, fetchAssetGroupIds} from './asset';\nimport {AssetGroup, fetchAssetGroupsById} from './assetGroup';\n\nexport type RelationshipConstraintTypes =\n\t| 'ASSETS_MAY_ONLY_BE_MEMBER_OF_ASSET_GROUPS_WITH_DEFINITIONS'\n\t| 'ASSET_GROUPS_MAY_ONLY_BE_CHILD_OF_ASSET_GROUPS_WITH_DEFINITIONS'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_LEAST_ONE_ASSET_GROUP'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_MOST_ONE_ASSET_GROUP'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_LEAST_ONE_ASSET_GROUP_WITH_DEFINITIONS'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_MOST_ONE_ASSET_GROUP_WITH_DEFINITIONS'\n\t| 'ASSET_GROUPS_MUST_HAVE_PARENT'\n\t| 'ASSET_GROUPS_WITH_DEFINITIONS_MUST_HAVE_PARENT';\n\nexport type RelationshipConstraintError = {\n\tconstraintType: RelationshipConstraintTypes;\n\tname: string;\n\tobjectIds: Array<number>;\n\tsubjectIds: Array<number>;\n};\n\nexport type RelationshipConstraintErrorDereferenced = {\n\tconstraintType: RelationshipConstraintTypes;\n\tname: string;\n\tobjectNames: Array<string>;\n};\n\nconst dryRunHeader = {\n\theaders: {\n\t\t'X-Dry-Run': true\n\t}\n};\n\n/** asset **/\nexport const createAssetDryRun = (asset: Asset): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/${asset.isGateway ? 'gateways' : 'assets'}`, asset, dryRunHeader)\n\t\t.then(extractData);\n};\n\nexport const updateAssetDryRun = (asset: Asset): Promise<unknown> => {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst {assetGroupIds, ...formData} = asset;\n\treturn getAxios()\n\t\t.put(`/v2/${asset.isGateway ? 'gateways' : 'assets'}/${asset.id}`, formData, dryRunHeader)\n\t\t.then(extractData);\n};\n\nconst assignAssetGroupDryRun = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/groups/${assetGroupId}`, null, dryRunHeader);\n};\n\nconst unassignAssetGroupDryRun = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/groups/${assetGroupId}`, dryRunHeader);\n};\n\nexport const updateAssetGroupIdsDryRun = async (assetId: number, assetGroupIds: Array<number>): Promise<void[]> => {\n\tconst oldAssetGroupIds = await fetchAssetGroupIds(assetId);\n\tlet availableOldAssetGroupIds: number[] = [];\n\tif (oldAssetGroupIds.length > 0) {\n\t\tavailableOldAssetGroupIds = (await fetchAssetGroupsById(oldAssetGroupIds)).map(({id}) => id);\n\t}\n\tconst addedAssetGroupIds = assetGroupIds.filter((id) => !oldAssetGroupIds.includes(id));\n\tconst removedAssetGroupIds = availableOldAssetGroupIds.filter((id) => assetGroupIds && !assetGroupIds.includes(id));\n\treturn Promise.all([\n\t\t...addedAssetGroupIds.map((assetGroupId) => assignAssetGroupDryRun(assetId, assetGroupId)),\n\t\t...removedAssetGroupIds.map((assetGroupId) => unassignAssetGroupDryRun(assetId, assetGroupId))\n\t]);\n};\n\n/** asset group **/\nexport const createAssetGroupDryRun = (assetGroup: AssetGroup): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/assetGroupDefinitions/${assetGroup.definitionId}/groups`, assetGroup, dryRunHeader)\n\t\t.then(extractData);\n};\n\nexport const updateAssetGroupDryRun = (assetGroup: AssetGroup): Promise<unknown> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroup.id}`, assetGroup, dryRunHeader).then(extractData);\n};\n\nexport const deleteAssetGroupDryRun = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${id}`, dryRunHeader);\n};\n\n/** asset assignment **/\nexport const assignAssetsByIdsDryRun = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'ADD',\n\t\t\tassetIds\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const assignAssetsByQueryDryRun = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'ADD',\n\t\t\tquery\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const unassignAssetsByIdsDryRun = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'REMOVE',\n\t\t\tassetIds\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const unassignAssetsByQueryDryRun = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'REMOVE',\n\t\t\tquery\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n","import {extractData, getAxios} from './axios';\n\ntype FieldType = 'text' | 'boolean' | 'long';\n\nexport type ShadowKeys = Record<string, FieldType>;\n\nexport type Context = 'assets' | 'assetGroups' | 'accounts' | 'accountGroups';\n\nexport function fetchShadowKeys(context: Context): Promise<ShadowKeys> {\n\tif (context === 'assets') {\n\t\treturn getAxios().get(`/v2/assets/shadow/fields`).then(extractData);\n\t}\n\treturn getAxios().get(`/beta/${context}/fields`).then(extractData);\n}\n","import {extractData, getAxios} from './axios';\nimport {Pageable, PaginationSettings} from './pagination';\nimport {AxiosInstance} from 'axios';\n\nexport type BundleRequest = {\n\tname: string;\n};\n\nexport type Bundle = BundleRequest & {\n\tid: string;\n\tcreatedAt: string;\n\tcreatedBy: string;\n};\n\nexport type BundleFileMetadata = {\n\tid: string;\n\tname: string;\n\tsize: number;\n\tchecksum?: string;\n};\n\nexport type BundleVersionRequest = {\n\tdraft: boolean;\n\tname: string;\n\tdescription?: string;\n};\n\nexport type BundleVersion = BundleVersionRequest & {\n\tid: string;\n\tcreatedAt: string;\n\tcreatedBy: string;\n\treleasedAt: string | null | undefined;\n\treleasedBy: string | null | undefined;\n\tfileCount: number;\n};\n\nexport type BundleFileLink = {\n\tdownloadLink: string;\n};\n\nexport const fetchAllBundles = (): Promise<Bundle[]> => {\n\treturn getAxios().get(`/v2/bundles`).then(extractData);\n};\n\nexport const fetchBundle = (id: string): Promise<Bundle> => {\n\treturn getAxios().get(`/v2/bundles/${id}`).then(extractData);\n};\n\nexport const createBundle = (bundle: BundleRequest): Promise<Bundle> => {\n\treturn getAxios().post(`/v2/bundles`, bundle).then(extractData);\n};\n\nexport const deleteBundle = async (id: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${id}`);\n};\n\nexport const fetchBundleVersions = (\n\tbundleId: string,\n\tpaginationSettings?: PaginationSettings,\n\tdraft?: boolean\n): Promise<Pageable<BundleVersion>> => {\n\tconst {page = 0, size = 1000, sort = ''} = paginationSettings || {};\n\treturn getAxios()\n\t\t.get(`/v2/bundles/${bundleId}/versions`, {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true,\n\t\t\t\tdraft\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchBundleVersion = (bundleId: string, versionId: string): Promise<BundleVersion> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}`).then(extractData);\n};\n\nexport const createBundleVersion = (bundleId: string, version: BundleVersionRequest): Promise<BundleVersion> => {\n\treturn getAxios().post(`/v2/bundles/${bundleId}/versions`, version).then(extractData);\n};\n\nexport const releaseBundleVersion = (bundleId: string, versionId: string): Promise<BundleVersion> => {\n\treturn getAxios().put(`/v2/bundles/${bundleId}/versions/${versionId}/release`).then(extractData);\n};\n\nexport const deleteBundleVersion = async (bundleId: string, versionId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${bundleId}/versions/${versionId}`);\n};\n\nexport const createBundleFile = (\n\tbundleId: string,\n\tversionId: string,\n\tdata: FormData,\n\taxiosInstance?: AxiosInstance\n): Promise<BundleFileMetadata> => {\n\treturn (axiosInstance ?? getAxios())\n\t\t.post(`/v2/bundles/${bundleId}/versions/${versionId}/files`, data, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'multipart/form-data'\n\t\t\t},\n\t\t\ttimeout: 15 * 60 * 1000\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchBundleFiles = (bundleId: string, versionId: string): Promise<BundleFileMetadata[]> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}/files`).then(extractData);\n};\n\nexport const downloadBundleFile = (bundleId: string, versionId: string, fileId: string): Promise<BundleFileLink> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}/files/${fileId}`).then(extractData);\n};\n\nexport const deleteBundleFile = async (bundleId: string, versionId: string, fileId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${bundleId}/versions/${versionId}/files/${fileId}`);\n};\n","import {extractData, getAxios} from './axios';\n\ntype Timeframe = {\n\ttsStart: number;\n\ttsEnd: number;\n};\n\nexport type Params = {\n\ttimeframe?: Timeframe | null | undefined;\n\taccountId?: string | null | undefined;\n};\n\ntype DiffOperator = 'add' | 'remove' | 'replace';\n\nexport type AuditLogDiffItem = {\n\tproductionTimestamp: string;\n\tprocessingTimestamp: string;\n\tentityType: string;\n\tentityId: string;\n\taccount: string;\n\tclientId: string;\n\tdiff: Array<{\n\t\top: DiffOperator;\n\t\tpath: string;\n\t\tvalue: unknown;\n\t}>;\n};\n\nexport const fetchAuditLogEntities = (): Promise<string[]> => getAxios().get('/v2/auditLogEntities').then(extractData);\n\nconst dateToString = (ts: number | null | undefined): string | null | undefined =>\n\tts ? new Date(ts).toUTCString() : null;\n\nexport const fetchAuditLogDifferences = (\n\tentityType: string,\n\tentityId: string,\n\tparams: Params | null | undefined\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(`/v2/auditLogDiffs/${entityType}/${entityId}`, {\n\t\t\tparams: {\n\t\t\t\tprocessedFrom: dateToString(params?.timeframe?.tsStart),\n\t\t\t\tprocessedUntil: dateToString(params?.timeframe?.tsEnd),\n\t\t\t\taccount: params?.accountId\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n","import {getAxios, extractData} from './axios';\n\nexport type ParamsSingleReport = {\n\tid: string;\n\tname: string;\n\twebUrl: string;\n\tembedUrl: string;\n\tdatasetId: string;\n\tembedToken: string;\n};\n\nexport type PowerBiReportsError = {\n\tdata?: unknown;\n\tmessage: string;\n\tstatus: string;\n};\n\nexport async function getParamsForSingleReport(workspaceId: string, reportId: string): Promise<ParamsSingleReport> {\n\treturn await getAxios().get('/v1/powerBi/singleReport/params', {params: {workspaceId, reportId}}).then(extractData);\n}\n","import {getAxios} from './axios';\n\ntype DateTimeRange = {\n\tfrom: string;\n\tto: string;\n};\n\ntype Tsx = {tsx: string};\n\ntype Interpolation = {\n\tkind: 'Linear' | 'Step';\n\tboundary?: {span: string};\n};\n\nexport type TsiInlineVariable = {\n\tfilter?: Tsx;\n\taggregation?: Tsx;\n\tinterpolation?: Interpolation;\n} & (\n\t| {\n\t\t\tkind: 'numeric';\n\t\t\tvalue: Tsx;\n\t }\n\t| {\n\t\t\tkind: 'aggregate';\n\t }\n);\n\ntype AggregateSeries = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tinterval: string;\n\tfilter?: Tsx;\n\tinlineVariables?: Record<string, TsiInlineVariable>;\n\tprojectedVariables?: string[];\n};\n\ntype GetSeries = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tfilter?: Tsx;\n\tinlineVariables?: Record<string, TsiInlineVariable>;\n\tprojectedVariables?: string[];\n\ttake?: number;\n};\n\ntype EventProperty = {\n\tname: string;\n\ttype: string;\n};\n\ntype GetEvents = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tfilter?: Tsx;\n\tprojectedProperties?: EventProperty[];\n\ttake?: number;\n};\n\nexport type TsiDataType = 'Bool' | 'DateTime' | 'String' | 'Double' | 'Long' | 'TimeSpan';\n\nexport type TsiProperties = {\n\tname: string;\n\ttype: TsiDataType;\n} & (\n\t| {\n\t\t\ttype: 'Bool';\n\t\t\tvalues: Array<boolean | null>;\n\t }\n\t| {\n\t\t\ttype: 'DateTime' | 'String';\n\t\t\tvalues: Array<string | null>;\n\t }\n\t| {\n\t\t\ttype: 'Double' | 'Long';\n\t\t\tvalues: Array<number | null>;\n\t }\n\t| {\n\t\t\ttype: 'TimeSpan';\n\t\t\tvalues: Array<Record<string, unknown> | null>;\n\t }\n);\n\nexport type TsiResponse = {\n\tcontinuationToken?: string;\n\tprogress: number;\n\tproperties: TsiProperties[];\n\ttimestamps: string[];\n};\n\nconst query = async (data: Record<string, unknown>): Promise<TsiResponse> => {\n\tconst result = await getAxios().post<TsiResponse>('/v1/timeSeriesInsights/query', data, {\n\t\tparams: {\n\t\t\t'api-version': '2020-07-31',\n\t\t\tstoreType: 'ColdStore'\n\t\t}\n\t});\n\n\treturn result.data;\n};\n\nexport const aggregateSeries = (params: AggregateSeries): Promise<TsiResponse> => {\n\treturn query({aggregateSeries: params});\n};\n\nexport const getSeries = async (params: GetSeries): Promise<TsiResponse> => {\n\treturn query({getSeries: params});\n};\n\nexport const getEvents = async (params: GetEvents): Promise<TsiResponse> => {\n\treturn query({getEvents: params});\n};\n","import {AxiosResponse} from 'axios';\nimport {getAxios} from './axios';\nimport {GrantRequest} from 'ux4iot-admin-node';\n\n/** @deprecated, use sendUx4iotGrantRequestToEndpoint instead, whose endpoint defaults to the endpoint of this function **/\nexport const sendUx4iotGrantRequest = (assetUrn: string, grantRequest: GrantRequest): Promise<AxiosResponse> => {\n\treturn getAxios().put(`/v1/ux4iotSecurity/assets/${assetUrn}`, grantRequest);\n};\n\nexport const sendUx4iotGrantRequestToEndpoint = (\n\tgrantRequestEndpoint = '/v1/ux4iotSecurity/assets/',\n\tgrantRequest: GrantRequest\n): Promise<AxiosResponse> => {\n\treturn getAxios().put(`${grantRequestEndpoint}${grantRequest.deviceId}`, grantRequest);\n};\n","import {DataType} from './datapoint';\nimport {getAxios} from './axios';\n\ntype AdxDatapointType = 'double' | 'long' | 'boolean' | 'string' | 'geo_position' | 'structured';\n\nconst DataTypeToAdxDatapointType: Record<DataType, AdxDatapointType> = {\n\tBOOLEAN: 'boolean',\n\tDOUBLE: 'double',\n\tLONG: 'long',\n\tTEXT: 'string',\n\tGEO_POSITION: 'geo_position',\n\tSTRUCTURED: 'structured'\n};\n\nexport type AdxValuesQueryResult = {\n\tasset: {\n\t\turn: string;\n\t\tdatapoints: Array<{\n\t\t\tname: string;\n\t\t\tvalues: Array<[string, unknown]>;\n\t\t}>;\n\t};\n};\n\n/**\n * @param assetUrn\n * @param datapoints\n * @param datatype\n * @param tsFrom\n * @param tsTo\n * @param groupBy kusto timespan, i.e. 1d, 2h, 1.5m\n * @param deduplication\n * @param includeOutliers\n */\nexport async function queryDatapointValues(\n\tassetUrn: string,\n\tdatapoints: string[],\n\tdatatype: DataType,\n\ttsFrom: number,\n\ttsTo: number,\n\tgroupBy?: string | null,\n\tdeduplication?: boolean | null,\n\tincludeOutliers?: boolean | null\n): Promise<AdxValuesQueryResult> {\n\tconst queryParameters: Record<string, unknown> = {\n\t\tdatapoints,\n\t\tdatatype: DataTypeToAdxDatapointType[datatype],\n\t\ttsFrom: new Date(tsFrom).toISOString(),\n\t\ttsTo: new Date(tsTo).toISOString()\n\t};\n\tif (groupBy != null) queryParameters.groupBy = groupBy;\n\tif (deduplication != null) queryParameters.deduplication = deduplication;\n\tif (includeOutliers != null) queryParameters.includeOutliers = includeOutliers;\n\n\tconst response = await getAxios().post<AdxValuesQueryResult>(\n\t\t`/v2/assets/${assetUrn}/datapointValues`,\n\t\tqueryParameters\n\t);\n\n\treturn response.data;\n}\n\nexport async function queryLastDatapointsValue(\n\tassetUrn: string,\n\tdatapoints: string[],\n\tdatatype: DataType,\n\ttsFrom?: number,\n\ttsTo?: number\n): Promise<AdxValuesQueryResult> {\n\tconst queryParameters: Record<string, unknown> = {\n\t\tdatapoints,\n\t\tdatatype: DataTypeToAdxDatapointType[datatype]\n\t};\n\tif (tsFrom != null && tsTo != null) {\n\t\tqueryParameters.tsFrom = new Date(tsFrom).toISOString();\n\t\tqueryParameters.tsTo = new Date(tsTo).toISOString();\n\t}\n\n\tconst response = await getAxios().post<AdxValuesQueryResult>(\n\t\t`/v2/assets/${assetUrn}/datapointValues/latest`,\n\t\tqueryParameters\n\t);\n\n\treturn response.data;\n}\n","import {extractData, getAxios} from './axios';\n\nexport type InitialAccountGroupAssignmentRule = {\n\tname: string;\n\tdisplayName: string;\n\tacceptedEmailHostname: string;\n\taccountGroupId: number;\n};\n\nexport async function getInitialAccountGroupAssignmentRules(): Promise<InitialAccountGroupAssignmentRule[]> {\n\tconst response = await getAxios().get('/v2/initialAccountGroupAssignmentRules');\n\treturn extractData(response);\n}\n\nexport async function createInitialAccountGroupAssignmentRule(\n\trule: InitialAccountGroupAssignmentRule\n): Promise<InitialAccountGroupAssignmentRule> {\n\tconst response = await getAxios().post('/v2/initialAccountGroupAssignmentRules', rule);\n\treturn extractData(response);\n}\n\nexport async function updateInitialAccountGroupAssignmentRule(\n\truleName: string,\n\trule: InitialAccountGroupAssignmentRule\n): Promise<InitialAccountGroupAssignmentRule> {\n\tconst response = await getAxios().put(`/v2/initialAccountGroupAssignmentRules/${ruleName}`, rule);\n\treturn extractData(response);\n}\n\nexport async function deleteInitialAccountGroupAssignmentRule(ruleName: string): Promise<void> {\n\tawait getAxios().delete(`/v2/initialAccountGroupAssignmentRules/${ruleName}`);\n}\n"],"names":["extractData","response","setAxios","_axios","force","getAxios","setAxiosConfig","config","key","retryRequest","requestFn","retries","delay","attempt","error","waitTime","resolve","fetchAggregation","aggregationConfig","paginationSettingsToQueryParams","paginationSettings","page","size","property","direction","paginationSettingsAdxToQueryParams","fetchAssetGroups","queryParams","fetchAssetGroupsById","id","fetchAssetGroupById","fetchAssetGroupsByDataProcessingDefinitionId","dataProcessingDefinitionId","content","fetchAssetGroupsByRuleId","ruleId","createAssetGroup","assetGroup","updateAssetGroup","deleteAssetGroup","searchAssetGroups","query","sort","params","assignAssetsByIds","assetIds","assignAssetsByQuery","unassignAssetsByIds","unassignAssetsByQuery","getAncestorGroups","fetchGroupsByIds","ids","result","listAllChildAssetGroups","assetGroupId","fetchAssetWithShadowById","fetchGatewayById","fetchAssetByUrn","urn","fetchAssets","fetchAssetsByUrn","fetchAssetsByAssetGroupId","shadow","fetchAssetsByRuleId","fetchAssetsByDataProcessingDefinitionId","createAsset","asset","updateAsset","assetGroupIds","formData","deleteAsset","searchAssets","settings","searchAssetsWithOpenEvents","searchAssetsByProperty","value","searchGateways","searchAssetsWithGeoDistance","geoDistanceParams","distance","geoField","pinLocation","searchAssetsByGeoBoundingBox","topLeft","bottomRight","fetchAssetGroupIds","assetId","assignAssetGroup","unassignAssetGroup","updateAssetGroupIds","oldAssetGroupIds","availableOldAssetGroupIds","addedAssetGroupIds","removedAssetGroupIds","assignGateway","gatewayId","unassignGateway","getGatewayConfigurationsSyncStatus","triggerGatewayConfigurationsSync","retrieveAssetBootstrapJson","assetUrn","retrieveAssetBootstrapShellCommand","getGatewayCertificateSummary","getCertificateDetails","fingerPrint","revokeGatewayCertificate","fingerprint","revokeAllGatewayCertificates","fetchGatewayCommandResponses","commandId","requestApplicationLogCommand","fetchGatewayCapabilities","fetchAuthorities","fetchAuthorityByName","authorityName","createAuthority","deleteAuthority","fetchAssetDefinitions","fetchAssetDefinition","deleteAssetDefinition","updateAssetDefinition","assetDefinition","createAssetDefinition","createAssetDefinitionDatapoint","assetDefinitionId","datapoint","unit","createAssetDefinitionDatapoints","datapoints","newDatapoints","name","dp","deleteAssetDefinitionDatapoint","datapointName","updateAssetDefinitionDatapoint","getAssetGroupHierarchies","getAssetGroupHierarchyRoots","fetchAssetGroupDefinitionById","fetchAssetGroupDefinitionByName","fetchAssetGroupDefinitions","pageable","restPagePromises","_","num","data","restPages","acc","createAssetGroupDefinition","assetGroupDefinition","updateAssetGroupDefinition","deleteAssetGroupDefinition","createUrl","type","path","segment","readObject","asArrayBuffer","writeObject","headers","axiosInstance","deleteObject","checkObject","readAssetObject","writeAssetObject","deleteAssetObject","readAssetDefinitionObject","writeAssetDefinitionObject","deleteAssetDefinitionObject","readAssetGroupObject","writeAssetGroupObject","deleteAssetGroupObject","readTenantObject","writeTenantObject","deleteTenantObject","readUIConfigurations","readUISecrets","writeUIConfigurations","deleteUIConfigurations","readConditionMonitoringPriorities","writeConditionMonitoringPriorities","deleteConditionMonitoringPriorities","readEULA","localeCode","readEULAList","writeEULA","fileName","contentType","deleteEULA","readLegalPage","legalPage","checkAccountObject","readAccountObject","writeAccountObject","deleteAccountObject","checkStartPage","readStartPage","writeStartPage","writeReleaseNotesVersionsViewed","readReleaseNotesVersionsViewed","readReleaseNotesSubscription","writeReleaseNotesSubscription","checkShowUserDocumentation","readShowUserDocumentation","writeShowUserDocumentation","writePaginationSettings","readPaginationSettings","writeFavorites","readFavorites","deleteStartPage","writeAdvancedSearchDefaultProperties","defaultProperties","context","readAdvancedSearchDefaultProperties","readAssetBlobSeries","from","to","urls","metaData","url","index","urlSegments","uniqueKey","downloadAssetBlobSeriesItem","itemKey","readAccountGroupObject","accountGroupId","readAccountGroupObjectBasedOnMembership","writeAccountGroupObject","deleteAccountGroupObject","readAzureB2cConfiguration","fetchConfigurations","fetchConfigurationByName","createConfiguration","configuration","updateConfiguration","deleteConfiguration","assignConfigurationsToAsset","configurationKeyToIdObject","fetchAssignedGatewaysToConfiguration","fetchDatapointsByAssetId","createDatapoint","datatype","updateDatapointThresholds","thresholds","datatypeToDatapointType","getDatapointValues","dpName","dataType","start","end","onlyChangedValues","order","limit","getDatapointGeoPositionValues","getDatapointSamples","slices","updateDatapointUnit","deleteDatapoint","transformDatatypeToUrlSegment","deleteDatapointEntries","startOptional","endOptional","DEFAULT_START","body","DataTypeToAdxDistinctDatapointType","getStructuredDatapointPropertyNodes","tsFrom","tsTo","queryParameters","getStructuredDatapointDistinctValues","propertyPath","getDatapointValuesByFilters","filters","storeQueryResult","requestPayload","queryString","buildDatapointValuesQueryString","getDatapointValuesByQueryId","queryId","listDataProcessingDefinitions","filterSettings","listDataProcessingDefinitionAssetAssignments","dataProcessingDefinitionIds","listDataProcessingDefinitionAssetGroupAssignments","listDataProcessingDefinitionAccountGroupAssignments","getDataProcessingDefinitionById","definitionId","etag","fetchDataProcessingDefinitionsAssignedToAsset","fetchDataProcessingDefinitionsAssignedToAssetGroup","createDataProcessingDefinition","dataProcessingDefinition","updateDataProcessingDefinition","assignDataProcessingDefinitionsToAsset","assignDataProcessingDefinitionsToAssetGroup","deleteDataProcessingDefinition","validateDataProcessingDefinitionForAssetGroup","definition","listDataProcessingDefinitionAccesses","addAccessToDataProcessingDefinition","removeAccessToDataProcessingDefinition","getDataProcessingDefinitionEvaluations","getKpiGenericWithTimestamp","getKpiGeneric","DAY_MILLIS","fetchEventsByAssetId","excludeAcknowledged","now","defaultTo","defaultFrom","extraParams","parseEvent","fetchOpenStatefulEventsByAssetId","event","parseIsoDateString","isoString","acknowledgeEvent","eventKey","acknowledgeStatefulEvent","acknowledgeStatelessEvent","occurredAt","deleteHistoricEvents","fetchOpenEventsOfMultipleAssets","fetchHistoricEventsOfMultipleAssets","fetchLocales","locale","fetchGrantedAccesses","userGroupId","fetchGrantedAccessesForAssetGroup","createGrantedAccess","requiredAssetGroups","updateGrantedAccess","accessId","updatedGrantedAccess","deleteGrantedAccess","fetchNamedQueries","executeNamedQuery","OAUTH2_CLIENT_USERNAME","OAUTH2_CLIENT_PASSWORD","requestToken","principal","password","access_token","expires_in","refresh_token","createAuthInfo","refreshToken","token","revokeToken","tokenTypeHint","revokeAccessToken","accessToken","revokeRefreshToken","expiresIn","account_number","user_name","tenant","jwtDecode","fetchAuthorizationOptions","fetchProperties","getPropertyById","propertyKey","createProperty","updateProperty","deleteProperty","fetchRoleById","fetchRoleByIds","fetchRolesForLicense","licenseName","createRole","item","createRoleWithLicense","updateRole","deleteRole","fetchRoles","fetchAuthoritiesOfRole","setAuthoritiesOfRole","authorities","fetchAssignedAssetRules","fetchAssignedAssetGroupRules","createRule","rule","updateRule","assignAssetRules","ruleIds","assignAssetGroupRules","unassignAssetRules","assignedRules","r","unassignAssetGroupRules","deleteRule","fetchRuleByName","checkRuleNameUniquenes","fetchEventTemplateMappingsOfRule","ruleUuid","eventTemplateMappings","createEventTemplateMapping","deleteAllEventTemplateMappingsOfRule","fetchEmailTemplateById","fetchEmailTemplateAccessById","fetchEmailTemplates","emailTemplates","createEmailTemplate","notificationTemplate","updateEmailTemplate","deleteEmailTemplate","notificationTemplateId","subscribeAssets","types","subscribeAssetGroups","unsubscribe","subscriptionId","fetchUnits","addUnit","fetchUserByAccountNumber","accountNumber","fetchMe","fetchUsers","createUser","user","userToCreate","inviteUser","initialState","updateUser","updateMe","searchUsers","fetchUserGroupsOfUser","setUserPassword","deleteUser","deleteMyAccount","triggerPasswordReset","email","triggerEmailChange","oldEmailAddress","newEmailAddress","changeEmail","updateUserGroupsOfUser","addedUserGroupIds","removedUserGroupIds","changes","fetchRolesOfUser","updateRolesOfUser","roleIds","updateLocaleOfUser","acceptEULA","setUserState","state","delete2FADevice","fetchUserGroups","fetchUserGroupById","createUserGroup","usergroup","updateUserGroup","deleteUserGroup","searchUserGroups","fetchRoleIdsOfUserGroup","updateRoleIdsOfUserGroup","assignUsersToUserGroupByIds","userIds","assignUsersToUserGroupByQuery","unassignUsersFromUserGroupByIds","unassignUsersFromUserGroupByQuery","fetchAccesses","addAccess","deleteAccess","fetchAccountGroupAccesses","fetchInverseAccountGroupAccesses","addAccountGroupAccess","givingAccessAccountGroupId","receivingAccessAccountGroupId","deleteAccountGroupAccess","fetchLicenses","fetchLicenseByName","createLicense","license","updateLicense","deleteLicense","getVersion","initializeRemoteServiceConnection","gatewayUrn","targetNetwork","fetchRemoteServiceConnectionInfo","terminateRemoteServiceConnection","fetchPreparedCommands","createPreparedCommand","preparedCommand","updatePreparedCommand","deletePreparedCommand","assignPreparedCommandsToGateway","preparedCommandIds","executePreparedCommand","invokeDiscoveryCommand","discoveryParameters","discoveryPayload","fetchSentCommandResponses","createOrUpdateAuthorizationServer","authorizationServer","deleteAuthorizationServer","fetchAuthorizationServer","fetchAuthorizationServers","createOrUpdateAuthorizationServerRule","authorizationServerName","fetchAuthorizationServerRules","fetchAuthorizationServerRule","ruleName","deleteAuthorizationServerRule","dryRunHeader","createAssetDryRun","updateAssetDryRun","assignAssetGroupDryRun","unassignAssetGroupDryRun","updateAssetGroupIdsDryRun","createAssetGroupDryRun","updateAssetGroupDryRun","deleteAssetGroupDryRun","assignAssetsByIdsDryRun","assignAssetsByQueryDryRun","unassignAssetsByIdsDryRun","unassignAssetsByQueryDryRun","fetchShadowKeys","fetchAllBundles","fetchBundle","createBundle","bundle","deleteBundle","fetchBundleVersions","bundleId","draft","fetchBundleVersion","versionId","createBundleVersion","version","releaseBundleVersion","deleteBundleVersion","createBundleFile","fetchBundleFiles","downloadBundleFile","fileId","deleteBundleFile","fetchAuditLogEntities","dateToString","ts","fetchAuditLogDifferences","entityType","entityId","getParamsForSingleReport","workspaceId","reportId","aggregateSeries","getSeries","getEvents","sendUx4iotGrantRequest","grantRequest","sendUx4iotGrantRequestToEndpoint","grantRequestEndpoint","DataTypeToAdxDatapointType","queryDatapointValues","groupBy","deduplication","includeOutliers","queryLastDatapointsValue","getInitialAccountGroupAssignmentRules","createInitialAccountGroupAssignmentRule","updateInitialAccountGroupAssignmentRule","deleteInitialAccountGroupAssignmentRule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/axios.ts","../src/aggregation.ts","../src/pagination.ts","../src/assetGroup.ts","../src/asset.ts","../src/authorities.ts","../src/assetDefinition.ts","../src/assetGroupHierarchies.ts","../src/assetGroupDefinition.ts","../src/blobox.ts","../src/configuration.ts","../src/datapoint.ts","../src/adxData.ts","../src/dataProcessingDefinition.ts","../src/kpi.ts","../src/event.ts","../src/locale.ts","../src/grantedAccess.ts","../src/namedquery.ts","../src/oauth.ts","../src/property.ts","../src/role.ts","../src/ruleDefinition.ts","../src/notificationTemplates.ts","../src/subscription.ts","../src/units.ts","../src/user.ts","../src/userGroup.ts","../src/licenses.ts","../src/version.ts","../src/remoteservice.ts","../src/preparedCommand.ts","../src/commands.ts","../src/authorizationServers.ts","../src/dryRun.ts","../src/shadowKeys.ts","../src/bundles.ts","../src/auditLog.ts","../src/powerBi.ts","../src/tsi.ts","../src/ux4iot.ts","../src/adx.ts","../src/initialAccountGroupAssignmentRules.ts"],"sourcesContent":["import {AxiosInstance, AxiosRequestConfig, AxiosResponse} from 'axios';\n\nexport const extractData = <T>(response: AxiosResponse<T>): T => {\n\tif (!response || response.data === undefined) {\n\t\tthrow Error('response object has no \"data\" entry');\n\t}\n\n\treturn response.data;\n};\n\ndeclare global {\n\tinterface Window {\n\t\tnguiAxios: AxiosInstance;\n\t}\n}\n\nexport const setAxios = (_axios: AxiosInstance, force?: boolean): void => {\n\tif (force || !window.nguiAxios) {\n\t\twindow.nguiAxios = _axios;\n\t} else {\n\t\tconsole.warn('window.nguiAxios instance already set');\n\t}\n};\nexport const getAxios = (): AxiosInstance => {\n\tif (window.nguiAxios == null) {\n\t\tthrow Error('window.nguiAxios instance not set');\n\t}\n\n\treturn window.nguiAxios;\n};\n\nexport const setAxiosConfig = (config: AxiosRequestConfig): void => {\n\tif (window.nguiAxios) {\n\t\tfor (const key in Object.keys(config)) {\n\t\t\tif (!Object.prototype.hasOwnProperty.call(window.nguiAxios.defaults, key)) {\n\t\t\t\tthrow Error(`Trying to set an unknown axios config property: ${key}`);\n\t\t\t}\n\t\t}\n\n\t\t// @ts-expect-error checked, and it works\n\t\twindow.nguiAxios.defaults = {\n\t\t\t...window.nguiAxios.defaults,\n\t\t\t...config\n\t\t};\n\t}\n};\n\nexport const retryRequest = async <T = unknown>(requestFn: () => Promise<T>, retries = 5, delay = 100): Promise<T> => {\n\tfor (let attempt = 0; attempt < retries; attempt++) {\n\t\ttry {\n\t\t\treturn await requestFn();\n\t\t} catch (error: unknown) {\n\t\t\tif (attempt < retries - 1) {\n\t\t\t\tconst waitTime = delay * Math.pow(2, attempt) + Math.random() * 100;\n\t\t\t\tawait new Promise((resolve) => setTimeout(resolve, waitTime));\n\t\t\t} else {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new Error('retryRequest: no attempts made');\n};\n","import {extractData, getAxios} from './axios';\n\ntype AggregationGrouping = {\n\tfield: string;\n\tsize?: number;\n\tnumberInterval?: number;\n\tdateInterval?: string;\n\tprecision?: number;\n\tminDocCount?: number;\n};\n\ntype AggregationSorting = {\n\tcolumnName: string;\n\torder: 'asc' | 'desc';\n};\n\nexport type MetricFunction =\n\t'avg' | 'cardinality' | 'max' | 'min' | 'sum' | 'count' | 'stats' | 'percentile' | 'percentileRanks';\n\ntype AggregationMetric = {\n\tfunction: MetricFunction;\n\tfield: string;\n\tcolumnName: string;\n};\n\nexport type AggregationConfig = {\n\tquery: string;\n\taggregationGrouping: AggregationGrouping[];\n\taggregationMetrics: AggregationMetric[];\n\taggregationSorting: AggregationSorting;\n};\n\ntype Column = {\n\tcolumnName: string;\n\tdatatype: string;\n};\n\ntype Row = Record<string, unknown>;\n\nexport type AggregationResult = {\n\tgroupingColumns: Column[];\n\tmetricColumns: Column[];\n\ttotalHits: number;\n\trows: Row;\n};\n\nexport const fetchAggregation = (aggregationConfig: AggregationConfig): Promise<AggregationResult> =>\n\tgetAxios().post('/v2/assets/aggregation', aggregationConfig).then(extractData);\n","import {PaginationRequestPropertyAdxData} from './adxData';\n\nexport type Pageable<T> = {\n\tcontent: Array<T>;\n\ttotalElements: number;\n\ttotalElementsAccurate: boolean;\n\ttotalPages: number;\n\tnumber: number; // page number\n\tfirst: boolean;\n\tlast: boolean;\n\tsize: number;\n\tsort: Array<Sort>;\n};\n\nexport type SortDirection = 'ASC' | 'DESC';\n\nexport type Sort = {\n\tproperty: string;\n\tdirection: SortDirection;\n};\n\nexport type PaginationSettings = {\n\tpage: number;\n\tsize: number;\n\tsort: Sort;\n};\n\nexport function paginationSettingsToQueryParams(paginationSettings: PaginationSettings | undefined) {\n\tif (paginationSettings) {\n\t\tconst {\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort: {property, direction}\n\t\t} = paginationSettings;\n\t\treturn {page, size, sort: `${property},${direction}`};\n\t}\n}\n\nexport type PaginationSettingsAdxData = {\n\tsort: string;\n\tpage: number;\n\tsize: number;\n\ttotalElements: number;\n\ttotalPages: number;\n\tfirstPage: boolean;\n\tlastPage: boolean;\n};\n\nexport type PaginationRequestAdxData = {\n\tsort: Sort;\n\tpage: number;\n\tsize: number;\n};\n\nexport function paginationSettingsAdxToQueryParams(\n\tpaginationSettings: PaginationRequestAdxData | undefined\n): PaginationRequestPropertyAdxData | undefined {\n\tif (paginationSettings) {\n\t\tconst {\n\t\t\tpage,\n\t\t\tsize,\n\t\t\tsort: {property, direction}\n\t\t} = paginationSettings;\n\t\treturn {page, size, sort: `${property},${direction}`};\n\t}\n\treturn undefined;\n}\n","import {getAxios, extractData} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {PropertyValues} from './property';\nimport {paginationSettingsToQueryParams} from './pagination';\n\nexport type AssetGroupNew = {\n\tdefinitionId: number;\n\tdefinitionName: string;\n\tparentId: number | null | undefined;\n\tname: string;\n\tdisplayName: string | null | undefined;\n\tproperties: PropertyValues;\n\tstaticProperties: PropertyValues;\n};\n\nexport type AssetGroup = AssetGroupNew & {\n\tid: number;\n};\n\ntype FetchAssetGroupsParams = {\n\truleId: number;\n\tdefinitionId: number;\n\tdefinitionName: string;\n\tprocessingDefinitionId: number;\n\tshadow: boolean;\n};\n\nexport const fetchAssetGroups = (\n\tqueryParams?: Partial<FetchAssetGroupsParams>,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get('/v2/assetGroups', {params: {...queryParams, ...paginationSettingsToQueryParams(paginationSettings)}})\n\t\t.then(extractData);\n};\n\nexport const fetchAssetGroupsById = (id: number[]): Promise<AssetGroup[]> => {\n\treturn getAxios().get('/v2/assetGroups', {params: {id}}).then(extractData);\n};\n\nexport const fetchAssetGroupById = (id: number): Promise<AssetGroup> => {\n\treturn getAxios().get(`/v2/assetGroups/${id}`).then(extractData);\n};\n\nexport const fetchAssetGroupsByDataProcessingDefinitionId = (\n\tdataProcessingDefinitionId: number\n): Promise<Array<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups?processingDefinitionId=${dataProcessingDefinitionId}`)\n\t\t.then(extractData)\n\t\t.then(({content}) => content);\n};\n\nexport const fetchAssetGroupsByRuleId = (ruleId: number): Promise<Array<AssetGroup>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups?ruleId=${ruleId}`)\n\t\t.then(extractData)\n\t\t.then(({content}) => content);\n};\n\nexport const createAssetGroup = (assetGroup: AssetGroupNew): Promise<AssetGroup> => {\n\treturn getAxios().post(`/v2/assetGroupDefinitions/${assetGroup.definitionId}/groups`, assetGroup).then(extractData);\n};\n\nexport const updateAssetGroup = (assetGroup: AssetGroup): Promise<AssetGroup> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroup.id}`, assetGroup).then(extractData);\n};\n\nexport const deleteAssetGroup = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${id}`);\n};\n\nexport const searchAssetGroups = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\tconst {page, size, sort} = paginationSettings;\n\tconst params = {\n\t\tpage: page || 0,\n\t\tsize,\n\t\tsort: `${sort.property},${sort.direction}`,\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.post(`/v2/assetGroups/search`, query || '*:*', {\n\t\t\tparams,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const assignAssetsByIds = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'ADD',\n\t\tassetIds\n\t});\n};\n\nexport const assignAssetsByQuery = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'ADD',\n\t\tquery\n\t});\n};\n\nexport const unassignAssetsByIds = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'REMOVE',\n\t\tassetIds\n\t});\n};\n\nexport const unassignAssetsByQuery = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/assetGroups/${assetGroup.id}/assetAssignments`, {\n\t\taction: 'REMOVE',\n\t\tquery\n\t});\n};\n\nexport const getAncestorGroups = (id: number): Promise<Array<AssetGroup>> => {\n\treturn getAxios().get(`/v2/assetGroups/${id}/ancestorGroups`).then(extractData);\n};\n\nexport const fetchGroupsByIds = (ids: Array<number>): Promise<Array<AssetGroup>> => {\n\tif (!ids.length) {\n\t\treturn Promise.resolve([]);\n\t}\n\n\treturn searchAssetGroups(`id:(${ids.join(' OR ')})`, {\n\t\tpage: 0,\n\t\tsize: 2000,\n\t\tsort: {\n\t\t\tproperty: 'name',\n\t\t\tdirection: 'ASC'\n\t\t}\n\t}).then((result) => result.content);\n};\n\nexport const listAllChildAssetGroups = (\n\tassetGroupId: number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<AssetGroup>> => {\n\tconst params = paginationSettings\n\t\t? {\n\t\t\t\tsize: paginationSettings.size,\n\t\t\t\tpage: paginationSettings.page,\n\t\t\t\tsort: `${paginationSettings.sort.property},${paginationSettings.sort.direction}`\n\t\t\t}\n\t\t: {\n\t\t\t\tsize: 1000\n\t\t\t};\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/children`, {params}).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\nimport {Pageable, PaginationSettings, paginationSettingsToQueryParams} from './pagination';\nimport {PropertyValues} from './property';\nimport {fetchAssetGroupsById} from './assetGroup';\n\nexport type GatewayTransportChannel = 'JUMP' | 'IOTHUB';\n\nexport type AssetNew = {\n\tassetDefinitionId: number | null | undefined;\n\tname: string;\n\turn: string;\n\tgatewayId: number | null | undefined;\n\tproperties: PropertyValues;\n\tshadow?: PropertyValues;\n\tisGateway: boolean;\n\ttransportChannel?: GatewayTransportChannel;\n\tassetGroupIds: Array<number>;\n\tancestorAssetGroupIds: Array<number>;\n\tcertificateBootstrapping?: boolean;\n\ttimeZone?: string;\n};\n\nexport type Asset = AssetNew & {\n\tid: number;\n};\n\nexport type Gateway = Asset & {\n\tisGateway: true;\n\tgatewayId: null;\n};\n\nexport type CertificateDetails = {\n\tcontent: string;\n\tcreatedAt: number;\n\trevokedAt: number;\n\tlastUsedAt: number;\n};\n\nexport type GeoDistanceParams = {\n\tdistance: string;\n\tgeoField: string;\n\tpinLocation: string;\n};\n\nexport type GeoBoundingBoxParams = {\n\tgeoField: string;\n\ttopLeft: string;\n\tbottomRight: string;\n};\n\nexport const fetchAssetWithShadowById = (id: number): Promise<Asset> => {\n\treturn getAxios().get(`/v2/assets/${id}/shadow`).then(extractData);\n};\n\nexport const fetchGatewayById = (id: number): Promise<Gateway> => {\n\treturn getAxios().get(`/v2/gateways/${id}`).then(extractData);\n};\n\nexport const fetchAssetByUrn = (urn: string): Promise<Asset> => {\n\treturn getAxios()\n\t\t.get(`/v2/assets/urn/${encodeURIComponent(urn)}`)\n\t\t.then(extractData);\n};\n\nexport type FetchAssetsParams = {\n\tid?: number;\n\tname?: string;\n\turn?: string;\n\tassetType?: 'ASSET' | 'GATEWAY';\n\tassetGroup?: number;\n\tassignedToAnyAssetGroup?: boolean;\n\tgatewayId?: number;\n\tgatewayUrn?: string;\n\truleId?: number;\n\tassetGroupRuleId?: number;\n\tprocessingDefinitionId?: number;\n\tassetGroupProcessingDefinitionId?: number;\n\tshadow?: boolean;\n};\n\nexport const fetchAssets = (\n\tqueryParams?: FetchAssetsParams,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\treturn getAxios()\n\t\t.get('/v2/assets', {params: {...queryParams, ...paginationSettingsToQueryParams(paginationSettings)}})\n\t\t.then(extractData);\n};\n\nexport const fetchAssetsByUrn = (urn: string | string[]): Promise<Array<Asset>> => {\n\treturn getAxios().get('/v2/assets', {params: {urn}}).then(extractData);\n};\n\nexport const fetchAssetsByAssetGroupId = (\n\tassetGroupId: number,\n\tshadow?: boolean,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\treturn fetchAssets({assetGroup: assetGroupId, shadow}, paginationSettings);\n};\n\nexport const fetchAssetsByRuleId = (ruleId: number): Promise<Array<Asset>> => {\n\treturn fetchAssets({ruleId}).then(({content}) => content);\n};\n\nexport const fetchAssetsByDataProcessingDefinitionId = (dataProcessingDefinitionId: number): Promise<Array<Asset>> => {\n\treturn fetchAssets({processingDefinitionId: dataProcessingDefinitionId}).then(({content}) => content);\n};\n\nexport const createAsset = (asset: AssetNew): Promise<Asset> => {\n\tif (asset.isGateway) {\n\t\treturn getAxios().post(`/v2/gateways`, asset).then(extractData);\n\t} else {\n\t\treturn getAxios().post(`/v2/assets`, asset).then(extractData);\n\t}\n};\n\nexport const updateAsset = (asset: Asset): Promise<Asset> => {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst {assetGroupIds, ...formData} = asset;\n\tif (asset.isGateway) {\n\t\treturn getAxios().put(`/v2/gateways/${asset.id}`, formData).then(extractData);\n\t} else {\n\t\treturn getAxios().put(`/v2/assets/${asset.id}`, formData).then(extractData);\n\t}\n};\n\nexport const deleteAsset = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${id}`);\n};\n\nexport const searchAssets = (query: string, paginationSettings?: PaginationSettings): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(`/v2/assets/search`, query || '*:*', {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchAssetsWithOpenEvents = (\n\tquery: string,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(`/v2/assets/search`, query || '*:*', {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true,\n\t\t\t\tassetsWithEventsOnly: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchAssetsByProperty = (\n\tproperty: string,\n\tvalue: string | number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: null\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.get(`/v2/assets/search`, {\n\t\t\tparams: {\n\t\t\t\tproperty,\n\t\t\t\tvalue,\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const searchGateways = (query: string, paginationSettings: PaginationSettings): Promise<Pageable<Gateway>> => {\n\treturn searchAssets(`${query} isGateway:true`, paginationSettings) as Promise<Pageable<Gateway>>;\n};\n\nexport const searchAssetsWithGeoDistance = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings,\n\tgeoDistanceParams: GeoDistanceParams\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\tconst {distance, geoField, pinLocation} = geoDistanceParams;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assets/geoDistance`,\n\t\t\t{\n\t\t\t\tdistance,\n\t\t\t\tgeoField,\n\t\t\t\tpinLocation,\n\t\t\t\tquery: query || '*:*'\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tignoreCase: true,\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || ''\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const searchAssetsByGeoBoundingBox = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings,\n\t{geoField, topLeft, bottomRight}: GeoBoundingBoxParams\n): Promise<Pageable<Asset>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assets/geoBoundingBox`,\n\t\t\t{\n\t\t\t\tgeoField,\n\t\t\t\tquery: query || '*:*',\n\t\t\t\ttopLeft,\n\t\t\t\tbottomRight\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tignoreCase: true,\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: sort ? `${sort.property},${sort.direction}` : ''\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const fetchAssetGroupIds = (assetId: number): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/groups`).then(extractData);\n};\n\nexport const assignAssetGroup = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/groups/${assetGroupId}`);\n};\n\nexport const unassignAssetGroup = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/groups/${assetGroupId}`);\n};\n\nexport const updateAssetGroupIds = async (assetId: number, assetGroupIds: Array<number>): Promise<void[]> => {\n\tconst oldAssetGroupIds = await fetchAssetGroupIds(assetId);\n\tlet availableOldAssetGroupIds: number[] = [];\n\tif (oldAssetGroupIds.length > 0) {\n\t\tavailableOldAssetGroupIds = (await fetchAssetGroupsById(oldAssetGroupIds)).map(({id}) => id);\n\t}\n\tconst addedAssetGroupIds = assetGroupIds.filter((id) => !oldAssetGroupIds.includes(id));\n\tconst removedAssetGroupIds = availableOldAssetGroupIds.filter((id) => assetGroupIds && !assetGroupIds.includes(id));\n\treturn Promise.all([\n\t\t...addedAssetGroupIds.map((assetGroupId) => assignAssetGroup(assetId, assetGroupId)),\n\t\t...removedAssetGroupIds.map((assetGroupId) => unassignAssetGroup(assetId, assetGroupId))\n\t]);\n};\n\nexport const assignGateway = async (assetId: number, gatewayId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/gatewayAssignment`, {\n\t\tgatewayId\n\t});\n};\n\nexport const unassignGateway = async (assetId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/gatewayAssignment`);\n};\n\nexport const getGatewayConfigurationsSyncStatus = (assetId: number): Promise<unknown> => {\n\treturn getAxios().get(`/v2/gateways/${assetId}/configurationSyncStatus`).then(extractData);\n};\n\nexport const triggerGatewayConfigurationsSync = async (assetId: number): Promise<void> => {\n\tawait getAxios().post(`/v2/gateways/${assetId}/configurationSync`);\n};\n\nexport const retrieveAssetBootstrapJson = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios().post(`/beta/gateways/urn/${encodeURIComponent(assetUrn)}/bootstrap.json`);\n};\n\nexport const retrieveAssetBootstrapShellCommand = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/beta/gateways/urn/${encodeURIComponent(assetUrn)}/bootstrapCommandLine`,\n\t\t\t{},\n\t\t\t{\n\t\t\t\theaders: {\n\t\t\t\t\tAccept: 'text/plain'\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const getGatewayCertificateSummary = (assetUrn: string): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates`)\n\t\t.then(extractData);\n};\n\nexport const getCertificateDetails = (assetUrn: string, fingerPrint: string): Promise<CertificateDetails> => {\n\treturn getAxios()\n\t\t.get(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/${fingerPrint}`)\n\t\t.then(extractData);\n};\n\nexport const revokeGatewayCertificate = async (assetUrn: string, fingerprint: string): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/${fingerprint}/revocation`);\n};\n\nexport const revokeAllGatewayCertificates = async (assetUrn: string): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/urn/${encodeURIComponent(assetUrn)}/certificates/revocation`);\n};\n\nexport const fetchGatewayCommandResponses = (gatewayId: number, commandId: number): Promise<Array<unknown>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/commands/${commandId}/responses`).then(extractData);\n};\n\nexport const requestApplicationLogCommand = (gatewayId: number): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/gateways/${gatewayId}/commands`,\n\t\t\t{\n\t\t\t\texpirySeconds: 60,\n\t\t\t\tcontent: {\n\t\t\t\t\ttype: 'transmitApplicationLogCommand'\n\t\t\t\t}\n\t\t\t},\n\t\t\t{}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const fetchGatewayCapabilities = (gatewayId: number): Promise<Array<string>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/capabilities`).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type Authority = {\n\tauthority: string;\n\tinternal?: boolean;\n};\n\nexport function fetchAuthorities(): Promise<Array<Authority>> {\n\treturn getAxios().get('/v2/authorities').then(extractData);\n}\n\nexport function fetchAuthorityByName(authorityName: string): Promise<Authority> {\n\treturn getAxios().get(`/v2/authorities/${authorityName}`).then(extractData);\n}\n\nexport function createAuthority(authorityName: string): Promise<Authority> {\n\treturn getAxios().put(`/v2/authorities/${authorityName}`).then(extractData);\n}\n\nexport async function deleteAuthority(authorityName: string): Promise<void> {\n\tawait getAxios().delete(`/v2/authorities/${authorityName}`);\n}\n","import {Datapoint} from './datapoint';\nimport {extractData, getAxios} from './axios';\n\nexport type AssetDefinitionProperty = {\n\tkey: string;\n\trequired: boolean;\n};\n\nexport type AssetDefinitionStaticProperty = {\n\tkey: string;\n\tvalue: string | number | boolean | null | undefined;\n};\n\nexport type AssetDefinitionNew = {\n\tname: string;\n\tproperties: AssetDefinitionProperty[];\n\tstaticProperties: AssetDefinitionStaticProperty[];\n\tdatapoints?: Datapoint[];\n};\n\nexport type AssetDefinition = AssetDefinitionNew & {\n\tid: number;\n};\n\nexport async function fetchAssetDefinitions(): Promise<Array<AssetDefinition>> {\n\treturn getAxios()\n\t\t.get('/v2/assetDefinitions', {\n\t\t\tparams: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000,\n\t\t\t\tsort: 'name,ASC',\n\t\t\t\tignoreCase: true\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n}\n\nexport async function fetchAssetDefinition(id: number): Promise<AssetDefinition> {\n\treturn getAxios().get(`/v2/assetDefinitions/${id}`).then(extractData);\n}\n\nexport async function deleteAssetDefinition(id: number): Promise<void> {\n\tawait getAxios().delete(`/v2/assetDefinitions/${id}`);\n}\n\nexport async function updateAssetDefinition(assetDefinition: AssetDefinition): Promise<AssetDefinition> {\n\treturn getAxios().put(`/v2/assetDefinitions/${assetDefinition.id}`, assetDefinition).then(extractData);\n}\n\nexport async function createAssetDefinition(assetDefinition: AssetDefinitionNew): Promise<AssetDefinition> {\n\treturn getAxios().post('/v2/assetDefinitions', assetDefinition).then(extractData);\n}\n\nexport async function createAssetDefinitionDatapoint(assetDefinitionId: number, datapoint: Datapoint): Promise<void> {\n\tconst {unit, ...params} = datapoint;\n\tif (unit) (params as Record<string, unknown>).unit = unit.name;\n\tawait getAxios().post(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapoint.name)}`,\n\t\tparams\n\t);\n}\n\nexport async function createAssetDefinitionDatapoints(\n\tassetDefinitionId: number,\n\tdatapoints: Map<string, Datapoint>\n): Promise<void> {\n\t// this conversion is necessary because the API expects the unit to be a string\n\tconst newDatapoints = new Map(\n\t\tArray.from(datapoints, ([name, dp]) => {\n\t\t\tconst {unit, ...params} = dp;\n\t\t\treturn [name, unit ? {...params, unit: unit.name} : params];\n\t\t})\n\t);\n\tawait getAxios().post(`/v2/assetDefinitions/${assetDefinitionId}/datapoints`, Object.fromEntries(newDatapoints));\n}\n\nexport async function deleteAssetDefinitionDatapoint(assetDefinitionId: number, datapointName: string): Promise<void> {\n\tawait getAxios().delete(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapointName)}`\n\t);\n}\n\nexport async function updateAssetDefinitionDatapoint(assetDefinitionId: number, datapoint: Datapoint): Promise<void> {\n\tconst {unit, ...params} = datapoint;\n\tif (unit) (params as Record<string, unknown>).unit = unit.name;\n\tawait getAxios().put(\n\t\t`/v2/assetDefinitions/${assetDefinitionId}/datapoints/${encodeURIComponent(datapoint.name)}`,\n\t\tparams\n\t);\n}\n","import {extractData, getAxios} from './axios';\n\nexport type AssetGroupHierarchyElement = {\n\tid: number;\n\tparentId: number | null;\n\tname: string;\n\tdisplayName: string;\n\tassetGroupDefinitionId: number;\n\tassetGroupDefinitionName: string;\n\tlevel: number;\n\tassetGroupChildCountDirect: number;\n\tassetGroupChildCountTransitive: number;\n\tassetCountDirect: number;\n\tassetCountTransitive: number;\n};\n\nexport type AssetGroupHierarchyParams = {\n\tassetDefinitionId?: number;\n\tmaxLevel?: number;\n};\n\nexport async function getAssetGroupHierarchies(\n\tassetGroupId: number,\n\tparams?: AssetGroupHierarchyParams\n): Promise<AssetGroupHierarchyElement[]> {\n\tconst response = await getAxios().get(`/v2/assetGroupHierarchies/${assetGroupId}`, {params});\n\treturn extractData(response);\n}\n\nexport type AssetGroupHierarchyRoot = {\n\tid: number;\n\tname: string;\n\tdisplayName: string;\n\tassetCountTransitive: number;\n};\n\nexport type AssetGroupHierarchyRootParams = {\n\tassetDefinitionId?: number;\n};\n\nexport async function getAssetGroupHierarchyRoots(\n\tparams: AssetGroupHierarchyParams = {}\n): Promise<AssetGroupHierarchyRoot[]> {\n\tconst response = await getAxios().get('/v2/assetGroupHierarchyRoots', {params});\n\treturn extractData(response);\n}\n","import {getAxios, extractData} from './axios';\n\ntype PropertyDefinition = {\n\tkey: string;\n\trequired: boolean;\n};\n\ntype StaticPropertyDefinition = {\n\tkey: string;\n\tvalue: number | boolean | string;\n};\n\nexport type NewAssetGroupDefinition = {\n\tname: string;\n\tchildrenPreventDeletion?: boolean;\n\tassetGroupProperties?: PropertyDefinition[];\n\tassetGroupStaticProperties?: StaticPropertyDefinition[];\n};\n\nexport type AssetGroupDefinition = NewAssetGroupDefinition & {\n\tid: number;\n};\n\nexport const fetchAssetGroupDefinitionById = (id: number): Promise<AssetGroupDefinition> => {\n\treturn getAxios().get(`/v2/assetGroupDefinitions/${id}`).then(extractData);\n};\n\nexport const fetchAssetGroupDefinitionByName = (name: string): Promise<AssetGroupDefinition> => {\n\treturn getAxios().get(`/v2/assetGroupDefinitions/name/${name}`).then(extractData);\n};\n\nexport const fetchAssetGroupDefinitions = (): Promise<Array<AssetGroupDefinition>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 1000,\n\t\tsort: 'name,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get('/v2/assetGroupDefinitions', {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => {\n\t\t\tconst restPagePromises = new Array(Math.max(0, pageable.totalPages - 1)).fill(null).map((_, num) => {\n\t\t\t\tconst page = num + 1;\n\t\t\t\treturn getAxios()\n\t\t\t\t\t.get('/v2/assetGroupDefinitions', {\n\t\t\t\t\t\tparams: {\n\t\t\t\t\t\t\t...params,\n\t\t\t\t\t\t\tpage\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.then(extractData)\n\t\t\t\t\t.then((data) => data.content);\n\t\t\t});\n\t\t\treturn Promise.all(restPagePromises).then((restPages) =>\n\t\t\t\trestPages.reduce((acc, content) => acc.concat(content), pageable.content)\n\t\t\t);\n\t\t});\n};\n\nexport const createAssetGroupDefinition = (\n\tassetGroupDefinition: NewAssetGroupDefinition\n): Promise<AssetGroupDefinition> => {\n\treturn getAxios().post('/v2/assetGroupDefinitions', assetGroupDefinition).then(extractData);\n};\n\nexport const updateAssetGroupDefinition = (\n\tassetGroupDefinition: AssetGroupDefinition\n): Promise<AssetGroupDefinition> => {\n\treturn getAxios()\n\t\t.put(`/v2/assetGroupDefinitions/${assetGroupDefinition.id}`, assetGroupDefinition)\n\t\t.then(extractData);\n};\n\nexport const deleteAssetGroupDefinition = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroupDefinitions/${id}`);\n};\n","import {getAxios, extractData} from './axios';\nimport {AxiosInstance} from 'axios';\n\nexport type LegalPage = 'imprint' | 'privacy';\n\nexport type UserPaginationSettings = {\n\tsize: number;\n};\n\nexport type AdvancedSearchDefaultProperty = {\n\tkey: string;\n\ttype: string;\n};\n\ntype ResourceType = 'assets' | 'assetGroups' | 'assetDefinitions' | 'accounts' | 'accountGroups' | 'tenant';\n\nexport type BlobMeta = {\n\tblobKey: string;\n\tlastModified: string;\n\tcontentType: string;\n\tuserMetadata: {\n\t\t'X-Blob-Meta-Filename': string;\n\t};\n};\n\nconst createUrl = (type: ResourceType, id: string | number | undefined, path: string) => {\n\treturn ['', 'v2', type, id ? encodeURIComponent(id) : null, 'blobs', path]\n\t\t.filter((segment) => segment != null)\n\t\t.join('/');\n};\n\nconst readObject = (\n\ttype: ResourceType,\n\tid: string | number | undefined,\n\tpath: string,\n\tasArrayBuffer: boolean\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(createUrl(type, id, path), asArrayBuffer ? {responseType: 'arraybuffer'} : {})\n\t\t.then(extractData);\n\nconst writeObject = (\n\ttype: ResourceType,\n\tid: string | number | undefined,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> =>\n\t(axiosInstance ?? getAxios()).post(createUrl(type, id, path), value, headers ? {headers} : undefined);\n\nconst deleteObject = (type: ResourceType, id: string | number | undefined, path: string): Promise<void> =>\n\tgetAxios().delete(createUrl(type, id, path));\n\nconst checkObject = (type: ResourceType, id: string | number | undefined, path: string) =>\n\tgetAxios().head(createUrl(type, id, path));\n\nexport const readAssetObject = (assetUrn: string, path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('assets', assetUrn, path, !!asArrayBuffer);\n\nexport const writeAssetObject = (\n\tassetUrn: string,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assets', assetUrn, path, value, headers, axiosInstance);\n\nexport const deleteAssetObject = (assetUrn: string, path: string): Promise<void> =>\n\tdeleteObject('assets', assetUrn, path);\n/*\n * Asset Definition Blobox\n */\nexport const readAssetDefinitionObject = (\n\tassetDefinitionId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> => readObject('assetDefinitions', assetDefinitionId, path, !!asArrayBuffer);\n\nexport const writeAssetDefinitionObject = (\n\tassetDefinitionId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assetDefinitions', assetDefinitionId, path, value, headers, axiosInstance);\n\nexport const deleteAssetDefinitionObject = (assetDefinitionId: number, path: string): Promise<void> =>\n\tdeleteObject('assetDefinitions', assetDefinitionId, path);\n\n/*\n * Asset Group Blobox\n */\nexport const readAssetGroupObject = (assetGroupId: number, path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('assetGroups', assetGroupId, path, !!asArrayBuffer);\n\nexport const writeAssetGroupObject = (\n\tassetGroupId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('assetGroups', assetGroupId, path, value, headers, axiosInstance);\n\nexport const deleteAssetGroupObject = (assetGroupId: number, path: string): Promise<void> =>\n\tdeleteObject('assetGroups', assetGroupId, path);\n\n/*\n * Tenant Blobox\n */\nexport const readTenantObject = (path: string, asArrayBuffer?: boolean): Promise<unknown> =>\n\treadObject('tenant', undefined, path, !!asArrayBuffer);\n\nexport const writeTenantObject = (\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('tenant', undefined, path, value, headers, axiosInstance);\n\nexport const deleteTenantObject = (path: string): Promise<void> => deleteObject('tenant', undefined, path);\n\nexport const readUIConfigurations = (): Promise<unknown> => readTenantObject('uiConfigurations/default');\n\nexport const readUISecrets = (): Promise<unknown> => readTenantObject('uiSecrets/default');\n\nexport const writeUIConfigurations = (value: unknown): Promise<void> =>\n\twriteTenantObject('uiConfigurations/default', value);\n\nexport const deleteUIConfigurations = (): Promise<void> => deleteTenantObject('uiConfigurations/default');\n\nexport const readConditionMonitoringPriorities = (): Promise<unknown> =>\n\treadTenantObject('uiConfigurations/conditionmonitoringpriorities');\n\nexport const writeConditionMonitoringPriorities = (value: unknown): Promise<void> =>\n\twriteTenantObject('uiConfigurations/conditionmonitoringpriorities', value);\n\nexport const deleteConditionMonitoringPriorities = (): Promise<void> =>\n\tdeleteTenantObject('uiConfigurations/conditionmonitoringpriorities');\n\nexport const readEULA = (localeCode: string): Promise<ArrayBuffer> =>\n\treadTenantObject(`terms/eula-${localeCode}`, true) as Promise<ArrayBuffer>;\n\nexport const readEULAList = (): Promise<BlobMeta[]> => readTenantObject('terms?meta=true') as Promise<BlobMeta[]>;\n\nexport const writeEULA = (\n\tlocaleCode: string,\n\tvalue: unknown,\n\tfileName: string,\n\tcontentType: string,\n\taxiosInstance?: AxiosInstance\n): Promise<void> =>\n\twriteTenantObject(\n\t\t`terms/eula-${localeCode}`,\n\t\tvalue,\n\t\t{\n\t\t\t'X-Blob-Meta-Filename': fileName,\n\t\t\t'Content-Type': contentType\n\t\t},\n\t\taxiosInstance\n\t);\n\nexport const deleteEULA = (localeCode: string): Promise<void> => deleteTenantObject(`terms/eula-${localeCode}`);\n\nexport const readLegalPage = (legalPage: LegalPage): Promise<unknown> => readTenantObject(`terms/${legalPage}`);\n\n/*\n * User Blobox\n */\n\nconst checkAccountObject = async (path: string): Promise<void> => {\n\tawait checkObject('accounts', 'me', path);\n};\n\nexport const readAccountObject = (path: string): Promise<unknown> => readObject('accounts', 'me', path, false);\n\nexport const writeAccountObject = (path: string, value: unknown): Promise<void> =>\n\twriteObject('accounts', 'me', path, value);\n\nexport const deleteAccountObject = (path: string): Promise<void> => deleteObject('accounts', 'me', path);\n\nexport const checkStartPage = (): Promise<void> => checkAccountObject('uiConfigurations/startpage');\n\nexport const readStartPage = (): Promise<string> => readAccountObject('uiConfigurations/startpage') as Promise<string>;\n\nexport const writeStartPage = (value: string): Promise<void> => writeAccountObject('uiConfigurations/startpage', value);\n\nexport const writeReleaseNotesVersionsViewed = (value: string[]): Promise<void> =>\n\twriteAccountObject('uiConfigurations/releasenotesversionsviewed', value);\n\nexport const readReleaseNotesVersionsViewed = (): Promise<string[]> =>\n\treadAccountObject('uiConfigurations/releasenotesversionsviewed') as Promise<string[]>;\n\nexport const readReleaseNotesSubscription = (): Promise<boolean> =>\n\treadAccountObject('uiConfigurations/releasenotessubscription') as Promise<boolean>;\n\nexport const writeReleaseNotesSubscription = (value: boolean): Promise<void> =>\n\twriteAccountObject('uiConfigurations/releasenotessubscription', value);\n\nexport const checkShowUserDocumentation = (): Promise<void> =>\n\tcheckAccountObject('uiConfigurations/showuserdocumentation');\n\nexport const readShowUserDocumentation = (): Promise<boolean> =>\n\treadAccountObject('uiConfigurations/showuserdocumentation') as Promise<boolean>;\n\nexport const writeShowUserDocumentation = (value: boolean): Promise<void> =>\n\twriteAccountObject('uiConfigurations/showuserdocumentation', value);\n\nexport const writePaginationSettings = (value: UserPaginationSettings): Promise<void> =>\n\twriteAccountObject('uiConfigurations/paginationsettings', value);\n\nexport const readPaginationSettings = (): Promise<UserPaginationSettings> =>\n\treadAccountObject('uiConfigurations/paginationsettings') as Promise<UserPaginationSettings>;\n\nexport const writeFavorites = (value: unknown): Promise<void> =>\n\twriteAccountObject('uiConfigurations/favorites', value);\n\nexport const readFavorites = (): Promise<unknown> => readAccountObject('uiConfigurations/favorites');\n\nexport const deleteStartPage = (): Promise<void> => deleteAccountObject('uiConfigurations/startpage');\n\nexport const writeAdvancedSearchDefaultProperties = (\n\tdefaultProperties: AdvancedSearchDefaultProperty[],\n\tcontext: string\n): Promise<void> => writeAccountObject(`uiConfigurations/advsearchprops${context}`, defaultProperties);\n\nexport const readAdvancedSearchDefaultProperties = (context: string): Promise<unknown> =>\n\treadAccountObject(`uiConfigurations/advsearchprops${context}`);\n\n/*\nAsset Blob Series\n */\nexport const readAssetBlobSeries = (assetUrn: string, from: number, to: number): Promise<Array<unknown>> => {\n\tconst params = {\n\t\tfrom: new Date(from).toISOString(),\n\t\tto: new Date(to).toISOString()\n\t};\n\treturn Promise.all([\n\t\tgetAxios()\n\t\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs`, {\n\t\t\t\tparams\n\t\t\t})\n\t\t\t.then(extractData),\n\t\tgetAxios()\n\t\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs`, {\n\t\t\t\tparams: {...params, meta: true}\n\t\t\t})\n\t\t\t.then(extractData)\n\t]).then(([urls, metaData]) => {\n\t\treturn urls.map((url: string, index: number) => {\n\t\t\tconst urlSegments = url.split('/');\n\t\t\tconst uniqueKey = urlSegments.slice(urlSegments.length - 2).join('/');\n\t\t\treturn {...metaData[index], blobUniqueKey: uniqueKey};\n\t\t});\n\t});\n};\n\nexport const downloadAssetBlobSeriesItem = (assetUrn: string, itemKey: string): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(`/beta/assets/${encodeURIComponent(assetUrn)}/blobSeries/assetBlobs/${itemKey}`, {\n\t\t\tresponseType: 'arraybuffer'\n\t\t})\n\t\t.then(extractData);\n\n/*\nAdministration Blob\n */\nexport const readAccountGroupObject = (\n\taccountGroupId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(\n\t\t\t`/beta/administration/accountGroups/${accountGroupId}/blobs/${path}`,\n\t\t\tasArrayBuffer ? {responseType: 'arraybuffer'} : {}\n\t\t)\n\t\t.then(extractData);\n\n/*\nAccount Groups Blob\n */\nexport const readAccountGroupObjectBasedOnMembership = (\n\taccountGroupId: number,\n\tpath: string,\n\tasArrayBuffer?: boolean\n): Promise<unknown> => readObject('accountGroups', accountGroupId, path, !!asArrayBuffer);\n\nexport const writeAccountGroupObject = (\n\taccountGroupId: number,\n\tpath: string,\n\tvalue: unknown,\n\theaders?: Record<string, string>,\n\taxiosInstance?: AxiosInstance\n): Promise<void> => writeObject('accountGroups', accountGroupId, path, value, headers, axiosInstance);\n\nexport const deleteAccountGroupObject = (accountGroupId: number, path: string): Promise<void> =>\n\tdeleteObject('accountGroups', accountGroupId, path);\n\nexport type AzureB2cConfiguration = {\n\tclientId: string;\n\t// Format of the authority field: See https://learn.microsoft.com/en-us/answers/questions/1275356/error-sample-nodejs-app-authetication-with-azure-b?orderby=oldest\n\tauthority: string;\n\tauthorityDomain: string;\n\tregisterMFADevicePolicyUrl?: string;\n};\nexport const readAzureB2cConfiguration = async (): Promise<AzureB2cConfiguration | undefined> => {\n\treturn readTenantObject('uiConfigurations/adb2c') as Promise<AzureB2cConfiguration | undefined>;\n};\n","import {getAxios, extractData} from './axios';\nimport type {Asset} from './asset';\nimport type {PaginationSettings} from './pagination';\n\ntype Datatype = 'Float' | 'String' | 'Boolean' | 'Binary' | 'Integer';\n\ntype ModbusType = 'output' | 'input' | 'inputbit' | 'outputbit';\n\ntype OperationMode = 'read' | 'write' | 'readWrite';\n\ntype ModbusWidth = 16 | 32 | 64;\n\ntype AbstractConfigurationBody = {\n\tsamplingInterval: number;\n\tassetUrn: string | null | undefined;\n\tassetTypeUrn?: string;\n};\n\nexport type ModbusConfigurationBody = AbstractConfigurationBody & {\n\tconfigurationType: 'modbus';\n\tuseSameTimestamp: boolean;\n\tpollingDelay: number;\n\tdisableBlockReading: boolean;\n\tuseSerial: boolean;\n\tip: string | null | undefined;\n\tport: number | null | undefined;\n\tserialDevice: string | null | undefined;\n\tserialParity: string | null | undefined;\n\tserialBaudrate: number | null | undefined;\n\tserialDataBit: number | null | undefined;\n\tserialStopBit: number | null | undefined;\n\tserialMode: string | null | undefined;\n\tconnectorElements: Array<ModbusConnectorElement>;\n};\n\nexport type TestDataConfigurationBody = AbstractConfigurationBody & {\n\tconfigurationType: 'testData';\n\tinterval?: number;\n\trandomValue?: boolean;\n\trandomIndex?: boolean;\n\tdatapointKey?: string;\n\tdatatype?: Datatype;\n\tvalues?: Array<number>;\n};\n\nexport type DataVariable = {\n\tnodeId: string;\n\tnodeIdType: string;\n\tnodeIdNamespaceIndex: number;\n\tkey: string;\n\tsamplingInterval: number | null | undefined;\n\tpolling: boolean;\n\tqueueSize: number | null | undefined;\n\tpublishingInterval: number | null | undefined;\n\ttransformArrayToString: boolean | null | undefined;\n\tarrayStringDelimiter: string | null | undefined;\n};\n\nexport type Configuration = {\n\tid?: number;\n\tname: string;\n\tcontent: ModbusConfigurationBody | TestDataConfigurationBody;\n};\n\nexport type ModbusConnectorElement = {\n\treactableKey?: string;\n\ttype: 'modbusElement';\n\tkey: string;\n\tdatatype: Datatype;\n\tunit: string;\n\taddress: number;\n\tslave: number;\n\tfactor: number;\n\tmodbusType: ModbusType;\n\tsigned: boolean;\n\tmode: OperationMode;\n\tsamplingInterval: (number | string) | null | undefined;\n\thexString: boolean;\n\tbigEndian: boolean;\n\tstringLength: number;\n\twidth: ModbusWidth | null | undefined;\n};\n\nexport type ConfigurationListObject = Record<string, Configuration>;\n\nexport type ConfigurationKeyToId = Record<string, number>;\n\nexport const fetchConfigurations = (assetId: number): Promise<ConfigurationListObject> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/configurations`).then(extractData);\n};\n\nexport const fetchConfigurationByName = (name: string): Promise<Configuration> => {\n\treturn getAxios()\n\t\t.get(`/v2/configurations/name/${encodeURIComponent(name)}`)\n\t\t.then(extractData);\n};\n\nexport const createConfiguration = (configuration: Configuration): Promise<Configuration> => {\n\treturn getAxios().post(`/v2/configurations`, configuration).then(extractData);\n};\n\nexport const updateConfiguration = (configuration: Configuration): Promise<Configuration> => {\n\treturn getAxios() // $FlowIgnore configuration.id is present in update case\n\t\t.put(`/v2/configurations/${configuration.id}`, configuration)\n\t\t.then(extractData);\n};\n\nexport const deleteConfiguration = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/configurations/${id}`);\n};\n\nexport const assignConfigurationsToAsset = (\n\tassetId: number,\n\tconfigurationKeyToIdObject: ConfigurationKeyToId\n): Promise<ConfigurationListObject> => {\n\treturn getAxios().put(`/v2/assets/${assetId}/configurations`, configurationKeyToIdObject).then(extractData);\n};\n\nexport const fetchAssignedGatewaysToConfiguration = (\n\tid: number,\n\tpaginationSettings?: PaginationSettings\n): Promise<Asset[]> => {\n\tconst settings = paginationSettings\n\t\t? {...paginationSettings}\n\t\t: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000,\n\t\t\t\tsort: ''\n\t\t\t};\n\treturn getAxios()\n\t\t.get(`/v2/configurations/${id}/gateways`, {\n\t\t\tparams: settings\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type DataType = 'BOOLEAN' | 'DOUBLE' | 'LONG' | 'TEXT' | 'GEO_POSITION' | 'STRUCTURED';\n\nexport type DatapointType = 'RAW' | 'CALCULATED';\n\nexport type Unit = {\n\tname: string;\n\tprint: string;\n};\n\nexport type Thresholds = {\n\tthreshold1?: number | null | undefined;\n\tthreshold2?: number | null | undefined;\n};\n\nexport type Datapoint = {\n\tname: string;\n\tdatatype: DataType;\n\tdatapointType: DatapointType;\n\tunit?: Unit;\n\tthresholds: Thresholds;\n\tproperties?: Record<string, string | number | boolean>;\n};\n\nexport type DatapointValueGeoPositionType = {\n\tlatitude: number;\n\tlongitude: number;\n};\n\nexport type DatapointValueType = boolean | number | string | DatapointValueGeoPositionType;\n\nexport type DatapointValue = [number, DatapointValueType, DatapointValueType];\n\nexport const fetchDatapointsByAssetId = (assetId: number): Promise<Array<Datapoint>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/datapoints`).then(extractData);\n};\n\nexport const createDatapoint = (assetId: number, datapoint: Datapoint): Promise<Datapoint> => {\n\tconst {name, datatype, unit} = datapoint;\n\tconst queryParams: Record<string, unknown> = {\n\t\tdatatype\n\t};\n\tif (unit) queryParams.unit = unit.name;\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(name)}`, queryParams)\n\t\t.then(extractData);\n};\n\nexport const updateDatapointThresholds = (assetId: number, datapoint: Datapoint): Promise<Datapoint> => {\n\tconst {name, datatype, thresholds} = datapoint;\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(name)}`, {\n\t\t\tdatatype,\n\t\t\tthresholds\n\t\t})\n\t\t.then(extractData);\n};\n\nfunction datatypeToDatapointType(datatype: DataType): string {\n\tswitch (datatype) {\n\t\tcase 'GEO_POSITION':\n\t\t\treturn 'geoPosition';\n\t\tdefault:\n\t\t\treturn datatype.toLowerCase();\n\t}\n}\n\nexport const getDatapointValues = (\n\tassetUrn: string,\n\tdpName: string,\n\tdataType: DataType,\n\tstart: number | null | undefined,\n\tend: number | null | undefined,\n\tonlyChangedValues = false,\n\torder: 'ASC' | 'DESC' = 'ASC',\n\tlimit = 10000\n): Promise<Array<DatapointValue>> => {\n\treturn getAxios()\n\t\t.get(\n\t\t\t`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(\n\t\t\t\tdpName\n\t\t\t)}/${datatypeToDatapointType(dataType)}/entries`,\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tstart: start ? new Date(start).toISOString() : '',\n\t\t\t\t\tend: end ? new Date(end).toISOString() : '',\n\t\t\t\t\torder,\n\t\t\t\t\tlimit,\n\t\t\t\t\tonlyChangedValues\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const getDatapointGeoPositionValues = (\n\tassetUrn: string,\n\tstart?: number,\n\tend?: number,\n\torder: 'ASC' | 'DESC' = 'ASC',\n\tlimit = 10000,\n\tonlyChangedValues = false\n): Promise<Array<DatapointValue>> => {\n\treturn getAxios()\n\t\t.get(`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/geoPosition/geoPosition/entries`, {\n\t\t\tparams: {\n\t\t\t\tstart: start ? new Date(start).toISOString() : '',\n\t\t\t\tend: end ? new Date(end).toISOString() : '',\n\t\t\t\torder,\n\t\t\t\tlimit,\n\t\t\t\tonlyChangedValues\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const getDatapointSamples = (\n\tassetUrn: string,\n\tdpName: string,\n\tdataType: DataType,\n\tstart: number,\n\tend: number,\n\tslices: number\n): Promise<Array<DatapointValue>> => {\n\tconst url = `/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(\n\t\tdpName\n\t)}/${datatypeToDatapointType(dataType)}/samples`;\n\n\treturn getAxios()\n\t\t.get(url, {\n\t\t\tparams: {\n\t\t\t\tstart: new Date(start).toISOString(),\n\t\t\t\tend: new Date(end).toISOString(),\n\t\t\t\tslices,\n\t\t\t\tincludeFirst: false,\n\t\t\t\tincludeLast: false\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.timeSeries.entries);\n};\n\nexport const updateDatapointUnit = (\n\tassetId: number,\n\tdpName: string,\n\tunit: Unit | null | undefined\n): Promise<unknown> => {\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(dpName)}/unit`, unit)\n\t\t.then(extractData);\n};\n\nexport const deleteDatapoint = async (assetId: number, dpName: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/datapoints/${encodeURIComponent(dpName)}`);\n};\n\nfunction transformDatatypeToUrlSegment(datatype: DataType) {\n\tswitch (datatype) {\n\t\tcase 'GEO_POSITION':\n\t\t\treturn 'geoPosition';\n\t\tdefault:\n\t\t\treturn datatype.toLowerCase();\n\t}\n}\n\nexport const deleteDatapointEntries = async (\n\tassetUrn: string,\n\tdp: Datapoint,\n\tstartOptional?: string,\n\tendOptional?: string\n): Promise<void> => {\n\tconst DEFAULT_START = new Date(0).toISOString();\n\tconst start = startOptional || DEFAULT_START;\n\tconst body = endOptional\n\t\t? {\n\t\t\t\tstart,\n\t\t\t\tend: endOptional\n\t\t\t}\n\t\t: {\n\t\t\t\tstart\n\t\t\t};\n\tconst dataType = transformDatatypeToUrlSegment(dp.datatype);\n\tawait getAxios().delete(\n\t\t`/v2/assets/urn/${encodeURIComponent(assetUrn)}/datapoints/${encodeURIComponent(dp.name)}/${dataType}/entries`,\n\t\t{\n\t\t\tparams: body\n\t\t}\n\t);\n};\n","import {extractData, getAxios, retryRequest} from './axios';\nimport {DatapointValueGeoPositionType, DataType} from './datapoint';\nimport {PaginationRequestAdxData, PaginationSettingsAdxData, paginationSettingsAdxToQueryParams} from './pagination';\n\nexport type StructuredDatapointsNodeDataType = 'string' | 'number' | 'boolean' | 'array';\n\nexport type PropertyNode = {\n\tpropertyPath: string;\n\tdatatypes: StructuredDatapointsNodeDataType[];\n};\n\nexport type StructuredDatapointPropertyNodes = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tpropertyNodes: PropertyNode[];\n\tresultLimitExceeded: boolean;\n};\n\ntype DistinctValuesResponseArrays = (string | number | boolean | object)[][] | (string | number | boolean | object)[];\n\nexport type DistinctValuesResponse = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tpropertyPath: string;\n\tdistinctValues: string[] | number[] | boolean[] | DistinctValuesResponseArrays;\n\tresultLimitExceeded: boolean;\n};\n\ntype Condition = {\n\tpropertyPath?: string;\n\toperator:\n\t\t'is' | 'larger_than' | 'larger_or_equal_than' | 'less_than' | 'less_or_equal_than' | 'contains' | 'exists';\n\tvalue: string | number | boolean | number[] | string[] | boolean[];\n};\n\nexport type AdxDistinctValuesDataType = 'double' | 'long' | 'boolean' | 'text' | 'geo_position' | 'structured';\n\nexport const DataTypeToAdxDistinctDatapointType: Record<DataType, AdxDistinctValuesDataType> = {\n\tBOOLEAN: 'boolean',\n\tDOUBLE: 'double',\n\tLONG: 'long',\n\tTEXT: 'text',\n\tGEO_POSITION: 'geo_position',\n\tSTRUCTURED: 'structured'\n};\n\ntype Filter = {\n\tassetUrn: string;\n\tdatapointName: string;\n\tdatatype: AdxDistinctValuesDataType;\n\tconditions: Condition[];\n};\n\nexport type PaginationRequestPropertyAdxData = {\n\tsort: string;\n\tpage: number;\n\tsize: number;\n};\n\ntype DatapointValuesRequest = {\n\tinterval: {\n\t\tstart: string;\n\t\tend: string;\n\t};\n\tfilters: Filter[];\n};\n\ntype DatapointValueContent = string | number | DatapointValueGeoPositionType | NestedDatapointValue;\ntype NestedDatapointValue = Record<string, string | number>;\n\ntype DatapointValue = {\n\ttimestamp: string;\n\tassetUrn: string;\n\tdatapointName: string;\n\tvalue: DatapointValueContent;\n};\n\nexport type DatapointValuesResponse = {\n\tcontent: DatapointValue[];\n\tpagination: PaginationSettingsAdxData;\n\tqueryId: string;\n};\n\nexport const getStructuredDatapointPropertyNodes = (\n\tassetUrn: string,\n\tdatapointName: string,\n\tdatatype: DataType,\n\ttsFrom: string,\n\ttsTo: string\n): Promise<StructuredDatapointPropertyNodes> => {\n\tconst queryParameters: Record<string, string> = {\n\t\tdatatype: DataTypeToAdxDistinctDatapointType[datatype],\n\t\tstart: tsFrom,\n\t\tend: tsTo\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/assets/${assetUrn}/datapoints/${datapointName}/propertyNodes`, {params: queryParameters})\n\t\t.then(extractData);\n};\n\nexport const getStructuredDatapointDistinctValues = (\n\tassetUrn: string,\n\tdatapointName: string,\n\tdatatype: DataType,\n\ttsFrom: string,\n\ttsTo: string,\n\tpropertyPath?: string // Optional because it's unnecessary for primitive datapoints\n): Promise<DistinctValuesResponse> => {\n\tconst queryParameters: Record<string, string | number> = {\n\t\tdatatype: DataTypeToAdxDistinctDatapointType[datatype],\n\t\tstart: tsFrom,\n\t\tend: tsTo,\n\t\tpropertyPath: propertyPath || ''\n\t};\n\n\tif (propertyPath) {\n\t\tqueryParameters.propertyPath = propertyPath;\n\t}\n\n\treturn retryRequest(() =>\n\t\tgetAxios()\n\t\t\t.get(`/v2/assets/${assetUrn}/datapoints/${datapointName}/distinctValues`, {\n\t\t\t\tparams: queryParameters\n\t\t\t})\n\t\t\t.then(extractData)\n\t);\n};\n\nexport const getDatapointValuesByFilters = (\n\tstart: string,\n\tend: string,\n\tfilters: Filter[],\n\tpaginationSettings: PaginationRequestAdxData,\n\tstoreQueryResult?: boolean\n): Promise<DatapointValuesResponse> => {\n\tconst requestPayload: DatapointValuesRequest = {\n\t\tinterval: {\n\t\t\tstart,\n\t\t\tend\n\t\t},\n\t\tfilters\n\t};\n\n\tconst queryString = buildDatapointValuesQueryString(paginationSettings, storeQueryResult);\n\treturn retryRequest(() =>\n\t\tgetAxios().post(`/v2/assets/datapointValues${queryString}`, requestPayload).then(extractData)\n\t);\n};\n\nexport const getDatapointValuesByQueryId = (\n\tpaginationSettings: PaginationRequestAdxData,\n\tqueryId: string\n): Promise<DatapointValuesResponse> => {\n\tconst queryString = buildDatapointValuesQueryString(paginationSettings);\n\treturn retryRequest(() => getAxios().get(`/v2/assets/datapointValues/${queryId}${queryString}`).then(extractData));\n};\n\nconst buildDatapointValuesQueryString = (\n\tpaginationSettings: PaginationRequestAdxData,\n\tstoreQueryResult?: boolean\n): string => {\n\tconst queryParams = paginationSettingsAdxToQueryParams(paginationSettings);\n\n\tlet params: Record<string, string> = {};\n\n\tif (queryParams !== undefined) {\n\t\tparams = {\n\t\t\tpage: queryParams.page.toString(),\n\t\t\tsize: queryParams.size.toString(),\n\t\t\tsort: queryParams.sort\n\t\t};\n\t}\n\n\tif (storeQueryResult !== undefined) {\n\t\tparams.storeQueryResult = storeQueryResult.toString();\n\t}\n\n\treturn Object.keys(params).length > 0 ? `?${new URLSearchParams(params).toString()}` : '';\n};\n","import {extractData, getAxios} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\n\nexport type DataProcessingDefinitionDatapointDataType = 'BOOLEAN' | 'DOUBLE' | 'LONG' | 'TEXT';\n\nexport type DataProcessingDefinitionProcessingDefType = 'expressionPD';\n\nexport type DataProcessingDefinitionProcessingPeriod = 'INSTANT' | 'MIN1' | 'MIN15' | 'MIN30' | 'HOUR';\n\nexport type DataProcessingDefinitionDatapoint = {\n\tdatapointKey: string;\n\tvariableName: string;\n\tdataType: DataProcessingDefinitionDatapointDataType;\n\trequiresValueInCurrentPeriod: boolean;\n};\n\nexport type DataProcessingDefinitionOutput = {\n\toutputKey: string;\n\tvariableName: string;\n};\n\nexport type DataProcessingDefinitionBody = {\n\tid?: string;\n\tversion?: number;\n\tprocessingDefType: string;\n\tkpiName: string;\n\tprocessingPeriod: DataProcessingDefinitionProcessingPeriod;\n\tresetTo: string;\n\tensureBoundaryValues: boolean;\n\texpression: string;\n\tinput: Array<DataProcessingDefinitionDatapoint>;\n\toutput: Array<DataProcessingDefinitionOutput>;\n\tpublishAsDatapointValues?: boolean;\n};\n\nexport type DataProcessingDefinition = {\n\tid: number;\n\tdirectlyAssigned: boolean;\n\tetag?: string | null | undefined;\n\tdefinition: DataProcessingDefinitionBody;\n};\n\nexport type DataProcessingDefinitionAssignment = {\n\tid: number;\n\tkpiName: string;\n};\n\nexport type AssetAssignment = {\n\tassetId: number;\n\tassetUrn: string;\n\tassetName: string;\n};\n\nexport type DataProcessingDefinitionAssetAssignment = DataProcessingDefinitionAssignment & {\n\tassignedToAssets: Array<AssetAssignment>;\n};\n\nexport type AssetGroupAssignment = {\n\tassetGroupId: number;\n\tassetGroupName: string;\n\tassetGroupDisplayName: string;\n};\n\nexport type DataProcessingDefinitionAssetGroupAssignment = DataProcessingDefinitionAssignment & {\n\tassignedToAssetGroups: Array<AssetGroupAssignment>;\n};\n\nexport type AccountGroupAssignment = {\n\taccountGroupId: number;\n\taccountGroupName: string;\n\taccountGroupDisplayName: string;\n};\n\nexport type DataProcessingDefinitionAccountGroupAssignment = DataProcessingDefinitionAssignment & {\n\taccessesForAccountGroups: Array<AccountGroupAssignment>;\n};\n\nexport type DataProcessingDefinitionValidation = {\n\tid: number;\n\tname: string;\n\tcompatibleDatapoints: Array<string>;\n\tmissingDatapoints: Array<string>;\n};\n\nexport type DataProcessingDefinitionAccessList = {\n\taccountGroupId: number;\n};\n\ntype EvaluationsParamsInput = {\n\tvariableName: string;\n\tdatapointKey: string;\n\tdataType: string;\n};\n\nexport type EvaluationsParams = {\n\texpression: string;\n\tperiod: string;\n\tfrom: string;\n\tto: string;\n\tinputs: Array<EvaluationsParamsInput>;\n};\n\nexport type DataProcessingDefinitionEvaluationSeries = {\n\tseries: Array<{\n\t\tvariable: string;\n\t\ttype: string;\n\t\tdata: Array<[string, number]>;\n\t}>;\n};\n\nexport type DataProcessingDefinitionsListFilterSettings = {\n\tkpiName?: string;\n\tpublishAsDatapointValues?: string;\n};\n\nexport const listDataProcessingDefinitions = (\n\tfilterSettings: DataProcessingDefinitionsListFilterSettings,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<DataProcessingDefinition>> => {\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 10,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\tconst params = {\n\t\t...filterSettings,\n\t\tpage,\n\t\tsize,\n\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions', {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAssetAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAssetAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/assets', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAssetGroupAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAssetGroupAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/assetGroups', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAccountGroupAssignments = (\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<DataProcessingDefinitionAccountGroupAssignment>> => {\n\treturn getAxios()\n\t\t.get('/v2/dataProcessingDefinitions/accesses', {\n\t\t\tparams: {\n\t\t\t\tid: dataProcessingDefinitionIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const getDataProcessingDefinitionById = (definitionId: number): Promise<DataProcessingDefinition> => {\n\treturn getAxios()\n\t\t.get(`/v2/dataProcessingDefinitions/${definitionId}`)\n\t\t.then((response) => {\n\t\t\tconst data = extractData(response);\n\t\t\tconst etag = response.headers?.etag || '';\n\t\t\treturn {...data, etag};\n\t\t});\n};\n\nexport const fetchDataProcessingDefinitionsAssignedToAsset = (\n\tassetId: number\n): Promise<Array<DataProcessingDefinition>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/dataProcessingDefinitions`).then(extractData);\n};\n\nexport const fetchDataProcessingDefinitionsAssignedToAssetGroup = (\n\tassetGroupId: number\n): Promise<Array<DataProcessingDefinition>> => {\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitions`).then(extractData);\n};\n\nexport const createDataProcessingDefinition = (dataProcessingDefinition: {\n\tdefinition: DataProcessingDefinitionBody;\n\tassetIdsWithAccess?: number[];\n\taccountGroupIdsWithAccess?: number[];\n}): Promise<DataProcessingDefinition> => {\n\treturn getAxios().post('/v2/dataProcessingDefinitions', dataProcessingDefinition).then(extractData);\n};\n\nexport const updateDataProcessingDefinition = (data: DataProcessingDefinition): Promise<DataProcessingDefinition> => {\n\tconst {etag, ...dataProcessingDefinition} = data;\n\treturn getAxios()\n\t\t.put(`/v2/dataProcessingDefinitions/${dataProcessingDefinition.id}`, dataProcessingDefinition, {\n\t\t\theaders: etag\n\t\t\t\t? {\n\t\t\t\t\t\t'If-Match': etag\n\t\t\t\t\t}\n\t\t\t\t: {}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const assignDataProcessingDefinitionsToAsset = (\n\tassetId: number,\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.put(`/v2/assets/${assetId}/dataProcessingDefinitionsById`, dataProcessingDefinitionIds)\n\t\t.then(extractData);\n};\n\nexport const assignDataProcessingDefinitionsToAssetGroup = (\n\tassetGroupId: number,\n\tdataProcessingDefinitionIds: Array<number>\n): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.put(`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitionsById`, dataProcessingDefinitionIds)\n\t\t.then(extractData);\n};\n\nexport const deleteDataProcessingDefinition = async (dataProcessingDefinitionId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/dataProcessingDefinitions/${dataProcessingDefinitionId}`);\n};\n\nexport const validateDataProcessingDefinitionForAssetGroup = (\n\tdataProcessingDefinition: DataProcessingDefinition,\n\tassetGroupId: number,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<DataProcessingDefinitionValidation>> => {\n\tconst {definition} = dataProcessingDefinition;\n\tconst settings = paginationSettings || {\n\t\tpage: 0,\n\t\tsize: 10,\n\t\tsort: ''\n\t};\n\tconst {page, size, sort} = settings;\n\treturn getAxios()\n\t\t.post(\n\t\t\t`/v2/assetGroups/${assetGroupId}/dataProcessingDefinitionValidation`,\n\t\t\t{\n\t\t\t\tdefinition\n\t\t\t},\n\t\t\t{\n\t\t\t\tparams: {\n\t\t\t\t\tpage,\n\t\t\t\t\tsize,\n\t\t\t\t\tsort: sort ? `${sort.property},${sort.direction}` : '',\n\t\t\t\t\tignoreCase: true\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\t.then(extractData);\n};\n\nexport const listDataProcessingDefinitionAccesses = (\n\tdefinitionId: number\n): Promise<DataProcessingDefinitionAccessList> => {\n\treturn getAxios().get(`/v2/dataProcessingDefinitions/${definitionId}/access`).then(extractData);\n};\n\nexport const addAccessToDataProcessingDefinition = async (\n\tdefinitionId: number,\n\taccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().put(`/v2/dataProcessingDefinitions/${definitionId}/access/${accountGroupId}`);\n};\n\nexport const removeAccessToDataProcessingDefinition = async (\n\tdefinitionId: number,\n\taccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/dataProcessingDefinitions/${definitionId}/access/${accountGroupId}`);\n};\n\nexport const getDataProcessingDefinitionEvaluations = (\n\turn: string,\n\tparams: EvaluationsParams\n): Promise<DataProcessingDefinitionEvaluationSeries> =>\n\tgetAxios()\n\t\t.post(`/v2/dataProcessingDefinitionEvaluations/${encodeURIComponent(urn)}`, params)\n\t\t.then(extractData);\n","import {getAxios} from './axios';\n\nexport type AggregatedFact = {\n\taggregatedValue: number | null | undefined;\n\trangeEnd: string;\n\trangeStart: string;\n};\n\nexport type AggregatedFacts = {\n\taggregatedFacts: Array<AggregatedFact> | null | undefined;\n};\n\ntype KpiQueryType = 'QUERY_SUM' | 'QUERY_AVERAGE' | 'QUERY_MAX' | 'QUERY_MIN' | 'QUERY_ALL';\n\nexport type KpiQueryAssetsBy = 'BY_ASSET_ID' | 'BY_SITE_GROUP_ID' | 'BY_ROBOT_SYSTEM_GROUP_ID';\n\nexport type KpiParams = {\n\tkpiName: string;\n\tqueryAssetsBy: KpiQueryAssetsBy;\n\tqueryAssetsById: number;\n\tqueryType: KpiQueryType;\n\tdaysOfWeek?: string;\n\tdateFrom: string;\n\tdateTo: string;\n\ttsFrom?: string;\n\ttsTo?: string;\n\ttimeFrom?: string;\n\ttimeTo?: string;\n\tuserId?: number;\n\texternalUuid?: string | null | undefined;\n\tgroupBy?: string;\n};\n\nexport const getKpiGenericWithTimestamp = (params: KpiParams): Promise<AggregatedFacts> =>\n\tgetAxios()\n\t\t.get('/v2/kpis/facts', {\n\t\t\tparams: {...params}\n\t\t})\n\t\t.then(({data}) => data);\n\nexport const getKpiGeneric = (params: KpiParams): Promise<Array<number>> =>\n\tgetAxios()\n\t\t.get('/v2/kpis/facts/generic', {\n\t\t\tparams: {...params}\n\t\t})\n\t\t.then(({data}) => data);\n","import {getAxios, extractData} from './axios';\n\nconst DAY_MILLIS = 24 * 60 * 60 * 1000;\n\nexport type EventType = 'STATEFUL' | 'ONE_TIME';\n\nexport type Event = {\n\tassetId: number;\n\teventType: EventType;\n\teventKey: string;\n\tpriority: number;\n\toccurredAt: number;\n\tclearedAt: number | null | undefined;\n\tacknowledgeAt: number | null | undefined;\n\ttext: string;\n\textraProperties: Record<string, string>;\n};\n\nexport const fetchEventsByAssetId = (\n\tassetId: number,\n\tfrom?: number,\n\tto?: number,\n\texcludeAcknowledged?: boolean\n): Promise<Array<Event>> => {\n\tconst now = Date.now();\n\tconst defaultTo = now;\n\tconst defaultFrom = now - 28 * DAY_MILLIS;\n\tconst extraParams =\n\t\ttypeof excludeAcknowledged !== 'undefined'\n\t\t\t? {\n\t\t\t\t\texcludeAcknowledged\n\t\t\t\t}\n\t\t\t: {};\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/history/${assetId}`, {\n\t\t\tparams: {\n\t\t\t\tfrom: new Date(from ?? defaultFrom).toISOString(),\n\t\t\t\tto: new Date(to ?? defaultTo).toISOString(),\n\t\t\t\t...extraParams\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.events.map(parseEvent));\n};\n\nexport const fetchOpenStatefulEventsByAssetId = (\n\tassetId: number,\n\texcludeAcknowledged = true\n): Promise<Array<Event>> => {\n\tconst params = {\n\t\texcludeAcknowledged\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/stateful/${assetId}/open`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => (data.events && data.events.map(parseEvent)) || []);\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst parseEvent = (event: any): Event => {\n\treturn {\n\t\t...event,\n\t\toccurredAt: parseIsoDateString(event.occurredAt),\n\t\tclearedAt: parseIsoDateString(event.clearedAt),\n\t\tacknowledgeAt: parseIsoDateString(event.acknowledgeAt)\n\t};\n};\n\nconst parseIsoDateString = (isoString: string | null | undefined): number | null | undefined => {\n\treturn isoString ? new Date(isoString).getTime() : null;\n};\n\n/** @deprecated use acknowledgeStatefulEvent or acknowledgeStatelessEvent instead. */\nexport const acknowledgeEvent = async (assetId: number, eventKey: string): Promise<void> => {\n\tawait getAxios().put(`/v2/eventLog/stateful/${assetId}/${encodeURIComponent(eventKey)}/acknowledge`);\n};\n\nexport const acknowledgeStatefulEvent = async (assetId: number, eventKey: string): Promise<void> => {\n\tawait getAxios().put(`/v2/eventLog/stateful/${assetId}/${encodeURIComponent(eventKey)}/acknowledge`);\n};\n\nexport const acknowledgeStatelessEvent = async (\n\tassetId: number,\n\teventKey: string,\n\toccurredAt: number\n): Promise<void> => {\n\tawait getAxios().put(\n\t\t`/v2/eventLog/stateless/${assetId}/${encodeURIComponent(eventKey)}/acknowledge?occurredAt=${new Date(\n\t\t\toccurredAt\n\t\t).toISOString()}`\n\t);\n};\n\nexport const deleteHistoricEvents = async (assetId: number, from?: number, to?: number): Promise<void> => {\n\tconst params: Record<string, unknown> = {};\n\tif (from != null) params.from = new Date(from).toISOString();\n\tif (to != null) params.to = new Date(to).toISOString();\n\tawait getAxios().delete(`/v2/eventLog/history/${assetId}`, {params});\n};\n\nexport const fetchOpenEventsOfMultipleAssets = (assetIds: number[]): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/stateful/assets/open`, {\n\t\t\tparams: {\n\t\t\t\tassetId: assetIds\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchHistoricEventsOfMultipleAssets = (assetIds: number[], from: number, to: number): Promise<unknown> => {\n\treturn getAxios()\n\t\t.get(`/v2/eventLog/history/assets`, {\n\t\t\tparams: {\n\t\t\t\tassetId: assetIds,\n\t\t\t\tfrom: new Date(from).toISOString(),\n\t\t\t\tto: new Date(to).toISOString()\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((data) => data.events.map(parseEvent));\n};\n","import {getAxios, extractData} from './axios';\n\ntype Locale = {\n\tid: number;\n\ttag: string;\n};\n\nexport type LocaleLanguageAndCountry = {\n\tlocale: string;\n};\n\nexport const fetchLocales = (): Promise<Array<string>> => {\n\treturn getAxios()\n\t\t.get<Locale[]>('/v2/locales')\n\t\t.then(extractData)\n\t\t.then((result) => result.map((locale) => locale.tag));\n};\n","import {getAxios, extractData} from './axios';\n\nexport type GrantedAccess = {\n\tid: number;\n\taccountGroup: number;\n\trequiredAssetGroups: Array<number>;\n};\n\nexport const fetchGrantedAccesses = (userGroupId: number): Promise<Array<GrantedAccess>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 999,\n\t\tsort: 'id,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${userGroupId}/grantedAccesses`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchGrantedAccessesForAssetGroup = (assetGroupId: number): Promise<Array<GrantedAccess>> => {\n\tconst params = {\n\t\tpage: 0,\n\t\tsize: 999,\n\t\tsort: 'id,ASC',\n\t\tignoreCase: true\n\t};\n\treturn getAxios()\n\t\t.get(`/v2/assetGroups/${assetGroupId}/grantedAccesses`, {\n\t\t\tparams\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const createGrantedAccess = (\n\tuserGroupId: number,\n\trequiredAssetGroups: Array<number>\n): Promise<GrantedAccess> => {\n\treturn getAxios()\n\t\t.post(`/v2/accountGroups/${userGroupId}/grantedAccesses`, {\n\t\t\trequiredAssetGroups\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const updateGrantedAccess = (accessId: number, updatedGrantedAccess: GrantedAccess): Promise<GrantedAccess> => {\n\treturn getAxios().put(`/v2/grantedAccesses/${accessId}`, updatedGrantedAccess).then(extractData);\n};\n\nexport const deleteGrantedAccess = async (accessId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/grantedAccesses/${accessId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport const fetchNamedQueries = (): Promise<Array<unknown>> => {\n\treturn getAxios().get('/beta/namedQuery').then(extractData);\n};\n\nexport const executeNamedQuery = (id: string, params: Record<string, unknown>): Promise<Array<unknown>> => {\n\treturn getAxios()\n\t\t.put(`/beta/namedQuery/${id}/execute`, params)\n\t\t.then((result) => {\n\t\t\treturn extractData(result);\n\t\t});\n};\n","import {jwtDecode} from 'jwt-decode';\nimport {getAxios, extractData} from './axios';\n\nexport type AuthInfo = {\n\taccountNumber: string;\n\tprincipal: string;\n\taccessToken: string;\n\texpiresAt: number;\n\trefreshToken: string;\n\ttenant: string;\n\tusesOAuth?: boolean;\n};\n\nexport type NGCoreJWTClaims = {\n\texp: number;\n\tjti: string;\n\ttenant: string;\n\tclient_id: string;\n\tuser_name: string;\n\taccount_number: string;\n\tscope: string[];\n};\n\nexport type AuthorizationServerOption = {\n\tname: string;\n\tdisplayName: string;\n\tauthorizationUri: string;\n};\n\nexport type AuthorizationOptions = {\n\tauthorizationServers: Array<AuthorizationServerOption>;\n};\n\nconst OAUTH2_CLIENT_USERNAME = 'OAUTH2_CLIENT';\nconst OAUTH2_CLIENT_PASSWORD = OAUTH2_CLIENT_USERNAME;\n\nexport const requestToken = (principal: string, password: string): Promise<AuthInfo> => {\n\tconst params = new URLSearchParams({\n\t\tgrant_type: 'password',\n\t\tusername: principal,\n\t\tpassword\n\t}).toString();\n\treturn getAxios()\n\t\t.post('/v2/oauth/token', params, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then(({access_token, expires_in, refresh_token}) => createAuthInfo(access_token, expires_in, refresh_token));\n};\n\nexport const refreshToken = (token: string): Promise<AuthInfo> => {\n\tconst params = new URLSearchParams({\n\t\tgrant_type: 'refresh_token',\n\t\trefresh_token: token\n\t}).toString();\n\treturn getAxios()\n\t\t.post('/v2/oauth/token', params, {\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then(({access_token, expires_in, refresh_token}) => createAuthInfo(access_token, expires_in, refresh_token));\n};\n\nconst revokeToken = async (token: string, tokenTypeHint: string): Promise<void> => {\n\tconst params = new URLSearchParams({\n\t\ttoken: token,\n\t\ttoken_type_hint: tokenTypeHint\n\t}).toString();\n\tawait getAxios().post('/v2/oauth/revoke', params, {\n\t\theaders: {\n\t\t\t'Content-Type': 'application/x-www-form-urlencoded'\n\t\t},\n\t\tauth: {\n\t\t\tusername: OAUTH2_CLIENT_USERNAME,\n\t\t\tpassword: OAUTH2_CLIENT_PASSWORD\n\t\t}\n\t});\n};\n\nexport const revokeAccessToken = (accessToken: string): Promise<void> => {\n\treturn revokeToken(accessToken, 'access_token');\n};\n\nexport const revokeRefreshToken = (accessToken: string): Promise<void> => {\n\treturn revokeToken(accessToken, 'refresh_token');\n};\n\nconst createAuthInfo = (accessToken: string, expiresIn: number, refreshToken: string): AuthInfo => {\n\tconst {account_number, user_name, tenant} = jwtDecode<NGCoreJWTClaims>(accessToken);\n\treturn {\n\t\taccountNumber: account_number,\n\t\tprincipal: user_name,\n\t\taccessToken,\n\t\texpiresAt: new Date().getTime() + expiresIn * 1000,\n\t\trefreshToken,\n\t\ttenant\n\t};\n};\n\nexport const fetchAuthorizationOptions = (): Promise<AuthorizationOptions> => {\n\treturn getAxios().get(`/v2/authorizationOptions`).then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type PropertyType = 'STRING' | 'TEXT' | 'DATE' | 'LONG' | 'DOUBLE' | 'BOOLEAN' | 'IP' | 'GEO';\n\nexport type EntityTarget = 'ASSET' | 'ASSET_GROUP' | 'ACCOUNT' | 'ACCOUNT_GROUP' | 'DATAPOINT';\n\nexport type Property = {\n\tkey: string;\n\ttype: PropertyType;\n\tentityTargets: Array<EntityTarget>;\n\tdeletable: boolean;\n\taddToAll: boolean;\n\tunique?: boolean;\n\trequired?: boolean;\n\tfinal?: boolean;\n\tminLength?: number | null;\n\tmaxLength?: number | null;\n\tregularExpression?: string | null;\n\tallowedValues?: string[] | null;\n};\n\nexport type PropertyValues = Record<string, (number | boolean | string) | null | undefined>;\n\nexport const fetchProperties = (): Promise<Array<Property>> => {\n\treturn getAxios()\n\t\t.get('/v2/properties?size=2000')\n\t\t.then(extractData)\n\t\t.then((response) => response.content);\n};\n\nexport const getPropertyById = (propertyKey: string): Promise<Property> => {\n\treturn getAxios().get(`/v2/properties/${propertyKey}`).then(extractData);\n};\n\nexport const createProperty = (property: Property): Promise<Property> => {\n\treturn getAxios().post('/v2/properties', property).then(extractData);\n};\n\nexport const updateProperty = (property: Property): Promise<Property> => {\n\treturn getAxios().put(`/v2/properties/${property.key}`, property).then(extractData);\n};\n\nexport const deleteProperty = async (property: Property): Promise<void> => {\n\tawait getAxios().delete(`/v2/properties/${property.key}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RoleNew = {\n\tname: string;\n\tdescription?: string;\n\tlicenseName?: string | null;\n\tlicenseDisplayName?: string | null;\n};\n\nexport type Role = {\n\tid: number;\n\t/** Whether the current user can assign this role. If undefined, the role is considered assignable. */\n\tassignable?: boolean;\n} & RoleNew;\n\nexport const fetchRoleById = (id: number): Promise<Role> => {\n\treturn getAxios().get(`/v2/roles/${id}`).then(extractData);\n};\n\nexport const fetchRoleByIds = (ids: number[]): Promise<Array<Role>> => {\n\treturn getAxios()\n\t\t.get(`/v2/roles`, {\n\t\t\tparams: {\n\t\t\t\tid: ids,\n\t\t\t\tpage: 0,\n\t\t\t\tsize: ids.length\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchRolesForLicense = (licenseName: string): Promise<Array<Role>> => {\n\treturn getAxios().get(`/v2/licenses/${licenseName}/roles`).then(extractData);\n};\n\nexport const createRole = (item: RoleNew): Promise<Role> => {\n\treturn getAxios().post(`/v2/roles`, item).then(extractData);\n};\n\nexport const createRoleWithLicense = (item: RoleNew, licenseName: string): Promise<Role> => {\n\treturn getAxios().post(`/v2/licenses/${licenseName}/roles`, item).then(extractData);\n};\n\nexport const updateRole = (item: Role): Promise<Role> => {\n\treturn getAxios().put(`/v2/roles/${item.id}`, item).then(extractData);\n};\n\nexport const deleteRole = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/roles/${id}`);\n};\n\nexport const fetchRoles = (): Promise<Array<Role>> => {\n\treturn getAxios()\n\t\t.get('/v2/roles', {\n\t\t\tparams: {\n\t\t\t\tpage: 0,\n\t\t\t\tsize: 1000\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((pageable) => pageable.content);\n};\n\nexport const fetchAuthoritiesOfRole = (id: number): Promise<Array<string>> => {\n\treturn getAxios().get(`/v2/roles/${id}/authorities`).then(extractData);\n};\n\nexport const setAuthoritiesOfRole = (id: number, authorities: Array<string>): Promise<Array<string>> => {\n\treturn getAxios().put(`/v2/roles/${id}/authorities`, authorities).then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RuleDefinitionGeoPosition = {\n\tlatitude: number;\n\tlongitude: number;\n};\n\nexport type RuleDefinitionConfig = {\n\tid: string;\n\tassetId?: number;\n\tinternal: boolean;\n\tcheckType: string;\n\tthresholdValue?: number;\n\tupperThreshold?: boolean;\n\tgeneratedEventKey: string;\n\tdatapointKeys?: Array<string>;\n\tgeneratedEventPriority: number;\n\tdriftType?: string;\n\twindowSizeMs?: number;\n\tupperLimit?: number;\n\tlowerLimit?: number;\n\tnumberOfEvents?: number;\n\tdurationInSeconds?: number;\n\toperation?: string;\n\teventKeys?: Array<string>;\n\tvalue?: string | number | boolean;\n\tvalueDatatype?: string;\n\tepsilon?: number;\n\tgeoFence?: Array<RuleDefinitionGeoPosition>;\n\tthresholdEnter?: number;\n\tthresholdLeave?: number;\n\ttimeFrameSizeMillis?: number;\n};\n\nexport type RuleDefinition = {\n\tid: number;\n\tname: string;\n\tconfig: RuleDefinitionConfig;\n\tdisplayName?: string;\n\tdirectlyAssigned: boolean;\n};\n\nexport type EventTemplateMapping = {\n\tid?: number | null | undefined;\n\truleId?: string | null | undefined;\n\ttemplateName: string;\n\teventKey: string;\n\teventStatus: 'COME' | 'GONE';\n\tlocale: string | null | undefined;\n\tmailAddresses: Array<string> | null | undefined;\n};\n\nexport const fetchAssignedAssetRules = (assetId: number): Promise<Array<RuleDefinition>> => {\n\treturn getAxios().get(`/v2/assets/${assetId}/ruleDefinitions`).then(extractData);\n};\n\nexport const fetchAssignedAssetGroupRules = (assetGroupId: number): Promise<Array<RuleDefinition>> => {\n\treturn getAxios().get(`/v2/assetGroups/${assetGroupId}/ruleDefinitions`).then(extractData);\n};\n\nexport const createRule = (rule: RuleDefinition): Promise<RuleDefinition> => {\n\treturn getAxios().post('/v2/ruleDefinitions/', rule).then(extractData);\n};\n\nexport const updateRule = (rule: RuleDefinition): Promise<RuleDefinition> => {\n\treturn getAxios().put(`/v2/ruleDefinitions/${rule.id}`, rule).then(extractData);\n};\n\nexport const assignAssetRules = (assetId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/assets/${assetId}/ruleDefinitionsById`, ruleIds).then(extractData);\n};\n\nexport const assignAssetGroupRules = (assetGroupId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroupId}/ruleDefinitionsById`, ruleIds).then(extractData);\n};\n\nexport const unassignAssetRules = (assetId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn fetchAssignedAssetRules(assetId).then((assignedRules) =>\n\t\tassignAssetRules(\n\t\t\tassetId,\n\t\t\tassignedRules.map((r) => r.id).filter((id) => !ruleIds.includes(id))\n\t\t)\n\t);\n};\n\nexport const unassignAssetGroupRules = (assetGroupId: number, ruleIds: Array<number>): Promise<Array<number>> => {\n\treturn fetchAssignedAssetGroupRules(assetGroupId).then((assignedRules) =>\n\t\tassignAssetGroupRules(\n\t\t\tassetGroupId,\n\t\t\tassignedRules.map((r) => r.id).filter((id) => !ruleIds.includes(id))\n\t\t)\n\t);\n};\n\nexport const deleteRule = async (ruleId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/ruleDefinitions/${ruleId}`);\n};\n\nexport const fetchRuleByName = (name: string): Promise<RuleDefinition> => {\n\treturn getAxios().get(`/v2/ruleDefinitions/name/${name}`).then(extractData);\n};\n\n/** @deprecated unused in NGUI */\nexport const checkRuleNameUniquenes = (name: string): Promise<boolean> => {\n\tif (!name || !name.length) {\n\t\treturn Promise.resolve(true);\n\t}\n\n\treturn fetchRuleByName(name)\n\t\t.then(() => false)\n\t\t.catch(() => true);\n};\n\nexport const fetchEventTemplateMappingsOfRule = (ruleUuid: string): Promise<Array<EventTemplateMapping>> => {\n\treturn getAxios()\n\t\t.get('/v1/eventTemplateMapping', {\n\t\t\tparams: {\n\t\t\t\truleId: ruleUuid\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((eventTemplateMappings) => eventTemplateMappings.content);\n};\n\nexport const createEventTemplateMapping = (e: EventTemplateMapping): Promise<EventTemplateMapping> => {\n\treturn getAxios().post('/v1/eventTemplateMapping', e).then(extractData);\n};\n\nexport const deleteAllEventTemplateMappingsOfRule = async (ruleUuid: string): Promise<void> => {\n\tawait getAxios().delete(`/v1/eventTemplateMapping/ruleId/${ruleUuid}`);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type NotificationTemplateAccess = {\n\taccountGroupIds: number[];\n};\n\nexport type NotificationTemplateNew = {\n\tname: string;\n\tdisplayName: string;\n\ttenant: string;\n\tlocale: string | null | undefined;\n\tsubject: string;\n\ttext: string;\n\tscope: 'ACCOUNTS' | 'CONDITION_MONITORING';\n\taccountGroupsWithAccess?: number[];\n};\n\nexport type NotificationTemplate = NotificationTemplateNew & {\n\tid: number;\n};\n\nexport const fetchEmailTemplateById = (id: number): Promise<NotificationTemplate> => {\n\treturn getAxios().get(`/v2/emailTemplates/${id}`).then(extractData);\n};\n\nexport const fetchEmailTemplateAccessById = (id: number): Promise<NotificationTemplateAccess> => {\n\treturn getAxios().get(`/v2/emailTemplates/${id}/access`).then(extractData);\n};\n\nexport const fetchEmailTemplates = (params: Record<string, unknown>): Promise<Array<NotificationTemplate>> => {\n\treturn getAxios()\n\t\t.get('/v2/emailTemplates', {\n\t\t\tparams: {\n\t\t\t\tscope: 'CONDITION_MONITORING',\n\t\t\t\t...params\n\t\t\t}\n\t\t})\n\t\t.then(extractData)\n\t\t.then((emailTemplates) => emailTemplates.content);\n};\n\nexport const createEmailTemplate = (notificationTemplate: NotificationTemplateNew): Promise<NotificationTemplate> => {\n\treturn getAxios().post('/v2/emailTemplates', notificationTemplate).then(extractData);\n};\n\nexport const updateEmailTemplate = (notificationTemplate: NotificationTemplate): Promise<NotificationTemplate> => {\n\treturn getAxios().put(`/v2/emailTemplates/${notificationTemplate.id}`, notificationTemplate).then(extractData);\n};\n\nexport const deleteEmailTemplate = async (notificationTemplateId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/emailTemplates/${notificationTemplateId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type Subscription = {\n\tsubscriptionId: string;\n\tsubscriptionUris: Array<string>;\n};\n\nexport const subscribeAssets = (\n\tassetIds: Array<number>,\n\ttypes: Array<string> = ['datapointValuesReceived', 'eventUpdate', 'statefulEvent']\n): Promise<Subscription> => {\n\treturn getAxios()\n\t\t.post('/v2/subscriptions', {\n\t\t\tassetIds,\n\t\t\ttypes,\n\t\t\tdurable: false\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const subscribeAssetGroups = (\n\tassetGroupIds: Array<number>,\n\ttypes: Array<string> = ['datapointValuesReceived', 'eventUpdate', 'statefulEvent']\n): Promise<Subscription> => {\n\treturn getAxios()\n\t\t.post('/v2/subscriptions', {\n\t\t\tassetGroupIds,\n\t\t\ttypes,\n\t\t\tdurable: false\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const unsubscribe = async (subscriptionId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/subscriptions/${subscriptionId}`);\n};\n","import {getAxios, extractData} from './axios';\nimport {Unit} from './datapoint';\n\nexport const fetchUnits = (): Promise<Array<Unit>> => {\n\treturn getAxios().get(`/v2/units`).then(extractData);\n};\n\nexport const addUnit = (unit: Unit): Promise<Unit> => {\n\treturn getAxios().put(`/v2/units/${unit.name}`, unit).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\nimport type {UserGroup} from './userGroup';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {paginationSettingsToQueryParams} from './pagination';\nimport {PropertyValues} from './property';\nimport {License} from './licenses';\nimport {LocaleLanguageAndCountry} from './locale';\n\nexport type UserState = 'ACTIVE' | 'INACTIVE' | 'TERMINATED' | 'TERMS_ACCEPTANCE_PENDING' | 'INVITED';\n\ntype UserPrincipals = {\n\tUSERNAME?: Array<{\n\t\tname: string;\n\t}>;\n\tEMAIL?: Array<{\n\t\tname: string;\n\t}>;\n\tOPEN_ID_CONNECT_LINK?: Array<{\n\t\tname: string;\n\t}>;\n};\n\nexport type UserNew = {\n\tdisplayName?: string | undefined;\n\tname?: string | undefined;\n\tprincipals: {\n\t\tUSERNAME?: [{name: string}];\n\t\tEMAIL: [{name: string}];\n\t};\n\tinitialState?: UserState;\n\tlocale: string;\n\ttimezone?: string;\n\taccountGroupIds?: Array<number>;\n\tproperties?: PropertyValues;\n};\n\nexport type User = {\n\tid: number;\n\tnumber: string;\n\tstate: UserState;\n\tprincipals: UserPrincipals;\n\tauthorities: Array<string>;\n\tproperties: PropertyValues;\n\tlocale: string;\n\ttimezone: string;\n\tdisplayName: string;\n\t/** @deprecated name field is deprecated, use displayName instead. */\n\tname?: string | undefined;\n\taccountGroupIds: Array<number>;\n\troleIds: Array<number>;\n\tlicense?: License;\n\tlastSuccessfulLogin: string | null | undefined;\n\tpendingInvitation?: boolean;\n\ttwoFactorResetPossible?: boolean;\n\ttwoFactorDeviceRegisteredCount?: number;\n};\n\nexport const fetchUserByAccountNumber = (accountNumber: string): Promise<User> => {\n\treturn getAxios().get(`/v2/accounts/${accountNumber}`).then(extractData);\n};\n\nexport const fetchMe = (): Promise<User> => {\n\treturn getAxios().get(`/v2/accounts/me`).then(extractData);\n};\n\nexport const fetchUsers = (paginationSettings: PaginationSettings): Promise<Pageable<User>> => {\n\treturn getAxios()\n\t\t.get('/v2/accounts', {params: paginationSettingsToQueryParams(paginationSettings)})\n\t\t.then(extractData);\n};\n\nexport const createUser = (user: UserNew): Promise<User> => {\n\tconst userToCreate: Record<string, unknown> = {\n\t\tdisplayName: user.displayName,\n\t\tname: user.name,\n\t\tinitialState: user.initialState,\n\t\temailAddress: user.principals.EMAIL[0].name,\n\t\tlocale: user.locale,\n\t\ttimezone: user.timezone,\n\t\taccountGroupIds: user.accountGroupIds,\n\t\tproperties: user.properties\n\t};\n\n\tif (user.principals.USERNAME && user.principals.USERNAME[0].name) {\n\t\tuserToCreate.username = user.principals.USERNAME[0].name;\n\t}\n\n\treturn getAxios().post('/v2/accounts/registrationsWithEmail', userToCreate).then(extractData);\n};\n\nexport const inviteUser = async (accountNumber: string, initialState: UserState): Promise<void> => {\n\tawait getAxios().post(`/v2/accounts/${accountNumber}/invite`, {initialState});\n};\n\nexport const updateUser = (user: User): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/${user.number}`, user).then(extractData);\n};\n\nexport const updateMe = (user: User): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/me`, user).then(extractData);\n};\n\nexport const searchUsers = (query: string, paginationSettings: PaginationSettings): Promise<Pageable<User>> => {\n\tconst {page, size, sort} = paginationSettings;\n\treturn getAxios()\n\t\t.get('/v2/accounts/search', {\n\t\t\tparams: {\n\t\t\t\tq: query,\n\t\t\t\tpage: page || 0,\n\t\t\t\tsize,\n\t\t\t\tsort: `${sort.property},${sort.direction}`,\n\t\t\t\tignoreCase: true\n\t\t\t},\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchUserGroupsOfUser = (accountNumber: string): Promise<Array<UserGroup>> => {\n\treturn getAxios().get(`/v2/accountGroups?accountNumber=${accountNumber}`).then(extractData);\n};\n\nexport const setUserPassword = async (token: string, password: string): Promise<void> => {\n\tawait getAxios().put(`/v2/accountPassword`, {\n\t\ttoken,\n\t\tpassword\n\t});\n};\n\nexport const deleteUser = async (accountNumber: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/${accountNumber}`);\n};\n\nexport const deleteMyAccount = async (): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/me`);\n};\n\nexport const triggerPasswordReset = async (email: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountPasswordReset`, {\n\t\temail\n\t});\n};\n\nexport const triggerEmailChange = async (\n\taccountNumber: string,\n\toldEmailAddress: string,\n\tnewEmailAddress: string\n): Promise<void> => {\n\tawait getAxios().post(`/v2/accounts/${accountNumber}/emailChange `, {\n\t\toldEmailAddress,\n\t\tnewEmailAddress\n\t});\n};\n\nexport const changeEmail = async (token: string): Promise<void> => {\n\tawait getAxios().post('/v2/emailChange', {\n\t\ttoken\n\t});\n};\n\nexport const updateUserGroupsOfUser = async (\n\taccountNumber: string,\n\taddedUserGroupIds: Array<number>,\n\tremovedUserGroupIds: Array<number>\n): Promise<void> => {\n\tconst changes = [];\n\n\tif (addedUserGroupIds.length) {\n\t\tchanges.push({\n\t\t\taction: 'ADD',\n\t\t\tgroupIds: addedUserGroupIds\n\t\t});\n\t}\n\n\tif (removedUserGroupIds.length) {\n\t\tchanges.push({\n\t\t\taction: 'REMOVE',\n\t\t\tgroupIds: removedUserGroupIds\n\t\t});\n\t}\n\n\tawait getAxios().patch(`/v2/accounts/${accountNumber}/groups`, {\n\t\tchanges\n\t});\n};\n\nexport const fetchRolesOfUser = (accountNumber: string): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/accounts/${accountNumber}/roles`).then(extractData);\n};\n\nexport const updateRolesOfUser = (accountNumber: string, roleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/accounts/${accountNumber}/roles`, roleIds).then(extractData);\n};\n\nexport const updateLocaleOfUser = (locale: LocaleLanguageAndCountry): Promise<User> => {\n\treturn getAxios().put(`/v2/accounts/me/locale`, locale).then(extractData);\n};\n\nexport const acceptEULA = (): Promise<User> => {\n\treturn getAxios()\n\t\t.put(`/v2/accounts/me/acceptTerms`)\n\t\t.then(() => fetchMe());\n};\n\nexport const setUserState = async (accountNumber: string, state: UserState): Promise<void> => {\n\tawait getAxios().put<{\n\t\tstate: UserState;\n\t}>(`/v2/accounts/${accountNumber}/state`, {\n\t\tstate\n\t});\n};\n\nexport const delete2FADevice = async (accountNumber: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/accounts/${accountNumber}/authenticationDevices`);\n};\n","import {getAxios, extractData} from './axios';\nimport type {Pageable, PaginationSettings} from './pagination';\nimport {PropertyValues} from './property';\nimport {paginationSettingsToQueryParams} from './pagination';\n\nexport type NewUserGroup = {\n\tname: string;\n\tdescription?: string;\n\tdisplayName?: string;\n\tproperties?: PropertyValues;\n\taccountGroupsWithAccess?: Array<number>;\n};\n\nexport type UserGroup = NewUserGroup & {\n\tid: number;\n\troleIds?: Array<number>;\n};\n\nexport const fetchUserGroups = (paginationSettings: PaginationSettings): Promise<Pageable<UserGroup>> => {\n\treturn getAxios()\n\t\t.get('/v2/accountGroups', {params: paginationSettingsToQueryParams(paginationSettings)})\n\t\t.then(extractData);\n};\n\nexport const fetchUserGroupById = (id: number): Promise<UserGroup> => {\n\treturn getAxios().get(`/v2/accountGroups/${id}`).then(extractData);\n};\n\nexport const createUserGroup = (usergroup: NewUserGroup): Promise<UserGroup> => {\n\treturn getAxios().post(`/v2/accountGroups`, usergroup).then(extractData);\n};\n\nexport const updateUserGroup = (usergroup: UserGroup): Promise<UserGroup> => {\n\treturn getAxios().put(`/v2/accountGroups/${usergroup.id}`, usergroup).then(extractData);\n};\n\nexport const deleteUserGroup = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/accountGroups/${id}`);\n};\n\nexport const searchUserGroups = (\n\tquery: string,\n\tpaginationSettings: PaginationSettings\n): Promise<Pageable<UserGroup>> => {\n\tconst params = {\n\t\tq: query,\n\t\tignoreCase: true,\n\t\t...paginationSettingsToQueryParams(paginationSettings)\n\t};\n\treturn getAxios()\n\t\t.get('/v2/accountGroups/search', {\n\t\t\tparams,\n\t\t\theaders: {\n\t\t\t\t'Content-Type': 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchRoleIdsOfUserGroup = (id: number): Promise<Array<number>> => {\n\treturn getAxios().get(`/v2/accountGroups/${id}/roles`).then(extractData);\n};\n\nexport const updateRoleIdsOfUserGroup = (id: number, roleIds: Array<number>): Promise<Array<number>> => {\n\treturn getAxios().put(`/v2/accountGroups/${id}/roles`, roleIds).then(extractData);\n};\n\nexport const assignUsersToUserGroupByIds = async (usergroup: UserGroup, userIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'ADD',\n\t\taccountIds: userIds\n\t});\n};\n\nexport const assignUsersToUserGroupByQuery = async (usergroup: UserGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'ADD',\n\t\tquery\n\t});\n};\n\nexport const unassignUsersFromUserGroupByIds = async (usergroup: UserGroup, userIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'REMOVE',\n\t\taccountIds: userIds\n\t});\n};\n\nexport const unassignUsersFromUserGroupByQuery = async (usergroup: UserGroup, query: string): Promise<void> => {\n\tawait getAxios().post(`/v2/accountGroups/${usergroup.id}/accountAssignments`, {\n\t\taction: 'REMOVE',\n\t\tquery\n\t});\n};\n\nexport const fetchAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/assetGroupsAccesses`)\n\t\t.then(extractData)\n\t\t.then((result) => result.assetGroupIds);\n};\n\nexport const addAccess = async (accountGroupId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assetGroups/${assetGroupId}/access/${accountGroupId}`);\n};\n\nexport const deleteAccess = async (accountGroupId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${assetGroupId}/access/${accountGroupId}`);\n};\n\nexport const fetchAccountGroupAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/accountGroupsAccesses`)\n\t\t.then(extractData)\n\t\t.then((result) => result.accountGroupIds);\n};\n\nexport const fetchInverseAccountGroupAccesses = (accountGroupId: number): Promise<Array<number>> => {\n\treturn getAxios()\n\t\t.get(`/v2/accountGroups/${accountGroupId}/access`)\n\t\t.then(extractData)\n\t\t.then((result) => result.accountGroupIds);\n};\n\nexport const addAccountGroupAccess = async (\n\tgivingAccessAccountGroupId: number,\n\treceivingAccessAccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().put(`/v2/accountGroups/${givingAccessAccountGroupId}/access/${receivingAccessAccountGroupId}`);\n};\n\nexport const deleteAccountGroupAccess = async (\n\tgivingAccessAccountGroupId: number,\n\treceivingAccessAccountGroupId: number\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/accountGroups/${givingAccessAccountGroupId}/access/${receivingAccessAccountGroupId}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type License = {\n\tname: string;\n\tdisplayName: string;\n\tdescription: string;\n};\n\nexport const fetchLicenses = (): Promise<Array<License>> => {\n\treturn getAxios().get(`v2/licenses`).then(extractData);\n};\n\nexport const fetchLicenseByName = (licenseName: string): Promise<License> => {\n\treturn getAxios().get(`v2/licenses/${licenseName}`).then(extractData);\n};\n\nexport const createLicense = (license: License): Promise<License> => {\n\treturn getAxios().post(`v2/licenses`, license).then(extractData);\n};\n\nexport const updateLicense = (license: License): Promise<License> => {\n\treturn getAxios().put(`/v2/licenses/${license.name}`, license).then(extractData);\n};\n\nexport const deleteLicense = async (licenseName: string): Promise<void> => {\n\tawait getAxios().delete(`v2/licenses/${licenseName}`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport const getVersion = (): Promise<string> => {\n\treturn getAxios()\n\t\t.get('/v2/version', {\n\t\t\theaders: {\n\t\t\t\tAccept: 'text/plain'\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type RemoteServiceConnectionInfo = {\n\taccountNumber: string;\n\taccountConnected: boolean | null | undefined;\n\taccountVpnIp: string | null | undefined;\n\tgatewayUrn: string;\n\tgatewayConnected: boolean;\n\tgatewayVpnIp: string | null | undefined;\n\ttargetNetwork: string | null | undefined;\n\tcreatedAt: string;\n};\n\nexport const initializeRemoteServiceConnection = async (gatewayUrn: string, targetNetwork: string): Promise<void> => {\n\tawait getAxios().put(\n\t\t`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`,\n\t\ttargetNetwork\n\t\t\t? {\n\t\t\t\t\ttargetNetwork\n\t\t\t\t}\n\t\t\t: {}\n\t);\n};\n\nexport const fetchRemoteServiceConnectionInfo = (gatewayUrn: string): Promise<RemoteServiceConnectionInfo> =>\n\tgetAxios().get(`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`).then(extractData);\n\nexport const terminateRemoteServiceConnection = async (gatewayUrn: string): Promise<void> => {\n\tawait getAxios().delete(`/beta/gateways/urn/${gatewayUrn}/remoteServiceVpnConnection`);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type WriteCommand = {\n\tdatapointKey: string;\n\tvalue: string;\n\treadBack: boolean;\n};\n\nexport type PreparedCommand = {\n\tid?: number;\n\tname: string;\n\texpirySeconds: number;\n\tcontent: {\n\t\ttype: string;\n\t\tassetUrn: string;\n\t\ttransmitImmediately: boolean;\n\t\twriteOperations: Array<WriteCommand>;\n\t};\n};\n\nexport const fetchPreparedCommands = (gatewayId: number): Promise<Array<PreparedCommand>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/preparedCommands`).then(extractData);\n};\n\nexport const createPreparedCommand = (preparedCommand: PreparedCommand): Promise<PreparedCommand> => {\n\treturn getAxios().post(`/v2/preparedCommands`, preparedCommand).then(extractData);\n};\n\nexport const updatePreparedCommand = (preparedCommand: PreparedCommand): Promise<PreparedCommand> => {\n\treturn getAxios().put(`/v2/preparedCommands/${preparedCommand.id}`, preparedCommand).then(extractData);\n};\n\nexport const deletePreparedCommand = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/preparedCommands/${id}`);\n};\n\nexport const assignPreparedCommandsToGateway = async (\n\tgatewayId: number,\n\tpreparedCommandIds: Array<number>\n): Promise<void> => {\n\tawait getAxios().put(`/v2/gateways/${gatewayId}/preparedCommandsById`, preparedCommandIds);\n};\n\nexport const executePreparedCommand = (gatewayId: number, preparedCommand: PreparedCommand): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/gateways/${gatewayId}/preparedCommands/${preparedCommand.id}/execution`)\n\t\t.then(extractData);\n};\n","import {getAxios, extractData} from './axios';\n\nexport type CommandType = {\n\tid: number;\n\tsentAt: Date;\n\texpiresAt: Date;\n\tcontent: {\n\t\ttype: string;\n\t};\n};\n\nexport type CommandResult = {\n\tid: number;\n\treceivedAt: Date;\n\tcontent: {\n\t\ttype: string;\n\t\terrorCode: number;\n\t\tproperties: unknown;\n\t\titems: Array<unknown> | null | undefined;\n\t};\n};\n\nexport const invokeDiscoveryCommand = (gatewayId: number, discoveryParameters: unknown): Promise<CommandType> => {\n\tconst discoveryPayload = {\n\t\texpirySeconds: 60,\n\t\tcontent: {\n\t\t\ttype: 'discoveryCommand',\n\t\t\tdiscoveryParameters\n\t\t}\n\t};\n\treturn getAxios().post(`/v2/gateways/${gatewayId}/commands`, discoveryPayload).then(extractData);\n};\n\nexport const fetchSentCommandResponses = (gatewayId: number, commandId: number): Promise<Array<CommandResult>> => {\n\treturn getAxios().get(`/v2/gateways/${gatewayId}/commands/${commandId}/responses`).then(extractData);\n};\n","import {extractData, getAxios} from './axios';\n\nexport type AuthorizationServer = {\n\tname: string;\n\tdisplayName: string;\n\tclientId: string;\n\tclientSecret: string;\n\tauthorizationUri: string;\n\tredirectUri: string;\n\ttokenUri: string;\n\tuiCallbackUri: string;\n\tuserinfoUri: string;\n\trevocationUri: string;\n\tjwksUri: string;\n\tscope: string | null | undefined;\n};\n\nexport type AuthorizationServerRule = {\n\tname: string;\n\tdisplayName: string;\n\tacceptedEmailHostname: string;\n\tacceptedEmailPattern: string;\n\taccountGroupId: number;\n\tdisableEmailVerifiedCheck: boolean;\n\twebhookUri: string | null | undefined;\n};\n\nexport const createOrUpdateAuthorizationServer = (\n\tauthorizationServer: AuthorizationServer\n): Promise<AuthorizationServer> =>\n\tgetAxios().put(`/v2/authorizationServers/${authorizationServer.name}`, authorizationServer).then(extractData);\n\nexport const deleteAuthorizationServer = async (name: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/authorizationServers/${name}`);\n};\n\nexport const fetchAuthorizationServer = (name: string): Promise<AuthorizationServer> =>\n\tgetAxios().get(`/v2/authorizationServers/${name}`).then(extractData);\n\nexport const fetchAuthorizationServers = (): Promise<Array<AuthorizationServer>> =>\n\tgetAxios().get('/v2/authorizationServers').then(extractData);\n\nexport const createOrUpdateAuthorizationServerRule = (\n\tauthorizationServerName: string,\n\trule: AuthorizationServerRule\n): Promise<AuthorizationServerRule> =>\n\tgetAxios().put(`/v2/authorizationServers/${authorizationServerName}/rules/${rule.name}`, rule).then(extractData);\n\nexport const fetchAuthorizationServerRules = (\n\tauthorizationServerName: string\n): Promise<Array<AuthorizationServerRule>> =>\n\tgetAxios().get(`/v2/authorizationServers/${authorizationServerName}/rules`).then(extractData);\n\nexport const fetchAuthorizationServerRule = (\n\tauthorizationServerName: string,\n\truleName: string\n): Promise<AuthorizationServerRule> =>\n\tgetAxios().get(`/v2/authorizationServers/${authorizationServerName}/rules/${ruleName}`).then(extractData);\n\nexport const deleteAuthorizationServerRule = async (\n\tauthorizationServerName: string,\n\truleName: string\n): Promise<void> => {\n\tawait getAxios().delete(`/v2/authorizationServers/${authorizationServerName}/rules/${ruleName}`);\n};\n","import {extractData, getAxios} from './axios';\nimport {Asset, fetchAssetGroupIds} from './asset';\nimport {AssetGroup, fetchAssetGroupsById} from './assetGroup';\n\nexport type RelationshipConstraintTypes =\n\t| 'ASSETS_MAY_ONLY_BE_MEMBER_OF_ASSET_GROUPS_WITH_DEFINITIONS'\n\t| 'ASSET_GROUPS_MAY_ONLY_BE_CHILD_OF_ASSET_GROUPS_WITH_DEFINITIONS'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_LEAST_ONE_ASSET_GROUP'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_MOST_ONE_ASSET_GROUP'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_LEAST_ONE_ASSET_GROUP_WITH_DEFINITIONS'\n\t| 'ASSETS_MUST_BE_MEMBER_OF_AT_MOST_ONE_ASSET_GROUP_WITH_DEFINITIONS'\n\t| 'ASSET_GROUPS_MUST_HAVE_PARENT'\n\t| 'ASSET_GROUPS_WITH_DEFINITIONS_MUST_HAVE_PARENT';\n\nexport type RelationshipConstraintError = {\n\tconstraintType: RelationshipConstraintTypes;\n\tname: string;\n\tobjectIds: Array<number>;\n\tsubjectIds: Array<number>;\n};\n\nexport type RelationshipConstraintErrorDereferenced = {\n\tconstraintType: RelationshipConstraintTypes;\n\tname: string;\n\tobjectNames: Array<string>;\n};\n\nconst dryRunHeader = {\n\theaders: {\n\t\t'X-Dry-Run': true\n\t}\n};\n\n/** asset **/\nexport const createAssetDryRun = (asset: Asset): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/${asset.isGateway ? 'gateways' : 'assets'}`, asset, dryRunHeader)\n\t\t.then(extractData);\n};\n\nexport const updateAssetDryRun = (asset: Asset): Promise<unknown> => {\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tconst {assetGroupIds, ...formData} = asset;\n\treturn getAxios()\n\t\t.put(`/v2/${asset.isGateway ? 'gateways' : 'assets'}/${asset.id}`, formData, dryRunHeader)\n\t\t.then(extractData);\n};\n\nconst assignAssetGroupDryRun = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().put(`/v2/assets/${assetId}/groups/${assetGroupId}`, null, dryRunHeader);\n};\n\nconst unassignAssetGroupDryRun = async (assetId: number, assetGroupId: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assets/${assetId}/groups/${assetGroupId}`, dryRunHeader);\n};\n\nexport const updateAssetGroupIdsDryRun = async (assetId: number, assetGroupIds: Array<number>): Promise<void[]> => {\n\tconst oldAssetGroupIds = await fetchAssetGroupIds(assetId);\n\tlet availableOldAssetGroupIds: number[] = [];\n\tif (oldAssetGroupIds.length > 0) {\n\t\tavailableOldAssetGroupIds = (await fetchAssetGroupsById(oldAssetGroupIds)).map(({id}) => id);\n\t}\n\tconst addedAssetGroupIds = assetGroupIds.filter((id) => !oldAssetGroupIds.includes(id));\n\tconst removedAssetGroupIds = availableOldAssetGroupIds.filter((id) => assetGroupIds && !assetGroupIds.includes(id));\n\treturn Promise.all([\n\t\t...addedAssetGroupIds.map((assetGroupId) => assignAssetGroupDryRun(assetId, assetGroupId)),\n\t\t...removedAssetGroupIds.map((assetGroupId) => unassignAssetGroupDryRun(assetId, assetGroupId))\n\t]);\n};\n\n/** asset group **/\nexport const createAssetGroupDryRun = (assetGroup: AssetGroup): Promise<unknown> => {\n\treturn getAxios()\n\t\t.post(`/v2/assetGroupDefinitions/${assetGroup.definitionId}/groups`, assetGroup, dryRunHeader)\n\t\t.then(extractData);\n};\n\nexport const updateAssetGroupDryRun = (assetGroup: AssetGroup): Promise<unknown> => {\n\treturn getAxios().put(`/v2/assetGroups/${assetGroup.id}`, assetGroup, dryRunHeader).then(extractData);\n};\n\nexport const deleteAssetGroupDryRun = async (id: number): Promise<void> => {\n\tawait getAxios().delete(`/v2/assetGroups/${id}`, dryRunHeader);\n};\n\n/** asset assignment **/\nexport const assignAssetsByIdsDryRun = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'ADD',\n\t\t\tassetIds\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const assignAssetsByQueryDryRun = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'ADD',\n\t\t\tquery\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const unassignAssetsByIdsDryRun = async (assetGroup: AssetGroup, assetIds: Array<number>): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'REMOVE',\n\t\t\tassetIds\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n\nexport const unassignAssetsByQueryDryRun = async (assetGroup: AssetGroup, query: string): Promise<void> => {\n\tawait getAxios().post(\n\t\t`/v2/assetGroups/${assetGroup.id}/assetAssignments`,\n\t\t{\n\t\t\taction: 'REMOVE',\n\t\t\tquery\n\t\t},\n\t\tdryRunHeader\n\t);\n};\n","import {extractData, getAxios} from './axios';\n\ntype FieldType = 'text' | 'boolean' | 'long';\n\nexport type ShadowKeys = Record<string, FieldType>;\n\nexport type Context = 'assets' | 'assetGroups' | 'accounts' | 'accountGroups';\n\nexport function fetchShadowKeys(context: Context): Promise<ShadowKeys> {\n\tif (context === 'assets') {\n\t\treturn getAxios().get(`/v2/assets/shadow/fields`).then(extractData);\n\t}\n\treturn getAxios().get(`/beta/${context}/fields`).then(extractData);\n}\n","import {extractData, getAxios} from './axios';\nimport {Pageable, PaginationSettings} from './pagination';\nimport {AxiosInstance} from 'axios';\n\nexport type BundleRequest = {\n\tname: string;\n};\n\nexport type Bundle = BundleRequest & {\n\tid: string;\n\tcreatedAt: string;\n\tcreatedBy: string;\n};\n\nexport type BundleFileMetadata = {\n\tid: string;\n\tname: string;\n\tsize: number;\n\tchecksum?: string;\n};\n\nexport type BundleVersionRequest = {\n\tdraft: boolean;\n\tname: string;\n\tdescription?: string;\n};\n\nexport type BundleVersion = BundleVersionRequest & {\n\tid: string;\n\tcreatedAt: string;\n\tcreatedBy: string;\n\treleasedAt: string | null | undefined;\n\treleasedBy: string | null | undefined;\n\tfileCount: number;\n};\n\nexport type BundleFileLink = {\n\tdownloadLink: string;\n};\n\nexport const fetchAllBundles = (): Promise<Bundle[]> => {\n\treturn getAxios().get(`/v2/bundles`).then(extractData);\n};\n\nexport const fetchBundle = (id: string): Promise<Bundle> => {\n\treturn getAxios().get(`/v2/bundles/${id}`).then(extractData);\n};\n\nexport const createBundle = (bundle: BundleRequest): Promise<Bundle> => {\n\treturn getAxios().post(`/v2/bundles`, bundle).then(extractData);\n};\n\nexport const deleteBundle = async (id: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${id}`);\n};\n\nexport const fetchBundleVersions = (\n\tbundleId: string,\n\tpaginationSettings?: PaginationSettings,\n\tdraft?: boolean\n): Promise<Pageable<BundleVersion>> => {\n\tconst {page = 0, size = 1000, sort = ''} = paginationSettings || {};\n\treturn getAxios()\n\t\t.get(`/v2/bundles/${bundleId}/versions`, {\n\t\t\tparams: {\n\t\t\t\tpage,\n\t\t\t\tsize,\n\t\t\t\tsort: (sort && `${sort.property},${sort.direction}`) || '',\n\t\t\t\tignoreCase: true,\n\t\t\t\tdraft\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchBundleVersion = (bundleId: string, versionId: string): Promise<BundleVersion> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}`).then(extractData);\n};\n\nexport const createBundleVersion = (bundleId: string, version: BundleVersionRequest): Promise<BundleVersion> => {\n\treturn getAxios().post(`/v2/bundles/${bundleId}/versions`, version).then(extractData);\n};\n\nexport const releaseBundleVersion = (bundleId: string, versionId: string): Promise<BundleVersion> => {\n\treturn getAxios().put(`/v2/bundles/${bundleId}/versions/${versionId}/release`).then(extractData);\n};\n\nexport const deleteBundleVersion = async (bundleId: string, versionId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${bundleId}/versions/${versionId}`);\n};\n\nexport const createBundleFile = (\n\tbundleId: string,\n\tversionId: string,\n\tdata: FormData,\n\taxiosInstance?: AxiosInstance\n): Promise<BundleFileMetadata> => {\n\treturn (axiosInstance ?? getAxios())\n\t\t.post(`/v2/bundles/${bundleId}/versions/${versionId}/files`, data, {\n\t\t\theaders: {\n\t\t\t\t'content-type': 'multipart/form-data'\n\t\t\t},\n\t\t\ttimeout: 15 * 60 * 1000\n\t\t})\n\t\t.then(extractData);\n};\n\nexport const fetchBundleFiles = (bundleId: string, versionId: string): Promise<BundleFileMetadata[]> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}/files`).then(extractData);\n};\n\nexport const downloadBundleFile = (bundleId: string, versionId: string, fileId: string): Promise<BundleFileLink> => {\n\treturn getAxios().get(`/v2/bundles/${bundleId}/versions/${versionId}/files/${fileId}`).then(extractData);\n};\n\nexport const deleteBundleFile = async (bundleId: string, versionId: string, fileId: string): Promise<void> => {\n\tawait getAxios().delete(`/v2/bundles/${bundleId}/versions/${versionId}/files/${fileId}`);\n};\n","import {extractData, getAxios} from './axios';\n\ntype Timeframe = {\n\ttsStart: number;\n\ttsEnd: number;\n};\n\nexport type Params = {\n\ttimeframe?: Timeframe | null | undefined;\n\taccountId?: string | null | undefined;\n};\n\ntype DiffOperator = 'add' | 'remove' | 'replace';\n\nexport type AuditLogDiffItem = {\n\tproductionTimestamp: string;\n\tprocessingTimestamp: string;\n\tentityType: string;\n\tentityId: string;\n\taccount: string;\n\tclientId: string;\n\tdiff: Array<{\n\t\top: DiffOperator;\n\t\tpath: string;\n\t\tvalue: unknown;\n\t}>;\n};\n\nexport const fetchAuditLogEntities = (): Promise<string[]> => getAxios().get('/v2/auditLogEntities').then(extractData);\n\nconst dateToString = (ts: number | null | undefined): string | null | undefined =>\n\tts ? new Date(ts).toUTCString() : null;\n\nexport const fetchAuditLogDifferences = (\n\tentityType: string,\n\tentityId: string,\n\tparams: Params | null | undefined\n): Promise<unknown> =>\n\tgetAxios()\n\t\t.get(`/v2/auditLogDiffs/${entityType}/${entityId}`, {\n\t\t\tparams: {\n\t\t\t\tprocessedFrom: dateToString(params?.timeframe?.tsStart),\n\t\t\t\tprocessedUntil: dateToString(params?.timeframe?.tsEnd),\n\t\t\t\taccount: params?.accountId\n\t\t\t}\n\t\t})\n\t\t.then(extractData);\n","import {getAxios, extractData} from './axios';\n\nexport type ParamsSingleReport = {\n\tid: string;\n\tname: string;\n\twebUrl: string;\n\tembedUrl: string;\n\tdatasetId: string;\n\tembedToken: string;\n};\n\nexport type PowerBiReportsError = {\n\tdata?: unknown;\n\tmessage: string;\n\tstatus: string;\n};\n\nexport async function getParamsForSingleReport(workspaceId: string, reportId: string): Promise<ParamsSingleReport> {\n\treturn await getAxios().get('/v1/powerBi/singleReport/params', {params: {workspaceId, reportId}}).then(extractData);\n}\n","import {getAxios} from './axios';\n\ntype DateTimeRange = {\n\tfrom: string;\n\tto: string;\n};\n\ntype Tsx = {tsx: string};\n\ntype Interpolation = {\n\tkind: 'Linear' | 'Step';\n\tboundary?: {span: string};\n};\n\nexport type TsiInlineVariable = {\n\tfilter?: Tsx;\n\taggregation?: Tsx;\n\tinterpolation?: Interpolation;\n} & (\n\t| {\n\t\t\tkind: 'numeric';\n\t\t\tvalue: Tsx;\n\t }\n\t| {\n\t\t\tkind: 'aggregate';\n\t }\n);\n\ntype AggregateSeries = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tinterval: string;\n\tfilter?: Tsx;\n\tinlineVariables?: Record<string, TsiInlineVariable>;\n\tprojectedVariables?: string[];\n};\n\ntype GetSeries = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tfilter?: Tsx;\n\tinlineVariables?: Record<string, TsiInlineVariable>;\n\tprojectedVariables?: string[];\n\ttake?: number;\n};\n\ntype EventProperty = {\n\tname: string;\n\ttype: string;\n};\n\ntype GetEvents = {\n\tsearchSpan: DateTimeRange;\n\ttimeSeriesId: string[];\n\tfilter?: Tsx;\n\tprojectedProperties?: EventProperty[];\n\ttake?: number;\n};\n\nexport type TsiDataType = 'Bool' | 'DateTime' | 'String' | 'Double' | 'Long' | 'TimeSpan';\n\nexport type TsiProperties = {\n\tname: string;\n\ttype: TsiDataType;\n} & (\n\t| {\n\t\t\ttype: 'Bool';\n\t\t\tvalues: Array<boolean | null>;\n\t }\n\t| {\n\t\t\ttype: 'DateTime' | 'String';\n\t\t\tvalues: Array<string | null>;\n\t }\n\t| {\n\t\t\ttype: 'Double' | 'Long';\n\t\t\tvalues: Array<number | null>;\n\t }\n\t| {\n\t\t\ttype: 'TimeSpan';\n\t\t\tvalues: Array<Record<string, unknown> | null>;\n\t }\n);\n\nexport type TsiResponse = {\n\tcontinuationToken?: string;\n\tprogress: number;\n\tproperties: TsiProperties[];\n\ttimestamps: string[];\n};\n\nconst query = async (data: Record<string, unknown>): Promise<TsiResponse> => {\n\tconst result = await getAxios().post<TsiResponse>('/v1/timeSeriesInsights/query', data, {\n\t\tparams: {\n\t\t\t'api-version': '2020-07-31',\n\t\t\tstoreType: 'ColdStore'\n\t\t}\n\t});\n\n\treturn result.data;\n};\n\nexport const aggregateSeries = (params: AggregateSeries): Promise<TsiResponse> => {\n\treturn query({aggregateSeries: params});\n};\n\nexport const getSeries = async (params: GetSeries): Promise<TsiResponse> => {\n\treturn query({getSeries: params});\n};\n\nexport const getEvents = async (params: GetEvents): Promise<TsiResponse> => {\n\treturn query({getEvents: params});\n};\n","import {AxiosResponse} from 'axios';\nimport {getAxios} from './axios';\nimport {GrantRequest} from 'ux4iot-admin-node';\n\n/** @deprecated, use sendUx4iotGrantRequestToEndpoint instead, whose endpoint defaults to the endpoint of this function **/\nexport const sendUx4iotGrantRequest = (assetUrn: string, grantRequest: GrantRequest): Promise<AxiosResponse> => {\n\treturn getAxios().put(`/v1/ux4iotSecurity/assets/${assetUrn}`, grantRequest);\n};\n\nexport const sendUx4iotGrantRequestToEndpoint = (\n\tgrantRequestEndpoint = '/v1/ux4iotSecurity/assets/',\n\tgrantRequest: GrantRequest\n): Promise<AxiosResponse> => {\n\treturn getAxios().put(`${grantRequestEndpoint}${grantRequest.deviceId}`, grantRequest);\n};\n","import {DataType} from './datapoint';\nimport {getAxios} from './axios';\n\ntype AdxDatapointType = 'double' | 'long' | 'boolean' | 'string' | 'geo_position' | 'structured';\n\nconst DataTypeToAdxDatapointType: Record<DataType, AdxDatapointType> = {\n\tBOOLEAN: 'boolean',\n\tDOUBLE: 'double',\n\tLONG: 'long',\n\tTEXT: 'string',\n\tGEO_POSITION: 'geo_position',\n\tSTRUCTURED: 'structured'\n};\n\nexport type AdxValuesQueryResult = {\n\tasset: {\n\t\turn: string;\n\t\tdatapoints: Array<{\n\t\t\tname: string;\n\t\t\tvalues: Array<[string, unknown]>;\n\t\t}>;\n\t};\n};\n\n/**\n * @param assetUrn\n * @param datapoints\n * @param datatype\n * @param tsFrom\n * @param tsTo\n * @param groupBy kusto timespan, i.e. 1d, 2h, 1.5m\n * @param deduplication\n * @param includeOutliers\n */\nexport async function queryDatapointValues(\n\tassetUrn: string,\n\tdatapoints: string[],\n\tdatatype: DataType,\n\ttsFrom: number,\n\ttsTo: number,\n\tgroupBy?: string | null,\n\tdeduplication?: boolean | null,\n\tincludeOutliers?: boolean | null\n): Promise<AdxValuesQueryResult> {\n\tconst queryParameters: Record<string, unknown> = {\n\t\tdatapoints,\n\t\tdatatype: DataTypeToAdxDatapointType[datatype],\n\t\ttsFrom: new Date(tsFrom).toISOString(),\n\t\ttsTo: new Date(tsTo).toISOString()\n\t};\n\tif (groupBy != null) queryParameters.groupBy = groupBy;\n\tif (deduplication != null) queryParameters.deduplication = deduplication;\n\tif (includeOutliers != null) queryParameters.includeOutliers = includeOutliers;\n\n\tconst response = await getAxios().post<AdxValuesQueryResult>(\n\t\t`/v2/assets/${assetUrn}/datapointValues`,\n\t\tqueryParameters\n\t);\n\n\treturn response.data;\n}\n\nexport async function queryLastDatapointsValue(\n\tassetUrn: string,\n\tdatapoints: string[],\n\tdatatype: DataType,\n\ttsFrom?: number,\n\ttsTo?: number\n): Promise<AdxValuesQueryResult> {\n\tconst queryParameters: Record<string, unknown> = {\n\t\tdatapoints,\n\t\tdatatype: DataTypeToAdxDatapointType[datatype]\n\t};\n\tif (tsFrom != null && tsTo != null) {\n\t\tqueryParameters.tsFrom = new Date(tsFrom).toISOString();\n\t\tqueryParameters.tsTo = new Date(tsTo).toISOString();\n\t}\n\n\tconst response = await getAxios().post<AdxValuesQueryResult>(\n\t\t`/v2/assets/${assetUrn}/datapointValues/latest`,\n\t\tqueryParameters\n\t);\n\n\treturn response.data;\n}\n","import {extractData, getAxios} from './axios';\n\nexport type InitialAccountGroupAssignmentRule = {\n\tname: string;\n\tdisplayName: string;\n\tacceptedEmailHostname: string;\n\taccountGroupId: number;\n};\n\nexport async function getInitialAccountGroupAssignmentRules(): Promise<InitialAccountGroupAssignmentRule[]> {\n\tconst response = await getAxios().get('/v2/initialAccountGroupAssignmentRules');\n\treturn extractData(response);\n}\n\nexport async function createInitialAccountGroupAssignmentRule(\n\trule: InitialAccountGroupAssignmentRule\n): Promise<InitialAccountGroupAssignmentRule> {\n\tconst response = await getAxios().post('/v2/initialAccountGroupAssignmentRules', rule);\n\treturn extractData(response);\n}\n\nexport async function updateInitialAccountGroupAssignmentRule(\n\truleName: string,\n\trule: InitialAccountGroupAssignmentRule\n): Promise<InitialAccountGroupAssignmentRule> {\n\tconst response = await getAxios().put(`/v2/initialAccountGroupAssignmentRules/${ruleName}`, rule);\n\treturn extractData(response);\n}\n\nexport async function deleteInitialAccountGroupAssignmentRule(ruleName: string): Promise<void> {\n\tawait getAxios().delete(`/v2/initialAccountGroupAssignmentRules/${ruleName}`);\n}\n"],"mappings":"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"}
|