Skip to content

Commit a0e3771

Browse files
author
awstools
committedJan 21, 2025
feat(client-iotsitewise): AWS IoT SiteWise now supports ingestion and querying of Null (all data types) and NaN (double type) values of bad or uncertain data quality. New partial error handling prevents data loss during ingestion. Enabled by default for new customers; existing customers can opt-in.
1 parent c6e07aa commit a0e3771

13 files changed

+263
-81
lines changed
 

‎clients/client-iotsitewise/src/commands/BatchGetAssetPropertyValueCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ export interface BatchGetAssetPropertyValueCommandOutput extends BatchGetAssetPr
6666
* // integerValue: Number("int"),
6767
* // doubleValue: Number("double"),
6868
* // booleanValue: true || false,
69+
* // nullValue: { // PropertyValueNullValue
70+
* // valueType: "D" || "B" || "S" || "I" || "U", // required
71+
* // },
6972
* // },
7073
* // timestamp: { // TimeInNanos
7174
* // timeInSeconds: Number("long"), // required

‎clients/client-iotsitewise/src/commands/BatchGetAssetPropertyValueHistoryCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,9 @@ export interface BatchGetAssetPropertyValueHistoryCommandOutput
8282
* // integerValue: Number("int"),
8383
* // doubleValue: Number("double"),
8484
* // booleanValue: true || false,
85+
* // nullValue: { // PropertyValueNullValue
86+
* // valueType: "D" || "B" || "S" || "I" || "U", // required
87+
* // },
8588
* // },
8689
* // timestamp: { // TimeInNanos
8790
* // timeInSeconds: Number("long"), // required

‎clients/client-iotsitewise/src/commands/BatchPutAssetPropertyValueCommand.ts

