@northern.tech/store 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/dist/actions.js +75 -13
  2. package/dist/actions.js.map +1 -1
  3. package/dist/actions.mjs +10 -10
  4. package/dist/api/general-api.js +64 -0
  5. package/dist/api/general-api.js.map +1 -1
  6. package/dist/api/general-api.mjs +4 -4
  7. package/dist/api/users-api.js +64 -0
  8. package/dist/api/users-api.js.map +1 -1
  9. package/dist/api/users-api.mjs +5 -5
  10. package/dist/appSlice/index.js +64 -0
  11. package/dist/appSlice/index.js.map +1 -1
  12. package/dist/appSlice/index.mjs +3 -3
  13. package/dist/appSlice/thunks.js +93 -15
  14. package/dist/appSlice/thunks.js.map +1 -1
  15. package/dist/appSlice/thunks.mjs +24 -24
  16. package/dist/auth.js +64 -0
  17. package/dist/auth.js.map +1 -1
  18. package/dist/auth.mjs +3 -3
  19. package/dist/{chunk-HVHZG2H4.mjs → chunk-2HCZYULZ.mjs} +3 -3
  20. package/dist/chunk-2HCZYULZ.mjs.map +1 -0
  21. package/dist/{chunk-R2GBNXLV.mjs → chunk-2P4VECEE.mjs} +3 -3
  22. package/dist/{chunk-HXPYJ6QN.mjs → chunk-4C6IY46N.mjs} +2 -2
  23. package/dist/{chunk-BRHSKNFC.mjs → chunk-4U4X4KAC.mjs} +4 -4
  24. package/dist/{chunk-DZBVTSIX.mjs → chunk-BWFTQHNM.mjs} +2 -2
  25. package/dist/{chunk-BJSH2G7W.mjs → chunk-EFHEROXZ.mjs} +2 -2
  26. package/dist/{chunk-6667TCAJ.mjs → chunk-EM2HUGUY.mjs} +3 -3
  27. package/dist/{chunk-IPPIKGIB.mjs → chunk-ENLZPHTQ.mjs} +8 -8
  28. package/dist/{chunk-IVSYYXTC.mjs → chunk-L4HIW3KB.mjs} +3 -3
  29. package/dist/{chunk-G7LATUT6.mjs → chunk-MJW4632R.mjs} +10 -10
  30. package/dist/{chunk-ZNST5R6O.mjs → chunk-MQIKQKSW.mjs} +61 -2
  31. package/dist/chunk-MQIKQKSW.mjs.map +1 -0
  32. package/dist/{chunk-7E7KJHY3.mjs → chunk-NCI6JV5R.mjs} +2 -2
  33. package/dist/{chunk-G3I53JGW.mjs → chunk-OGAMVFPS.mjs} +2 -1
  34. package/dist/{chunk-G3I53JGW.mjs.map → chunk-OGAMVFPS.mjs.map} +1 -1
  35. package/dist/{chunk-F37LUTBX.mjs → chunk-OWHFMKTA.mjs} +2 -2
  36. package/dist/{chunk-ZIYGEXSJ.mjs → chunk-QG4PT5WK.mjs} +3 -3
  37. package/dist/{chunk-XYVPYFSM.mjs → chunk-RWYS5MKN.mjs} +12 -12
  38. package/dist/{chunk-G32LAKW4.mjs → chunk-U6YTBIDT.mjs} +3 -3
  39. package/dist/{chunk-YNVSU3AA.mjs → chunk-UPMSYTWW.mjs} +22 -22
  40. package/dist/chunk-UPMSYTWW.mjs.map +1 -0
  41. package/dist/{chunk-TD45YTYK.mjs → chunk-WS3YYLTJ.mjs} +14 -16
  42. package/dist/chunk-WS3YYLTJ.mjs.map +1 -0
  43. package/dist/{chunk-HRWZJQMH.mjs → chunk-X65NMDPS.mjs} +3 -3
  44. package/dist/{chunk-O6O3D52B.mjs → chunk-XJNI62IP.mjs} +2 -2
  45. package/dist/{chunk-RQOE5OOT.mjs → chunk-Y47SYXII.mjs} +32 -12
  46. package/dist/chunk-Y47SYXII.mjs.map +1 -0
  47. package/dist/{chunk-N7G6QK2E.mjs → chunk-ZLRZO4EY.mjs} +10 -10
  48. package/dist/{chunk-RH6ONMG7.mjs → chunk-ZZ6VIQ3U.mjs} +3 -3
  49. package/dist/commonConstants.d.mts +18 -19
  50. package/dist/commonConstants.d.ts +18 -19
  51. package/dist/commonConstants.js +1 -0
  52. package/dist/commonConstants.js.map +1 -1
  53. package/dist/commonConstants.mjs +1 -1
  54. package/dist/commonSelectors.d.mts +42 -1
  55. package/dist/commonSelectors.d.ts +42 -1
  56. package/dist/commonSelectors.js +82 -0
  57. package/dist/commonSelectors.js.map +1 -1
  58. package/dist/commonSelectors.mjs +11 -9
  59. package/dist/constants.d.mts +3 -3
  60. package/dist/constants.d.ts +3 -3
  61. package/dist/constants.js +62 -0
  62. package/dist/constants.js.map +1 -1
  63. package/dist/constants.mjs +6 -2
  64. package/dist/deploymentsSlice/constants.js +64 -0
  65. package/dist/deploymentsSlice/constants.js.map +1 -1
  66. package/dist/deploymentsSlice/constants.mjs +2 -2
  67. package/dist/deploymentsSlice/index.js +64 -0
  68. package/dist/deploymentsSlice/index.js.map +1 -1
  69. package/dist/deploymentsSlice/index.mjs +3 -3
  70. package/dist/deploymentsSlice/selectors.js +64 -0
  71. package/dist/deploymentsSlice/selectors.js.map +1 -1
  72. package/dist/deploymentsSlice/selectors.mjs +3 -3
  73. package/dist/deploymentsSlice/thunks.js +93 -15
  74. package/dist/deploymentsSlice/thunks.js.map +1 -1
  75. package/dist/deploymentsSlice/thunks.mjs +24 -24
  76. package/dist/devicesSlice/constants.js +64 -0
  77. package/dist/devicesSlice/constants.js.map +1 -1
  78. package/dist/devicesSlice/constants.mjs +2 -2
  79. package/dist/devicesSlice/index.js +64 -0
  80. package/dist/devicesSlice/index.js.map +1 -1
  81. package/dist/devicesSlice/index.mjs +3 -3
  82. package/dist/devicesSlice/selectors.js +64 -0
  83. package/dist/devicesSlice/selectors.js.map +1 -1
  84. package/dist/devicesSlice/selectors.mjs +3 -3
  85. package/dist/devicesSlice/thunks.js +93 -15
  86. package/dist/devicesSlice/thunks.js.map +1 -1
  87. package/dist/devicesSlice/thunks.mjs +24 -24
  88. package/dist/monitorSlice/constants.js +64 -0
  89. package/dist/monitorSlice/constants.js.map +1 -1
  90. package/dist/monitorSlice/constants.mjs +2 -2
  91. package/dist/monitorSlice/index.js +64 -0
  92. package/dist/monitorSlice/index.js.map +1 -1
  93. package/dist/monitorSlice/index.mjs +3 -3
  94. package/dist/monitorSlice/thunks.js +91 -13
  95. package/dist/monitorSlice/thunks.js.map +1 -1
  96. package/dist/monitorSlice/thunks.mjs +21 -21
  97. package/dist/onboardingSlice/thunks.js +93 -15
  98. package/dist/onboardingSlice/thunks.js.map +1 -1
  99. package/dist/onboardingSlice/thunks.mjs +24 -24
  100. package/dist/organizationSlice/constants.d.mts +6 -1
  101. package/dist/organizationSlice/constants.d.ts +6 -1
  102. package/dist/organizationSlice/constants.js +60 -0
  103. package/dist/organizationSlice/constants.js.map +1 -1
  104. package/dist/organizationSlice/constants.mjs +4 -2
  105. package/dist/organizationSlice/index.d.mts +224 -246
  106. package/dist/organizationSlice/index.d.ts +224 -246
  107. package/dist/organizationSlice/index.js +75 -13
  108. package/dist/organizationSlice/index.js.map +1 -1
  109. package/dist/organizationSlice/index.mjs +3 -3
  110. package/dist/organizationSlice/selectors.js +65 -1
  111. package/dist/organizationSlice/selectors.js.map +1 -1
  112. package/dist/organizationSlice/selectors.mjs +3 -3
  113. package/dist/organizationSlice/thunks.js +93 -15
  114. package/dist/organizationSlice/thunks.js.map +1 -1
  115. package/dist/organizationSlice/thunks.mjs +24 -24
  116. package/dist/releasesSlice/index.js +64 -0
  117. package/dist/releasesSlice/index.js.map +1 -1
  118. package/dist/releasesSlice/index.mjs +3 -3
  119. package/dist/releasesSlice/selectors.js +64 -0
  120. package/dist/releasesSlice/selectors.js.map +1 -1
  121. package/dist/releasesSlice/selectors.mjs +4 -4
  122. package/dist/releasesSlice/thunks.js +91 -13
  123. package/dist/releasesSlice/thunks.js.map +1 -1
  124. package/dist/releasesSlice/thunks.mjs +21 -21
  125. package/dist/selectors.d.mts +1 -1
  126. package/dist/selectors.d.ts +1 -1
  127. package/dist/selectors.js +83 -1
  128. package/dist/selectors.js.map +1 -1
  129. package/dist/selectors.mjs +11 -9
  130. package/dist/store.d.mts +235 -135
  131. package/dist/store.d.ts +235 -135
  132. package/dist/store.js +75 -13
  133. package/dist/store.js.map +1 -1
  134. package/dist/store.mjs +13 -13
  135. package/dist/storehooks.d.mts +3 -1
  136. package/dist/storehooks.d.ts +3 -1
  137. package/dist/storehooks.js +125 -29
  138. package/dist/storehooks.js.map +1 -1
  139. package/dist/storehooks.mjs +59 -39
  140. package/dist/storehooks.mjs.map +1 -1
  141. package/dist/thunks.js +93 -15
  142. package/dist/thunks.js.map +1 -1
  143. package/dist/thunks.mjs +24 -24
  144. package/dist/usersSlice/constants.d.mts +192 -17
  145. package/dist/usersSlice/constants.d.ts +192 -17
  146. package/dist/usersSlice/constants.js +66 -0
  147. package/dist/usersSlice/constants.js.map +1 -1
  148. package/dist/usersSlice/constants.mjs +4 -2
  149. package/dist/usersSlice/index.d.mts +1628 -704
  150. package/dist/usersSlice/index.d.ts +1628 -704
  151. package/dist/usersSlice/index.js +64 -0
  152. package/dist/usersSlice/index.js.map +1 -1
  153. package/dist/usersSlice/index.mjs +3 -3
  154. package/dist/usersSlice/selectors.js +64 -0
  155. package/dist/usersSlice/selectors.js.map +1 -1
  156. package/dist/usersSlice/selectors.mjs +4 -4
  157. package/dist/usersSlice/thunks.js +93 -15
  158. package/dist/usersSlice/thunks.js.map +1 -1
  159. package/dist/usersSlice/thunks.mjs +24 -24
  160. package/dist/utils.d.mts +6 -5
  161. package/dist/utils.d.ts +6 -5
  162. package/dist/utils.js +64 -0
  163. package/dist/utils.js.map +1 -1
  164. package/dist/utils.mjs +3 -3
  165. package/package.json +1 -1
  166. package/dist/chunk-HVHZG2H4.mjs.map +0 -1
  167. package/dist/chunk-RQOE5OOT.mjs.map +0 -1
  168. package/dist/chunk-TD45YTYK.mjs.map +0 -1
  169. package/dist/chunk-YNVSU3AA.mjs.map +0 -1
  170. package/dist/chunk-ZNST5R6O.mjs.map +0 -1
  171. /package/dist/{chunk-R2GBNXLV.mjs.map → chunk-2P4VECEE.mjs.map} +0 -0
  172. /package/dist/{chunk-HXPYJ6QN.mjs.map → chunk-4C6IY46N.mjs.map} +0 -0
  173. /package/dist/{chunk-BRHSKNFC.mjs.map → chunk-4U4X4KAC.mjs.map} +0 -0
  174. /package/dist/{chunk-DZBVTSIX.mjs.map → chunk-BWFTQHNM.mjs.map} +0 -0
  175. /package/dist/{chunk-BJSH2G7W.mjs.map → chunk-EFHEROXZ.mjs.map} +0 -0
  176. /package/dist/{chunk-6667TCAJ.mjs.map → chunk-EM2HUGUY.mjs.map} +0 -0
  177. /package/dist/{chunk-IPPIKGIB.mjs.map → chunk-ENLZPHTQ.mjs.map} +0 -0
  178. /package/dist/{chunk-IVSYYXTC.mjs.map → chunk-L4HIW3KB.mjs.map} +0 -0
  179. /package/dist/{chunk-G7LATUT6.mjs.map → chunk-MJW4632R.mjs.map} +0 -0
  180. /package/dist/{chunk-7E7KJHY3.mjs.map → chunk-NCI6JV5R.mjs.map} +0 -0
  181. /package/dist/{chunk-F37LUTBX.mjs.map → chunk-OWHFMKTA.mjs.map} +0 -0
  182. /package/dist/{chunk-ZIYGEXSJ.mjs.map → chunk-QG4PT5WK.mjs.map} +0 -0
  183. /package/dist/{chunk-XYVPYFSM.mjs.map → chunk-RWYS5MKN.mjs.map} +0 -0
  184. /package/dist/{chunk-G32LAKW4.mjs.map → chunk-U6YTBIDT.mjs.map} +0 -0
  185. /package/dist/{chunk-HRWZJQMH.mjs.map → chunk-X65NMDPS.mjs.map} +0 -0
  186. /package/dist/{chunk-O6O3D52B.mjs.map → chunk-XJNI62IP.mjs.map} +0 -0
  187. /package/dist/{chunk-N7G6QK2E.mjs.map → chunk-ZLRZO4EY.mjs.map} +0 -0
  188. /package/dist/{chunk-RH6ONMG7.mjs.map → chunk-ZZ6VIQ3U.mjs.map} +0 -0
