@espressif/rainmaker-admin-sdk 1.1.1 → 1.3.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 (119) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +2 -1
  3. package/dist/cjs/ESPRMBase.cjs +1 -0
  4. package/dist/cjs/ESPRMClaim.cjs +16 -0
  5. package/dist/cjs/entries/ESPRMAdminCommonCustomData.cjs +1 -0
  6. package/dist/cjs/entries/ESPRMAdminNode.cjs +2 -0
  7. package/dist/cjs/entries/ESPRMAdminNodeRegistration.cjs +3 -0
  8. package/dist/cjs/entries/ESPRMClaim.cjs +14 -0
  9. package/dist/cjs/index.cjs +11 -0
  10. package/dist/cjs/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.cjs +24 -0
  11. package/dist/cjs/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.cjs +7 -0
  12. package/dist/cjs/methods/ESPRMAdminNode/ActivateDeactivateNodes.cjs +11 -1
  13. package/dist/cjs/methods/ESPRMAdminNode/CancelCommandRequests.cjs +27 -0
  14. package/dist/cjs/methods/ESPRMAdminNode/DeleteNode.cjs +24 -0
  15. package/dist/cjs/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.cjs +25 -0
  16. package/dist/cjs/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.cjs +24 -0
  17. package/dist/cjs/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.cjs +21 -0
  18. package/dist/cjs/methods/ESPRMClaim/InitiateClaim.cjs +28 -0
  19. package/dist/cjs/methods/ESPRMClaim/VerifyClaim.cjs +28 -0
  20. package/dist/cjs/services/ESPRMAPIManager.cjs +15 -1
  21. package/dist/cjs/utils/constants.cjs +17 -0
  22. package/dist/cjs/utils/error/errorMessages.cjs +11 -0
  23. package/dist/cjs/utils/validator/ConfigValidator.cjs +9 -0
  24. package/dist/esm/ESPRMBase.js +1 -0
  25. package/dist/esm/ESPRMClaim.js +14 -0
  26. package/dist/esm/entries/ESPRMAdminCommonCustomData.js +1 -0
  27. package/dist/esm/entries/ESPRMAdminNode.js +2 -0
  28. package/dist/esm/entries/ESPRMAdminNodeRegistration.js +3 -0
  29. package/dist/esm/entries/ESPRMClaim.js +8 -0
  30. package/dist/esm/index.js +10 -1
  31. package/dist/esm/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.js +22 -0
  32. package/dist/esm/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.js +8 -1
  33. package/dist/esm/methods/ESPRMAdminNode/ActivateDeactivateNodes.js +12 -2
  34. package/dist/esm/methods/ESPRMAdminNode/CancelCommandRequests.js +25 -0
  35. package/dist/esm/methods/ESPRMAdminNode/DeleteNode.js +22 -0
  36. package/dist/esm/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.js +23 -0
  37. package/dist/esm/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.js +22 -0
  38. package/dist/esm/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.js +19 -0
  39. package/dist/esm/methods/ESPRMClaim/InitiateClaim.js +26 -0
  40. package/dist/esm/methods/ESPRMClaim/VerifyClaim.js +26 -0
  41. package/dist/esm/services/ESPRMAPIManager.js +15 -1
  42. package/dist/esm/utils/constants.js +17 -1
  43. package/dist/esm/utils/error/errorMessages.js +11 -0
  44. package/dist/esm/utils/validator/ConfigValidator.js +9 -0
  45. package/dist/types/ESPRMClaim.d.ts +12 -0
  46. package/dist/types/entries/ESPRMClaim.d.ts +7 -0
  47. package/dist/types/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.d.ts +22 -0
  48. package/dist/types/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.d.ts +6 -1
  49. package/dist/types/methods/ESPRMAdminCommonCustomData/index.d.ts +1 -0
  50. package/dist/types/methods/ESPRMAdminEventFilter/UpdateEventFilter.d.ts +5 -0
  51. package/dist/types/methods/ESPRMAdminNode/ActivateDeactivateNodes.d.ts +9 -6
  52. package/dist/types/methods/ESPRMAdminNode/CancelCommandRequests.d.ts +22 -0
  53. package/dist/types/methods/ESPRMAdminNode/DeleteNode.d.ts +19 -0
  54. package/dist/types/methods/ESPRMAdminNode/index.d.ts +2 -0
  55. package/dist/types/methods/ESPRMAdminNodeRegistration/GetMQTTHost.d.ts +3 -2
  56. package/dist/types/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.d.ts +18 -0
  57. package/dist/types/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.d.ts +17 -0
  58. package/dist/types/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.d.ts +19 -0
  59. package/dist/types/methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.d.ts +6 -6
  60. package/dist/types/methods/ESPRMAdminNodeRegistration/index.d.ts +3 -0
  61. package/dist/types/methods/ESPRMAdminWebhook/GetWebhookIntegrations.d.ts +2 -1
  62. package/dist/types/methods/ESPRMClaim/InitiateClaim.d.ts +21 -0
  63. package/dist/types/methods/ESPRMClaim/VerifyClaim.d.ts +21 -0
  64. package/dist/types/methods/ESPRMClaim/index.d.ts +7 -0
  65. package/dist/types/methods/export.d.ts +1 -0
  66. package/dist/types/services/ESPRMAPIManager.d.ts +6 -0
  67. package/dist/types/types/claim.d.ts +45 -0
  68. package/dist/types/types/command_response.d.ts +56 -7
  69. package/dist/types/types/common_custom_data.d.ts +32 -5
  70. package/dist/types/types/config.d.ts +9 -0
  71. package/dist/types/types/event_filter.d.ts +17 -3
  72. package/dist/types/types/index.d.ts +1 -0
  73. package/dist/types/types/input.d.ts +3 -2
  74. package/dist/types/types/mainTypes.d.ts +2 -1
  75. package/dist/types/types/node.d.ts +33 -3
  76. package/dist/types/types/node_registration.d.ts +164 -12
  77. package/dist/types/types/output.d.ts +3 -2
  78. package/dist/types/types/webhook.d.ts +5 -2
  79. package/dist/types/utils/constants.d.ts +17 -1
  80. package/dist/types/utils/error/errorMessages.d.ts +11 -0
  81. package/dist/types/utils/validator/ConfigValidator.d.ts +1 -0
  82. package/dist/types-cjs/ESPRMClaim.d.cts +12 -0
  83. package/dist/types-cjs/entries/ESPRMClaim.d.cts +7 -0
  84. package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.d.cts +22 -0
  85. package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.d.cts +6 -1
  86. package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/index.d.cts +1 -0
  87. package/dist/types-cjs/methods/ESPRMAdminEventFilter/UpdateEventFilter.d.cts +5 -0
  88. package/dist/types-cjs/methods/ESPRMAdminNode/ActivateDeactivateNodes.d.cts +9 -6
  89. package/dist/types-cjs/methods/ESPRMAdminNode/CancelCommandRequests.d.cts +22 -0
  90. package/dist/types-cjs/methods/ESPRMAdminNode/DeleteNode.d.cts +19 -0
  91. package/dist/types-cjs/methods/ESPRMAdminNode/index.d.cts +2 -0
  92. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetMQTTHost.d.cts +3 -2
  93. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.d.cts +18 -0
  94. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.d.cts +17 -0
  95. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.d.cts +19 -0
  96. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.d.cts +6 -6
  97. package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/index.d.cts +3 -0
  98. package/dist/types-cjs/methods/ESPRMAdminWebhook/GetWebhookIntegrations.d.cts +2 -1
  99. package/dist/types-cjs/methods/ESPRMClaim/InitiateClaim.d.cts +21 -0
  100. package/dist/types-cjs/methods/ESPRMClaim/VerifyClaim.d.cts +21 -0
  101. package/dist/types-cjs/methods/ESPRMClaim/index.d.cts +7 -0
  102. package/dist/types-cjs/methods/export.d.cts +1 -0
  103. package/dist/types-cjs/services/ESPRMAPIManager.d.cts +6 -0
  104. package/dist/types-cjs/types/claim.d.cts +45 -0
  105. package/dist/types-cjs/types/command_response.d.cts +56 -7
  106. package/dist/types-cjs/types/common_custom_data.d.cts +32 -5
  107. package/dist/types-cjs/types/config.d.cts +9 -0
  108. package/dist/types-cjs/types/event_filter.d.cts +17 -3
  109. package/dist/types-cjs/types/index.d.cts +1 -0
  110. package/dist/types-cjs/types/input.d.cts +3 -2
  111. package/dist/types-cjs/types/mainTypes.d.cts +2 -1
  112. package/dist/types-cjs/types/node.d.cts +33 -3
  113. package/dist/types-cjs/types/node_registration.d.cts +164 -12
  114. package/dist/types-cjs/types/output.d.cts +3 -2
  115. package/dist/types-cjs/types/webhook.d.cts +5 -2
  116. package/dist/types-cjs/utils/constants.d.cts +17 -1
  117. package/dist/types-cjs/utils/error/errorMessages.d.cts +11 -0
  118. package/dist/types-cjs/utils/validator/ConfigValidator.d.cts +1 -0
  119. package/package.json +11 -1
