kuzzle-device-manager-types 3.0.0-next.2 → 3.0.0-next.21

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 (111) hide show
  1. package/dist/bin/migration/migration_platform_index.d.ts +2 -0
  2. package/dist/bin/migration/migration_tenant_index.d.ts +2 -0
  3. package/dist/bin/migration/utils.d.ts +18 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/lib/modules/asset/AssetModule.d.ts +0 -1
  6. package/dist/lib/modules/asset/AssetService.d.ts +14 -4
  7. package/dist/lib/modules/asset/AssetsController.d.ts +31 -7
  8. package/dist/lib/modules/asset/exports.d.ts +0 -4
  9. package/dist/lib/modules/asset/index.d.ts +1 -3
  10. package/dist/lib/modules/asset/types/AssetApi.d.ts +127 -6
  11. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -11
  12. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  13. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  14. package/dist/lib/modules/decoder/DecodersController.d.ts +6 -0
  15. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  16. package/dist/lib/modules/decoder/types/DecoderApi.d.ts +0 -1
  17. package/dist/lib/modules/device/DeviceService.d.ts +14 -40
  18. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  19. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  20. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  21. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -42
  22. package/dist/lib/modules/device/types/DeviceContent.d.ts +55 -4
  23. package/dist/lib/modules/device/types/DeviceEvents.d.ts +0 -23
  24. package/dist/lib/modules/group/GroupsController.d.ts +35 -0
  25. package/dist/lib/modules/group/GroupsModule.d.ts +6 -0
  26. package/dist/lib/modules/group/GroupsService.d.ts +116 -0
  27. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  28. package/dist/lib/modules/group/exports.d.ts +5 -0
  29. package/dist/lib/modules/group/index.d.ts +4 -0
  30. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  31. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  32. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  33. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  34. package/dist/lib/modules/measure/MeasureExporter.d.ts +2 -0
  35. package/dist/lib/modules/measure/MeasureService.d.ts +11 -38
  36. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  37. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -83
  38. package/dist/lib/modules/measure/exports.d.ts +0 -1
  39. package/dist/lib/modules/measure/index.d.ts +0 -1
  40. package/dist/lib/modules/measure/types/MeasureContent.d.ts +7 -0
  41. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +4 -0
  42. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +5 -148
  43. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  44. package/dist/lib/modules/model/ModelService.d.ts +16 -4
  45. package/dist/lib/modules/model/ModelsConflicts.d.ts +9 -1
  46. package/dist/lib/modules/model/ModelsController.d.ts +6 -1
  47. package/dist/lib/modules/model/ModelsRegister.d.ts +19 -2
  48. package/dist/lib/modules/model/types/ModelApi.d.ts +50 -1
  49. package/dist/lib/modules/model/types/ModelContent.d.ts +157 -2
  50. package/dist/lib/modules/model/types/ModelDefinition.d.ts +110 -2
  51. package/dist/lib/modules/model/types/ModelEvents.d.ts +8 -1
  52. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +32 -6
  53. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +60 -5
  54. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -7
  55. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  56. package/dist/lib/modules/plugin/types/exports.d.ts +2 -0
  57. package/dist/lib/modules/shared/errors/index.d.ts +1 -0
  58. package/dist/lib/modules/shared/exports.d.ts +1 -5
  59. package/dist/lib/modules/shared/index.d.ts +3 -11
  60. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +2 -0
  61. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +2 -0
  62. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +71 -1
  63. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +6 -5
  64. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  65. package/dist/lib/modules/shared/types/Models.d.ts +18 -0
  66. package/dist/lib/modules/shared/types/exports.d.ts +6 -0
  67. package/dist/lib/modules/shared/types/index.d.ts +9 -0
  68. package/dist/lib/modules/shared/utils/index.d.ts +5 -0
  69. package/dist/tests/application/assets/Container.d.ts +7 -4
  70. package/dist/tests/application/assets/MagicHouse.d.ts +2 -2
  71. package/dist/tests/application/assets/Room.d.ts +2 -2
  72. package/dist/tests/application/assets/StreetLamp.d.ts +2 -2
  73. package/dist/tests/application/assets/Warehouse.d.ts +2 -2
  74. package/dist/tests/application/assets/index.d.ts +1 -0
  75. package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
  76. package/dist/tests/application/devices/DummyTemp.d.ts +2 -0
  77. package/dist/tests/application/devices/DummyTempPosition.d.ts +2 -0
  78. package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
  79. package/dist/tests/application/devices/index.d.ts +3 -0
  80. package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
  81. package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
  82. package/dist/tests/application/groups/Parking.d.ts +14 -0
  83. package/dist/tests/application/groups/index.d.ts +3 -0
  84. package/dist/tests/application/measures/{AccelerationMeasure.d.ts → Acceleration.d.ts} +2 -2
  85. package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
  86. package/dist/tests/application/measures/Brightness.d.ts +2 -0
  87. package/dist/tests/application/measures/CO2.d.ts +2 -0
  88. package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
  89. package/dist/tests/application/measures/Illuminance.d.ts +2 -0
  90. package/dist/tests/application/measures/Magicule.d.ts +2 -2
  91. package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
  92. package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
  93. package/dist/tests/application/measures/PowerConsumption.d.ts +2 -0
  94. package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
  95. package/dist/tests/application/measures/index.d.ts +11 -0
  96. package/dist/tests/application/models.d.ts +2 -0
  97. package/package.json +2 -2
  98. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -20
  99. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  100. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -8
  101. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  102. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  103. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  104. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  105. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  106. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  107. package/dist/tests/application/decoders/index.d.ts +0 -2
  108. package/dist/tests/application/measures/BrightnessMeasure.d.ts +0 -2
  109. package/dist/tests/application/measures/CO2Measure.d.ts +0 -2
  110. package/dist/tests/application/measures/IlluminanceMeasure.d.ts +0 -2
  111. package/dist/tests/application/measures/PowerConsumptionMeasure.d.ts +0 -2