package/dist/store.js CHANGED
@@ -405,6 +405,7 @@ var emptyUiPermissions = Object.freeze({
405
405
  deployments: [],
406
406
  groups: Object.freeze({}),
407
407
  releases: Object.freeze({}),
408
+ tenantManagement: [],
408
409
  userManagement: []
409
410
  });
410
411
  var emptyRole = Object.freeze({
@@ -617,6 +618,13 @@ var auditLogsApiUrl = `${apiUrl.v1}/auditlogs`;
617
618
  var tenantadmApiUrlv1 = `${apiUrl.v1}/tenantadm`;
618
619
  var tenantadmApiUrlv2 = `${apiUrl.v2}/tenantadm`;
619
620
  var ssoIdpApiUrlv1 = `${apiUrl.v1}/useradm/sso/idp/metadata`;
621
+ var AUDIT_LOGS_TYPES = [
622
+ { title: "Artifact", queryParameter: "object_type", value: "artifact" },
623
+ { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
624
+ { title: "Device", queryParameter: "object_id", value: "device" },
625
+ { title: "User", queryParameter: "object_id", value: "user" }
626
+ ];
627
+ var SP_AUDIT_LOGS_TYPES = [AUDIT_LOGS_TYPES[3], { title: "Tenant", queryParameter: "object_id", value: "tenant" }];
620
628
  var emptyWebhook = {
621
629
  description: "",
622
630
  enabled: true,
@@ -664,10 +672,12 @@ var permissionSetIds = {
664
672
  DeployToDevices: "DeployToDevices",
665
673
  ManageDevices: "ManageDevices",
666
674
  ManageReleases: "ManageReleases",
675
+ ManageTenants: "ManageTenants",
667
676
  ManageUsers: "ManageUsers",
668
677
  ReadAuditLogs: "ReadAuditLogs",
669
678
  ReadDevices: "ReadDevices",
670
679
  ReadReleases: "ReadReleases",
680
+ ReadTenants: "ReadTenants",
671
681
  ReadUsers: "ReadUsers",
672
682
  SuperUser: "SuperUser",
673
683
  UploadArtifacts: "UploadArtifacts"
@@ -706,6 +716,7 @@ var uiPermissionsById = {
706
716
  permissionSets: {
707
717
  groups: permissionSetIds.ManageDevices,
708
718
  releases: permissionSetIds.ManageReleases,
719
+ tenantManagement: permissionSetIds.ManageTenants,
709
720
  userManagement: permissionSetIds.ManageUsers
710
721
  },
711
722
  title: "Manage",
@@ -719,6 +730,7 @@ var uiPermissionsById = {
719
730
  auditlog: permissionSetIds.ReadAuditLogs,
720
731
  groups: permissionSetIds.ReadDevices,
721
732
  releases: permissionSetIds.ReadReleases,
733
+ tenantManagement: permissionSetIds.ReadTenants,
722
734
  userManagement: permissionSetIds.ReadUsers
723
735
  },
724
736
  title: "Read",
@@ -743,6 +755,7 @@ var uiPermissionsByArea = {
743
755
  auditlog: {
744
756
  endpoints: [{ path: /\/(auditlog)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] }],
745
757
  explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
758
+ key: "auditlog",
746
759
  uiPermissions: [uiPermissionsById.read],
747
760
  title: "System audit log"
748
761
  },
@@ -753,6 +766,7 @@ var uiPermissionsByArea = {
753
766
  { path: /\/(deployments\/config)/i, types: [PermissionTypes.Get, PermissionTypes.Put], uiPermissions: [uiPermissionsById.manage] }
754
767
  ],
755
768
  explanation: "Providing deploy permissions will allow deployments to be created using the releases and devices a user has access to.",
769
+ key: "deployments",
756
770
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.deploy],
757
771
  title: "Deployments"
758
772
  },
@@ -768,6 +782,7 @@ var uiPermissionsByArea = {
768
782
  { path: /\/(deviceconnect\/devices)/i, types: [PermissionTypes.Get, PermissionTypes.Post], uiPermissions: [uiPermissionsById.connect] }
769
783
  ],
770
784
  explanation: "Device group management permissions control the degree to which devices in a group can be accessed and moved to other groups.",
785
+ key: "groups",
771
786
  scope: scopedPermissionAreas.groups.scopeType,
772
787
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage, uiPermissionsById.deploy, uiPermissionsById.configure, uiPermissionsById.connect],
773
788
  title: "Group Management"
@@ -787,16 +802,29 @@ var uiPermissionsByArea = {
787
802
  }
788
803
  ],
789
804
  explanation: "Release permissions can be granted to allow artifact & release modifications, as well as the creation of new releases.",
805
+ key: "releases",
790
806
  scope: "ReleaseTags",
791
807
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage, uiPermissionsById.upload],
792
808
  title: "Release Management"
793
809
  },
