Skip to content

Commit

Permalink
feat(client-iot): Release connectivity status query API which is a de…
Browse files Browse the repository at this point in the history
…dicated high throughput(TPS) API to query a specific device's most recent connectivity state and metadata.
  • Loading branch information
awstools committed Dec 18, 2024
1 parent be98eba commit 8709403
Show file tree
Hide file tree
Showing 12 changed files with 670 additions and 175 deletions.
8 changes: 8 additions & 0 deletions clients/client-iot/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1378,6 +1378,14 @@ GetStatistics

[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iot/command/GetStatisticsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-iot/Interface/GetStatisticsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-iot/Interface/GetStatisticsCommandOutput/)

</details>
<details>
<summary>
GetThingConnectivityData
</summary>

[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/iot/command/GetThingConnectivityDataCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-iot/Interface/GetThingConnectivityDataCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-iot/Interface/GetThingConnectivityDataCommandOutput/)

</details>
<details>
<summary>
Expand Down
23 changes: 23 additions & 0 deletions clients/client-iot/src/IoT.ts
Original file line number Diff line number Diff line change
Expand Up @@ -691,6 +691,11 @@ import {
GetStatisticsCommandInput,
GetStatisticsCommandOutput,
} from "./commands/GetStatisticsCommand";
import {
GetThingConnectivityDataCommand,
GetThingConnectivityDataCommandInput,
GetThingConnectivityDataCommandOutput,
} from "./commands/GetThingConnectivityDataCommand";
import {
GetTopicRuleCommand,
GetTopicRuleCommandInput,
Expand Down Expand Up @@ -1427,6 +1432,7 @@ const commands = {
GetPolicyVersionCommand,
GetRegistrationCodeCommand,
GetStatisticsCommand,
GetThingConnectivityDataCommand,
GetTopicRuleCommand,
GetTopicRuleDestinationCommand,
GetV2LoggingOptionsCommand,
Expand Down Expand Up @@ -3849,6 +3855,23 @@ export interface IoT {
cb: (err: any, data?: GetStatisticsCommandOutput) => void
): void;

/**
* @see {@link GetThingConnectivityDataCommand}
*/
getThingConnectivityData(
args: GetThingConnectivityDataCommandInput,
options?: __HttpHandlerOptions
): Promise<GetThingConnectivityDataCommandOutput>;
getThingConnectivityData(
args: GetThingConnectivityDataCommandInput,
cb: (err: any, data?: GetThingConnectivityDataCommandOutput) => void
): void;
getThingConnectivityData(
args: GetThingConnectivityDataCommandInput,
options: __HttpHandlerOptions,
cb: (err: any, data?: GetThingConnectivityDataCommandOutput) => void
): void;

/**
* @see {@link GetTopicRuleCommand}
*/
Expand Down
6 changes: 6 additions & 0 deletions clients/client-iot/src/IoTClient.ts
Original file line number Diff line number Diff line change
Expand Up @@ -441,6 +441,10 @@ import {
GetRegistrationCodeCommandOutput,
} from "./commands/GetRegistrationCodeCommand";
import { GetStatisticsCommandInput, GetStatisticsCommandOutput } from "./commands/GetStatisticsCommand";
import {
GetThingConnectivityDataCommandInput,
GetThingConnectivityDataCommandOutput,
} from "./commands/GetThingConnectivityDataCommand";
import { GetTopicRuleCommandInput, GetTopicRuleCommandOutput } from "./commands/GetTopicRuleCommand";
import {
GetTopicRuleDestinationCommandInput,
Expand Down Expand Up @@ -956,6 +960,7 @@ export type ServiceInputTypes =
| GetPolicyVersionCommandInput
| GetRegistrationCodeCommandInput
| GetStatisticsCommandInput
| GetThingConnectivityDataCommandInput
| GetTopicRuleCommandInput
| GetTopicRuleDestinationCommandInput
| GetV2LoggingOptionsCommandInput
Expand Down Expand Up @@ -1230,6 +1235,7 @@ export type ServiceOutputTypes =
| GetPolicyVersionCommandOutput
| GetRegistrationCodeCommandOutput
| GetStatisticsCommandOutput
| GetThingConnectivityDataCommandOutput
| GetTopicRuleCommandOutput
| GetTopicRuleDestinationCommandOutput
| GetV2LoggingOptionsCommandOutput
Expand Down
121 changes: 121 additions & 0 deletions clients/client-iot/src/commands/GetThingConnectivityDataCommand.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
// smithy-typescript generated code
import { getEndpointPlugin } from "@smithy/middleware-endpoint";
import { getSerdePlugin } from "@smithy/middleware-serde";
import { Command as $Command } from "@smithy/smithy-client";
import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { IoTClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IoTClient";
import {
GetThingConnectivityDataRequest,
GetThingConnectivityDataRequestFilterSensitiveLog,
GetThingConnectivityDataResponse,
GetThingConnectivityDataResponseFilterSensitiveLog,
} from "../models/models_1";
import { de_GetThingConnectivityDataCommand, se_GetThingConnectivityDataCommand } from "../protocols/Aws_restJson1";

/**
* @public
*/
export type { __MetadataBearer };
export { $Command };
/**
* @public
*
* The input for {@link GetThingConnectivityDataCommand}.
*/
export interface GetThingConnectivityDataCommandInput extends GetThingConnectivityDataRequest {}
/**
* @public
*
* The output of {@link GetThingConnectivityDataCommand}.
*/
export interface GetThingConnectivityDataCommandOutput extends GetThingConnectivityDataResponse, __MetadataBearer {}

/**
* <p>Retrieves the live connectivity status per device.</p>
* @example
* Use a bare-bones client and the command you need to make an API call.
* ```javascript
* import { IoTClient, GetThingConnectivityDataCommand } from "@aws-sdk/client-iot"; // ES Modules import
* // const { IoTClient, GetThingConnectivityDataCommand } = require("@aws-sdk/client-iot"); // CommonJS import
* const client = new IoTClient(config);
* const input = { // GetThingConnectivityDataRequest
* thingName: "STRING_VALUE", // required
* };
* const command = new GetThingConnectivityDataCommand(input);
* const response = await client.send(command);
* // { // GetThingConnectivityDataResponse
* // thingName: "STRING_VALUE",
* // connected: true || false,
* // timestamp: new Date("TIMESTAMP"),
* // disconnectReason: "AUTH_ERROR" || "CLIENT_INITIATED_DISCONNECT" || "CLIENT_ERROR" || "CONNECTION_LOST" || "DUPLICATE_CLIENTID" || "FORBIDDEN_ACCESS" || "MQTT_KEEP_ALIVE_TIMEOUT" || "SERVER_ERROR" || "SERVER_INITIATED_DISCONNECT" || "THROTTLED" || "WEBSOCKET_TTL_EXPIRATION" || "CUSTOMAUTH_TTL_EXPIRATION" || "UNKNOWN" || "NONE",
* // };
*
* ```
*
* @param GetThingConnectivityDataCommandInput - {@link GetThingConnectivityDataCommandInput}
* @returns {@link GetThingConnectivityDataCommandOutput}
* @see {@link GetThingConnectivityDataCommandInput} for command's `input` shape.
* @see {@link GetThingConnectivityDataCommandOutput} for command's `response` shape.
* @see {@link IoTClientResolvedConfig | config} for IoTClient's `config` shape.
*
* @throws {@link IndexNotReadyException} (client fault)
* <p>The index is not ready.</p>
*
* @throws {@link InternalFailureException} (server fault)
* <p>An unexpected error has occurred.</p>
*
* @throws {@link InvalidRequestException} (client fault)
* <p>The request is not valid.</p>
*
* @throws {@link ResourceNotFoundException} (client fault)
* <p>The specified resource does not exist.</p>
*
* @throws {@link ServiceUnavailableException} (server fault)
* <p>The service is temporarily unavailable.</p>
*
* @throws {@link ThrottlingException} (client fault)
* <p>The rate exceeds the limit.</p>
*
* @throws {@link UnauthorizedException} (client fault)
* <p>You are not authorized to perform this operation.</p>
*
* @throws {@link IoTServiceException}
* <p>Base exception class for all service exceptions from IoT service.</p>
*
* @public
*/
export class GetThingConnectivityDataCommand extends $Command
.classBuilder<
GetThingConnectivityDataCommandInput,
GetThingConnectivityDataCommandOutput,
IoTClientResolvedConfig,
ServiceInputTypes,
ServiceOutputTypes
>()
.ep(commonParams)
.m(function (this: any, Command: any, cs: any, config: IoTClientResolvedConfig, o: any) {
return [
getSerdePlugin(config, this.serialize, this.deserialize),
getEndpointPlugin(config, Command.getEndpointParameterInstructions()),
];
})
.s("AWSIotService", "GetThingConnectivityData", {})
.n("IoTClient", "GetThingConnectivityDataCommand")
.f(GetThingConnectivityDataRequestFilterSensitiveLog, GetThingConnectivityDataResponseFilterSensitiveLog)
.ser(se_GetThingConnectivityDataCommand)
.de(de_GetThingConnectivityDataCommand)
.build() {
/** @internal type navigation helper, not in runtime. */
protected declare static __types: {
api: {
input: GetThingConnectivityDataRequest;
output: GetThingConnectivityDataResponse;
};
sdk: {
input: GetThingConnectivityDataCommandInput;
output: GetThingConnectivityDataCommandOutput;
};
};
}
23 changes: 18 additions & 5 deletions clients/client-iot/src/commands/ListCommandExecutionsCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,24 @@ export interface ListCommandExecutionsCommandOutput extends ListCommandExecution
/**
* <p>List all command executions.</p>
* <important>
* <p>You must provide only the
* <code>startedTimeFilter</code> or the <code>completedTimeFilter</code> information. If you
* provide both time filters, the API will generate an error.
* You can use this information to find command executions that started within
* a specific timeframe.</p>
* <ul>
* <li>
* <p>You must provide only the <code>startedTimeFilter</code> or
* the <code>completedTimeFilter</code> information. If you provide
* both time filters, the API will generate an error. You can use
* this information to retrieve a list of command executions
* within a specific timeframe.</p>
* </li>
* <li>
* <p>You must provide only the <code>commandArn</code> or
* the <code>thingArn</code> information depending on whether you want
* to list executions for a specific command or an IoT thing. If you provide
* both fields, the API will generate an error.</p>
* </li>
* </ul>
* <p>For more information about considerations for using this API, see
* <a href="https://docs.aws.amazon.com/iot/latest/developerguide/iot-remote-command-execution-start-monitor.html#iot-remote-command-execution-list-cli">List
* command executions in your account (CLI)</a>.</p>
* </important>
* @example
* Use a bare-bones client and the command you need to make an API call.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,10 @@ import { MetadataBearer as __MetadataBearer } from "@smithy/types";

import { commonParams } from "../endpoint/EndpointParameters";
import { IoTClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../IoTClient";
import { ListDetectMitigationActionsExecutionsRequest } from "../models/models_1";
import { ListDetectMitigationActionsExecutionsResponse } from "../models/models_2";
import {
ListDetectMitigationActionsExecutionsRequest,
ListDetectMitigationActionsExecutionsResponse,
} from "../models/models_2";
import {
de_ListDetectMitigationActionsExecutionsCommand,
se_ListDetectMitigationActionsExecutionsCommand,
Expand Down
1 change: 1 addition & 0 deletions clients/client-iot/src/commands/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ export * from "./GetPolicyCommand";
export * from "./GetPolicyVersionCommand";
export * from "./GetRegistrationCodeCommand";
export * from "./GetStatisticsCommand";
export * from "./GetThingConnectivityDataCommand";
export * from "./GetTopicRuleCommand";
export * from "./GetTopicRuleDestinationCommand";
export * from "./GetV2LoggingOptionsCommand";
Expand Down
5 changes: 4 additions & 1 deletion clients/client-iot/src/models/models_0.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4522,7 +4522,10 @@ export interface CreateCommandRequest {
mandatoryParameters?: CommandParameter[] | undefined;

/**
* <p>The IAM role that allows access to create the command.</p>
* <p>The IAM role that you must provide when using the <code>AWS-IoT-FleetWise</code> namespace.
* The role grants IoT Device Management the permission to access IoT FleetWise resources
* for generating the payload for the command. This field is not required when you use the
* <code>AWS-IoT</code> namespace.</p>
* @public
*/
roleArn?: string | undefined;
Expand Down
Loading

0 comments on commit 8709403

Please sign in to comment.