kuzzle-device-manager-types 2.11.0-dev.1 → 3.0.0-3-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 (85) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
  3. package/dist/lib/modules/asset/AssetService.d.ts +7 -4
  4. package/dist/lib/modules/asset/AssetsController.d.ts +25 -7
  5. package/dist/lib/modules/asset/exports.d.ts +0 -4
  6. package/dist/lib/modules/asset/index.d.ts +1 -3
  7. package/dist/lib/modules/asset/types/AssetApi.d.ts +124 -9
  8. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
  9. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  10. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  11. package/dist/lib/modules/decoder/Decoder.d.ts +1 -1
  12. package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
  13. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  14. package/dist/lib/modules/device/DeviceService.d.ts +6 -47
  15. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  16. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  17. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  18. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -41
  19. package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
  20. package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
  21. package/dist/lib/modules/group/GroupsController.d.ts +37 -0
  22. package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
  23. package/dist/lib/modules/group/GroupsService.d.ts +118 -0
  24. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  25. package/dist/lib/modules/group/exports.d.ts +5 -0
  26. package/dist/lib/modules/group/index.d.ts +4 -0
  27. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  28. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  29. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  30. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  31. package/dist/lib/modules/measure/MeasureService.d.ts +11 -43
  32. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  33. package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
  34. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
  35. package/dist/lib/modules/measure/exports.d.ts +0 -1
  36. package/dist/lib/modules/measure/index.d.ts +0 -1
  37. package/dist/lib/modules/measure/types/MeasureContent.d.ts +9 -2
  38. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
  39. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  40. package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
  41. package/dist/lib/modules/model/ModelService.d.ts +20 -14
  42. package/dist/lib/modules/model/ModelsController.d.ts +1 -1
  43. package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
  44. package/dist/lib/modules/model/types/ModelApi.d.ts +14 -9
  45. package/dist/lib/modules/model/types/ModelContent.d.ts +34 -3
  46. package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
  47. package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
  48. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
  49. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
  50. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
  51. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  52. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  53. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
  54. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
  55. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
  56. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
  57. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  58. package/dist/tests/application/assets/Container.d.ts +3 -2
  59. package/dist/tests/application/decoders/DummyTempDecoder.d.ts +10 -0
  60. package/dist/tests/application/decoders/DummyTempPositionDecoder.d.ts +10 -0
  61. package/dist/tests/application/decoders/EmptyTempDecoder.d.ts +8 -0
  62. package/dist/tests/application/devices/EmptyTemp.d.ts +2 -0
  63. package/dist/tests/application/devices/index.d.ts +1 -0
  64. package/dist/tests/application/groups/AssetRestricted.d.ts +8 -0
  65. package/dist/tests/application/groups/DeviceRestricted.d.ts +8 -0
  66. package/dist/tests/application/groups/Parking.d.ts +2 -2
  67. package/dist/tests/application/groups/index.d.ts +2 -0
  68. package/dist/tests/application/measures/BatteryMeasure.d.ts +5 -0
  69. package/dist/tests/application/measures/HumidityMeasure.d.ts +5 -0
  70. package/dist/tests/application/measures/MovementMeasure.d.ts +5 -0
  71. package/dist/{lib/modules/measure → tests/application}/measures/PositionMeasure.d.ts +2 -2
  72. package/dist/tests/application/measures/TemperatureMeasure.d.ts +5 -0
  73. package/dist/tests/application/measures/index.d.ts +5 -0
  74. package/dist/tests/application/tests/controller.d.ts +0 -1
  75. package/package.json +1 -1
  76. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
  77. package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
  78. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  79. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
  80. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  81. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  82. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  83. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  84. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  85. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
@@ -59,14 +59,40 @@ export interface ApiDeviceSearchRequest extends DevicesControllerRequest {
59
59
  body: JSONObject;
60
60
  }
61
61
  export type ApiDeviceSearchResult = SearchResult<KHit<DeviceContent>>;
