@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/actions.js CHANGED
@@ -400,6 +400,7 @@ var emptyUiPermissions = Object.freeze({
400
400
  deployments: [],
401
401
  groups: Object.freeze({}),
402
402
  releases: Object.freeze({}),
403
+ tenantManagement: [],
403
404
  userManagement: []
404
405
  });
405
406
  var emptyRole = Object.freeze({
@@ -612,6 +613,13 @@ var auditLogsApiUrl = `${apiUrl.v1}/auditlogs`;
612
613
  var tenantadmApiUrlv1 = `${apiUrl.v1}/tenantadm`;
613
614
  var tenantadmApiUrlv2 = `${apiUrl.v2}/tenantadm`;
614
615
  var ssoIdpApiUrlv1 = `${apiUrl.v1}/useradm/sso/idp/metadata`;
616
+ var AUDIT_LOGS_TYPES = [
617
+ { title: "Artifact", queryParameter: "object_type", value: "artifact" },
618
+ { title: "Deployment", queryParameter: "object_deployment_name", value: "deployment" },
619
+ { title: "Device", queryParameter: "object_id", value: "device" },
620
+ { title: "User", queryParameter: "object_id", value: "user" }
621
+ ];
622
+ var SP_AUDIT_LOGS_TYPES = [AUDIT_LOGS_TYPES[3], { title: "Tenant", queryParameter: "object_id", value: "tenant" }];
615
623
  var emptyWebhook = {
616
624
  description: "",
617
625
  enabled: true,
@@ -659,10 +667,12 @@ var permissionSetIds = {
659
667
  DeployToDevices: "DeployToDevices",
660
668
  ManageDevices: "ManageDevices",
661
669
  ManageReleases: "ManageReleases",
670
+ ManageTenants: "ManageTenants",
662
671
  ManageUsers: "ManageUsers",
663
672
  ReadAuditLogs: "ReadAuditLogs",
664
673
  ReadDevices: "ReadDevices",
665
674
  ReadReleases: "ReadReleases",
675
+ ReadTenants: "ReadTenants",
666
676
  ReadUsers: "ReadUsers",
667
677
  SuperUser: "SuperUser",
668
678
  UploadArtifacts: "UploadArtifacts"
@@ -701,6 +711,7 @@ var uiPermissionsById = {
701
711
  permissionSets: {
702
712
  groups: permissionSetIds.ManageDevices,
703
713
  releases: permissionSetIds.ManageReleases,
714
+ tenantManagement: permissionSetIds.ManageTenants,
704
715
  userManagement: permissionSetIds.ManageUsers
705
716
  },
706
717
  title: "Manage",
@@ -714,6 +725,7 @@ var uiPermissionsById = {
714
725
  auditlog: permissionSetIds.ReadAuditLogs,
715
726
  groups: permissionSetIds.ReadDevices,
716
727
  releases: permissionSetIds.ReadReleases,
728
+ tenantManagement: permissionSetIds.ReadTenants,
717
729
  userManagement: permissionSetIds.ReadUsers
718
730
  },
719
731
  title: "Read",
@@ -738,6 +750,7 @@ var uiPermissionsByArea = {
738
750
  auditlog: {
739
751
  endpoints: [{ path: /\/(auditlog)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] }],
740
752
  explanation: "Granting access to the audit log will allow tracing changes to devices, releases and user accounts, as well as providing information about deployments.",
753
+ key: "auditlog",
741
754
  uiPermissions: [uiPermissionsById.read],
742
755
  title: "System audit log"
743
756
  },
@@ -748,6 +761,7 @@ var uiPermissionsByArea = {
748
761
  { path: /\/(deployments\/config)/i, types: [PermissionTypes.Get, PermissionTypes.Put], uiPermissions: [uiPermissionsById.manage] }
749
762
  ],
750
763
  explanation: "Providing deploy permissions will allow deployments to be created using the releases and devices a user has access to.",
764
+ key: "deployments",
751
765
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.deploy],
752
766
  title: "Deployments"
753
767
  },
@@ -763,6 +777,7 @@ var uiPermissionsByArea = {
763
777
  { path: /\/(deviceconnect\/devices)/i, types: [PermissionTypes.Get, PermissionTypes.Post], uiPermissions: [uiPermissionsById.connect] }
764
778
  ],
765
779
  explanation: "Device group management permissions control the degree to which devices in a group can be accessed and moved to other groups.",
780
+ key: "groups",
766
781
  scope: scopedPermissionAreas.groups.scopeType,
767
782
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage, uiPermissionsById.deploy, uiPermissionsById.configure, uiPermissionsById.connect],
768
783
  title: "Group Management"
@@ -782,16 +797,29 @@ var uiPermissionsByArea = {
782
797
  }
783
798
  ],
784
799
  explanation: "Release permissions can be granted to allow artifact & release modifications, as well as the creation of new releases.",
800
+ key: "releases",
785
801
  scope: "ReleaseTags",
786
802
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage, uiPermissionsById.upload],
787
803
  title: "Release Management"
788
804
  },