810
+ tenantManagement: {
811
+ endpoints: [
812
+ { path: /\/(tenantadm\/tenants)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] },
813
+ { path: /\/(tenantadm\/tenants)/i, types: [PermissionTypes.Post, PermissionTypes.Put], uiPermissions: [uiPermissionsById.manage] },
814
+ { path: /\/(users\/exists)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.manage] }
815
+ ],
816
+ explanation: "Tenant management permissions allow listing, creating and modifying child tenants",
817
+ key: "tenantManagement",
818
+ uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage],
819
+ title: "Tenant Management"
820
+ },
794
821
  userManagement: {
795
822
  endpoints: [
796
823
  { path: /\/(useradm)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] },
797
824
  { path: /\/(useradm)/i, types: [PermissionTypes.Post], uiPermissions: [uiPermissionsById.manage] }
798
825
  ],
799
826
  explanation: "User management permissions should be granted carefully, as these allow privilege increases for any users managed by a user with user management permissions",
827
+ key: "userManagement",
800
828
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage],
801
829
  title: "User Management"
802
830
  }
@@ -859,6 +887,30 @@ var rolesById = Object.freeze({
859
887
  })
860
888
  }
861
889
  });
890
+ var serviceProviderRolesById = {
891
+ admin: {
892
+ name: "Admin",
893
+ value: staticRolesByName.admin,
894
+ description: "Full access",
895
+ permissions: [],
896
+ uiPermissions: __spreadProps(__spreadValues({}, emptyUiPermissions), {
897
+ auditlog: uiPermissionsByArea.auditlog.uiPermissions.map(permissionMapper),
898
+ userManagement: uiPermissionsByArea.userManagement.uiPermissions.map(permissionMapper),
899
+ tenantManagement: uiPermissionsByArea.tenantManagement.uiPermissions.map(permissionMapper)
900
+ })
901
+ },
902
+ readOnly: {
903
+ name: "Read access",
904
+ value: staticRolesByName.admin,
905
+ description: "This role can see all linked organizations but cannot make any changes",
906
+ permissions: [],
907
+ uiPermissions: __spreadProps(__spreadValues({}, emptyUiPermissions), {
908
+ auditlog: [uiPermissionsById.read.value],
909
+ userManagement: [uiPermissionsById.read.value],
910
+ tenantManagement: [uiPermissionsById.read.value]
911
+ })
912
+ }
913
+ };
862
914
  var defaultPermissionSets = {
863
915
  [permissionSetIds.Basic]: {
864
916
  name: permissionSetIds.Basic,
@@ -889,6 +941,18 @@ var defaultPermissionSets = {
889
941
  releases: { [ALL_RELEASES]: [uiPermissionsById.read.value] }
890
942
  }
891
943
  },
944
+ [permissionSetIds.ReadTenants]: {
945
+ name: permissionSetIds.ReadTenants,
946
+ result: {
947
+ tenantManagement: [uiPermissionsById.read.value]
948
+ }
949
+ },
950
+ [permissionSetIds.ManageTenants]: {
951
+ name: permissionSetIds.ManageTenants,
952
+ result: {
953
+ tenantManagement: [uiPermissionsById.manage.value]
954
+ }
955
+ },
892
956
  [permissionSetIds.ReadUsers]: {
893
957
  name: permissionSetIds.ReadUsers,
894
958
  result: {
@@ -1459,16 +1523,16 @@ var initialState6 = {
1459
1523
  brand: ""
1460
1524
  },
1461
1525
  intentId: null,
1526
+ tenantList: __spreadProps(__spreadValues({}, TENANT_LIST_DEFAULT), {
1527
+ total: 0,
1528
+ tenants: [],
1529
+ selectedTenant: null,
1530
+ sort: {
1531
+ direction: SORTING_OPTIONS.desc,
1532
+ key: "name"
1533
+ }
1534
+ }),
1462
1535
  organization: {
1463
- tenantList: __spreadProps(__spreadValues({}, TENANT_LIST_DEFAULT), {
1464
- total: 0,
1465
- tenants: [],
1466
- selectedTenant: null,
1467
- sort: {
1468
- direction: SORTING_OPTIONS.desc,
1469
- key: "name"
1470
- }
1471
- })
1472
1536
  // id, name, status, tenant_token, plan
1473
1537
  },
1474
1538
  auditlog: {
@@ -1514,12 +1578,10 @@ var organizationSlice = (0, import_toolkit6.createSlice)({
1514
1578
  state.intentId = action.payload;
1515
1579
  },
1516
1580
  setOrganization: (state, action) => {
1517
- state.organization = __spreadProps(__spreadValues(__spreadValues({}, state.organization), action.payload), {
1518
- tenantList: __spreadValues(__spreadValues({}, state.organization.tenantList), action.payload.tenantList)
1519
- });
1581
+ state.organization = __spreadValues(__spreadValues({}, state.organization), action.payload);
1520
1582
  },
1521
1583
  setTenantListState: (state, action) => {
1522
- state.organization.tenantList = action.payload;
1584
+ state.tenantList = action.payload;
1523
1585
  },
1524
1586
  receiveExternalDeviceIntegrations: (state, action) => {
1525
1587
  state.externalDeviceIntegrations = action.payload;