62
- export interface ApiDeviceUnlinkAssetRequest extends DevicesControllerRequest {
63
- action: "unlinkAsset";
62
+ export interface ApiDeviceUnlinkAssetsRequest extends DevicesControllerRequest {
63
+ action: "unlinkAssets";
64
64
  _id: string;
65
65
  strict?: boolean;
66
66
  refresh?: string;
67
+ body: {
68
+ /**
69
+ * This options allows to unlink all the measures of the device
70
+ */
71
+ allMeasures?: boolean;
72
+ /**
73
+ * Names of the measure slots of the device to unlink.
74
+ *
75
+ * string[]
76
+ *
77
+ * @example
78
+ *
79
+ * ['externalTemperature','position']
80
+ */
81
+ measureSlots?: string[];
82
+ /**
83
+ * Ids of the assets to unlink.
84
+ *
85
+ * string[]
86
+ *
87
+ * @example
88
+ *
89
+ * ['First-asset','Second-asset']
90
+ */
91
+ assets?: string[];
92
+ };
67
93
  }
68
- export type ApiDeviceUnlinkAssetResult = {
69
- asset: KDocument<AssetContent>;
94
+ export type ApiDeviceUnlinkAssetsResult = {
95
+ assets: KDocument<AssetContent>[];
70
96
  device: KDocument<DeviceContent>;
71
97
  };
72
98
  export interface ApiDeviceAttachEngineRequest extends DevicesControllerRequest {
@@ -81,48 +107,50 @@ export interface ApiDeviceDetachEngineRequest extends DevicesControllerRequest {
81
107
  refresh?: string;
82
108
  }
83
109
  export type ApiDeviceDetachEngineResult = void;
84
- export interface ApiDeviceLinkAssetRequest extends DevicesControllerRequest {
85
- action: "linkAsset";
110
+ export interface ApiDeviceLinkAssetsRequest extends DevicesControllerRequest {
111
+ action: "linkAssets";
86
112
  _id: string;
87
113
  refresh?: string;
88
- assetId: string;
89
- /**
90
- * This option allows to not specify the names of all the measures that should
91
- * be linked to the asset.
92
- *
93
- * The algorithm will go through all the measures names provided by the device
94
- * and add the one who are present with the same name in the asset.
95
- *
96
- * It will not add the measure if:
97
- * - it has been specified in the link request
98
- * - it was already present in the asset
99
- *
100
- * @example
101
- * if the device provide a measure of type "temperature" with the name "temp"
102
- * if the asset has declared a measure of type "temperature" with the name "temp"
103
- * then the measure will be automatically added in the link and will later be propagated to the asset
104
- */
105
- implicitMeasuresLinking?: boolean;
106
- body?: {
107
- /**
108
- * Names of the linked measures.
109
- *
110
- * Array<{ asset: string, device: string }>
111
- *
112
- * @example
113
- *
114
- * [
115
- * { asset: "externalTemperature", device: "temperature" }
116
- * ]
117
- */
118
- measureNames?: Array<{
119
- asset: string;
120
- device: string;
114
+ body: {
115
+ linkedMeasures: Array<{
116
+ assetId: string;
117
+ /**
118
+ * This option allows to not specify the names of all the measures that should
119
+ * be linked to the asset.
120
+ *
121
+ * The algorithm will go through all the measures names provided by the device
122
+ * and add the one who are present with the same name in the asset.
123
+ *
124
+ * It will not add the measure if:
125
+ * - it has been specified in the link request
126
+ * - it was already present in the asset
127
+ *
128
+ * @example
129
+ * if the device provide a measure of type "temperature" with the name "temp"
130
+ * if the asset has declared a measure of type "temperature" with the name "temp"
131
+ * then the measure will be automatically added in the link and will later be propagated to the asset
132
+ */
133
+ implicitMeasuresLinking?: boolean;
134
+ /**
135
+ * Names of the linked measures.
136
+ *
137
+ * Array<{ asset: string, device: string }>
138
+ *
139
+ * @example
140
+ *
141
+ * [
142
+ * { asset: "externalTemperature", device: "temperature" }
143
+ * ]
144
+ */
145
+ measureSlots?: Array<{
146
+ asset: string;
147
+ device: string;
148
+ }>;
121
149
  }>;
122
150
  };
123
151
  }
124
- export type ApiDeviceLinkAssetResult = {
125
- asset: KDocument<AssetContent>;
152
+ export type ApiDeviceLinkAssetsResult = {
153
+ assets: KDocument<AssetContent>[];
126
154
  device: KDocument<DeviceContent>;
127
155
  };
128
156
  export interface ApiDeviceGetMeasuresRequest extends DevicesControllerRequest {
@@ -1,14 +1,65 @@
1
- import { JSONObject } from "kuzzle-sdk";
1
+ import { JSONObject, KDocumentContent } from "kuzzle-sdk";
2
2
  import { DigitalTwinContent, Metadata } from "../../shared";
3
3
  /**
4
4
  * Device document content
5
5
  */
6
- export interface DeviceContent<TMeasures extends JSONObject = any, TMetadata extends Metadata = any> extends DigitalTwinContent<TMeasures, TMetadata> {
6
+ export interface DeviceContent<TMetadata extends Metadata = any> extends DigitalTwinContent<TMetadata> {
7
7
  /**
8
- * Linked asset unique identifier
8
+ * Link with attached assets
9
9
  */
10
- assetId: string | null;
10
+ linkedMeasures: Array<{
11
+ /**
12
+ * Asset ID
13
+ */
14
+ assetId: string;
15
+ /**
16
+ * Slots of the linked measures
17
+ *
18
+ * Array<{ asset: string, device: string, type: string }>
19
+ *
20
+ * @example
21
+ *
22
+ * [
23
+ * { asset: "externalTemperature", device: "temperature", }
24
+ * ]
25
+ */
26
+ measureSlots: Array<{
27
+ asset: string;
28
+ device: string;
29
+ }>;
30
+ }>;
11
31
  /**
12
32
  */
13
- engineId: string;
33
+ engineId: string | null;
34
+ /**
35
+ * Path's of device's groups
36
+ */
37
+ groups: Array<{
38
+ path: string;
39
+ date: number;
40
+ }>;
41
+ }
42
+ /**
43
+ * Platform index Device document content
44
+ */
45
+ interface DeviceProvisioningContentFields extends Pick<DeviceContent, "model" | "reference" | "engineId" | "measureSlots"> {
46
+ /**
47
+ * Date of provisioning of the device on the platform
48
+ */
49
+ provisionedAt: number;
50
+ /**
51
+ * Date of last measure from the device
52
+ */
53
+ lastMeasuredAt: number | null;
54
+ /**
55
+ * An array containing the 5 last measures from the device
56
+ */
57
+ lastMeasures: Array<{
58
+ measureName: string;
59
+ values: JSONObject;
60
+ measuredAt: number;
61
+ type: string;
62
+ }>;
14
63
  }
64
+ export type DeviceProvisioningContent = DeviceProvisioningContentFields & KDocumentContent;
65
+ export {};
@@ -1,8 +1,8 @@
1
1
  import { User } from "kuzzle";
2
2
  import { KDocument } from "kuzzle-sdk";
3
- import { Metadata } from "../../../modules/shared";
3
+ import { DeviceModelContent } from "../../model";
4
+ import { Metadata } from "../../shared";
4
5
  import { DeviceContent } from "./DeviceContent";
5
- import { ApiDeviceLinkAssetRequest } from "./DeviceApi";
6
6
  export type EventDeviceUpdateBefore = {
7
7
  name: "device-manager:device:update:before";
8
8
  args: [{
@@ -17,28 +17,6 @@ export type EventDeviceUpdateAfter = {
17
17
  metadata: Metadata;
18
18
  }];
19
19
  };
20
- /**
21
- * @internal
22
- */
23
- export type AskDeviceLinkAsset = {
24
- name: "ask:device-manager:device:link-asset";
25
- payload: {
26
- engineId: string;
27
- assetId: string;
28
- deviceId: string;
29
- user: User;
30
- measureNames: ApiDeviceLinkAssetRequest["body"]["measureNames"];
31
- };
32
- result: void;
33
- };
34
- export type AskDeviceUnlinkAsset = {
35
- name: "ask:device-manager:device:unlink-asset";
36
- payload: {
37
- deviceId: string;
38
- user: User;
39
- };
40
- result: void;
41
- };
42
20
  export type AskDeviceDetachEngine = {
43
21
  name: "ask:device-manager:device:detach-engine";
44
22
  payload: {
@@ -56,3 +34,10 @@ export type AskDeviceAttachEngine = {
56
34
  };
57
35
  result: void;
58
36
  };
37
+ export type AskDeviceRefreshModel = {
38
+ name: "ask:device-manager:device:refresh-model";
39
+ payload: {
40
+ deviceModel: DeviceModelContent;
41
+ };
42
+ result: void;
43
+ };
@@ -0,0 +1,37 @@
1
+ import { ControllerDefinition, KuzzleRequest } from "kuzzle";
2
+ import { DeviceManagerPlugin } from "../plugin";
3
+ import { ApiGroupAddAssetsResult, ApiGroupAddDevicesResult, ApiGroupCreateResult, ApiGroupDeleteResult, ApiGroupGetResult, ApiGroupListItemsResult, ApiGroupMCreateResult, ApiGroupMUpdateResult, ApiGroupMUpsertResult, ApiGroupRemoveAssetsResult, ApiGroupRemoveDevicesResult, ApiGroupSearchResult, ApiGroupUpdateResult, ApiGroupUpsertResult, GroupsBodyRequest } from "./types/GroupsApi";
4
+ import { GroupsService } from "./GroupsService";
5
+ import { KuzzleLogger } from "kuzzle-logger";
6
+ export declare class GroupsController {
7
+ private plugin;
8
+ private groupsService;
9
+ definition: ControllerDefinition;
10
+ readonly logger: KuzzleLogger;
11
+ constructor(plugin: DeviceManagerPlugin, groupsService: GroupsService, logger: KuzzleLogger);
12
+ private get sdk();
13
+ private get as();
14
+ /**
15
+ * Check that the path property is valid, and closest parent exists.
16
+ * @param {string} engineId Engine ID
17
+ * @param {string} path The path of a group
18
+ * @throws {BadRequestError} If the path is not a string or if the path is not valid.
19
+ * @returns {void}
20
+ */
21
+ checkPath(engineId: string, path: GroupsBodyRequest["path"], groupId?: string): Promise<void>;
22
+ checkGroupName(engineId: string, name: GroupsBodyRequest["name"], assetId?: string): Promise<void>;
23
+ create(request: KuzzleRequest): Promise<ApiGroupCreateResult>;
24
+ get(request: KuzzleRequest): Promise<ApiGroupGetResult>;
25
+ upsert(request: KuzzleRequest): Promise<ApiGroupUpsertResult>;
26
+ update(request: KuzzleRequest): Promise<ApiGroupUpdateResult>;
27
+ delete(request: KuzzleRequest): Promise<ApiGroupDeleteResult>;
28
+ search(request: KuzzleRequest): Promise<ApiGroupSearchResult>;
29
+ listItems(request: KuzzleRequest): Promise<ApiGroupListItemsResult>;
30
+ addAssets(request: KuzzleRequest): Promise<ApiGroupAddAssetsResult>;
31
+ removeAssets(request: KuzzleRequest): Promise<ApiGroupRemoveAssetsResult>;
32
+ addDevices(request: KuzzleRequest): Promise<ApiGroupAddDevicesResult>;
33
+ removeDevices(request: KuzzleRequest): Promise<ApiGroupRemoveDevicesResult>;
34
+ mCreate(request: KuzzleRequest): Promise<ApiGroupMCreateResult>;
35
+ mUpdate(request: KuzzleRequest): Promise<ApiGroupMUpdateResult>;
36
+ mUpsert(request: KuzzleRequest): Promise<ApiGroupMUpsertResult>;
37
+ }
@@ -0,0 +1,10 @@
1
+ import { DeviceManagerPlugin } from "../plugin";
2
+ import { Module } from "../shared/Module";
3
+ import { KuzzleLogger } from "kuzzle-logger";
4
+ export declare class GroupsModule extends Module {
5
+ private groupsController;
6
+ private groupsService;
7
+ readonly logger: KuzzleLogger;
8
+ constructor(plugin: DeviceManagerPlugin);
9
+ init(): Promise<void>;
10
+ }
@@ -0,0 +1,118 @@
1
+ import { JSONObject, KDocument } from "kuzzle-sdk";
2
+ import { DeviceManagerPlugin } from "../plugin";
3
+ import { BaseService, Metadata, SearchParams } from "../shared";
4
+ import { KuzzleRequest } from "kuzzle";
5
+ import { AssetContent } from "../asset/types/AssetContent";
6
+ import { ApiGroupMCreateResult, ApiGroupMUpdateResult, ApiGroupMUpsertResult, GroupContent } from "./exports";
7
+ import { DeviceContent } from "../device";
8
+ import { KuzzleLogger } from "kuzzle-logger";
9
+ export declare class GroupsService extends BaseService {
10
+ readonly logger: KuzzleLogger;
11
+ constructor(plugin: DeviceManagerPlugin, logger: KuzzleLogger);
12
+ create(_id: string, engineId: string, metadata: JSONObject, model: string, name: string, path: string, request: KuzzleRequest): Promise<KDocument<GroupContent>>;
13
+ get(engineId: string, _id: string, request: KuzzleRequest): Promise<import("kuzzle").KDocument<GroupContent>>;
14
+ update(request: KuzzleRequest, _id: string, engineId: string, name?: string, path?: string, metadata?: Metadata): Promise<import("kuzzle").KDocument<GroupContent>>;
15
+ delete(_id: string, engineId: string, request: KuzzleRequest): Promise<{
16
+ _id: string;
17
+ }>;
18
+ search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<import("kuzzle").SearchResult<import("kuzzle").KHit<GroupContent>>>;
19
+ listItems(engineId: string, _id: string, includeChildren: boolean, options: {
20
+ from?: number;
21
+ size?: number;
22
+ }, request: KuzzleRequest): Promise<{
23
+ assets: {
24
+ hits: import("kuzzle").KHit<AssetContent<any>>[];
25
+ total: number;
26
+ };
27
+ devices: {
28
+ hits: import("kuzzle").KHit<DeviceContent<any>>[];
29
+ total: number;
30
+ };
31
+ }>;
32
+ addAssets(engineId: string, path: string, assetIds: string[], request: KuzzleRequest): Promise<{
33
+ group: import("kuzzle").KDocument<GroupContent>;
34
+ successes: {
35
+ _id: string;
36
+ _source: import("kuzzle").JSONObject;
37
+ _version: number;
38
+ }[];
39
+ errors: {
40
+ document: {
41
+ _id: string;
42
+ body: import("kuzzle").JSONObject;
43
+ };
44
+ status: number;
45
+ reason: string;
46
+ }[];
47
+ }>;
48
+ removeAssets(engineId: string, path: string, assetIds: string[], request: KuzzleRequest): Promise<{
49
+ group: import("kuzzle").KDocument<GroupContent>;
50
+ successes: {
51
+ _id: string;
52
+ _source: import("kuzzle").JSONObject;
53
+ _version: number;
54
+ }[];
55
+ errors: {
56
+ document: {
57
+ _id: string;
58
+ body: import("kuzzle").JSONObject;
59
+ };
60
+ status: number;
61
+ reason: string;
62
+ }[];
63
+ }>;
64
+ addDevices(engineId: string, path: string, deviceIds: string[], request: KuzzleRequest): Promise<{
65
+ group: import("kuzzle").KDocument<GroupContent>;
66
+ successes: {
67
+ _id: string;
68
+ _source: import("kuzzle").JSONObject;
69
+ _version: number;
70
+ }[];
71
+ errors: {
72
+ document: {
73
+ _id: string;
74
+ body: import("kuzzle").JSONObject;
75
+ };
76
+ status: number;
77
+ reason: string;
78
+ }[];
79
+ }>;
80
+ removeDevices(engineId: string, path: string, deviceIds: string[], request: KuzzleRequest): Promise<{
81
+ group: import("kuzzle").KDocument<GroupContent>;
82
+ successes: {
83
+ _id: string;
84
+ _source: import("kuzzle").JSONObject;
85
+ _version: number;
86
+ }[];
87
+ errors: {
88
+ document: {
89
+ _id: string;
90
+ body: import("kuzzle").JSONObject;
91
+ };
92
+ status: number;
93
+ reason: string;
94
+ }[];
95
+ }>;
96
+ mCreate(engineId: string, groups: Array<{
97
+ _id: string;
98
+ metadata: Metadata;
99
+ model: string;
100
+ name: string;
101
+ path: string;
102
+ }>): Promise<ApiGroupMCreateResult>;
103
+ mUpdate(engineId: string, groups: Array<{
104
+ _id: string;
105
+ metadata: Metadata;
106
+ model: string;
107
+ name: string;
108
+ path: string;
109
+ }>, request: KuzzleRequest): Promise<ApiGroupMUpdateResult>;
110
+ mUpsert(engineId: string, groups: Array<{
111
+ _id: string;
112
+ metadata: Metadata;
113
+ model: string;
114
+ name: string;
115
+ path: string;
116
+ }>, request: KuzzleRequest): Promise<ApiGroupMUpsertResult>;
117
+ private _update;
118
+ }
@@ -0,0 +1,2 @@
1
+ import { CollectionMappings } from "kuzzle";
2
+ export declare const groupsMappings: CollectionMappings;
@@ -0,0 +1,5 @@
1
+ export * from "./types/GroupContent";
2
+ export * from "./types/GroupsApi";
3
+ export * from "./roles/RoleGroupsAdmin";
4
+ export * from "./roles/RoleGroupsReader";
5
+ export * from "./collections/groupsMappings";
@@ -0,0 +1,4 @@
1
+ export * from "./collections/groupsMappings";
2
+ export * from "./GroupsModule";
3
+ export * from "./roles/RoleGroupsAdmin";
4
+ export * from "./roles/RoleGroupsReader";
@@ -1,12 +1,12 @@
1
1
  import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
2
  /**
3
- * This role allows to manage assets and their models.
3
+ * This role allows to manage groups and their models.
4
4
  *
5
5
  * It's a tenant role.
6
6
  *
7
7
  * @example
8
8
  *
9
- "device-manager/assets": {
9
+ "device-manager/groups": {
10
10
  actions: {
11
11
  "*": true,
12
12
  },
@@ -21,4 +21,4 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
21
21
  },
22
22
  },
23
23
  */
24
- export declare const RoleAssetsGroupsAdmin: KuzzleRole;
24
+ export declare const RoleGroupsAdmin: KuzzleRole;
@@ -1,12 +1,12 @@
1
1
  import { KuzzleRole } from "../../shared/types/KuzzleRole";
2
2
  /**
3
- * This role allows to manage assets and their models.
3
+ * This role allows to manage groups and their models.
4
4
  *
5
5
  * It's a tenant role.
6
6
  *
7
7
  * @example
8
8
  *
9
- "device-manager/assets": {
9
+ "device-manager/groups": {
10
10
  actions: {
11
11
  "*": true,
12
12
  },
@@ -21,4 +21,4 @@ import { KuzzleRole } from "../../shared/types/KuzzleRole";
21
21
  },
22
22
  },
23
23
  */
24
- export declare const RoleAssetsGroupsReader: KuzzleRole;
24
+ export declare const RoleGroupsReader: KuzzleRole;
@@ -0,0 +1,10 @@
1
+ import { KDocumentContent } from "kuzzle-sdk";
2
+ import { Metadata } from "lib/modules/shared";
3
+ export interface GroupsBody<TMetadata extends Metadata = Metadata> extends KDocumentContent {
4
+ name: string;
5
+ model?: string | null;
6
+ path: string;
7
+ lastUpdate: number;
8
+ metadata?: TMetadata;
9
+ }
10
+ export type GroupContent<TMetadata extends Metadata = any> = GroupsBody<TMetadata>;
@@ -0,0 +1,141 @@
1
+ import { JSONObject, KDocument, KHit, SearchResult, mCreateResponse, mUpdateResponse } from "kuzzle-sdk";
2
+ import { GroupsBody, GroupContent } from "./GroupContent";
3
+ import { DeviceContent } from "lib/modules/device";
4
+ import { AssetContent } from "lib/modules/asset";
5
+ type GroupsRequest = Omit<GroupsBody, "lastUpdate">;
6
+ export type GroupsBodyRequest = Partial<GroupsRequest>;
7
+ export type UpdateLinkResponse = mUpdateResponse & {
8
+ group: KDocument<GroupContent>;
9
+ };
10
+ interface GroupControllerRequest {
11
+ controller: "device-manager/groups";
12
+ engineId: string;
13
+ }
14
+ export interface ApiGroupCreateRequest extends GroupControllerRequest {
15
+ action: "create";
16
+ _id?: string;
17
+ body: GroupsBodyRequest;
18
+ }
19
+ export type ApiGroupCreateResult = KDocument<GroupContent>;
20
+ export interface ApiGroupGetRequest extends GroupControllerRequest {
21
+ action: "get";
22
+ _id: string;
23
+ }
24
+ export type ApiGroupGetResult = KDocument<GroupContent>;
25
+ export interface ApiGroupUpdateRequest extends GroupControllerRequest {
26
+ action: "update";
27
+ _id: string;
28
+ body: GroupsBodyRequest;
29
+ }
30
+ export type ApiGroupUpdateResult = KDocument<GroupContent>;
31
+ export interface ApiGroupUpsertRequest extends GroupControllerRequest {
32
+ action: "upsert";
33
+ _id?: string;
34
+ body: GroupsBodyRequest;
35
+ }
36
+ export type ApiGroupUpsertResult = KDocument<GroupContent>;
37
+ export interface ApiGroupDeleteRequest extends GroupControllerRequest {
38
+ action: "delete";
39
+ _id: string;
40
+ }
41
+ export type ApiGroupDeleteResult = void;
42
+ export interface ApiGroupSearchRequest extends GroupControllerRequest {
43
+ action: "search";
44
+ from?: number;
45
+ size?: number;
46
+ scrollTTL?: string;
47
+ lang?: "koncorde" | "elasticsearch";
48
+ body: JSONObject;
49
+ }
50
+ export type ApiGroupSearchResult = SearchResult<KHit<GroupContent>>;
51
+ export interface ApiGroupListItemsRequest extends GroupControllerRequest {
52
+ action: "listItems";
53
+ from?: number;
54
+ size?: number;
55
+ body: {
56
+ includeChildren?: boolean;
57
+ };
58
+ _id: string;
59
+ }
60
+ export type ApiGroupListItemsResult = {
61
+ assets: {
62
+ hits: Array<KHit<AssetContent>>;
63
+ total: number;
64
+ };
65
+ devices: {
66
+ hits: Array<KHit<DeviceContent>>;
67
+ total: number;
68
+ };
69
+ };
70
+ export interface ApiGroupAddAssetsRequest extends GroupControllerRequest {
71
+ action: "addAssets";
72
+ body: {
73
+ path: string;
74
+ assetIds: string[];
75
+ };
76
+ }
77
+ export type ApiGroupAddAssetsResult = UpdateLinkResponse;
78
+ export interface ApiGroupRemoveAssetsRequest extends GroupControllerRequest {
79
+ action: "removeAssets";
80
+ body: {
81
+ path: string;
82
+ assetIds: string[];
83
+ };
84
+ }
85
+ export type ApiGroupRemoveAssetsResult = UpdateLinkResponse;
86
+ export interface ApiGroupAddDevicesRequest extends GroupControllerRequest {
87
+ action: "addDevices";
88
+ body: {
89
+ path: string;
90
+ deviceIds: string[];
91
+ };
92
+ }
93
+ export type ApiGroupAddDevicesResult = UpdateLinkResponse;
94
+ export interface ApiGroupRemoveDevicesRequest extends GroupControllerRequest {
95
+ action: "removeDevices";
96
+ body: {
97
+ path: string;
98
+ deviceIds: string[];
99
+ };
100
+ }
101
+ export type ApiGroupRemoveDevicesResult = UpdateLinkResponse;
102
+ export interface ApiGroupMCreateRequest extends GroupControllerRequest {
103
+ action: "mCreate";
104
+ body: {
105
+ groups: Array<GroupsBodyRequest & {
106
+ _id?: string;
107
+ }>;
108
+ };
109
+ }
110
+ export type ApiGroupMCreateResult = mCreateResponse & {
111
+ successes: Array<{
112
+ _id: string;
113
+ _source: GroupContent;
114
+ created: boolean;
115
+ }>;
116
+ };
117
+ export interface ApiGroupMUpdateRequest extends GroupControllerRequest {
118
+ action: "mUpdate";
119
+ body: {
120
+ groups: Array<GroupsBody & {
121
+ _id: string;
122
+ }>;
123
+ };
124
+ }
125
+ export type ApiGroupMUpdateResult = {
126
+ errors: mUpdateResponse["errors"];
127
+ successes: KDocument<GroupContent>[];
128
+ };
129
+ export interface ApiGroupMUpsertRequest extends GroupControllerRequest {
130
+ action: "mUpsert";
131
+ body: {
132
+ groups: Array<GroupsBody & {
133
+ _id?: string;
134
+ }>;
135
+ };
136
+ }
137
+ export type ApiGroupMUpsertResult = {
138
+ errors: Array<ApiGroupMCreateResult["errors"][0] | ApiGroupMUpdateResult["errors"][0]>;
139
+ successes: Array<ApiGroupMCreateResult["successes"][0] | ApiGroupMUpdateResult["successes"][0]>;
140
+ };
141
+ export {};