@@ -1,5 +1,5 @@
1
1
  import { JSONObject, KDocument, KHit, SearchResult } from "kuzzle-sdk";
2
- import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
2
+ import { AssetModelContent, DeviceModelContent, GroupAffinity, GroupModelContent, LocaleDetails, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
3
3
  import { SchemaObject } from "ajv";
4
4
  import { MeasureValuesDetails } from "../../measure/types/MeasureDefinition";
5
5
  interface ModelsControllerRequest {
@@ -16,6 +16,11 @@ export interface ApiModelGetDeviceRequest extends ModelsControllerRequest {
16
16
  model: string;
17
17
  }
18
18
  export type ApiModelGetDeviceResult = KDocument<DeviceModelContent>;
19
+ export interface ApiModelGetGroupRequest extends ModelsControllerRequest {
20
+ action: "getGroup";
21
+ model: string;
22
+ }
23
+ export type ApiModelGetGroupResult = KDocument<GroupModelContent>;
19
24
  export interface ApiModelGetMeasureRequest extends ModelsControllerRequest {
20
25
  action: "getMeasure";
21
26
  type: string;
@@ -32,6 +37,9 @@ export interface ApiModelWriteAssetRequest extends ModelsControllerRequest {
32
37
  defaultValues?: JSONObject;
33
38
  measures?: AssetModelContent["asset"]["measures"];
34
39
  tooltipModels?: TooltipModels;
40
+ locales?: {
41
+ [valueName: string]: LocaleDetails;
42
+ };
35
43
  };
36
44
  }
37
45
  export type ApiModelWriteAssetResult = KDocument<AssetModelContent>;
@@ -47,10 +55,26 @@ export interface ApiModelWriteDeviceRequest extends ModelsControllerRequest {
47
55
  };
48
56
  }
49
57
  export type ApiModelWriteDeviceResult = KDocument<DeviceModelContent>;
58
+ export interface ApiModelWriteGroupRequest extends ModelsControllerRequest {
59
+ action: "writeGroup";
60
+ body: {
61
+ affinity: GroupAffinity;
62
+ engineGroup: string;
63
+ model: string;
64
+ metadataDetails?: MetadataDetails;
65
+ metadataGroups?: MetadataGroups;
66
+ metadataMappings?: MetadataMappings;
67
+ defaultValues?: JSONObject;
68
+ };
69
+ }
70
+ export type ApiModelWriteGroupResult = KDocument<GroupModelContent>;
50
71
  export interface ApiModelWriteMeasureRequest extends ModelsControllerRequest {
51
72
  action: "writeMeasure";
52
73
  body: {
53
74
  type: string;
75
+ locales?: {
76
+ [valueName: string]: LocaleDetails;
77
+ };
54
78
  valuesMappings: JSONObject;
55
79
  validationSchema?: SchemaObject;
56
80
  valuesDetails?: MeasureValuesDetails;
@@ -68,6 +92,9 @@ export interface ApiModelUpdateAssetRequest extends ModelsControllerRequest {
68
92
  defaultValues?: JSONObject;
69
93
  measures?: AssetModelContent["asset"]["measures"];
70
94
  tooltipModels?: TooltipModels;
95
+ locales?: {
96
+ [valueName: string]: LocaleDetails;
97
+ };
71
98
  };
72
99
  }
73
100
  export type ApiModelUpdateAssetResult = KDocument<AssetModelContent>;
@@ -81,6 +108,11 @@ export interface ApiModelDeleteDeviceRequest extends ModelsControllerRequest {
81
108
  _id: string;
82
109
  }
83
110
  export type ApiModelDeleteDeviceResult = void;
111
+ export interface ApiModelDeleteGroupRequest extends ModelsControllerRequest {
112
+ action: "deleteGroup";
113
+ _id: string;
114
+ }
115
+ export type ApiModelDeleteGroupResult = void;
84
116
  export interface ApiModelDeleteMeasureRequest extends ModelsControllerRequest {
85
117
  action: "deleteMeasure";
86
118
  _id: string;
@@ -101,6 +133,14 @@ export type ApiModelListDevicesResult = {
101
133
  models: KDocument<DeviceModelContent>[];
102
134
  total: number;
103
135
  };
136
+ export interface ApiModelListGroupsRequest extends ModelsControllerRequest {
137
+ action: "listGroups";
138
+ engineGroup: string;
139
+ }
140
+ export type ApiModelListGroupsResult = {
141
+ models: KDocument<GroupModelContent>[];
142
+ total: number;
143
+ };
104
144
  export interface ApiModelListMeasuresRequest extends ModelsControllerRequest {
105
145
  action: "listMeasures";
106
146
  }
@@ -125,6 +165,15 @@ export interface ApiModelSearchDevicesRequest extends ModelsControllerRequest {
125
165
  body?: JSONObject;
126
166
  }
127
167
  export type ApiModelSearchDevicesResult = SearchResult<KHit<DeviceModelContent>>;
168
+ export interface ApiModelSearchGroupsRequest extends ModelsControllerRequest {
169
+ action: "searchGroups";
170
+ engineGroup: string;
171
+ from?: number;
172
+ size?: number;
173
+ scrollTTL?: string;
174
+ body?: JSONObject;
175
+ }
176
+ export type ApiModelSearchGroupsResult = SearchResult<KHit<GroupModelContent>>;
128
177
  export interface ApiModelSearchMeasuresRequest extends ModelsControllerRequest {
129
178
  action: "searchMeasures";
130
179
  from?: number;
@@ -5,6 +5,9 @@ export interface MeasureModelContent extends KDocumentContent {
5
5
  type: "measure";
6
6
  measure: MeasureDefinition & {
7
7
  type: string;
8
+ locales?: {
9
+ [valueName: string]: LocaleDetails;
10
+ };
8
11
  };
9
12
  }
10
13
  export interface MetadataProperty {
@@ -20,13 +23,31 @@ export interface MetadataObject {
20
23
  export interface MetadataMappings {
21
24
  [key: string]: MetadataProperty | MetadataObject;
22
25
  }
26
+ export interface GroupAffinity {
27
+ /**
28
+ * Type of elements accepted in the group
29
+ */
30
+ type: Array<"assets" | "devices">;
31
+ /**
32
+ * Models accepted in the group
33
+ */
34
+ models: {
35
+ assets?: string[];
36
+ devices?: string[];
37
+ };
38
+ /**
39
+ * Weather the affinities are a strict restriction or not
40
+ */
41
+ strict: boolean;
42
+ }
23
43
  export interface LocaleDetails {
24
44
  friendlyName: string;
25
45
  description: string;
26
46
  }
27
47
  export interface BaseEditorHint {
28
48
  readOnly?: boolean;
29
- type: EditorHintEnum;
49
+ isModal?: boolean;
50
+ type: EditorHintEnum | string;
30
51
  }
31
52
  export declare enum EditorHintEnum {
32
53
  BASE = "base",
@@ -264,6 +285,12 @@ export interface AssetModelContent extends KDocumentContent {
264
285
  * ]
265
286
  */
266
287
  tooltipModels?: TooltipModels;
288
+ /**
289
+ * Translations specific to the model
290
+ */
291
+ locales?: {
292
+ [locale: string]: LocaleDetails;
293
+ };
267
294
  };
268
295
  }
269
296
  export interface DeviceModelContent extends KDocumentContent {
@@ -355,4 +382,132 @@ export interface DeviceModelContent extends KDocumentContent {
355
382
  measures: NamedMeasures;
356
383
  };
357
384
  }
358
- export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent;
385
+ export interface GroupModelContent extends KDocumentContent {
386
+ type: "group";
387
+ engineGroup: string;
388
+ group: {
389
+ /**
390
+ * Name of the model
391
+ */
392
+ model: string;
393
+ /**
394
+ * Group types and model affinities
395
+ */
396
+ affinity: GroupAffinity;
397
+ /**
398
+ * Metadata mappings.
399
+ *
400
+ * @example
401
+ * {
402
+ * "company": {
403
+ * "properties": {
404
+ * "name": { "type": "keyword" },
405
+ * }
406
+ * }
407
+ * }
408
+ */
409
+ metadataMappings: MetadataMappings;
410
+ /**
411
+ * Default values for metadata.
412
+ *
413
+ * @example
414
+ * {
415
+ * "company.name": "Firebird"
416
+ * }
417
+ */
418
+ defaultMetadata: JSONObject;
419
+ /**
420
+ * Metadata details
421
+ * @example
422
+ * {
423
+ * "extTemp": {
424
+ * "group": "buildingEnv",
425
+ * "locales": {
426
+ * "en": {
427
+ * "friendlyName": "External temperature",
428
+ * "description": "Building external temperature"
429
+ * },
430
+ * "fr": {
431
+ * "friendlyName": "Température extérieure",
432
+ * "description": "Température à l'exterieur du bâtiment"
433
+ * },
434
+ * },
435
+ * "editorHint": {
436
+ * "readOnly": true,
437
+ * "type": EditorHintEnum.OPTION_SELECTOR,
438
+ * "values": ["red", "blue"],
439
+ * "customValueAllowed": true,
440
+ * },
441
+ * },
442
+ * }
443
+ */
444
+ metadataDetails?: MetadataDetails;
445
+ /**
446
+ * Metadata groups list
447
+ * @example
448
+ * {
449
+ * "buildingEnv": {
450
+ * "locales": {
451
+ * "en": {
452
+ * "groupFriendlyName": "Building environment",
453
+ * "description": "The building environment"
454
+ * },
455
+ * "fr": {
456
+ * "groupFriendlyName": "Environnement du bâtiment",
457
+ * "description": "L'environnement du bâtiment"
458
+ * }
459
+ * }
460
+ * }
461
+ * }
462
+ */
463
+ metadataGroups?: MetadataGroups;
464
+ /**
465
+ * List of tooltip models for this asset model
466
+ *
467
+ * @example
468
+ * [
469
+ * "defaultTooltipKey": {
470
+ * "tooltipLabel": "Default tooltip model",
471
+ * "content": [
472
+ * {
473
+ * "metadataPath": "geolocation",
474
+ * "label": {
475
+ * "locales": {
476
+ * "en": {
477
+ * "description": "",
478
+ * "friendlyName": "Container position"
479
+ * },
480
+ * "fr": {
481
+ * "description": "",
482
+ * "friendlyName": "Position du conteneur"
483
+ * }
484
+ * }
485
+ * },
486
+ * "category": "metadata"
487
+ * },
488
+ * {
489
+ * "measureValuePath": "externalTemperature",
490
+ * "measureSlot": "externalTemperature",
491
+ * "label": {
492
+ * "locales": {
493
+ * "en": {
494
+ * "description": "",
495
+ * "friendlyName": "External temperature"
496
+ * },
497
+ * "fr": {
498
+ * "description": "",
499
+ * "friendlyName": "Température extérieure"
500
+ * }
501
+ * }
502
+ * },
503
+ * "category": "measure",
504
+ * "suffix": "°C"
505
+ * }
506
+ * ]
507
+ * }
508
+ * ]
509
+ */
510
+ tooltipModels?: TooltipModels;
511
+ };
512
+ }
513
+ export type ModelContent = MeasureModelContent | AssetModelContent | DeviceModelContent | GroupModelContent;
@@ -1,6 +1,6 @@
1
1
  import { JSONObject } from "kuzzle-sdk";
2
2
  import { Decoder, NamedMeasures } from "../../../modules/decoder";
3
- import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
3
+ import { GroupAffinity, LocaleDetails, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./ModelContent";
4
4
  /**
5
5
  * Define an asset model
6
6
  *
@@ -94,7 +94,17 @@ import { MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from
94
94
  * }
95
95
  * ]
96
96
  * }
97
- * }
97
+ * },
98
+ * locales: {
99
+ * en: {
100
+ * friendlyName: 'Container (translation by model)',
101
+ * description: 'Containerized container',
102
+ * },
103
+ * fr: {
104
+ * friendlyName: 'Conteneur (traduit par model)',
105
+ * description: 'Conteneur conteneurisé',
106
+ * },
107
+ * },
98
108
  * }
99
109
  *
100
110
  */
@@ -123,6 +133,9 @@ export type AssetModelDefinition = {
123
133
  * Tooltip models
124
134
  */
125
135
  tooltipModels?: TooltipModels;
136
+ locales?: {
137
+ [valueName: string]: LocaleDetails;
138
+ };
126
139
  };
127
140
  /**
128
141
  * Define a device model
@@ -196,3 +209,98 @@ export type DeviceModelDefinition = {
196
209
  */
197
210
  metadataGroups?: MetadataGroups;
198
211
  };
212
+ /**
213
+ * Define a group model
214
+ *
215
+ * @example
216
+ * {
217
+ * metadataMappings: {
218
+ * position: { type: "geo_point" },
219
+ * },
220
+ * defaultMetadata: {
221
+ * position: {
222
+ * lat: 41.12,
223
+ * lon: -71.34
224
+ * }
225
+ * },
226
+ * metadataDetails: {
227
+ * "position": {
228
+ * "group": "geolocation",
229
+ * "locales": {
230
+ * "en": {
231
+ * "friendlyName": "Parking position",
232
+ * "description": "The coordinates of the parking"
233
+ * },
234
+ * "fr": {
235
+ * "friendlyName": "Position du parking",
236
+ * "description": "Les coordonnées GPS du parking"
237
+ * }
238
+ * },
239
+ * },
240
+ * },
241
+ * metadataGroups: {
242
+ * geolocation: {
243
+ * locales: {
244
+ * en: {
245
+ * groupFriendlyName: "Parking geolocation",
246
+ * description: "The parking geolocation"
247
+ * },
248
+ * fr: {
249
+ * groupFriendlyName: "Localisation du parking",
250
+ * description: "La localisation du parking"
251
+ * }
252
+ * }
253
+ * }
254
+ * },
255
+ * tooltipModels: {
256
+ * "defaultTooltipKey": {
257
+ * "tooltipLabel": "Default Tooltip Model",
258
+ * "content": [
259
+ * {
260
+ * "category": "metadata",
261
+ * "label": {
262
+ * "locales": {
263
+ * "en": {
264
+ * "friendlyName": "Parking position",
265
+ * "description": ""
266
+ * },
267
+ * "fr": {
268
+ * "friendlyName": "Position du parking",
269
+ * "description": ""
270
+ * }
271
+ * }
272
+ * },
273
+ * "metadataPath": "position"
274
+ * },
275
+ * ]
276
+ * }
277
+ * }
278
+ * }
279
+ *
280
+ */
281
+ export type GroupModelDefinition = {
282
+ /**
283
+ * Metadata mappings definition
284
+ */
285
+ affinity: GroupAffinity;
286
+ /**
287
+ * Metadata mappings definition
288
+ */
289
+ metadataMappings?: MetadataMappings;
290
+ /**
291
+ * Default metadata values
292
+ */
293
+ defaultMetadata?: JSONObject;
294
+ /**
295
+ * Metadata details including tanslations and group.
296
+ */
297
+ metadataDetails?: MetadataDetails;
298
+ /**
299
+ * Metadata groups
300
+ */
301
+ metadataGroups?: MetadataGroups;
302
+ /**
303
+ * Tooltip models
304
+ */
305
+ tooltipModels?: TooltipModels;
306
+ };
@@ -1,4 +1,4 @@
1
- import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "./ModelContent";
1
+ import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "./ModelContent";
2
2
  export type AskModelAssetGet = {
3
3
  name: "ask:device-manager:model:asset:get";
4
4
  payload: {
@@ -21,3 +21,10 @@ export type AskModelMeasureGet = {
21
21
  };
22
22
  result: MeasureModelContent;
23
23
  };
24
+ export type AskModelGroupGet = {
25
+ name: "ask:device-manager:model:group:get";
26
+ payload: {
27
+ model: string;
28
+ };
29
+ result: GroupModelContent;
30
+ };
@@ -1,6 +1,6 @@
1
1
  import { Backend, KDocumentContent, Plugin } from "kuzzle";
2
2
  import { AbstractEngine, ConfigManager, EngineContent } from "kuzzle-plugin-commons";
3
- import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "../model";
3
+ import { AssetModelContent, DeviceModelContent, GroupModelContent, MeasureModelContent } from "../model";
4
4
  import { DeviceManagerPlugin } from "./DeviceManagerPlugin";
5
5
  import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
6
6
  import { InternalCollection } from "./types/InternalCollection";
@@ -18,7 +18,7 @@ export interface EngineDocument extends KDocumentContent {
18
18
  export type AskEngineList = {
19
19
  name: "ask:device-manager:engine:list";
20
20
  payload: {
21
- group: string | null;
21
+ group?: string;
22
22
  };
23
23
  result: EngineContent[];
24
24
  };
@@ -35,13 +35,14 @@ export type AskEngineUpdateConflict = {
35
35
  models: TwinModelContent[];
36
36
  };
37
37
  measuresModels?: MeasureModelContent[];
38
+ groupModels?: GroupModelContent[];
38
39
  };
39
40
  result: ConflictChunk[];
40
41
  };
41
42
  export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlugin> {
42
43
  config: DeviceManagerConfiguration;
43
44
  get app(): Backend;
44
- constructor(plugin: Plugin, adminConfigManager: ConfigManager, engineConfigManager: ConfigManager);
45
+ constructor(plugin: Plugin, platformConfigManager: ConfigManager, engineConfigManager: ConfigManager);
45
46
  /**
46
47
  * Return conflicts between the new and already present twin models
47
48
  *
@@ -54,6 +55,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
54
55
  * @returns An array of conflict chunk
55
56
  */
56
57
  private doesTwinUpdateConflicts;
58
+ /**
59
+ * Return conflicts between the new and already present group models
60
+ *
61
+ * @param groupModels The already present group models
62
+ * @param additionalGroups The new or updated group models
63
+ * @returns An array of ConflictChunk
64
+ */
65
+ private doesGroupsUpdateConflicts;
57
66
  /**
58
67
  * Return conflicts between the new and already present measure models
59
68
  *
@@ -98,14 +107,14 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
98
107
  */
99
108
  createAssetsHistoryCollection(engineId: string, engineGroup: string): Promise<InternalCollection>;
100
109
  /**
101
- * Create the assets groups collection with the assets groups mappings in the engine
110
+ * Create the groups collection with the groups mappings in the engine
102
111
  *
103
112
  * @param engineId The target engine Id
104
113
  * @param engineGroup The engine group
105
114
  *
106
- * @throws If it failed during the assets groups collection creation
115
+ * @throws If it failed during the groups collection creation
107
116
  */
108
- createAssetsGroupsCollection(engineId: string): Promise<InternalCollection>;
117
+ createGroupsCollection(engineId: string): Promise<InternalCollection>;
109
118
  /**
110
119
  * Generate devices mappings and create the devices collection in the engine
111
120
  *
@@ -115,6 +124,15 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
115
124
  * @throws If it failed during the devices collection creation
116
125
  */
117
126
  createDevicesCollection(engineId: string): Promise<InternalCollection>;
127
+ /**
128
+ * Generate devices mappings and create the devices collection in the engine
129
+ *
130
+ * @param engineId The target engine Id
131
+ * @param engineGroup The engine group
132
+ *
133
+ * @throws If it failed during the devices collection creation
134
+ */
135
+ createPlatformDevicesCollection(): Promise<InternalCollection>;
118
136
  /**
119
137
  * Generate measures mappings and create the measures collection in the engine
120
138
  *
@@ -166,6 +184,7 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
166
184
  * @returns The complete ES mappings produced by merging models mappings
167
185
  */
168
186
  private getMeasuresMappings;
187
+ getAssetGroupsMappingFromDB(): Promise<any>;
169
188
  /**
170
189
  * Retrieve a certain type of models associated to an engine
171
190
  *
@@ -175,4 +194,11 @@ export declare class DeviceManagerEngine extends AbstractEngine<DeviceManagerPlu
175
194
  * @returns An array of the generic type provided
176
195
  */
177
196
  private getModels;
197
+ /**
198
+ * Detach all devices of an index in the platform index
199
+ *
200
+ * @param engineId The target engine Id
201
+ * @returns {any}
202
+ */
203
+ private detachDevicesFromPlatformIndex;
178
204
  }
@@ -1,21 +1,23 @@
1
1
  import { Plugin, PluginContext } from "kuzzle";
2
2
  import { JSONObject } from "kuzzle-sdk";
3
3
  import { MeasureDefinition } from "../measure";
4
- import { AssetModelDefinition, DeviceModelDefinition } from "../model";
4
+ import { DecodersRegister } from "../decoder";
5
+ import { AssetModelDefinition, DeviceModelDefinition, GroupModelDefinition, ModelsRegister } from "../model";
5
6
  import { DeviceManagerConfiguration } from "./types/DeviceManagerConfiguration";
6
7
  export declare class DeviceManagerPlugin extends Plugin {
7
8
  config: DeviceManagerConfiguration;
8
9
  private deviceManagerEngine;
9
- private adminConfigManager;
10
+ private platformConfigManager;
10
11
  private engineConfigManager;
11
12
  private engineController;
12
13
  private assetModule;
13
14
  private deviceModule;
15
+ private groupModule;
14
16
  private decoderModule;
15
17
  private measureModule;
16
18
  private modelModule;
17
- private modelsRegister;
18
- private decodersRegister;
19
+ readonly modelsRegister: ModelsRegister;
20
+ readonly decodersRegister: DecodersRegister;
19
21
  private get sdk();
20
22
  get models(): {
21
23
  /**
@@ -177,6 +179,59 @@ export declare class DeviceManagerPlugin extends Plugin {
177
179
  * ```
178
180
  */
179
181
  registerDevice: (model: string, definition: DeviceModelDefinition) => void;
182
+ /**
183
+ * Register a group.
184
+ *
185
+ * @param model Name of the group model
186
+ * @param definition Object containing the group model definition, including:
187
+ * - metadataMappings: Metadata mappings definition
188
+ * - defaultMetadata: Default metadata values
189
+ * - metadataDetails: Localizations, detailed metadata descriptions and definition
190
+ * - metadataGroups: Groups for organizing metadata, with localizations
191
+ *
192
+ * @example
193
+ * ```
194
+ * deviceManager.models.registerGroup(
195
+ * "Parking",
196
+ * {
197
+ * metadataMappings: {
198
+ * geolocation: { type: "geo_point" },
199
+ * },
200
+ * defaultMetadata: {
201
+ *
202
+ * },
203
+ * metadataDetails: {
204
+ * geolocation: {
205
+ * group: "access",
206
+ * locales: {
207
+ * en: {
208
+ * friendlyName: "Parking location",
209
+ * description: "GPS position of the parking"
210
+ * },
211
+ * fr: {
212
+ * friendlyName: "Emplacement du parking",
213
+ * description: "Position GPS du parking"
214
+ * }
215
+ * }
216
+ * }
217
+ * },
218
+ * metadataGroups: {
219
+ * access: {
220
+ * locales: {
221
+ * en: {
222
+ * groupFriendlyName: "Parking access info"
223
+ * },
224
+ * fr: {
225
+ * groupFriendlyName: "Information d'accès au parking"
226
+ * }
227
+ * }
228
+ * }
229
+ * }
230
+ * }
231
+ * );
232
+ * ```
233
+ */
234
+ registerGroup: (engineGroup: string, model: string, definition: GroupModelDefinition) => void;
180
235
  /**
181
236
  * Register a new measure
182
237
  *
@@ -200,7 +255,7 @@ export declare class DeviceManagerPlugin extends Plugin {
200
255
  */
201
256
  init(config: JSONObject, context: PluginContext): Promise<void>;
202
257
  /**
203
- * Initialize the administration index of the plugin
258
+ * Initialize the platform index of the plugin
204
259
  */
205
260
  private initDatabase;
206
261
  /**
@@ -16,13 +16,13 @@ export type DeviceManagerConfiguration = {
16
16
  autoUpdate: true;
17
17
  };
18
18
  /**
19
- * Administration index name
19
+ * Platform index name
20
20
  */
21
- adminIndex: string;
21
+ platformIndex: string;
22
22
  /**
23
- * Administration collections mappings (in admin index)
23
+ * Collection mappings for the platform index
24
24
  */
25
- adminCollections: {
25
+ platformCollections: {
26
26
  config: {
27
27
  name: string;
28
28
  mappings: JSONObject;
@@ -45,20 +45,21 @@ export type DeviceManagerConfiguration = {
45
45
  mappings: JSONObject;
46
46
  settings?: JSONObject;
47
47
  };
48
- asset: {
48
+ assets: {
49
49
  name: string;
50
50
  mappings: CollectionMappings;
51
51
  settings?: JSONObject;
52
52
  };
53
- assetGroups: {
53
+ groups: {
54
54
  name: string;
55
+ mappings: CollectionMappings;
55
56
  settings?: JSONObject;
56
57
  };
57
58
  assetHistory: {
58
59
  name: string;
59
60
  settings?: JSONObject;
60
61
  };
61
- device: {
62
+ devices: {
62
63
  name: string;
63
64
  mappings: CollectionMappings;
64
65
  settings?: JSONObject;
@@ -66,6 +67,7 @@ export type DeviceManagerConfiguration = {
66
67
  measures: {
67
68
  name: string;
68
69
  settings?: JSONObject;
70
+ mappings: CollectionMappings;
69
71
  };
70
72
  };
71
73
  };