kuzzle-device-manager-types 2.4.0-elasticsearch-8.1 → 2.4.1-dev.1

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.
Files changed (41) hide show
  1. package/dist/lib/modules/asset/AssetService.d.ts +2 -2
  2. package/dist/lib/modules/asset/AssetsController.d.ts +5 -1
  3. package/dist/lib/modules/asset/roles/RoleAssetsReader.d.ts +4 -0
  4. package/dist/lib/modules/asset/roles/specificRoles/RoleAssetsConfiguration.d.ts +8 -0
  5. package/dist/lib/modules/asset/roles/specificRoles/RoleAssetsCreation.d.ts +8 -0
  6. package/dist/lib/modules/asset/roles/specificRoles/index.d.ts +2 -0
  7. package/dist/lib/modules/asset/types/AssetApi.d.ts +11 -2
  8. package/dist/lib/modules/device/DeviceService.d.ts +6 -2
  9. package/dist/lib/modules/device/DevicesController.d.ts +6 -1
  10. package/dist/lib/modules/device/roles/RoleDevicesReader.d.ts +4 -0
  11. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesAssetAssociation.d.ts +8 -0
  12. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesConfiguration.d.ts +8 -0
  13. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesCreation.d.ts +8 -0
  14. package/dist/lib/modules/device/roles/specificRoles/index.d.ts +3 -0
  15. package/dist/lib/modules/device/types/DeviceApi.d.ts +12 -2
  16. package/dist/lib/modules/measure/MeasureExporter.d.ts +0 -2
  17. package/dist/lib/modules/model/ModelService.d.ts +5 -2
  18. package/dist/lib/modules/model/ModelsController.d.ts +4 -1
  19. package/dist/lib/modules/model/ModelsRegister.d.ts +2 -2
  20. package/dist/lib/modules/model/types/ModelApi.d.ts +26 -1
  21. package/dist/lib/modules/model/types/ModelContent.d.ts +79 -20
  22. package/dist/lib/modules/model/types/ModelDefinition.d.ts +18 -4
  23. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +2 -2
  24. package/dist/lib/modules/shared/exports.d.ts +2 -0
  25. package/dist/lib/modules/shared/index.d.ts +3 -0
  26. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +0 -2
  27. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +0 -2
  28. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +21 -0
  29. package/dist/lib/modules/shared/services/index.d.ts +1 -0
  30. package/dist/lib/modules/shared/types/DigitalTwinApi.d.ts +34 -0
  31. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +2 -4
  32. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +9 -0
  33. package/dist/lib/modules/shared/types/DigitalTwinMeasures.d.ts +5 -0
  34. package/dist/tests/application/assets/Container.d.ts +3 -0
  35. package/dist/tests/application/assets/Room.d.ts +2 -0
  36. package/dist/tests/application/assets/StreetLamp.d.ts +2 -0
  37. package/dist/tests/application/measures/BrightnessMeasure.d.ts +2 -0
  38. package/dist/tests/application/measures/CO2Measure.d.ts +2 -0
  39. package/dist/tests/application/measures/IlluminanceMeasure.d.ts +2 -0
  40. package/dist/tests/application/measures/PowerConsumptionMeasure.d.ts +2 -0
  41. package/package.json +1 -1
@@ -1,11 +1,11 @@
1
1
  import { KuzzleRequest, User } from "kuzzle";
2
2
  import { JSONObject, KDocument, KHit, SearchResult, mReplaceResponse } from "kuzzle-sdk";
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
- import { BaseService, Metadata, SearchParams } from "../shared";
4
+ import { DigitalTwinService, Metadata, SearchParams } from "../shared";
5
5
  import { AssetHistoryService } from "./AssetHistoryService";
6
6
  import { ApiAssetMigrateTenantResult } from "./types/AssetApi";
7
7
  import { AssetContent } from "./types/AssetContent";
