kuzzle-device-manager-types 2.4.0-beta.18 → 2.4.0-beta.19

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.
@@ -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
+ * Update or Create an device metadata
24
+ */
25
+ upsert(engineId: string, model: string, reference: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
22
26
  update(engineId: string, deviceId: string, metadata: Metadata, request: KuzzleRequest): Promise<KDocument<DeviceContent>>;
23
27
  delete(engineId: string, deviceId: string, request: KuzzleRequest): Promise<void>;
24
28
  search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<DeviceContent>>>;
@@ -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 } from "./types/DeviceApi";
4
+ import { ApiDeviceAttachEngineResult, ApiDeviceCreateResult, ApiDeviceDeleteResult, ApiDeviceDetachEngineResult, ApiDeviceGetResult, ApiDeviceLinkAssetResult, ApiDeviceSearchResult, ApiDeviceUnlinkAssetResult, ApiDeviceUpdateResult, ApiDeviceGetMeasuresResult, ApiDeviceUpsertResult } from "./types/DeviceApi";
5
5
  export declare class DevicesController {
6
6
  private plugin;
7
7
  private deviceService;
@@ -13,6 +13,7 @@ export declare class DevicesController {
13
13
  update(request: KuzzleRequest): Promise<ApiDeviceUpdateResult>;
14
14
  delete(request: KuzzleRequest): Promise<ApiDeviceDeleteResult>;
15
15
  search(request: KuzzleRequest): Promise<ApiDeviceSearchResult>;
16
+ upsert(request: KuzzleRequest): Promise<ApiDeviceUpsertResult>;
16
17
  /**
17
18
  * Create and provision a new device
18
19
  */
@@ -21,6 +21,17 @@ export interface ApiDeviceUpdateRequest extends DevicesControllerRequest {
21
21
  };
22
22
  }
23
23
  export type ApiDeviceUpdateResult = KDocument<DeviceContent>;
24
+ export interface ApiDeviceUpsertRequest extends DevicesControllerRequest {
25
+ action: "upsert";
26
+ _id: string;
27
+ refresh?: string;
28
+ body: {
29
+ model: string;
30
+ reference: string;
31
+ metadata: Metadata;
32
+ };
33
+ }
34
+ export type ApiDeviceUpsertResult = KDocument<DeviceContent>;
24
35
  export interface ApiDeviceCreateRequest extends DevicesControllerRequest {
25
36
  action: "create";
26
37
  refresh?: string;
@@ -63,6 +63,9 @@ export declare const measuresMappings: {
63
63
  measureName: {
64
64
  type: string;
65
65
  };
66
+ deviceMetadata: {
67
+ properties: {};
68
+ };
66
69
  payloadUuids: {
67
70
  type: string;
68
71
  };
@@ -10,6 +10,10 @@ export type MeasureOriginDevice = {
10
10
  * Name of the measure in the device
11
11
  */
12
12
  measureName: string;
13
+ /**
14
+ * Origin device metadata
15
+ */
16
+ deviceMetadata?: Metadata;
13
17
  /**
14
18
  * Payload uuids that were used to create this measure.
15
19
  */
@@ -1,13 +1,14 @@
1
+ import { KuzzleRequest } from "kuzzle";
1
2
  import { JSONObject, KDocument } from "kuzzle-sdk";
2
3
  import { DeviceManagerPlugin } from "../plugin";
3
4
  import { BaseService } from "../shared";
4
- import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings } from "./types/ModelContent";
5
+ import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
5
6
  import { MeasureValuesDetails } from "../measure";
6
7
  export declare class ModelService extends BaseService {
7
8
  constructor(plugin: DeviceManagerPlugin);
8
9
  registerAskEvents(): void;
9
10
  private checkModelsConflicts;
10
- writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"]): Promise<KDocument<AssetModelContent>>;
11
+ writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels): Promise<KDocument<AssetModelContent>>;
11
12
  private checkDefaultValues;
12
13
  writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: DeviceModelContent["device"]["measures"]): Promise<KDocument<DeviceModelContent>>;
13
14
  writeMeasure(type: string, valuesMappings: JSONObject, valuesDetails?: MeasureValuesDetails): Promise<KDocument<MeasureModelContent>>;
@@ -22,4 +23,8 @@ export declare class ModelService extends BaseService {
22
23
  getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
23
24
  getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
24
25
  getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
26
+ /**
27
+ * Update an asset model
28
+ */
29
+ updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
25
30
  }
@@ -1,6 +1,6 @@
1
1
  import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
2
  import { ModelService } from "./ModelService";
3
- import { ApiModelWriteAssetResult, ApiModelWriteDeviceResult, ApiModelWriteMeasureResult, 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 } from "./types/ModelApi";
4
4
  export declare class ModelsController {
5
5
  private modelService;
6
6
  definition: ControllerDefinition;
@@ -17,4 +17,5 @@ export declare class ModelsController {
17
17
  listAssets(request: KuzzleRequest): Promise<ApiModelListAssetsResult>;
18
18
  listDevices(): Promise<ApiModelListDevicesResult>;
19
19
  listMeasures(): Promise<ApiModelListMeasuresResult>;
20
+ updateAsset(request: KuzzleRequest): Promise<ApiModelUpdateAssetResult>;
20
21
  }
@@ -1,7 +1,7 @@
1
1
  import { DeviceManagerPlugin } from "../plugin";
2
2
  import { NamedMeasures } from "../decoder";
3
3
  import { MeasureDefinition } from "../measure";
4
- import { MetadataDetails, MetadataGroups, MetadataMappings } from "./types/ModelContent";
4
+ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
5
5
  import { JSONObject } from "kuzzle-sdk";
6
6
  export declare class ModelsRegister {
7
7
  private config;
@@ -22,9 +22,10 @@ export declare class ModelsRegister {
22
22
  * @param defaultMetadata - The default metadata values for the model, defaults to an empty object.
23
23
  * @param metadataDetails - Optional detailed metadata descriptions and localizations.
24
24
  * @param metadataGroups - Optional groups for organizing metadata, with localizations.
25
+ * @param tooltipModels - Optional model list for tooltip, containing labels and tooltip content.
25
26
  * @throws PluginImplementationError if the model name is not in PascalCase.
26
27
  */
27
- registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups): void;
28
+ registerAsset(engineGroup: string, model: string, measures: NamedMeasures, metadataMappings?: MetadataMappings, defaultMetadata?: JSONObject, metadataDetails?: MetadataDetails, metadataGroups?: MetadataGroups, tooltipModels?: TooltipModels): void;
28
29
  /**
29
30
  * Registers a device model.
30
31
  *
@@ -1,5 +1,5 @@
1
1
  import { JSONObject, KDocument } from "kuzzle-sdk";
2
- import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings } from "./ModelContent";
2
+ import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
3
3
  import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
4
4
  interface ModelsControllerRequest {
5
5
  controller: "device-manager/models";
@@ -30,6 +30,7 @@ export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
30
30
  metadataMappings?: MetadataMappings;
31
31
  defaultValues?: JSONObject;
32
32
  measures?: AssetModelContent["asset"]["measures"];
33
+ tooltipModels?: TooltipModels;
33
34
  };
34
35
  }
35
36
  export type ApiModelWriteAssetResult = KDocument<AssetModelContent>;
@@ -54,6 +55,20 @@ export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
54
55
  };
55
56
  }
56
57
  export type ApiModelWriteMeasureResult = KDocument<MeasureModelContent>;
58
+ export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
59
+ action: "updateAsset";
60
+ engineGroup: string;
61
+ model: string;
62
+ body: {
63
+ metadataDetails?: MetadataDetails;
64
+ metadataGroups?: MetadataGroups;
65
+ metadataMappings?: MetadataMappings;
66
+ defaultValues?: JSONObject;
67
+ measures?: AssetModelContent["asset"]["measures"];
68
+ tooltipModels?: TooltipModels;
69
+ };
70
+ }
71
+ export type ApiModelUpdateAssetResult = KDocument<AssetModelContent>;
57
72
  export interface ApiModelDeleteAssetRequest extends ModelsControllerRequest {
58
73
  action: "deleteAsset";
59
74
  _id: string;
@@ -43,6 +43,50 @@ export interface MetadataGroups {
43
43
  };
44
44
  };
45
45
  }
46
+ export interface MetadataTooltipContent {
47
+ category: "metadata";
48
+ label?: {
49
+ locales: {
50
+ [locale: string]: LocaleDetails;
51
+ };
52
+ };
53
+ metadataPath: string;
54
+ suffix?: string;
55
+ }
56
+ export interface MeasureTooltipContent {
57
+ category: "measure";
58
+ label?: {
59
+ locales: {
60
+ [locale: string]: LocaleDetails;
61
+ };
62
+ };
63
+ measureSlot: string;
64
+ measureValuePath: string;
65
+ suffix?: string;
66
+ }
67
+ export interface StaticTooltipContent {
68
+ category: "static";
69
+ label?: {
70
+ locales: {
71
+ [locale: string]: LocaleDetails;
72
+ };
73
+ };
74
+ type: StaticTooltipContentType;
75
+ value: string;
76
+ }
77
+ export declare enum StaticTooltipContentType {
78
+ link = "link",
79
+ image = "image",
80
+ text = "text",
81
+ title = "title",
82
+ separator = "separator"
83
+ }
84
+ export interface TooltipModels {
85
+ [key: string]: {
86
+ tooltipLabel: string;
87
+ content: (MetadataTooltipContent | MeasureTooltipContent | StaticTooltipContent)[];
88
+ };
89
+ }
46
90
  export interface AssetModelContent extends KDocumentContent {
47
91
  type: "asset";
48
92
  engineGroup: string;
@@ -122,6 +166,53 @@ export interface AssetModelContent extends KDocumentContent {
122
166
  * ]
123
167
  */
124
168
  measures: NamedMeasures;
169
+ /**
170
+ * List of tooltip models for this asset model
171
+ *
172
+ * @example
173
+ * [
174
+ * "defaultTooltipKey": {
175
+ * "tooltipLabel": "Default tooltip model",
176
+ * "content": [
177
+ * {
178
+ * "metadataPath": "geolocation",
179
+ * "label": {
180
+ * "locales": {
181
+ * "en": {
182
+ * "description": "",
183
+ * "friendlyName": "Container position"
184
+ * },
185
+ * "fr": {
186
+ * "description": "",
187
+ * "friendlyName": "Position du conteneur"
188
+ * }
189
+ * }
190
+ * },
191
+ * "category": "metadata"
192
+ * },
193
+ * {
194
+ * "measureValuePath": "externalTemperature",
195
+ * "measureSlot": "externalTemperature",
196
+ * "label": {
197
+ * "locales": {
198
+ * "en": {
199
+ * "description": "",
200
+ * "friendlyName": "External temperature"
201
+ * },
202
+ * "fr": {
203
+ * "description": "",
204
+ * "friendlyName": "Température extérieure"
205
+ * }
206
+ * }
207
+ * },
208
+ * "category": "measure",
209
+ * "suffix": "°C"
210
+ * }
211
+ * ]
212
+ * }
213
+ * ]
214
+ */
215
+ tooltipModels?: TooltipModels;
125
216
  };
126
217
  }
127
218
  export interface DeviceModelContent extends KDocumentContent {
@@ -1,6 +1,6 @@
1
1
  import { JSONObject } from "kuzzle-sdk";
2
2
  import { Decoder, NamedMeasures } from "../../../modules/decoder";
3
- import { MetadataDetails, MetadataGroups, MetadataMappings } from "./ModelContent";
3
+ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
4
4
  /**
5
5
  * Define an asset model
6
6
  *
@@ -36,16 +36,57 @@ import { MetadataDetails, MetadataGroups, MetadataMappings } from "./ModelConten
36
36
  * metadataGroups: {
37
37
  * buildingEnv: {
38
38
  * locales: {
39
- * en: {
40
- * groupFriendlyName: "Building environment",
41
- * description: "The building environment"
42
- * },
43
- * fr: {
44
- * groupFriendlyName: "Environnement du bâtiment",
45
- * description: "L'environnement du bâtiment"
46
- * }
39
+ * en: {
40
+ * groupFriendlyName: "Building environment",
41
+ * description: "The building environment"
42
+ * },
43
+ * fr: {
44
+ * groupFriendlyName: "Environnement du bâtiment",
45
+ * description: "L'environnement du bâtiment"
46
+ * }
47
47
  * }
48
48
  * }
49
+ * },
50
+ * tooltipModels: {
51
+ * "defaultTooltipKey": {
52
+ * "tooltipLabel": "Default Tooltip Model",
53
+ * "content": [
54
+ * {
55
+ * "category": "metadata",
56
+ * "label": {
57
+ * "locales": {
58
+ * "en": {
59
+ * "friendlyName": "Container position",
60
+ * "description": ""
61
+ * },
62
+ * "fr": {
63
+ * "friendlyName": "Position du conteneur",
64
+ * "description": ""
65
+ * }
66
+ * }
67
+ * },
68
+ * "metadataPath": "geolocation"
69
+ * },
70
+ * {
71
+ * "category": "measure",
72
+ * "label": {
73
+ * "locales": {
74
+ * "en": {
75
+ * "friendlyName": "External temperature",
76
+ * "description": ""
77
+ * },
78
+ * "fr": {
79
+ * "friendlyName": "Température extérieure",
80
+ * "description": ""
81
+ * }
82
+ * }
83
+ * },
84
+ * "measureSlot": "externalTemperature",
85
+ * "measureValuePath": "externalTemperature",
86
+ * "suffix": "°C"
87
+ * }
88
+ * ]
89
+ * }
49
90
  * }
50
91
  * }
51
92
  *
@@ -71,6 +112,10 @@ export type AssetModelDefinition = {
71
112
  * Metadata groups
72
113
  */
73
114
  metadataGroups?: MetadataGroups;
115
+ /**
116
+ * Tooltip models
117
+ */
118
+ tooltipModels?: TooltipModels;
74
119
  };
75
120
  /**
76
121
  * Define a device model
@@ -29,6 +29,7 @@ export declare class DeviceManagerPlugin extends Plugin {
29
29
  * - defaultMetadata: Default values for metadata fields, applied when actual data is not provided.
30
30
  * - metadataDetails: Optional detailed descriptions for each metadata, including group association and localizations.
31
31
  * - metadataGroups: Optional description of metadata groups, organizing metadata logically, with localizations for group names.
32
+ * - tooltipModels: Optional tooltip model list, containing each labels and tooltip content to display.
32
33
  *
33
34
  * @example
34
35
  * ```
@@ -74,6 +75,47 @@ export declare class DeviceManagerPlugin extends Plugin {
74
75
  * }
75
76
  * }
76
77
  * }
78
+ * },
79
+ * tooltipModels: {
80
+ * "defaultTooltipKey": {
81
+ * "tooltipLabel": "Default Tooltip Model",
82
+ * "content": [
83
+ * {
84
+ * "category": "metadata",
85
+ * "label": {
86
+ * "locales": {
87
+ * "en": {
88
+ * "friendlyName": "Container position",
89
+ * "description": ""
90
+ * },
91
+ * "fr": {
92
+ * "friendlyName": "Position du conteneur",
93
+ * "description": ""
94
+ * }
95
+ * }
96
+ * },
97
+ * "metadataPath": "geolocation"
98
+ * },
99
+ * {
100
+ * "category": "measure",
101
+ * "label": {
102
+ * "locales": {
103
+ * "en": {
104
+ * "friendlyName": "External temperature",
105
+ * "description": ""
106
+ * },
107
+ * "fr": {
108
+ * "friendlyName": "Température extérieure",
109
+ * "description": ""
110
+ * }
111
+ * }
112
+ * },
113
+ * "measureSlot": "externalTemperature",
114
+ * "measureValuePath": "externalTemperature",
115
+ * "suffix": "°C"
116
+ * }
117
+ * ]
118
+ * }
77
119
  * }
78
120
  * }
79
121
  * );
@@ -26,32 +26,46 @@ export type DeviceManagerConfiguration = {
26
26
  config: {
27
27
  name: string;
28
28
  mappings: JSONObject;
29
- settings: JSONObject;
29
+ settings?: JSONObject;
30
30
  };
31
31
  devices: {
32
32
  name: string;
33
33
  mappings: JSONObject;
34
- settings: JSONObject;
34
+ settings?: JSONObject;
35
35
  };
36
36
  payloads: {
37
37
  name: string;
38
38
  mappings: JSONObject;
39
- settings: JSONObject;
39
+ settings?: JSONObject;
40
40
  };
41
41
  };
42
42
  engineCollections: {
43
43
  config: {
44
44
  name: string;
45
45
  mappings: JSONObject;
46
- settings: JSONObject;
46
+ settings?: JSONObject;
47
47
  };
48
48
  asset: {
49
49
  name: string;
50
50
  mappings: CollectionMappings;
51
+ settings?: JSONObject;
52
+ };
53
+ assetGroups: {
54
+ name: string;
55
+ settings?: JSONObject;
56
+ };
57
+ assetHistory: {
58
+ name: string;
59
+ settings?: JSONObject;
51
60
  };
52
61
  device: {
53
62
  name: string;
54
63
  mappings: CollectionMappings;
64
+ settings?: JSONObject;
65
+ };
66
+ measures: {
67
+ name: string;
68
+ settings?: JSONObject;
55
69
  };
56
70
  };
57
71
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kuzzle-device-manager-types",
3
- "version": "2.4.0-beta.18",
3
+ "version": "2.4.0-beta.19",
4
4
  "description": "Shared types for Kuzzle Device Manager",
5
5
  "author": "The Kuzzle Team (support@kuzzle.io)",
6
6
  "main": "index.js",