@@ -70,6 +70,7 @@ const APIEndpoints = {
70
70
  ADMIN_NODE_IDS: "admin/node_ids",
71
71
  ADMIN_NODE_CERTIFICATES: "admin/node_certificates",
72
72
  ADMIN_NODE_CERTIFICATES_REGISTER: "admin/node_certificates/register",
73
+ ADMIN_NODE_REGISTRATION_REQUESTS: "admin/node_registrations/requests",
73
74
  ADMIN_API_STATS: "admin/api_stats",
74
75
  ADMIN_MQTT_STATS: "admin/mqtt_stats",
75
76
  ADMIN_CHANGE_SUPER_ADMIN: "admin/change_super_admin",
@@ -95,6 +96,8 @@ const APIEndpoints = {
95
96
  ADMIN_MATTER_BATCH: "admin/matter/batch",
96
97
  ADMIN_MATTER_BATCH_NODES: "admin/matter/batch/nodes",
97
98
  ADMIN_MAIL_FAILURES: "admin/mail_failures",
99
+ CLAIM_INITIATE: "claim/initiate",
100
+ CLAIM_VERIFY: "claim/verify",
98
101
  };
99
102
  const StorageKeys = {
100
103
  ACCESSTOKEN: "com.esprmbase.accessToken",
@@ -105,6 +108,8 @@ const ConfigErrorCodes = {
105
108
  SDK_NOT_CONFIGURED: "SDK_NOT_CONFIGURED",
106
109
  INVALID_CONFIG_OBJECT: "INVALID_CONFIG_OBJECT",
107
110
  INVALID_BASE_URL: "INVALID_BASE_URL",
111
+ INVALID_CLAIMING_BASE_URL: "INVALID_CLAIMING_BASE_URL",
112
+ CLAIMING_NOT_CONFIGURED: "CLAIMING_NOT_CONFIGURED",
108
113
  };
109
114
  const ValidationErrorCodes = {
110
115
  MISSING_LOGIN_PASSWORD: "MISSING_LOGIN_PASSWORD",
@@ -150,6 +155,15 @@ const APICallValidationErrorCodes = {
150
155
  MISSING_PLATFORM_NAME: "MISSING_PLATFORM_NAME",
151
156
  MISSING_PLATFORM_APPLICATION_ARN: "MISSING_PLATFORM_APPLICATION_ARN",
152
157
  MISSING_BATCH_ID: "MISSING_BATCH_ID",
158
+ MISSING_CANCEL_COMMAND_SCOPE: "MISSING_CANCEL_COMMAND_SCOPE",
159
+ CMD_ID_REQUIRES_NODE_ID: "CMD_ID_REQUIRES_NODE_ID",
160
+ MISSING_COMMON_CUSTOM_DATA_NAME: "MISSING_COMMON_CUSTOM_DATA_NAME",
161
+ MISSING_COMMON_CUSTOM_DATA_VALUE: "MISSING_COMMON_CUSTOM_DATA_VALUE",
162
+ MISSING_MAC_ADDRESS: "MISSING_MAC_ADDRESS",
163
+ MISSING_CLAIM_PLATFORM: "MISSING_CLAIM_PLATFORM",
164
+ MISSING_CSR: "MISSING_CSR",
165
+ MISSING_NODE_IDS: "MISSING_NODE_IDS",
166
+ TOO_MANY_NODE_IDS: "TOO_MANY_NODE_IDS",
153
167
  };
154
168
  const TokenErrorCodes = {
155
169
  MISSING_ACCESS_TOKEN: "MISSING_ACCESS_TOKEN",
@@ -175,6 +189,8 @@ const DEFAULT_REST_API_VERSION = "v1";
175
189
  const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
176
190
  /** Tokens expiring within this many seconds are refreshed proactively. */
177
191
  const TOKEN_EXPIRY_MARGIN_SECONDS = 30;
192
+ /** Backend limit on node IDs per `PUT admin/nodes` activation request. */
193
+ const MAX_NODE_ACTIVATION_BATCH_SIZE = 25;
178
194
  /** errorCode values the SDK itself sets on ESPAPIError for non-HTTP failures. */
179
195
  const APIErrorCodes = {
180
196
  REQUEST_TIMEOUT: "REQUEST_TIMEOUT",
@@ -191,6 +207,7 @@ exports.DEFAULT_REST_API_VERSION = DEFAULT_REST_API_VERSION;
191
207
  exports.ErrorLabels = ErrorLabels;
192
208
  exports.HTTPMethods = HTTPMethods;
193
209
  exports.HTTPStatusCodes = HTTPStatusCodes;
210
+ exports.MAX_NODE_ACTIVATION_BATCH_SIZE = MAX_NODE_ACTIVATION_BATCH_SIZE;
194
211
  exports.StorageAdapterErrorCodes = StorageAdapterErrorCodes;
195
212
  exports.StorageKeys = StorageKeys;
196
213
  exports.TOKEN_EXPIRY_MARGIN_SECONDS = TOKEN_EXPIRY_MARGIN_SECONDS;
@@ -9,6 +9,8 @@ const configErrorMessages = {
9
9
  SDK_NOT_CONFIGURED: "ESPRMBase is not configured yet",
10
10
  INVALID_CONFIG_OBJECT: "Configuration Error: Config must be a non-null object.",
11
11
  INVALID_BASE_URL: "Configuration Error: BaseUrl must be a non-empty valid URL string.",
12
+ INVALID_CLAIMING_BASE_URL: "Configuration Error: claimingBaseUrl must be a non-empty valid URL string.",
13
+ CLAIMING_NOT_CONFIGURED: "Configuration Error: claimingBaseUrl is not configured. Pass it to ESPRMBase.configure to use ESPRMClaim.",
12
14
  };
13
15
  const validationErrorMessages = {
14
16
  MISSING_LOGIN_PASSWORD: "Validation Error: Password is required.",
@@ -20,6 +22,8 @@ const storageAdapterErrorMessages = {
20
22
  };
21
23
  const apiCallValidationErrorMessages = {
22
24
  MISSING_NODE_ID: "ESPAPICallValidationError: Node ID is required.",
25
+ MISSING_NODE_IDS: "ESPAPICallValidationError: At least one node ID is required.",
26
+ TOO_MANY_NODE_IDS: "ESPAPICallValidationError: Too many node IDs; at most 25 are allowed per request.",
23
27
  MISSING_OTA_IMAGE_ID: "ESPAPICallValidationError: OTA image ID is required.",
24
28
  MISSING_ARCHIVE_FLAG: "ESPAPICallValidationError: Archive flag is required and must be a boolean.",
25
29
  MISSING_OTA_JOB_ID: "ESPAPICallValidationError: OTA job ID is required.",
@@ -54,6 +58,13 @@ const apiCallValidationErrorMessages = {
54
58
  MISSING_PLATFORM_NAME: "ESPAPICallValidationError: Platform name is required.",
55
59
  MISSING_PLATFORM_APPLICATION_ARN: "ESPAPICallValidationError: Platform application ARN is required.",
56
60
  MISSING_BATCH_ID: "ESPAPICallValidationError: Batch ID is required.",
61
+ MISSING_CANCEL_COMMAND_SCOPE: "ESPAPICallValidationError: Request ID or node ID is required.",
62
+ CMD_ID_REQUIRES_NODE_ID: "ESPAPICallValidationError: Command ID can only be used together with a node ID.",
63
+ MISSING_COMMON_CUSTOM_DATA_NAME: "ESPAPICallValidationError: Common custom data name is required.",
64
+ MISSING_COMMON_CUSTOM_DATA_VALUE: "ESPAPICallValidationError: Common custom data value is required. Use deleteCommonCustomData to delete an entry.",
65
+ MISSING_MAC_ADDRESS: "ESPAPICallValidationError: MAC address is required (12 uppercase hex characters, no separators).",
66
+ MISSING_CLAIM_PLATFORM: "ESPAPICallValidationError: Claim platform is required.",
67
+ MISSING_CSR: "ESPAPICallValidationError: Certificate signing request (CSR) is required.",
57
68
  };
58
69
  const tokenErrorMessages = {
59
70
  MISSING_ACCESS_TOKEN: "ESPTokenError: Access token is missing. User needs to authenticate.",
@@ -13,12 +13,21 @@ class ConfigValidator {
13
13
  static validateConfig(config) {
14
14
  ConfigValidator.validateConfigObject(config);
15
15
  ConfigValidator.validateBaseUrl(config.baseUrl);
16
+ ConfigValidator.validateClaimingBaseUrl(config.claimingBaseUrl);
16
17
  }
17
18
  static validateConfigObject(config) {
18
19
  if (!validators.isValidObject(config)) {
19
20
  throw new ESPConfigError.ESPConfigError(constants.ConfigErrorCodes.INVALID_CONFIG_OBJECT);
20
21
  }
21
22
  }
23
+ static validateClaimingBaseUrl(claimingBaseUrl) {
24
+ if (claimingBaseUrl === undefined) {
25
+ return;
26
+ }
27
+ if (!validators.isNonEmptyString(claimingBaseUrl) || !validators.isValidUrl(claimingBaseUrl)) {
28
+ throw new ESPConfigError.ESPConfigError(constants.ConfigErrorCodes.INVALID_CLAIMING_BASE_URL);
29
+ }
30
+ }
22
31
  static validateBaseUrl(baseUrl) {
23
32
  if (!validators.isNonEmptyString(baseUrl) || !validators.isValidUrl(baseUrl)) {
24
33
  throw new ESPConfigError.ESPConfigError(constants.ConfigErrorCodes.INVALID_BASE_URL);
@@ -36,6 +36,7 @@ class ESPRMBase {
36
36
  baseUrl: config.baseUrl,
37
37
  version,
38
38
  timeoutMs: config.timeoutMs,
39
+ claimingBaseUrl: config.claimingBaseUrl,
39
40
  });
40
41
  ESPRMStorage.initialize(config.customStorageAdapter);
41
42
  }
@@ -0,0 +1,14 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Shell class for the standalone ESP RainMaker claiming service.
8
+ * Requires `claimingBaseUrl` in {@link ESPRMBase.configure}.
9
+ * Methods are added via prototype augmentation in methods/ESPRMClaim/*.
10
+ */
11
+ class ESPRMClaim {
12
+ }
13
+
14
+ export { ESPRMClaim };
@@ -5,4 +5,5 @@
5
5
  */
6
6
  import '../methods/ESPRMAdminCommonCustomData/SetCommonCustomData.js';
7
7
  import '../methods/ESPRMAdminCommonCustomData/GetCommonCustomData.js';
8
+ import '../methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.js';
8
9
  export { ESPRMAdminCommonCustomData } from '../ESPRMAdminCommonCustomData.js';
@@ -7,9 +7,11 @@ import '../methods/ESPRMAdminNode/GetNodes.js';
7
7
  import '../methods/ESPRMAdminNode/ActivateDeactivateNodes.js';
8
8
  import '../methods/ESPRMAdminNode/AttachNodeTags.js';
9
9
  import '../methods/ESPRMAdminNode/RemoveNodeTags.js';
10
+ import '../methods/ESPRMAdminNode/DeleteNode.js';
10
11
  import '../methods/ESPRMAdminNode/GetNodeTags.js';
11
12
  import '../methods/ESPRMAdminNode/GetCommandRequests.js';
12
13
  import '../methods/ESPRMAdminNode/AddCommandRequest.js';
14
+ import '../methods/ESPRMAdminNode/CancelCommandRequests.js';
13
15
  import '../methods/ESPRMAdminNode/GetTimeSeriesData.js';
14
16
  import '../methods/ESPRMAdminNode/GetSimpleTimeSeriesData.js';
15
17
  export { ESPRMAdminNode } from '../ESPRMAdminNode.js';
@@ -8,6 +8,9 @@ import '../methods/ESPRMAdminNodeRegistration/GetNodeIds.js';
8
8
  import '../methods/ESPRMAdminNodeRegistration/GetNodeCertificates.js';
9
9
  import '../methods/ESPRMAdminNodeRegistration/GetNodeCertificateRegistrationStatus.js';
10
10
  import '../methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.js';
11
+ import '../methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.js';
11
12
  import '../methods/ESPRMAdminNodeRegistration/GetMQTTHost.js';
12
13
  import '../methods/ESPRMAdminNodeRegistration/GetCustomMQTTHost.js';
14
+ import '../methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.js';
15
+ import '../methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.js';
13
16
  export { ESPRMAdminNodeRegistration } from '../ESPRMAdminNodeRegistration.js';
@@ -0,0 +1,8 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import '../methods/ESPRMClaim/InitiateClaim.js';
7
+ import '../methods/ESPRMClaim/VerifyClaim.js';
8
+ export { ESPRMClaim } from '../ESPRMClaim.js';
package/dist/esm/index.js CHANGED
@@ -54,6 +54,7 @@ export { ESPRMAdminAPIStatistics } from './ESPRMAdminAPIStatistics.js';
54
54
  export { ESPRMAdminMQTTStatistics } from './ESPRMAdminMQTTStatistics.js';
55
55
  export { ESPRMAdminMatter } from './ESPRMAdminMatter.js';
56
56
  export { ESPRMAdminNodeParams } from './ESPRMAdminNodeParams.js';
57
+ export { ESPRMClaim } from './ESPRMClaim.js';
57
58
  import './methods/ESPRMAuth/Login.js';
58
59
  import './methods/ESPRMAuth/Logout.js';
59
60
  import './methods/ESPRMAuth/ForgotPassword.js';
@@ -75,9 +76,11 @@ import './methods/ESPRMAdminNode/GetNodes.js';
75
76
  import './methods/ESPRMAdminNode/ActivateDeactivateNodes.js';
76
77
  import './methods/ESPRMAdminNode/AttachNodeTags.js';
77
78
  import './methods/ESPRMAdminNode/RemoveNodeTags.js';
79
+ import './methods/ESPRMAdminNode/DeleteNode.js';
78
80
  import './methods/ESPRMAdminNode/GetNodeTags.js';
79
81
  import './methods/ESPRMAdminNode/GetCommandRequests.js';
80
82
  import './methods/ESPRMAdminNode/AddCommandRequest.js';
83
+ import './methods/ESPRMAdminNode/CancelCommandRequests.js';
81
84
  import './methods/ESPRMAdminNode/GetTimeSeriesData.js';
82
85
  import './methods/ESPRMAdminNode/GetSimpleTimeSeriesData.js';
83
86
  import './methods/ESPRMAdminOTAImage/UploadImage.js';
@@ -158,12 +161,16 @@ import './methods/ESPRMAdminNodeRegistration/GetNodeIds.js';
158
161
  import './methods/ESPRMAdminNodeRegistration/GetNodeCertificates.js';
159
162
  import './methods/ESPRMAdminNodeRegistration/GetNodeCertificateRegistrationStatus.js';
160
163
  import './methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.js';
164
+ import './methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.js';
161
165
  import './methods/ESPRMAdminNodeRegistration/GetMQTTHost.js';
162
166
  import './methods/ESPRMAdminNodeRegistration/GetCustomMQTTHost.js';
167
+ import './methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.js';
168
+ import './methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.js';
163
169
  import './methods/ESPRMAdminSuperAdmin/ChangeSuperAdmin.js';
164
170
  import './methods/ESPRMAdminSenderEmail/ChangeSenderEmail.js';
165
171
  import './methods/ESPRMAdminCommonCustomData/SetCommonCustomData.js';
166
172
  import './methods/ESPRMAdminCommonCustomData/GetCommonCustomData.js';
173
+ import './methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.js';
167
174
  import './methods/ESPRMAdminDeploymentSetting/GetDeploymentSettings.js';
168
175
  import './methods/ESPRMAdminDeploymentSetting/UpdateDeploymentConfig.js';
169
176
  import './methods/ESPRMAdminConfiguration/GetNotifications.js';
@@ -186,6 +193,8 @@ import './methods/ESPRMAdminPassthrough/CreatePassthroughConfig.js';
186
193
  import './methods/ESPRMAdminPassthrough/UpdatePassthroughConfig.js';
187
194
  import './methods/ESPRMAdminNodeCertificateCA/UpdateNodeCACertificate.js';
188
195
  import './methods/ESPRMAdminNodeCertificateCA/GetNodeCACertificate.js';
196
+ import './methods/ESPRMClaim/InitiateClaim.js';
197
+ import './methods/ESPRMClaim/VerifyClaim.js';
189
198
  import './methods/ESPRMAdminWebhook/CreateWebhookIntegration.js';
190
199
  import './methods/ESPRMAdminWebhook/UpdateWebhookIntegration.js';
191
200
  import './methods/ESPRMAdminWebhook/GetWebhookIntegrations.js';
@@ -215,7 +224,7 @@ import './methods/ESPRMAdminMatter/GetMatterBatch.js';
215
224
  import './methods/ESPRMAdminMatter/GetMatterBatchNodes.js';
216
225
  import './methods/ESPRMAdminNodeParams/UpdateNodeParams.js';
217
226
  import './methods/ESPRMAdminNodeParams/GetNodeParams.js';
218
- export { APICallValidationErrorCodes, APIEndpoints, APIErrorCodes, AdditionalInfo, ConfigErrorCodes, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_REST_API_VERSION, ErrorLabels, HTTPMethods, HTTPStatusCodes, StorageAdapterErrorCodes, StorageKeys, TOKEN_EXPIRY_MARGIN_SECONDS, TokenErrorCodes, ValidationErrorCodes } from './utils/constants.js';
227
+ export { APICallValidationErrorCodes, APIEndpoints, APIErrorCodes, AdditionalInfo, ConfigErrorCodes, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_REST_API_VERSION, ErrorLabels, HTTPMethods, HTTPStatusCodes, MAX_NODE_ACTIVATION_BATCH_SIZE, StorageAdapterErrorCodes, StorageKeys, TOKEN_EXPIRY_MARGIN_SECONDS, TokenErrorCodes, ValidationErrorCodes } from './utils/constants.js';
219
228
  export { isNonEmptyString, isValidObject, isValidUrl } from './utils/validator/validators.js';
220
229
  export { ESPBaseError } from './utils/error/ESPBaseError.js';
221
230
  export { ESPRMAPIManager } from './services/ESPRMAPIManager.js';
@@ -0,0 +1,22 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminCommonCustomData } from '../../ESPRMAdminCommonCustomData.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMAdminCommonCustomData.prototype.deleteCommonCustomData = async function (params) {
12
+ if (!params.name) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_COMMON_CUSTOM_DATA_NAME);
14
+ }
15
+ const requestConfig = {
16
+ url: APIEndpoints.ADMIN_COMMON_CUSTOM_DATA,
17
+ method: HTTPMethods.PUT,
18
+ data: { name: params.name, value: null },
19
+ };
20
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
21
+ return response;
22
+ };
@@ -5,9 +5,16 @@
5
5
  */
6
6
  import { ESPRMAdminCommonCustomData } from '../../ESPRMAdminCommonCustomData.js';
7
7
  import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
- import { HTTPMethods, APIEndpoints } from '../../utils/constants.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
9
10
 
10
11
  ESPRMAdminCommonCustomData.prototype.setCommonCustomData = async function (params) {
12
+ if (!params.name) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_COMMON_CUSTOM_DATA_NAME);
14
+ }
15
+ if (params.value === null || params.value === undefined) {
16
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_COMMON_CUSTOM_DATA_VALUE);
17
+ }
11
18
  const requestConfig = {
12
19
  url: APIEndpoints.ADMIN_COMMON_CUSTOM_DATA,
13
20
  method: HTTPMethods.PUT,
@@ -5,13 +5,23 @@
5
5
  */
6
6
  import { ESPRMAdminNode } from '../../ESPRMAdminNode.js';
7
7
  import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
- import { HTTPMethods, APIEndpoints } from '../../utils/constants.js';
8
+ import { APICallValidationErrorCodes, MAX_NODE_ACTIVATION_BATCH_SIZE, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
9
10
 
10
11
  ESPRMAdminNode.prototype.activateDeactivateNodes = async function (params) {
12
+ const nodeIds = params.node_ids?.filter(Boolean) ?? [];
13
+ if (nodeIds.length === 0) {
14
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_NODE_IDS);
15
+ }
16
+ if (nodeIds.length > MAX_NODE_ACTIVATION_BATCH_SIZE) {
17
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.TOO_MANY_NODE_IDS);
18
+ }
19
+ // The backend reads both values from the query string only; a JSON body
20
+ // on this endpoint is parsed as node tags.
11
21
  const requestConfig = {
12
22
  url: APIEndpoints.ADMIN_NODES,
13
23
  method: HTTPMethods.PUT,
14
- data: params,
24
+ params: { node_id: nodeIds.join(","), activate: params.activate },
15
25
  };
16
26
  const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
17
27
  return response;
@@ -0,0 +1,25 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminNode } from '../../ESPRMAdminNode.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMAdminNode.prototype.cancelCommandRequests = async function (params) {
12
+ if (!params?.request_id && !params?.node_id) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_CANCEL_COMMAND_SCOPE);
14
+ }
15
+ if (params.cmd_id !== undefined && !params.node_id) {
16
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.CMD_ID_REQUIRES_NODE_ID);
17
+ }
18
+ const requestConfig = {
19
+ url: APIEndpoints.ADMIN_CMD,
20
+ method: HTTPMethods.DELETE,
21
+ params,
22
+ };
23
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
24
+ return response;
25
+ };
@@ -0,0 +1,22 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminNode } from '../../ESPRMAdminNode.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMAdminNode.prototype.deleteNode = async function (nodeId) {
12
+ if (!nodeId) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_NODE_ID);
14
+ }
15
+ const requestConfig = {
16
+ url: APIEndpoints.ADMIN_NODES,
17
+ method: HTTPMethods.DELETE,
18
+ params: { node_id: nodeId, delete_node: true },
19
+ };
20
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
21
+ return response;
22
+ };
@@ -0,0 +1,23 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminNodeRegistration } from '../../ESPRMAdminNodeRegistration.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMAdminNodeRegistration.prototype.getNodeCertificateUploadUrl =
12
+ async function (params) {
13
+ if (!params.file_name) {
14
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_FILE_NAME);
15
+ }
16
+ const requestConfig = {
17
+ url: APIEndpoints.ADMIN_NODE_CERTIFICATES_REGISTER,
18
+ method: HTTPMethods.GET,
19
+ params: { file_name: params.file_name },
20
+ };
21
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
22
+ return response;
23
+ };
@@ -0,0 +1,22 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminNodeRegistration } from '../../ESPRMAdminNodeRegistration.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMAdminNodeRegistration.prototype.getNodeRegistrationRequest =
12
+ async function (requestId) {
13
+ if (!requestId) {
14
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_REQUEST_ID);
15
+ }
16
+ const requestConfig = {
17
+ url: `${APIEndpoints.ADMIN_NODE_REGISTRATION_REQUESTS}/${encodeURIComponent(requestId)}`,
18
+ method: HTTPMethods.GET,
19
+ };
20
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
21
+ return response;
22
+ };
@@ -0,0 +1,19 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMAdminNodeRegistration } from '../../ESPRMAdminNodeRegistration.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+
10
+ ESPRMAdminNodeRegistration.prototype.listNodeRegistrationRequests =
11
+ async function (params) {
12
+ const requestConfig = {
13
+ url: APIEndpoints.ADMIN_NODE_REGISTRATION_REQUESTS,
14
+ method: HTTPMethods.GET,
15
+ ...(params && { params }),
16
+ };
17
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
18
+ return response;
19
+ };
@@ -0,0 +1,26 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMClaim } from '../../ESPRMClaim.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMClaim.prototype.initiateClaim = async function (params) {
12
+ if (!params.mac_addr) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_MAC_ADDRESS);
14
+ }
15
+ if (!params.platform) {
16
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_CLAIM_PLATFORM);
17
+ }
18
+ const requestConfig = {
19
+ baseURL: ESPRMAPIManager.getClaimingBaseUrl(),
20
+ url: APIEndpoints.CLAIM_INITIATE,
21
+ method: HTTPMethods.POST,
22
+ data: params,
23
+ };
24
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
25
+ return response;
26
+ };
@@ -0,0 +1,26 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ESPRMClaim } from '../../ESPRMClaim.js';
7
+ import { ESPRMAPIManager } from '../../services/ESPRMAPIManager.js';
8
+ import { APICallValidationErrorCodes, HTTPMethods, APIEndpoints } from '../../utils/constants.js';
9
+ import { ESPAPICallValidationError } from '../../utils/error/ESPAPICallValidationError.js';
10
+
11
+ ESPRMClaim.prototype.verifyClaim = async function (params, options = {}) {
12
+ if (!params.csr) {
13
+ throw new ESPAPICallValidationError(APICallValidationErrorCodes.MISSING_CSR);
14
+ }
15
+ const matter = options.matter ?? false;
16
+ const requestConfig = {
17
+ baseURL: ESPRMAPIManager.getClaimingBaseUrl(),
18
+ url: APIEndpoints.CLAIM_VERIFY,
19
+ method: HTTPMethods.POST,
20
+ data: params,
21
+ // The service ignores `test` unless `matter` is true.
22
+ params: matter ? { matter, test: options.test ?? false } : { matter },
23
+ };
24
+ const response = await ESPRMAPIManager.authorizeRequest(requestConfig);
25
+ return response;
26
+ };
@@ -19,10 +19,12 @@ class ESPRMAPIManager {
19
19
  static #instance;
20
20
  #baseUrl;
21
21
  #timeoutMs;
22
+ #claimingBaseUrl;
22
23
  constructor(config) {
23
- const { baseUrl, version, timeoutMs } = config;
24
+ const { baseUrl, version, timeoutMs, claimingBaseUrl } = config;
24
25
  this.#baseUrl = `${baseUrl}/${version}`;
25
26
  this.#timeoutMs = timeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
27
+ this.#claimingBaseUrl = claimingBaseUrl?.replace(/\/+$/, "");
26
28
  }
27
29
  static initialize(config) {
28
30
  ESPRMAPIManager.#instance = new ESPRMAPIManager(config);
@@ -33,6 +35,18 @@ class ESPRMAPIManager {
33
35
  }
34
36
  return ESPRMAPIManager.#instance;
35
37
  }
38
+ /**
39
+ * Base URL of the claiming service set through `claimingBaseUrl`.
40
+ *
41
+ * @throws ESPConfigError `CLAIMING_NOT_CONFIGURED` when it was not configured.
42
+ */
43
+ static getClaimingBaseUrl() {
44
+ const claimingBaseUrl = ESPRMAPIManager.#getInstance().#claimingBaseUrl;
45
+ if (!claimingBaseUrl) {
46
+ throw new ESPConfigError(ConfigErrorCodes.CLAIMING_NOT_CONFIGURED);
47
+ }
48
+ return claimingBaseUrl;
49
+ }
36
50
  /**
37
51
  * Send a request with the current user's access token in the
38
52
  * `Authorization` header, refreshing the token first if it has expired.
@@ -68,6 +68,7 @@ const APIEndpoints = {
68
68
  ADMIN_NODE_IDS: "admin/node_ids",
69
69
  ADMIN_NODE_CERTIFICATES: "admin/node_certificates",
70
70
  ADMIN_NODE_CERTIFICATES_REGISTER: "admin/node_certificates/register",
71
+ ADMIN_NODE_REGISTRATION_REQUESTS: "admin/node_registrations/requests",
71
72
  ADMIN_API_STATS: "admin/api_stats",
72
73
  ADMIN_MQTT_STATS: "admin/mqtt_stats",
73
74
  ADMIN_CHANGE_SUPER_ADMIN: "admin/change_super_admin",
@@ -93,6 +94,8 @@ const APIEndpoints = {
93
94
  ADMIN_MATTER_BATCH: "admin/matter/batch",
94
95
  ADMIN_MATTER_BATCH_NODES: "admin/matter/batch/nodes",
95
96
  ADMIN_MAIL_FAILURES: "admin/mail_failures",
97
+ CLAIM_INITIATE: "claim/initiate",
98
+ CLAIM_VERIFY: "claim/verify",
96
99
  };
97
100
  const StorageKeys = {
98
101
  ACCESSTOKEN: "com.esprmbase.accessToken",
@@ -103,6 +106,8 @@ const ConfigErrorCodes = {
103
106
  SDK_NOT_CONFIGURED: "SDK_NOT_CONFIGURED",
104
107
  INVALID_CONFIG_OBJECT: "INVALID_CONFIG_OBJECT",
105
108
  INVALID_BASE_URL: "INVALID_BASE_URL",
109
+ INVALID_CLAIMING_BASE_URL: "INVALID_CLAIMING_BASE_URL",
110
+ CLAIMING_NOT_CONFIGURED: "CLAIMING_NOT_CONFIGURED",
106
111
  };
107
112
  const ValidationErrorCodes = {
108
113
  MISSING_LOGIN_PASSWORD: "MISSING_LOGIN_PASSWORD",
@@ -148,6 +153,15 @@ const APICallValidationErrorCodes = {
148
153
  MISSING_PLATFORM_NAME: "MISSING_PLATFORM_NAME",
149
154
  MISSING_PLATFORM_APPLICATION_ARN: "MISSING_PLATFORM_APPLICATION_ARN",
150
155
  MISSING_BATCH_ID: "MISSING_BATCH_ID",
156
+ MISSING_CANCEL_COMMAND_SCOPE: "MISSING_CANCEL_COMMAND_SCOPE",
157
+ CMD_ID_REQUIRES_NODE_ID: "CMD_ID_REQUIRES_NODE_ID",
158
+ MISSING_COMMON_CUSTOM_DATA_NAME: "MISSING_COMMON_CUSTOM_DATA_NAME",
159
+ MISSING_COMMON_CUSTOM_DATA_VALUE: "MISSING_COMMON_CUSTOM_DATA_VALUE",
160
+ MISSING_MAC_ADDRESS: "MISSING_MAC_ADDRESS",
161
+ MISSING_CLAIM_PLATFORM: "MISSING_CLAIM_PLATFORM",
162
+ MISSING_CSR: "MISSING_CSR",
163
+ MISSING_NODE_IDS: "MISSING_NODE_IDS",
164
+ TOO_MANY_NODE_IDS: "TOO_MANY_NODE_IDS",
151
165
  };
152
166
  const TokenErrorCodes = {
153
167
  MISSING_ACCESS_TOKEN: "MISSING_ACCESS_TOKEN",
@@ -173,10 +187,12 @@ const DEFAULT_REST_API_VERSION = "v1";
173
187
  const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
174
188
  /** Tokens expiring within this many seconds are refreshed proactively. */
175
189
  const TOKEN_EXPIRY_MARGIN_SECONDS = 30;
190
+ /** Backend limit on node IDs per `PUT admin/nodes` activation request. */
191
+ const MAX_NODE_ACTIVATION_BATCH_SIZE = 25;
176
192
  /** errorCode values the SDK itself sets on ESPAPIError for non-HTTP failures. */
177
193
  const APIErrorCodes = {
178
194
  REQUEST_TIMEOUT: "REQUEST_TIMEOUT",
179
195
  NETWORK_ERROR: "NETWORK_ERROR",
180
196
  };
181
197
 
182
- export { APICallValidationErrorCodes, APIEndpoints, APIErrorCodes, AdditionalInfo, ConfigErrorCodes, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_REST_API_VERSION, ErrorLabels, HTTPMethods, HTTPStatusCodes, StorageAdapterErrorCodes, StorageKeys, TOKEN_EXPIRY_MARGIN_SECONDS, TokenErrorCodes, ValidationErrorCodes };
198
+ export { APICallValidationErrorCodes, APIEndpoints, APIErrorCodes, AdditionalInfo, ConfigErrorCodes, DEFAULT_REQUEST_TIMEOUT_MS, DEFAULT_REST_API_VERSION, ErrorLabels, HTTPMethods, HTTPStatusCodes, MAX_NODE_ACTIVATION_BATCH_SIZE, StorageAdapterErrorCodes, StorageKeys, TOKEN_EXPIRY_MARGIN_SECONDS, TokenErrorCodes, ValidationErrorCodes };
@@ -7,6 +7,8 @@ const configErrorMessages = {
7
7
  SDK_NOT_CONFIGURED: "ESPRMBase is not configured yet",
8
8
  INVALID_CONFIG_OBJECT: "Configuration Error: Config must be a non-null object.",
9
9
  INVALID_BASE_URL: "Configuration Error: BaseUrl must be a non-empty valid URL string.",
10
+ INVALID_CLAIMING_BASE_URL: "Configuration Error: claimingBaseUrl must be a non-empty valid URL string.",
11
+ CLAIMING_NOT_CONFIGURED: "Configuration Error: claimingBaseUrl is not configured. Pass it to ESPRMBase.configure to use ESPRMClaim.",
10
12
  };
11
13
  const validationErrorMessages = {
12
14
  MISSING_LOGIN_PASSWORD: "Validation Error: Password is required.",
@@ -18,6 +20,8 @@ const storageAdapterErrorMessages = {
18
20
  };
19
21
  const apiCallValidationErrorMessages = {
20
22
  MISSING_NODE_ID: "ESPAPICallValidationError: Node ID is required.",
23
+ MISSING_NODE_IDS: "ESPAPICallValidationError: At least one node ID is required.",
24
+ TOO_MANY_NODE_IDS: "ESPAPICallValidationError: Too many node IDs; at most 25 are allowed per request.",
21
25
  MISSING_OTA_IMAGE_ID: "ESPAPICallValidationError: OTA image ID is required.",
22
26
  MISSING_ARCHIVE_FLAG: "ESPAPICallValidationError: Archive flag is required and must be a boolean.",
23
27
  MISSING_OTA_JOB_ID: "ESPAPICallValidationError: OTA job ID is required.",
@@ -52,6 +56,13 @@ const apiCallValidationErrorMessages = {
52
56
  MISSING_PLATFORM_NAME: "ESPAPICallValidationError: Platform name is required.",
53
57
  MISSING_PLATFORM_APPLICATION_ARN: "ESPAPICallValidationError: Platform application ARN is required.",
54
58
  MISSING_BATCH_ID: "ESPAPICallValidationError: Batch ID is required.",
59
+ MISSING_CANCEL_COMMAND_SCOPE: "ESPAPICallValidationError: Request ID or node ID is required.",
60
+ CMD_ID_REQUIRES_NODE_ID: "ESPAPICallValidationError: Command ID can only be used together with a node ID.",
61
+ MISSING_COMMON_CUSTOM_DATA_NAME: "ESPAPICallValidationError: Common custom data name is required.",
62
+ MISSING_COMMON_CUSTOM_DATA_VALUE: "ESPAPICallValidationError: Common custom data value is required. Use deleteCommonCustomData to delete an entry.",
63
+ MISSING_MAC_ADDRESS: "ESPAPICallValidationError: MAC address is required (12 uppercase hex characters, no separators).",
64
+ MISSING_CLAIM_PLATFORM: "ESPAPICallValidationError: Claim platform is required.",
65
+ MISSING_CSR: "ESPAPICallValidationError: Certificate signing request (CSR) is required.",
55
66
  };
56
67
  const tokenErrorMessages = {
57
68
  MISSING_ACCESS_TOKEN: "ESPTokenError: Access token is missing. User needs to authenticate.",
@@ -11,12 +11,21 @@ class ConfigValidator {
11
11
  static validateConfig(config) {
12
12
  ConfigValidator.validateConfigObject(config);
13
13
  ConfigValidator.validateBaseUrl(config.baseUrl);
14
+ ConfigValidator.validateClaimingBaseUrl(config.claimingBaseUrl);
14
15
  }
15
16
  static validateConfigObject(config) {
16
17
  if (!isValidObject(config)) {
17
18
  throw new ESPConfigError(ConfigErrorCodes.INVALID_CONFIG_OBJECT);
18
19
  }
19
20
  }
21
+ static validateClaimingBaseUrl(claimingBaseUrl) {
22
+ if (claimingBaseUrl === undefined) {
23
+ return;
24
+ }
25
+ if (!isNonEmptyString(claimingBaseUrl) || !isValidUrl(claimingBaseUrl)) {
26
+ throw new ESPConfigError(ConfigErrorCodes.INVALID_CLAIMING_BASE_URL);
27
+ }
28
+ }
20
29
  static validateBaseUrl(baseUrl) {
21
30
  if (!isNonEmptyString(baseUrl) || !isValidUrl(baseUrl)) {
22
31
  throw new ESPConfigError(ConfigErrorCodes.INVALID_BASE_URL);
@@ -0,0 +1,12 @@
1
+ /*
2
+ * SPDX-FileCopyrightText: 2026 Espressif Systems (Shanghai) CO LTD
3
+ *
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Shell class for the standalone ESP RainMaker claiming service.
8
+ * Requires `claimingBaseUrl` in {@link ESPRMBase.configure}.
9
+ * Methods are added via prototype augmentation in methods/ESPRMClaim/*.
10
+ */
11
+ export declare class ESPRMClaim {
12
+ }