8
- export declare class AssetService extends BaseService {
8
+ export declare class AssetService extends DigitalTwinService {
9
9
  private assetHistoryService;
10
10
  constructor(plugin: DeviceManagerPlugin, assetHistoryService: AssetHistoryService);
11
11
  registerAskEvents(): void;
@@ -1,7 +1,7 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { DeviceManagerPlugin } from "../plugin";
3
3
  import { AssetService } from "./AssetService";
4
- import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult } from "./types/AssetApi";
4
+ import { ApiAssetCreateResult, ApiAssetUpsertResult, ApiAssetDeleteResult, ApiAssetGetMeasuresResult, ApiAssetGetResult, ApiAssetSearchResult, ApiAssetUpdateResult, ApiAssetMigrateTenantResult, ApiAssetMetadataReplaceResult, ApiAssetGetLastMeasuresResult, ApiAssetMGetLastMeasuredAtResult, ApiAssetMGetLastMeasuresResult, ApiAssetGetLastMeasuredAtResult } from "./types/AssetApi";
5
5
  export declare class AssetsController {
6
6
  private plugin;
7
7
  private assetService;
@@ -17,7 +17,11 @@ export declare class AssetsController {
17
17
  delete(request: KuzzleRequest): Promise<ApiAssetDeleteResult>;
18
18
  search(request: KuzzleRequest): Promise<ApiAssetSearchResult>;
19
19
  getMeasures(request: KuzzleRequest): Promise<ApiAssetGetMeasuresResult>;
20
+ getLastMeasures(request: KuzzleRequest): Promise<ApiAssetGetLastMeasuresResult>;
21
+ mGetLastMeasures(request: KuzzleRequest): Promise<ApiAssetMGetLastMeasuresResult>;
20
22
  exportMeasures(request: KuzzleRequest): Promise<any>;
21
23
  export(request: KuzzleRequest): Promise<any>;
22
24
  migrateTenant(request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
25
+ getLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetGetLastMeasuredAtResult>;
26
+ mGetLastMeasuredAt(request: KuzzleRequest): Promise<ApiAssetMGetLastMeasuredAtResult>;
23
27
  }
@@ -9,8 +9,12 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
9
9
  actions: {
10
10
  get: true,
11
11
  getMeasures: true,
12
+ getLastMeasures: true,
13
+ mGetLastMeasures: true,
12
14
  exportMeasures: true,
13
15
  search: true,
16
+ getLastMeasuredAt: true,
17
+ mGetLastMeasuredAt: true,
14
18
  },
15
19
  },
16
20
  "device-manager/models": {
@@ -0,0 +1,8 @@
1
+ import { KuzzleRole } from "../../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to configurate an asset metadata.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ */
8
+ export declare const RoleAssetsConfiguration: KuzzleRole;
@@ -0,0 +1,8 @@
1
+ import { KuzzleRole } from "../../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to create, update and delete an asset.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ */
8
+ export declare const RoleAssetsCreation: KuzzleRole;
@@ -0,0 +1,2 @@
1
+ export * from "./RoleAssetsConfiguration";
2
+ export * from "./RoleAssetsCreation";
@@ -1,9 +1,10 @@
1
1
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
2
2
  import { MeasureContent } from "../../../modules/measure";
3
- import { Metadata } from "../../shared";
3
+ import { ApiDigitalTwinGetLastMeasuredAtRequest, ApiDigitalTwinGetLastMeasuredAtResult, ApiDigitalTwinGetLastMeasuresRequest, ApiDigitalTwinGetLastMeasuresResult, ApiDigitalTwinMGetLastMeasuredAtRequest, ApiDigitalTwinMGetLastMeasuredAtResult, ApiDigitalTwinMGetLastMeasuresRequest, ApiDigitalTwinMGetLastMeasuresResult, Metadata } from "../../shared";
4
4
  import { AssetContent } from "./AssetContent";
5
+ type AssetsControllerName = "device-manager/assets";
5
6
  interface AssetsControllerRequest {
6
- controller: "device-manager/assets";
7
+ controller: AssetsControllerName;
7
8
  engineId: string;
8
9
  }
9
10
  export interface ApiAssetGetRequest extends AssetsControllerRequest {
@@ -84,6 +85,10 @@ export type ApiAssetGetMeasuresResult = {
84
85
  measures: Array<KDocument<MeasureContent<JSONObject>>>;
85
86
  total: number;
86
87
  };
88
+ export type ApiAssetGetLastMeasuresRequest = ApiDigitalTwinGetLastMeasuresRequest<AssetsControllerName>;
89
+ export type ApiAssetGetLastMeasuresResult = ApiDigitalTwinGetLastMeasuresResult;
90
+ export type ApiAssetMGetLastMeasuresRequest = ApiDigitalTwinMGetLastMeasuresRequest<AssetsControllerName>;
91
+ export type ApiAssetMGetLastMeasuresResult = ApiDigitalTwinMGetLastMeasuresResult;
87
92
  /**
88
93
  * This action can be used only with WebSocket or POST
89
94
  *
@@ -128,4 +133,8 @@ export type ApiAssetMigrateTenantResult = {
128
133
  errors: string[];
129
134
  successes: string[];
130
135
  };
136
+ export type ApiAssetGetLastMeasuredAtRequest = ApiDigitalTwinGetLastMeasuredAtRequest<AssetsControllerName>;
137
+ export type ApiAssetGetLastMeasuredAtResult = ApiDigitalTwinGetLastMeasuredAtResult;
138
+ export type ApiAssetMGetLastMeasuredAtRequest = ApiDigitalTwinMGetLastMeasuredAtRequest<AssetsControllerName>;
139
+ export type ApiAssetMGetLastMeasuredAtResult = ApiDigitalTwinMGetLastMeasuredAtResult;
131
140
  export {};
@@ -2,11 +2,11 @@ import { KuzzleRequest } from "kuzzle";
2
2
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
3
3
  import { DecodedMeasurement } from "../measure";
4
4
  import { DeviceManagerPlugin } from "../plugin";
5
- import { BaseService, Metadata, SearchParams } from "../shared";
5
+ import { DigitalTwinService, Metadata, SearchParams } from "../shared";
6
6
  import { AssetContent } from "./../asset";
7
7
  import { ApiDeviceLinkAssetRequest } from "./types/DeviceApi";
8
8
  import { DeviceContent } from "./types/DeviceContent";
9
- export declare class DeviceService extends BaseService {
9
+ export declare class DeviceService extends DigitalTwinService {
10
10
  constructor(plugin: DeviceManagerPlugin);
11
11
  registerAskEvents(): void;
12
12
  /**
@@ -19,6 +19,10 @@ export declare class DeviceService extends BaseService {
19
19
  create(model: string, reference: string, metadata: JSONObject, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
20
20
  get(engineId: string, deviceId: string, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
21
21
  private getInternalDevices;
22
+ /**
23
+ * Replace a device metadata
24
+ */
25
+ replaceMetadata(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
22
26
  /**
23
27
  * Update or Create an device metadata
24
28
  */
@@ -1,7 +1,7 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { DeviceManagerPlugin } from "../plugin";
3
3
  import { DeviceService } from "./DeviceService";
4
- import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult, ApiDeviceUpsertResult } from "./types/DeviceApi";
4
+ import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult, ApiDeviceUpsertResult, ApiDeviceGetLastMeasuresResult, ApiDeviceMGetLastMeasuresResult, ApiDeviceGetLastMeasuredAtResult, ApiDeviceMGetLastMeasuredAtResult, ApiDeviceMetadataReplaceResult } from "./types/DeviceApi";
5
5
  export declare class DevicesController {
6
6
  private plugin;
7
7
  private deviceService;
@@ -11,6 +11,7 @@ export declare class DevicesController {
11
11
  constructor(plugin: DeviceManagerPlugin, deviceService: DeviceService);
12
12
  get(request: KuzzleRequest): Promise<ApiDeviceGetResult>;
13
13
  update(request: KuzzleRequest): Promise<ApiDeviceUpdateResult>;
14
+ replaceMetadata(request: KuzzleRequest): Promise<ApiDeviceMetadataReplaceResult>;
14
15
  delete(request: KuzzleRequest): Promise<ApiDeviceDeleteResult>;
15
16
  search(request: KuzzleRequest): Promise<ApiDeviceSearchResult>;
16
17
  upsert(request: KuzzleRequest): Promise<ApiDeviceUpsertResult>;
@@ -35,7 +36,11 @@ export declare class DevicesController {
35
36
  */
36
37
  unlinkAsset(request: KuzzleRequest): Promise<ApiDeviceUnlinkAssetResult>;
37
38
  getMeasures(request: KuzzleRequest): Promise<ApiDeviceGetMeasuresResult>;
39
+ getLastMeasures(request: KuzzleRequest): Promise<ApiDeviceGetLastMeasuresResult>;
40
+ mGetLastMeasures(request: KuzzleRequest): Promise<ApiDeviceMGetLastMeasuresResult>;
38
41
  exportMeasures(request: KuzzleRequest): Promise<any>;
39
42
  receiveMeasures(request: KuzzleRequest): Promise<void>;
40
43
  export(request: KuzzleRequest): Promise<any>;
44
+ getLastMeasuredAt(request: KuzzleRequest): Promise<ApiDeviceGetLastMeasuredAtResult>;
45
+ mGetLastMeasuredAt(request: KuzzleRequest): Promise<ApiDeviceMGetLastMeasuredAtResult>;
41
46
  }
@@ -10,7 +10,11 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
10
10
  get: true,
11
11
  search: true,
12
12
  getMeasures: true,
13
+ getLastMeasures: true,
14
+ mGetLastMeasures: true,
13
15
  exportMeasures: true,
16
+ getLastMeasuredAt: true,
17
+ mGetLastMeasuredAt: true,
14
18
  },
15
19
  },
16
20
  "device-manager/models": {
@@ -0,0 +1,8 @@
1
+ import { KuzzleRole } from "../../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to associate assets and devices.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ */
8
+ export declare const RoleDevicesAssetAssociation: KuzzleRole;
@@ -0,0 +1,8 @@
1
+ import { KuzzleRole } from "../../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to configure a device metadata.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ */
8
+ export declare const RoleDevicesConfiguration: KuzzleRole;
@@ -0,0 +1,8 @@
1
+ import { KuzzleRole } from "../../../shared/types/KuzzleRole";
2
+ /**
3
+ * This role allows to create, update and delete a device.
4
+ *
5
+ * It's a tenant role.
6
+ *
7
+ */
8
+ export declare const RoleDevicesCreation: KuzzleRole;
@@ -0,0 +1,3 @@
1
+ export * from "./RoleDevicesAssetAssociation";
2
+ export * from "./RoleDevicesConfiguration";
3
+ export * from "./RoleDevicesCreation";
@@ -1,10 +1,11 @@
1
1
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
2
2
  import { DecodedMeasurement, MeasureContent } from "../../measure";
3
3
  import { AssetContent } from "../../asset";
4
- import { Metadata } from "../../shared";
4
+ import { ApiDigitalTwinGetLastMeasuredAtRequest, ApiDigitalTwinGetLastMeasuredAtResult, ApiDigitalTwinGetLastMeasuresRequest, ApiDigitalTwinGetLastMeasuresResult, ApiDigitalTwinMGetLastMeasuredAtRequest, ApiDigitalTwinMGetLastMeasuredAtResult, ApiDigitalTwinMGetLastMeasuresRequest, ApiDigitalTwinMGetLastMeasuresResult, Metadata } from "../../shared";
5
5
  import { DeviceContent } from "./DeviceContent";
6
+ type DevicesControllerName = "device-manager/devices";
6
7
  interface DevicesControllerRequest {
7
- controller: "device-manager/devices";
8
+ controller: DevicesControllerName;
8
9
  engineId: string;
9
10
  }
10
11
  export interface ApiDeviceGetRequest extends DevicesControllerRequest {
@@ -21,6 +22,7 @@ export interface ApiDeviceUpdateRequest extends DevicesControllerRequest {
21
22
  };
22
23
  }
23
24
  export type ApiDeviceUpdateResult = KDocument<DeviceContent>;
25
+ export type ApiDeviceMetadataReplaceResult = KDocument<DeviceContent>;
24
26
  export interface ApiDeviceUpsertRequest extends DevicesControllerRequest {
25
27
  action: "upsert";
26
28
  _id: string;
@@ -142,6 +144,10 @@ export type ApiDeviceGetMeasuresResult = {
142
144
  measures: Array<KDocument<MeasureContent<JSONObject>>>;
143
145
  total: number;
144
146
  };
147
+ export type ApiDeviceGetLastMeasuresRequest = ApiDigitalTwinGetLastMeasuresRequest<DevicesControllerName>;
148
+ export type ApiDeviceGetLastMeasuresResult = ApiDigitalTwinGetLastMeasuresResult;
149
+ export type ApiDeviceMGetLastMeasuresRequest = ApiDigitalTwinMGetLastMeasuresRequest<DevicesControllerName>;
150
+ export type ApiDeviceMGetLastMeasuresResult = ApiDigitalTwinMGetLastMeasuresResult;
145
151
  /**
146
152
  * This action can be used only with WebSocket or POST
147
153
  *
@@ -188,4 +194,8 @@ export interface ApiDeviceExportRequest extends DevicesControllerRequest {
188
194
  export type ApiDeviceExportResult = {
189
195
  link: string;
190
196
  };
197
+ export type ApiDeviceGetLastMeasuredAtRequest = ApiDigitalTwinGetLastMeasuredAtRequest<DevicesControllerName>;
198
+ export type ApiDeviceGetLastMeasuredAtResult = ApiDigitalTwinGetLastMeasuredAtResult;
199
+ export type ApiDeviceMGetLastMeasuredAtRequest = ApiDigitalTwinMGetLastMeasuredAtRequest<DevicesControllerName>;
200
+ export type ApiDeviceMGetLastMeasuredAtResult = ApiDigitalTwinMGetLastMeasuredAtResult;
191
201
  export {};
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { KHit, User } from "kuzzle";
4
2
  import { UUID } from "node:crypto";
5
3
  import { AbstractExporter, Column, ExportParams } from "../shared";
@@ -1,7 +1,7 @@
1
1
  import { KuzzleRequest } from "kuzzle";
2
- import { JSONObject, KDocument } from "kuzzle-sdk";
2
+ import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
3
3
  import { DeviceManagerPlugin } from "../plugin";
4
- import { BaseService } from "../shared";
4
+ import { BaseService, SearchParams } from "../shared";
5
5
  import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
6
6
  import { MeasureValuesDetails } from "../measure";
7
7
  export declare class ModelService extends BaseService {
@@ -18,6 +18,9 @@ export declare class ModelService extends BaseService {
18
18
  listAsset(engineGroup: string): Promise<KDocument<AssetModelContent>[]>;
19
19
  listDevices(): Promise<KDocument<DeviceModelContent>[]>;
20
20
  listMeasures(): Promise<KDocument<MeasureModelContent>[]>;
21
+ searchAssets(engineGroup: string, searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<AssetModelContent>>>;
22
+ searchDevices(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<DeviceModelContent>>>;
23
+ searchMeasures(searchParams: Partial<SearchParams>): Promise<SearchResult<KHit<MeasureModelContent>>>;
21
24
  assetExists(model: string): Promise<boolean>;
22
25
  deviceExists(model: string): Promise<boolean>;
23
26
  getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
@@ -1,6 +1,6 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { ModelService } from "./ModelService";
3
- import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult } from "./types/ModelApi";
3
+ import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, ApiModelUpdateAssetResult, ApiModelDeleteAssetResult, ApiModelDeleteDeviceResult, ApiModelDeleteMeasureResult, ApiModelListAssetsResult, ApiModelListDevicesResult, ApiModelListMeasuresResult, ApiModelGetAssetResult, ApiModelGetDeviceResult, ApiModelGetMeasureResult, ApiModelSearchAssetsResult, ApiModelSearchDevicesResult, ApiModelSearchMeasuresResult } from "./types/ModelApi";
4
4
  export declare class ModelsController {
5
5
  private modelService;
6
6
  definition: ControllerDefinition;
@@ -17,5 +17,8 @@ export declare class ModelsController {
17
17
  listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
18
18
  listDevices(): Promise<ApiModelListDevicesResult>;
19
19
  listMeasures(): Promise<ApiModelListMeasuresResult>;
20
+ searchAssets(request: KuzzleRequest): Promise<ApiModelSearchAssetsResult>;
21
+ searchDevices(request: KuzzleRequest): Promise<ApiModelSearchDevicesResult>;
22
+ searchMeasures(request: KuzzleRequest): Promise<ApiModelSearchMeasuresResult>;
20
23
  updateAsset(request: KuzzleRequest): Promise<ApiModelUpdateAssetResult>;
21
24
  }
@@ -20,7 +20,7 @@ export declare class ModelsRegister {
20
20
  * @param measures - The measures associated with this asset model.
21
21
  * @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
22
22
  * @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
23
- * @param metadataDetails - Optional detailed metadata descriptions and localizations.
23
+ * @param metadataDetails - Optional detailed metadata descriptions, localizations and definition.
24
24
  * @param metadataGroups - Optional groups for organizing metadata, with localizations.
25
25
  * @param tooltipModels - Optional model list for tooltip, containing labels and tooltip content.
26
26
  * @throws PluginImplementationError if the model name is not in PascalCase.
@@ -33,7 +33,7 @@ export declare class ModelsRegister {
33
33
  * @param measures - The measures associated with this device model.
34
34
  * @param metadataMappings - The metadata mappings for the model, defaults to an empty object.
35
35
  * @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
36
- * @param metadataDetails - Optional detailed metadata descriptions and localizations.
36
+ * @param metadataDetails - Optional detailed metadata descriptions, localizations and definition.
37
37
  * @param metadataGroups - Optional groups for organizing metadata, with localizations.
38
38
  * @throws PluginImplementationError if the model name is not in PascalCase.
39
39
  */
@@ -1,4 +1,4 @@
1
- import { JSONObject, KDocument } from "kuzzle-sdk";
1
+ import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
2
2
  import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
3
3
  import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
4
4
  interface ModelsControllerRequest {
@@ -106,4 +106,29 @@ export type ApiModelListMeasuresResult = {
106
106
  models: KDocument<MeasureModelContent>[];
107
107
  total: number;
108
108
  };
109
+ export interface ApiModelSearchAssetsRequest extends ModelsControllerRequest {
110
+ action: "searchAssets";
111
+ engineGroup: string;
112
+ from?: number;
113
+ size?: number;
114
+ scrollTTL?: string;
115
+ body?: JSONObject;
116
+ }
117
+ export type ApiModelSearchAssetsResult = SearchResult<KHit<AssetModelContent>>;
118
+ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
119
+ action: "searchDevices";
120
+ from?: number;
121
+ size?: number;
122
+ scrollTTL?: string;
123
+ body?: JSONObject;
124
+ }
125
+ export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
126
+ export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
127
+ action: "searchMeasures";
128
+ from?: number;
129
+ size?: number;
130
+ scrollTTL?: string;
131
+ body?: JSONObject;
132
+ }
133
+ export type ApiModelSearchMeasuresResult = SearchResult<KHit<MeasureModelContent>>;
109
134
  export {};
@@ -7,12 +7,12 @@ export interface MeasureModelContent extends KDocumentContent {
7
7
  type: string;
8
8
  };
9
9
  }
10
- interface MetadataProperty {
10
+ export interface MetadataProperty {
11
11
  type: string;
12
12
  strategy?: string;
13
13
  format?: string;
14
14
  }
15
- interface MetadataObject {
15
+ export interface MetadataObject {
16
16
  properties: {
17
17
  [key: string]: MetadataProperty | MetadataObject;
18
18
  };
@@ -20,19 +20,62 @@ interface MetadataObject {
20
20
  export interface MetadataMappings {
21
21
  [key: string]: MetadataProperty | MetadataObject;
22
22
  }
23
- interface LocaleDetails {
23
+ export interface LocaleDetails {
24
24
  friendlyName: string;
25
25
  description: string;
26
26
  }
27
+ export interface BaseEditorHint {
28
+ readOnly?: boolean;
29
+ type: EditorHintEnum;
30
+ }
31
+ export declare enum EditorHintEnum {
32
+ BASE = "base",
33
+ OPTION_SELECTOR = "optionSelector",
34
+ DATETIME = "datetime"
35
+ }
36
+ /**
37
+ * Allows to display a list of values to choose in a dropdown, it has to be defined in the the editorHint property of the asset/device's metadataDetails.
38
+ */
39
+ export interface OptionsSelectorEditorHint extends BaseEditorHint {
40
+ type: EditorHintEnum.OPTION_SELECTOR;
41
+ /**
42
+ * A list that contains all the values displayed in the dropdown.
43
+ */
44
+ values: string[] | number[] | boolean[];
45
+ /**
46
+ * Allow the user to add custom values.
47
+ */
48
+ customValueAllowed?: boolean;
49
+ }
50
+ /**
51
+ * Allows to display either a date picker with or without a time picker, or a clock picker, it has to be defined in the editorHint property of the asset/device's metadataDetails.
52
+ */
53
+ export interface DatetimeEditorHint extends BaseEditorHint {
54
+ type: EditorHintEnum.DATETIME;
55
+ /**
56
+ * If true, displays a date picker, otherwise displays a clock picker.
57
+ */
58
+ date: boolean;
59
+ /**
60
+ * If `date` is true, setting this to true will add time picking to the date picker.
61
+ */
62
+ time?: boolean;
63
+ }
27
64
  export interface MetadataDetails {
28
65
  [key: string]: {
29
66
  group?: string;
30
67
  locales: {
31
68
  [locale: string]: LocaleDetails;
32
69
  };
70
+ /**
71
+ * To add new editor hint, create an interface with the properties that extends BaseEditorHint.
72
+ * Then add a new field in EditorHintEnum to define the type of your hint.
73
+ * Finally add the new editor hint interface with a pipe to take in account the new type.
74
+ */
75
+ editorHint?: BaseEditorHint | OptionsSelectorEditorHint | DatetimeEditorHint;
33
76
  };
34
77
  }
35
- interface MetadataGroupLocale {
78
+ export interface MetadataGroupLocale {
36
79
  groupFriendlyName: string;
37
80
  description: string;
38
81
  }
@@ -124,15 +167,23 @@ export interface AssetModelContent extends KDocumentContent {
124
167
  * "extTemp": {
125
168
  * "group": "buildingEnv",
126
169
  * "locales": {
127
- * "en": {
128
- * "friendlyName": "External temperature",
129
- * "description": "Building external temperature"
170
+ * "en": {
171
+ * "friendlyName": "External temperature",
172
+ * "description": "Building external temperature"
173
+ * },
174
+ * "fr": {
175
+ * "friendlyName": "Température extérieure",
176
+ * "description": "Température à l'exterieur du bâtiment"
177
+ * },
130
178
  * },
131
- * "fr": {
132
- * "friendlyName": "Température extérieure",
133
- * "description": "Température à l'exterieur du bâtiment"
179
+ * "editorHint": {
180
+ * "readOnly": true,
181
+ * "type": EditorHintEnum.OPTION_SELECTOR,
182
+ * "values": ["red", "blue"],
183
+ * "customValueAllowed": true,
134
184
  * },
135
- * }
185
+ * },
186
+ * }
136
187
  */
137
188
  metadataDetails?: MetadataDetails;
138
189
  /**
@@ -251,15 +302,24 @@ export interface DeviceModelContent extends KDocumentContent {
251
302
  * "sensorVersion": {
252
303
  * "group": "sensorSpecs",
253
304
  * "locales": {
254
- * "en": {
255
- * "friendlyName": "Sensor version",
256
- * "description": "Firmware version of the sensor"
305
+ * "en": {
306
+ * "friendlyName": "Sensor version",
307
+ * "description": "Firmware version of the sensor"
308
+ * },
309
+ * "fr": {
310
+ * "friendlyName": "Version du capteur",
311
+ * "description": "Version du micrologiciel du capteur"
312
+ * },
257
313
  * },
258
- * "fr": {
259
- * "friendlyName": "Version du capteur",
260
- * "description": "Version du micrologiciel du capteur"
314
+ * "editorHint": {
315
+ * "readOnly": false,
316
+ * "type": EditorHintEnum.DATETIME,
317
+ * "date": true,
318
+ * "time": true,
319
+ * "customTimeZoneAllowed": true,
261
320
  * },
262
- * }
321
+ * },
322
+ * }
263
323
  */
264
324
  metadataDetails?: MetadataDetails;
265
325
  /**
@@ -275,7 +335,7 @@ export interface DeviceModelContent extends KDocumentContent {
275
335
  * "fr": {
276
336
  * "groupFriendlyName": "Spécifications techniques",
277
337
  * "description": "Toutes les spécifications techniques"
278
- * }
338
+ * },
279
339
  * }
280
340
  * }
281
341
  * }
@@ -296,4 +356,3 @@ export interface DeviceModelContent extends KDocumentContent {
296
356
  };
297
357
  }
298
358
  export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent;
299
- export {};
@@ -30,8 +30,15 @@ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from
30
30
  * "friendlyName": "Température externe",
31
31
  * "description": "Température externe du conteneur"
32
32
  * }
33
- * }
34
- * }
33
+ * },
34
+ * "definition": {
35
+ * "readOnly": false,
36
+ * "type": MetadataDetailsEnum.DATETIME,
37
+ * "date": true,
38
+ * "time": true,
39
+ * "customTimeZoneAllowed": true,
40
+ * },
41
+ * },
35
42
  * },
36
43
  * metadataGroups: {
37
44
  * buildingEnv: {
@@ -141,8 +148,15 @@ export type AssetModelDefinition = {
141
148
  * friendlyName: "Type de traceur",
142
149
  * description: "Type du traceur"
143
150
  * }
144
- * }
145
- * }
151
+ * },
152
+ * definition: {
153
+ * readOnly: false,
154
+ * type: MetadataDetailsEnum.DATETIME,
155
+ * date: true,
156
+ * time: true,
157
+ * customTimeZoneAllowed: true,
158
+ * },
159
+ * },
146
160
  * },
147
161
  * metadataGroups: {
148
162
  * sensorSpecs: {
@@ -27,7 +27,7 @@ export declare class DeviceManagerPlugin extends Plugin {
27
27
  * - measures: Array describing measure names and their types.
28
28
  * - metadataMappings: Definition of metadata mappings, specifying types for each metadata field.
29
29
  * - defaultMetadata: Default values for metadata fields, applied when actual data is not provided.
30
- * - metadataDetails: Optional detailed descriptions for each metadata, including group association and localizations.
30
+ * - metadataDetails: Optional detailed descriptions for each metadata, including localizations, group association and definition.
31
31
  * - metadataGroups: Optional description of metadata groups, organizing metadata logically, with localizations for group names.
32
32
  * - tooltipModels: Optional tooltip model list, containing each labels and tooltip content to display.
33
33
  *
@@ -130,7 +130,7 @@ export declare class DeviceManagerPlugin extends Plugin {
130
130
  * - decoder: Decoder used to decode payloads
131
131
  * - metadataMappings: Metadata mappings definition
132
132
  * - defaultMetadata: Default metadata values
133
- * - metadataDetails: Detailed metadata descriptions and localizations
133
+ * - metadataDetails: Localizations, detailed metadata descriptions and definition
134
134
  * - metadataGroups: Groups for organizing metadata, with localizations
135
135
  *
136
136
  * @example
@@ -1,3 +1,5 @@
1
1
  export * from "./types/DigitalTwinContent";
2
+ export * from "./types/DigitalTwinEvents";
3
+ export * from "./types/DigitalTwinMeasures";
2
4
  export * from "./types/Metadata";
3
5
  export * from "./types/EmbeddedMeasure";
@@ -1,6 +1,9 @@
1
1
  export * from "./Module";
2
2
  export * from "./services";
3
+ export * from "./types/DigitalTwinApi";
3
4
  export * from "./types/DigitalTwinContent";
5
+ export * from "./types/DigitalTwinEvents";
6
+ export * from "./types/DigitalTwinMeasures";
4
7
  export * from "./types/EmbeddedMeasure";
5
8
  export * from "./types/KuzzleRole";
6
9
  export * from "./types/Metadata";
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { UUID } from "node:crypto";
4
2
  import { PassThrough, Readable } from "node:stream";
5
3
  import { JSONObject, KDocumentContentGeneric, KHit, SearchResult, User } from "kuzzle";
@@ -1,5 +1,3 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
1
  import { UUID } from "node:crypto";
4
2
  import { AbstractExporter } from "./AbstractExporter";
5
3
  export declare class DigitalTwinExporter extends AbstractExporter {
@@ -0,0 +1,21 @@
1
+ import { MeasureContent } from "../../measure";
2
+ import { DeviceManagerPlugin, InternalCollection } from "../../plugin";
3
+ import { ApiDigitalTwinMGetLastMeasuredAtResult } from "../types/DigitalTwinApi";
4
+ import { BaseService } from "./BaseService";
5
+ export declare class DigitalTwinService extends BaseService {
6
+ private targetCollection;
7
+ private readonly digitalTwinType;
8
+ constructor(plugin: DeviceManagerPlugin, targetCollection: InternalCollection);
9
+ protected registerAskEvents(): void;
10
+ /**
11
+ * Gets the last measures of a digital twin
12
+ */
13
+ getLastMeasures(engineId: string, digitalTwinId: string, measureCount?: number): Promise<MeasureContent[]>;
14
+ /**
15
+ * Gets the last measures of multiple digital twins
16
+ */
17
+ mGetLastMeasures(engineId: string, digitalTwinIds: string[], measureCount?: number): Promise<Record<string, MeasureContent[]>>;
18
+ getLastMeasuredAt(engineId: string, digitalTwinId: string): Promise<number>;
19
+ mGetLastMeasuredAt(engineId: string, digitalTwinIds: string[]): Promise<ApiDigitalTwinMGetLastMeasuredAtResult>;
20
+ private getAggregationQueryParameters;
21
+ }
@@ -1,3 +1,4 @@
1
1
  export * from "./AbstractExporter";
2
2
  export * from "./BaseService";
3
3
  export * from "./DigitalTwinExporter";
4
+ export * from "./DigitalTwinService";
@@ -0,0 +1,34 @@
1
+ import { DigitalTwinMeasures } from "./DigitalTwinMeasures";
2
+ interface DigitalTwinControllerRequest<ControllerName extends string> {
3
+ controller: ControllerName;
4
+ engineId: string;
5
+ }
6
+ export interface ApiDigitalTwinGetLastMeasuresRequest<ControllerName extends string> extends DigitalTwinControllerRequest<ControllerName> {
7
+ action: "getLastMeasures";
8
+ _id: string;
9
+ measureCount?: number;
10
+ }
11
+ export type ApiDigitalTwinGetLastMeasuresResult = DigitalTwinMeasures;
12
+ export interface ApiDigitalTwinMGetLastMeasuresRequest<ControllerName extends string> extends DigitalTwinControllerRequest<ControllerName> {
13
+ action: "mGetLastMeasures";
14
+ measureCount?: number;
15
+ body: {
16
+ ids: string[];
17
+ };
18
+ }
19
+ export type ApiDigitalTwinMGetLastMeasuresResult = Record<string, DigitalTwinMeasures>;
20
+ export interface ApiDigitalTwinGetLastMeasuredAtRequest<ControllerName extends string> extends DigitalTwinControllerRequest<ControllerName> {
21
+ action: "getLastMeasuredAt";
22
+ _id: string;
23
+ }
24
+ export type ApiDigitalTwinGetLastMeasuredAtResult = {
25
+ lastMeasuredAt: number;
26
+ };
27
+ export interface ApiDigitalTwinMGetLastMeasuredAtRequest<ControllerName extends string> extends DigitalTwinControllerRequest<ControllerName> {
28
+ action: "mGetLastMeasuredAt";
29
+ body: {
30
+ ids: string[];
31
+ };
32
+ }
33
+ export type ApiDigitalTwinMGetLastMeasuredAtResult = Record<string, number>;
34
+ export {};
@@ -1,12 +1,10 @@
1
1
  import { JSONObject, KDocumentContent } from "kuzzle-sdk";
2
- import { EmbeddedMeasure } from "./EmbeddedMeasure";
3
2
  import { Metadata } from "./Metadata";
3
+ import { DigitalTwinMeasures } from "./DigitalTwinMeasures";
4
4
  export interface DigitalTwinContent<TMeasures extends JSONObject = JSONObject, TMetadata extends Metadata = Metadata> extends KDocumentContent {
5
5
  model: string;
6
6
  reference: string;
7
7
  metadata: TMetadata;
8
- measures: {
9
- [Property in keyof TMeasures]: EmbeddedMeasure<TMeasures[Property]> | null;
10
- };
8
+ measures: DigitalTwinMeasures<TMeasures>;
11
9
  lastMeasuredAt: number;
12
10
  }
@@ -0,0 +1,9 @@
1
+ import { MeasureContent } from "../../measure";
2
+ export type AskDigitalTwinLastMeasuresGet = {
3
+ name: "ask:device-manager:asset:get-last-measures" | "ask:device-manager:device:get-last-measures";
4
+ payload: {
5
+ engineId: string;
6
+ digitalTwinId: string;
7
+ };
8
+ result: MeasureContent[];
9
+ };
@@ -0,0 +1,5 @@
1
+ import { JSONObject } from "kuzzle-sdk";
2
+ import { EmbeddedMeasure } from "./EmbeddedMeasure";
3
+ export type DigitalTwinMeasures<TMeasures extends JSONObject = JSONObject> = {
4
+ [Property in keyof TMeasures]: EmbeddedMeasure<TMeasures[Property]> | null;
5
+ };
@@ -6,6 +6,9 @@ export interface ContainerMetadata extends Metadata {
6
6
  weight: number;
7
7
  capacity: number;
8
8
  };
9
+ person: {
10
+ company: string;
11
+ };
9
12
  }
10
13
  export type ContainerMeasurements = {
11
14
  temperatureExt: TemperatureMeasurement;
@@ -0,0 +1,2 @@
1
+ import { AssetModelDefinition } from "../../../index";
2
+ export declare const roomAssetDefinition: AssetModelDefinition;
@@ -0,0 +1,2 @@
1
+ import { AssetModelDefinition } from "../../../index";
2
+ export declare const streetLampAssetDefinition: AssetModelDefinition;
@@ -0,0 +1,2 @@
1
+ import { MeasureDefinition } from "lib/modules/measure";
2
+ export declare const brightnessMeasureDefinition: MeasureDefinition;
@@ -0,0 +1,2 @@
1
+ import { MeasureDefinition } from "lib/modules/measure";
2
+ export declare const co2MeasureDefinition: MeasureDefinition;
@@ -0,0 +1,2 @@
1
+ import { MeasureDefinition } from "lib/modules/measure";
2
+ export declare const illuminanceMeasureDefinition: MeasureDefinition;
@@ -0,0 +1,2 @@
1
+ import { MeasureDefinition } from "lib/modules/measure";
2
+ export declare const powerConsumptionMeasureDefinition: MeasureDefinition;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kuzzle-device-manager-types",
3
- "version": "2.4.0-elasticsearch-8.1",
3
+ "version": "2.4.1-dev.1",
4
4
  "description": "Shared types for Kuzzle Device Manager",
5
5
  "author": "The Kuzzle Team (support@kuzzle.io)",
6
6
  "main": "index.js",