805
+ tenantManagement: {
806
+ endpoints: [
807
+ { path: /\/(tenantadm\/tenants)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] },
808
+ { path: /\/(tenantadm\/tenants)/i, types: [PermissionTypes.Post, PermissionTypes.Put], uiPermissions: [uiPermissionsById.manage] },
809
+ { path: /\/(users\/exists)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.manage] }
810
+ ],
811
+ explanation: "Tenant management permissions allow listing, creating and modifying child tenants",
812
+ key: "tenantManagement",
813
+ uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage],
814
+ title: "Tenant Management"
815
+ },
789
816
  userManagement: {
790
817
  endpoints: [
791
818
  { path: /\/(useradm)/i, types: [PermissionTypes.Get], uiPermissions: [uiPermissionsById.read] },
792
819
  { path: /\/(useradm)/i, types: [PermissionTypes.Post], uiPermissions: [uiPermissionsById.manage] }
793
820
  ],
794
821
  explanation: "User management permissions should be granted carefully, as these allow privilege increases for any users managed by a user with user management permissions",
822
+ key: "userManagement",
795
823
  uiPermissions: [uiPermissionsById.read, uiPermissionsById.manage],
796
824
  title: "User Management"
797
825
  }
@@ -854,6 +882,30 @@ var rolesById = Object.freeze({
854
882
  })
855
883
  }
856
884
  });
885
+ var serviceProviderRolesById = {
886
+ admin: {
887
+ name: "Admin",
888
+ value: staticRolesByName.admin,
889
+ description: "Full access",
890
+ permissions: [],
891
+ uiPermissions: __spreadProps(__spreadValues({}, emptyUiPermissions), {
892
+ auditlog: uiPermissionsByArea.auditlog.uiPermissions.map(permissionMapper),
893
+ userManagement: uiPermissionsByArea.userManagement.uiPermissions.map(permissionMapper),
894
+ tenantManagement: uiPermissionsByArea.tenantManagement.uiPermissions.map(permissionMapper)
895
+ })
896
+ },
897
+ readOnly: {
898
+ name: "Read access",
899
+ value: staticRolesByName.admin,
900
+ description: "This role can see all linked organizations but cannot make any changes",
901
+ permissions: [],
902
+ uiPermissions: __spreadProps(__spreadValues({}, emptyUiPermissions), {
903
+ auditlog: [uiPermissionsById.read.value],
904
+ userManagement: [uiPermissionsById.read.value],
905
+ tenantManagement: [uiPermissionsById.read.value]
906
+ })
907
+ }
908
+ };
857
909
  var defaultPermissionSets = {
858
910
  [permissionSetIds.Basic]: {
859
911
  name: permissionSetIds.Basic,
@@ -884,6 +936,18 @@ var defaultPermissionSets = {
884
936
  releases: { [ALL_RELEASES]: [uiPermissionsById.read.value] }
885
937
  }
886
938
  },
939
+ [permissionSetIds.ReadTenants]: {
940
+ name: permissionSetIds.ReadTenants,
941
+ result: {
942
+ tenantManagement: [uiPermissionsById.read.value]
943
+ }
944
+ },
945
+ [permissionSetIds.ManageTenants]: {
946
+ name: permissionSetIds.ManageTenants,
947
+ result: {
948
+ tenantManagement: [uiPermissionsById.manage.value]
949
+ }
950
+ },
887
951
  [permissionSetIds.ReadUsers]: {
888
952
  name: permissionSetIds.ReadUsers,
889
953
  result: {
@@ -1452,16 +1516,16 @@ var initialState6 = {
1452
1516
  brand: ""
1453
1517
  },
1454
1518
  intentId: null,
1519
+ tenantList: __spreadProps(__spreadValues({}, TENANT_LIST_DEFAULT), {
1520
+ total: 0,
1521
+ tenants: [],
1522
+ selectedTenant: null,
1523
+ sort: {
1524
+ direction: SORTING_OPTIONS.desc,
1525
+ key: "name"
1526
+ }
1527
+ }),
1455
1528
  organization: {
1456
- tenantList: __spreadProps(__spreadValues({}, TENANT_LIST_DEFAULT), {
1457
- total: 0,
1458
- tenants: [],
1459
- selectedTenant: null,
1460
- sort: {
1461
- direction: SORTING_OPTIONS.desc,
1462
- key: "name"
1463
- }
1464
- })
1465
1529
  // id, name, status, tenant_token, plan
1466
1530
  },
1467
1531
  auditlog: {
@@ -1507,12 +1571,10 @@ var organizationSlice = (0, import_toolkit6.createSlice)({
1507
1571
  state.intentId = action.payload;
1508
1572
  },
1509
1573
  setOrganization: (state, action) => {
1510
- state.organization = __spreadProps(__spreadValues(__spreadValues({}, state.organization), action.payload), {
1511
- tenantList: __spreadValues(__spreadValues({}, state.organization.tenantList), action.payload.tenantList)
1512
- });
1574
+ state.organization = __spreadValues(__spreadValues({}, state.organization), action.payload);
1513
1575
  },
1514
1576
  setTenantListState: (state, action) => {
1515
- state.organization.tenantList = action.payload;
1577
+ state.tenantList = action.payload;
1516
1578
  },
1517
1579
  receiveExternalDeviceIntegrations: (state, action) => {
1518
1580
  state.externalDeviceIntegrations = action.payload;