@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.
- package/CHANGELOG.md +209 -0
- package/README.md +2 -1
- package/dist/cjs/ESPRMBase.cjs +1 -0
- package/dist/cjs/ESPRMClaim.cjs +16 -0
- package/dist/cjs/entries/ESPRMAdminCommonCustomData.cjs +1 -0
- package/dist/cjs/entries/ESPRMAdminNode.cjs +2 -0
- package/dist/cjs/entries/ESPRMAdminNodeRegistration.cjs +3 -0
- package/dist/cjs/entries/ESPRMClaim.cjs +14 -0
- package/dist/cjs/index.cjs +11 -0
- package/dist/cjs/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.cjs +24 -0
- package/dist/cjs/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.cjs +7 -0
- package/dist/cjs/methods/ESPRMAdminNode/ActivateDeactivateNodes.cjs +11 -1
- package/dist/cjs/methods/ESPRMAdminNode/CancelCommandRequests.cjs +27 -0
- package/dist/cjs/methods/ESPRMAdminNode/DeleteNode.cjs +24 -0
- package/dist/cjs/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.cjs +25 -0
- package/dist/cjs/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.cjs +24 -0
- package/dist/cjs/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.cjs +21 -0
- package/dist/cjs/methods/ESPRMClaim/InitiateClaim.cjs +28 -0
- package/dist/cjs/methods/ESPRMClaim/VerifyClaim.cjs +28 -0
- package/dist/cjs/services/ESPRMAPIManager.cjs +15 -1
- package/dist/cjs/utils/constants.cjs +17 -0
- package/dist/cjs/utils/error/errorMessages.cjs +11 -0
- package/dist/cjs/utils/validator/ConfigValidator.cjs +9 -0
- package/dist/esm/ESPRMBase.js +1 -0
- package/dist/esm/ESPRMClaim.js +14 -0
- package/dist/esm/entries/ESPRMAdminCommonCustomData.js +1 -0
- package/dist/esm/entries/ESPRMAdminNode.js +2 -0
- package/dist/esm/entries/ESPRMAdminNodeRegistration.js +3 -0
- package/dist/esm/entries/ESPRMClaim.js +8 -0
- package/dist/esm/index.js +10 -1
- package/dist/esm/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.js +22 -0
- package/dist/esm/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.js +8 -1
- package/dist/esm/methods/ESPRMAdminNode/ActivateDeactivateNodes.js +12 -2
- package/dist/esm/methods/ESPRMAdminNode/CancelCommandRequests.js +25 -0
- package/dist/esm/methods/ESPRMAdminNode/DeleteNode.js +22 -0
- package/dist/esm/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.js +23 -0
- package/dist/esm/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.js +22 -0
- package/dist/esm/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.js +19 -0
- package/dist/esm/methods/ESPRMClaim/InitiateClaim.js +26 -0
- package/dist/esm/methods/ESPRMClaim/VerifyClaim.js +26 -0
- package/dist/esm/services/ESPRMAPIManager.js +15 -1
- package/dist/esm/utils/constants.js +17 -1
- package/dist/esm/utils/error/errorMessages.js +11 -0
- package/dist/esm/utils/validator/ConfigValidator.js +9 -0
- package/dist/types/ESPRMClaim.d.ts +12 -0
- package/dist/types/entries/ESPRMClaim.d.ts +7 -0
- package/dist/types/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.d.ts +22 -0
- package/dist/types/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.d.ts +6 -1
- package/dist/types/methods/ESPRMAdminCommonCustomData/index.d.ts +1 -0
- package/dist/types/methods/ESPRMAdminEventFilter/UpdateEventFilter.d.ts +5 -0
- package/dist/types/methods/ESPRMAdminNode/ActivateDeactivateNodes.d.ts +9 -6
- package/dist/types/methods/ESPRMAdminNode/CancelCommandRequests.d.ts +22 -0
- package/dist/types/methods/ESPRMAdminNode/DeleteNode.d.ts +19 -0
- package/dist/types/methods/ESPRMAdminNode/index.d.ts +2 -0
- package/dist/types/methods/ESPRMAdminNodeRegistration/GetMQTTHost.d.ts +3 -2
- package/dist/types/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.d.ts +18 -0
- package/dist/types/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.d.ts +17 -0
- package/dist/types/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.d.ts +19 -0
- package/dist/types/methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.d.ts +6 -6
- package/dist/types/methods/ESPRMAdminNodeRegistration/index.d.ts +3 -0
- package/dist/types/methods/ESPRMAdminWebhook/GetWebhookIntegrations.d.ts +2 -1
- package/dist/types/methods/ESPRMClaim/InitiateClaim.d.ts +21 -0
- package/dist/types/methods/ESPRMClaim/VerifyClaim.d.ts +21 -0
- package/dist/types/methods/ESPRMClaim/index.d.ts +7 -0
- package/dist/types/methods/export.d.ts +1 -0
- package/dist/types/services/ESPRMAPIManager.d.ts +6 -0
- package/dist/types/types/claim.d.ts +45 -0
- package/dist/types/types/command_response.d.ts +56 -7
- package/dist/types/types/common_custom_data.d.ts +32 -5
- package/dist/types/types/config.d.ts +9 -0
- package/dist/types/types/event_filter.d.ts +17 -3
- package/dist/types/types/index.d.ts +1 -0
- package/dist/types/types/input.d.ts +3 -2
- package/dist/types/types/mainTypes.d.ts +2 -1
- package/dist/types/types/node.d.ts +33 -3
- package/dist/types/types/node_registration.d.ts +164 -12
- package/dist/types/types/output.d.ts +3 -2
- package/dist/types/types/webhook.d.ts +5 -2
- package/dist/types/utils/constants.d.ts +17 -1
- package/dist/types/utils/error/errorMessages.d.ts +11 -0
- package/dist/types/utils/validator/ConfigValidator.d.ts +1 -0
- package/dist/types-cjs/ESPRMClaim.d.cts +12 -0
- package/dist/types-cjs/entries/ESPRMClaim.d.cts +7 -0
- package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/DeleteCommonCustomData.d.cts +22 -0
- package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/SetCommonCustomData.d.cts +6 -1
- package/dist/types-cjs/methods/ESPRMAdminCommonCustomData/index.d.cts +1 -0
- package/dist/types-cjs/methods/ESPRMAdminEventFilter/UpdateEventFilter.d.cts +5 -0
- package/dist/types-cjs/methods/ESPRMAdminNode/ActivateDeactivateNodes.d.cts +9 -6
- package/dist/types-cjs/methods/ESPRMAdminNode/CancelCommandRequests.d.cts +22 -0
- package/dist/types-cjs/methods/ESPRMAdminNode/DeleteNode.d.cts +19 -0
- package/dist/types-cjs/methods/ESPRMAdminNode/index.d.cts +2 -0
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetMQTTHost.d.cts +3 -2
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetNodeCertificateUploadUrl.d.cts +18 -0
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/GetNodeRegistrationRequest.d.cts +17 -0
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/ListNodeRegistrationRequests.d.cts +19 -0
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/RegisterNodeCertificates.d.cts +6 -6
- package/dist/types-cjs/methods/ESPRMAdminNodeRegistration/index.d.cts +3 -0
- package/dist/types-cjs/methods/ESPRMAdminWebhook/GetWebhookIntegrations.d.cts +2 -1
- package/dist/types-cjs/methods/ESPRMClaim/InitiateClaim.d.cts +21 -0
- package/dist/types-cjs/methods/ESPRMClaim/VerifyClaim.d.cts +21 -0
- package/dist/types-cjs/methods/ESPRMClaim/index.d.cts +7 -0
- package/dist/types-cjs/methods/export.d.cts +1 -0
- package/dist/types-cjs/services/ESPRMAPIManager.d.cts +6 -0
- package/dist/types-cjs/types/claim.d.cts +45 -0
- package/dist/types-cjs/types/command_response.d.cts +56 -7
- package/dist/types-cjs/types/common_custom_data.d.cts +32 -5
- package/dist/types-cjs/types/config.d.cts +9 -0
- package/dist/types-cjs/types/event_filter.d.cts +17 -3
- package/dist/types-cjs/types/index.d.cts +1 -0
- package/dist/types-cjs/types/input.d.cts +3 -2
- package/dist/types-cjs/types/mainTypes.d.cts +2 -1
- package/dist/types-cjs/types/node.d.cts +33 -3
- package/dist/types-cjs/types/node_registration.d.cts +164 -12
- package/dist/types-cjs/types/output.d.cts +3 -2
- package/dist/types-cjs/types/webhook.d.cts +5 -2
- package/dist/types-cjs/utils/constants.d.cts +17 -1
- package/dist/types-cjs/utils/error/errorMessages.d.cts +11 -0
- package/dist/types-cjs/utils/validator/ConfigValidator.d.cts +1 -0
- 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);
|
package/dist/esm/ESPRMBase.js
CHANGED
|
@@ -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
|
-
|
|
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
|
+
}
|