+4
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ export interface BatchPutAssetPropertyValueCommandOutput extends BatchPutAssetPr
6060
* // const { IoTSiteWiseClient, BatchPutAssetPropertyValueCommand } = require("@aws-sdk/client-iotsitewise"); // CommonJS import
6161
* const client = new IoTSiteWiseClient(config);
6262
* const input = { // BatchPutAssetPropertyValueRequest
63+
* enablePartialEntryProcessing: true || false,
6364
* entries: [ // PutAssetPropertyValueEntries // required
6465
* { // PutAssetPropertyValueEntry
6566
* entryId: "STRING_VALUE", // required
@@ -73,6 +74,9 @@ export interface BatchPutAssetPropertyValueCommandOutput extends BatchPutAssetPr
7374
* integerValue: Number("int"),
7475
* doubleValue: Number("double"),
7576
* booleanValue: true || false,
77+
* nullValue: { // PropertyValueNullValue
78+
* valueType: "D" || "B" || "S" || "I" || "U", // required
79+
* },
7680
* },
7781
* timestamp: { // TimeInNanos
7882
* timeInSeconds: Number("long"), // required

‎clients/client-iotsitewise/src/commands/DescribeStorageConfigurationCommand.ts

+1
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ export interface DescribeStorageConfigurationCommandOutput
6969
* // numberOfDays: Number("int"),
7070
* // unlimited: true || false,
7171
* // },
72+
* // disallowIngestNullNaN: true || false,
7273
* // };
7374
*
7475
* ```

‎clients/client-iotsitewise/src/commands/GetAssetPropertyValueCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ export interface GetAssetPropertyValueCommandOutput extends GetAssetPropertyValu
6060
* // integerValue: Number("int"),
6161
* // doubleValue: Number("double"),
6262
* // booleanValue: true || false,
63+
* // nullValue: { // PropertyValueNullValue
64+
* // valueType: "D" || "B" || "S" || "I" || "U", // required
65+
* // },
6366
* // },
6467
* // timestamp: { // TimeInNanos
6568
* // timeInSeconds: Number("long"), // required

‎clients/client-iotsitewise/src/commands/GetAssetPropertyValueHistoryCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@ export interface GetAssetPropertyValueHistoryCommandOutput
7474
* // integerValue: Number("int"),
7575
* // doubleValue: Number("double"),
7676
* // booleanValue: true || false,
77+
* // nullValue: { // PropertyValueNullValue
78+
* // valueType: "D" || "B" || "S" || "I" || "U", // required
79+
* // },
7780
* // },
7881
* // timestamp: { // TimeInNanos
7982
* // timeInSeconds: Number("long"), // required

‎clients/client-iotsitewise/src/commands/GetInterpolatedAssetPropertyValuesCommand.ts

+3
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ export interface GetInterpolatedAssetPropertyValuesCommandOutput
8686
* // integerValue: Number("int"),
8787
* // doubleValue: Number("double"),
8888
* // booleanValue: true || false,
89+
* // nullValue: { // PropertyValueNullValue
90+
* // valueType: "D" || "B" || "S" || "I" || "U", // required
91+
* // },
8992
* // },
9093
* // },
9194
* // ],

‎clients/client-iotsitewise/src/commands/ListAssociatedAssetsCommand.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";
66

77
import { commonParams } from "../endpoint/EndpointParameters";
88
import { IoTSiteWiseClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IoTSiteWiseClient";
9-
import { ListAssociatedAssetsRequest } from "../models/models_0";
10-
import { ListAssociatedAssetsResponse } from "../models/models_1";
9+
import { ListAssociatedAssetsRequest, ListAssociatedAssetsResponse } from "../models/models_1";
1110
import { de_ListAssociatedAssetsCommand, se_ListAssociatedAssetsCommand } from "../protocols/Aws_restJson1";
1211

1312
/**

‎clients/client-iotsitewise/src/commands/PutStorageConfigurationCommand.ts

+2
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ export interface PutStorageConfigurationCommandOutput extends PutStorageConfigur
5353
* numberOfDays: Number("int"),
5454
* unlimited: true || false,
5555
* },
56+
* disallowIngestNullNaN: true || false,
5657
* };
5758
* const command = new PutStorageConfigurationCommand(input);
5859
* const response = await client.send(command);
@@ -81,6 +82,7 @@ export interface PutStorageConfigurationCommandOutput extends PutStorageConfigur
8182
* // numberOfDays: Number("int"),
8283
* // unlimited: true || false,
8384
* // },
85+
* // disallowIngestNullNaN: true || false,
8486
* // };
8587
*
8688
* ```

‎clients/client-iotsitewise/src/models/models_0.ts

+57-71
Original file line numberDiff line numberDiff line change
@@ -1873,13 +1873,45 @@ export interface TimeInNanos {
18731873
offsetInNanos?: number | undefined;
18741874
}
18751875

1876+
/**
1877+
* @public
1878+
* @enum
1879+
*/
1880+
export const RawValueType = {
1881+
BOOLEAN: "B",
1882+
DOUBLE: "D",
1883+
INTEGER: "I",
1884+
STRING: "S",
1885+
UNKNOWN: "U",
1886+
} as const;
1887+
1888+
/**
1889+
* @public
1890+
*/
1891+
export type RawValueType = (typeof RawValueType)[keyof typeof RawValueType];
1892+
1893+
/**
1894+
* <p>The value type of null asset property data with BAD and UNCERTAIN qualities.</p>
1895+
* @public
1896+
*/
1897+
export interface PropertyValueNullValue {
1898+
/**
1899+
* <p>The type of null asset property data.</p>
1900+
* @public
1901+
*/
1902+
valueType: RawValueType | undefined;
1903+
}
1904+
18761905
/**
18771906
* <p>Contains an asset property value (of a single type only).</p>
18781907
* @public
18791908
*/
18801909
export interface Variant {
18811910
/**
1882-
* <p>Asset property data of type string (sequence of characters).</p>
1911+
* <p>
1912+
* Asset property data of type string (sequence of characters).
1913+
* The allowed pattern: "^$|[^\u0000-\u001F\u007F]+". The max length is 1024.
1914+
* </p>
18831915
* @public
18841916
*/
18851917
stringValue?: string | undefined;
@@ -1891,7 +1923,10 @@ export interface Variant {
18911923
integerValue?: number | undefined;
18921924

18931925
/**
1894-
* <p>Asset property data of type double (floating point number).</p>
1926+
* <p>
1927+
* Asset property data of type double (floating point number). The min value is -10^10.
1928+
* The max value is 10^10. Double.NaN is allowed.
1929+
* </p>
18951930
* @public
18961931
*/
18971932
doubleValue?: number | undefined;
@@ -1901,6 +1936,12 @@ export interface Variant {
19011936
* @public
19021937
*/
19031938
booleanValue?: boolean | undefined;
1939+
1940+
/**
1941+
* <p>The type of null asset property data with BAD and UNCERTAIN qualities.</p>
1942+
* @public
1943+
*/
1944+
nullValue?: PropertyValueNullValue | undefined;
19041945
}
19051946

19061947
/**
@@ -3247,6 +3288,13 @@ export interface PutAssetPropertyValueEntry {
32473288
* @public
32483289
*/
32493290
export interface BatchPutAssetPropertyValueRequest {
3291+
/**
3292+
* <p>This setting enables partial ingestion at entry-level. If set to <code>true</code>, we ingest all TQVs not resulting in an error. If set to
3293+
* <code>false</code>, an invalid TQV fails ingestion of the entire entry that contains it.</p>
3294+
* @public
3295+
*/
3296+
enablePartialEntryProcessing?: boolean | undefined;
3297+
32503298
/**
32513299
* <p>The list of asset property value entries for the batch put request. You can specify up to
32523300
* 10 entries per request.</p>
@@ -6745,6 +6793,13 @@ export interface DescribeStorageConfigurationResponse {
67456793
* @public
67466794
*/
67476795
warmTierRetentionPeriod?: WarmTierRetentionPeriod | undefined;
6796+
6797+
/**
6798+
* <p>Describes the configuration for ingesting NULL and NaN data.
6799+
* By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>
6800+
* @public
6801+
*/
6802+
disallowIngestNullNaN?: boolean | undefined;
67486803
}
67496804

67506805
/**
@@ -8440,75 +8495,6 @@ export interface ListAssetsResponse {
84408495
nextToken?: string | undefined;
84418496
}
84428497

8443-
/**
8444-
* @public
8445-
* @enum
8446-
*/
8447-
export const TraversalDirection = {
8448-
CHILD: "CHILD",
8449-
PARENT: "PARENT",
8450-
} as const;
8451-
8452-
/**
8453-
* @public
8454-
*/
8455-
export type TraversalDirection = (typeof TraversalDirection)[keyof typeof TraversalDirection];
8456-
8457-
/**
8458-
* @public
8459-
*/
8460-
export interface ListAssociatedAssetsRequest {
8461-
/**
8462-
* <p>The ID of the asset to query. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one.
8463-
* For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>
8464-
* @public
8465-
*/
8466-
assetId: string | undefined;
8467-
8468-
/**
8469-
* <p>(Optional) If you don't provide a <code>hierarchyId</code>, all the immediate assets in
8470-
* the <code>traversalDirection</code> will be returned. </p>
8471-
* <p> The ID of the hierarchy by which child assets are associated to the asset.
8472-
* (This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one.
8473-
* For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.)</p>
8474-
* <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>
8475-
* @public
8476-
*/
8477-
hierarchyId?: string | undefined;
8478-
8479-
/**
8480-
* <p>The direction to list associated assets. Choose one of the following options:</p>
8481-
* <ul>
8482-
* <li>
8483-
* <p>
8484-
* <code>CHILD</code> – The list includes all child assets associated to the
8485-
* asset.</p>
8486-
* </li>
8487-
* <li>
8488-
* <p>
8489-
* <code>PARENT</code> – The list includes the asset's parent asset.</p>
8490-
* </li>
8491-
* </ul>
8492-
* <p>Default: <code>CHILD</code>
8493-
* </p>
8494-
* @public
8495-
*/
8496-
traversalDirection?: TraversalDirection | undefined;
8497-
8498-
/**
8499-
* <p>The token to be used for the next set of paginated results.</p>
8500-
* @public
8501-
*/
8502-
nextToken?: string | undefined;
8503-
8504-
/**
8505-
* <p>The maximum number of results to return for each paginated request.</p>
8506-
* <p>Default: 50</p>
8507-
* @public
8508-
*/
8509-
maxResults?: number | undefined;
8510-
}
8511-
85128498
/**
85138499
* @internal
85148500
*/

‎clients/client-iotsitewise/src/models/models_1.ts

+83
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,75 @@ import {
4141
WarmTierState,
4242
} from "./models_0";
4343

44+
/**
45+
* @public
46+
* @enum
47+
*/
48+
export const TraversalDirection = {
49+
CHILD: "CHILD",
50+
PARENT: "PARENT",
51+
} as const;
52+
53+
/**
54+
* @public
55+
*/
56+
export type TraversalDirection = (typeof TraversalDirection)[keyof typeof TraversalDirection];
57+
58+
/**
59+
* @public
60+
*/
61+
export interface ListAssociatedAssetsRequest {
62+
/**
63+
* <p>The ID of the asset to query. This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one.
64+
* For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.</p>
65+
* @public
66+
*/
67+
assetId: string | undefined;
68+
69+
/**
70+
* <p>(Optional) If you don't provide a <code>hierarchyId</code>, all the immediate assets in
71+
* the <code>traversalDirection</code> will be returned. </p>
72+
* <p> The ID of the hierarchy by which child assets are associated to the asset.
73+
* (This can be either the actual ID in UUID format, or else <code>externalId:</code> followed by the external ID, if it has one.
74+
* For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/object-ids.html#external-id-references">Referencing objects with external IDs</a> in the <i>IoT SiteWise User Guide</i>.)</p>
75+
* <p>For more information, see <a href="https://docs.aws.amazon.com/iot-sitewise/latest/userguide/asset-hierarchies.html">Asset hierarchies</a> in the <i>IoT SiteWise User Guide</i>.</p>
76+
* @public
77+
*/
78+
hierarchyId?: string | undefined;
79+
80+
/**
81+
* <p>The direction to list associated assets. Choose one of the following options:</p>
82+
* <ul>
83+
* <li>
84+
* <p>
85+
* <code>CHILD</code> – The list includes all child assets associated to the
86+
* asset.</p>
87+
* </li>
88+
* <li>
89+
* <p>
90+
* <code>PARENT</code> – The list includes the asset's parent asset.</p>
91+
* </li>
92+
* </ul>
93+
* <p>Default: <code>CHILD</code>
94+
* </p>
95+
* @public
96+
*/
97+
traversalDirection?: TraversalDirection | undefined;
98+
99+
/**
100+
* <p>The token to be used for the next set of paginated results.</p>
101+
* @public
102+
*/
103+
nextToken?: string | undefined;
104+
105+
/**
106+
* <p>The maximum number of results to return for each paginated request.</p>
107+
* <p>Default: 50</p>
108+
* @public
109+
*/
110+
maxResults?: number | undefined;
111+
}
112+
44113
/**
45114
* @public
46115
*/
@@ -1020,6 +1089,13 @@ export interface PutStorageConfigurationRequest {
10201089
* @public
10211090
*/
10221091
warmTierRetentionPeriod?: WarmTierRetentionPeriod | undefined;
1092+
1093+
/**
1094+
* <p>Describes the configuration for ingesting NULL and NaN data.
1095+
* By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>
1096+
* @public
1097+
*/
1098+
disallowIngestNullNaN?: boolean | undefined;
10231099
}
10241100

10251101
/**
@@ -1096,6 +1172,13 @@ export interface PutStorageConfigurationResponse {
10961172
* @public
10971173
*/
10981174
warmTierRetentionPeriod?: WarmTierRetentionPeriod | undefined;
1175+
1176+
/**
1177+
* <p>Describes the configuration for ingesting NULL and NaN data.
1178+
* By default the feature is allowed. The feature is disallowed if the value is <code>true</code>.</p>
1179+
* @public
1180+
*/
1181+
disallowIngestNullNaN?: boolean | undefined;
10991182
}
11001183

11011184
/**

0 commit comments

Comments
 (0)
Please sign in to comment.