From 7913a4b63ff4c83f4ac127498004549e8de8fcbf Mon Sep 17 00:00:00 2001 From: awstools Date: Thu, 19 Sep 2024 18:18:30 +0000 Subject: [PATCH] feat(client-workspaces-web): WorkSpaces Secure Browser now enables Administrators to view and manage end-user browsing sessions via Session Management APIs. --- clients/client-workspaces-web/README.md | 37 +- .../src/WorkSpacesWeb.ts | 60 +- .../src/WorkSpacesWebClient.ts | 22 +- .../CreateUserAccessLoggingSettingsCommand.ts | 3 +- .../src/commands/ExpireSessionCommand.ts | 106 ++++ .../src/commands/GetSessionCommand.ts | 118 ++++ .../src/commands/ListSessionsCommand.ts | 128 ++++ .../src/commands/index.ts | 3 + clients/client-workspaces-web/src/index.ts | 13 +- .../src/models/models_0.ts | 479 +++++++++++--- .../src/pagination/ListSessionsPaginator.ts | 24 + .../src/pagination/index.ts | 1 + .../src/protocols/Aws_restJson1.ts | 170 +++++ .../aws-models/workspaces-web.json | 587 ++++++++++++++++-- 14 files changed, 1586 insertions(+), 165 deletions(-) create mode 100644 clients/client-workspaces-web/src/commands/ExpireSessionCommand.ts create mode 100644 clients/client-workspaces-web/src/commands/GetSessionCommand.ts create mode 100644 clients/client-workspaces-web/src/commands/ListSessionsCommand.ts create mode 100644 clients/client-workspaces-web/src/pagination/ListSessionsPaginator.ts diff --git a/clients/client-workspaces-web/README.md b/clients/client-workspaces-web/README.md index 35eaf8f3e176..dae9a1463160 100644 --- a/clients/client-workspaces-web/README.md +++ b/clients/client-workspaces-web/README.md @@ -6,12 +6,13 @@ AWS SDK for JavaScript WorkSpacesWeb Client for Node.js, Browser and React Native. -

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built specifically to facilitate -secure, web-based workloads. WorkSpaces Secure Browser makes it easy for customers to safely provide -their employees with access to internal websites and SaaS web applications without the -administrative burden of appliances or specialized client software. WorkSpaces Secure Browser provides -simple policy tools tailored for user interactions, while offloading common tasks like -capacity management, scaling, and maintaining browser images.

+

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built +specifically to facilitate secure, web-based workloads. WorkSpaces Secure Browser makes it +easy for customers to safely provide their employees with access to internal websites and +SaaS web applications without the administrative burden of appliances or specialized client +software. WorkSpaces Secure Browser provides simple policy tools tailored for user +interactions, while offloading common tasks like capacity management, scaling, and +maintaining browser images.

## Installing @@ -431,6 +432,14 @@ DisassociateUserSettings [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/DisassociateUserSettingsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/DisassociateUserSettingsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/DisassociateUserSettingsCommandOutput/) + +
+ +ExpireSession + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/ExpireSessionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ExpireSessionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ExpireSessionCommandOutput/) +
@@ -479,6 +488,14 @@ GetPortalServiceProviderMetadata [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/GetPortalServiceProviderMetadataCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/GetPortalServiceProviderMetadataCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/GetPortalServiceProviderMetadataCommandOutput/) +
+
+ +GetSession + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/GetSessionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/GetSessionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/GetSessionCommandOutput/) +
@@ -551,6 +568,14 @@ ListPortals [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/ListPortalsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ListPortalsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ListPortalsCommandOutput/) +
+
+ +ListSessions + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/workspaces-web/command/ListSessionsCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ListSessionsCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-workspaces-web/Interface/ListSessionsCommandOutput/) +
diff --git a/clients/client-workspaces-web/src/WorkSpacesWeb.ts b/clients/client-workspaces-web/src/WorkSpacesWeb.ts index 5615deab849f..71b78dbf44b5 100644 --- a/clients/client-workspaces-web/src/WorkSpacesWeb.ts +++ b/clients/client-workspaces-web/src/WorkSpacesWeb.ts @@ -142,6 +142,11 @@ import { DisassociateUserSettingsCommandInput, DisassociateUserSettingsCommandOutput, } from "./commands/DisassociateUserSettingsCommand"; +import { + ExpireSessionCommand, + ExpireSessionCommandInput, + ExpireSessionCommandOutput, +} from "./commands/ExpireSessionCommand"; import { GetBrowserSettingsCommand, GetBrowserSettingsCommandInput, @@ -168,6 +173,7 @@ import { GetPortalServiceProviderMetadataCommandInput, GetPortalServiceProviderMetadataCommandOutput, } from "./commands/GetPortalServiceProviderMetadataCommand"; +import { GetSessionCommand, GetSessionCommandInput, GetSessionCommandOutput } from "./commands/GetSessionCommand"; import { GetTrustStoreCertificateCommand, GetTrustStoreCertificateCommandInput, @@ -209,6 +215,11 @@ import { ListNetworkSettingsCommandOutput, } from "./commands/ListNetworkSettingsCommand"; import { ListPortalsCommand, ListPortalsCommandInput, ListPortalsCommandOutput } from "./commands/ListPortalsCommand"; +import { + ListSessionsCommand, + ListSessionsCommandInput, + ListSessionsCommandOutput, +} from "./commands/ListSessionsCommand"; import { ListTagsForResourceCommand, ListTagsForResourceCommandInput, @@ -311,12 +322,14 @@ const commands = { DisassociateTrustStoreCommand, DisassociateUserAccessLoggingSettingsCommand, DisassociateUserSettingsCommand, + ExpireSessionCommand, GetBrowserSettingsCommand, GetIdentityProviderCommand, GetIpAccessSettingsCommand, GetNetworkSettingsCommand, GetPortalCommand, GetPortalServiceProviderMetadataCommand, + GetSessionCommand, GetTrustStoreCommand, GetTrustStoreCertificateCommand, GetUserAccessLoggingSettingsCommand, @@ -326,6 +339,7 @@ const commands = { ListIpAccessSettingsCommand, ListNetworkSettingsCommand, ListPortalsCommand, + ListSessionsCommand, ListTagsForResourceCommand, ListTrustStoreCertificatesCommand, ListTrustStoresCommand, @@ -809,6 +823,17 @@ export interface WorkSpacesWeb { cb: (err: any, data?: DisassociateUserSettingsCommandOutput) => void ): void; + /** + * @see {@link ExpireSessionCommand} + */ + expireSession(args: ExpireSessionCommandInput, options?: __HttpHandlerOptions): Promise; + expireSession(args: ExpireSessionCommandInput, cb: (err: any, data?: ExpireSessionCommandOutput) => void): void; + expireSession( + args: ExpireSessionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ExpireSessionCommandOutput) => void + ): void; + /** * @see {@link GetBrowserSettingsCommand} */ @@ -905,6 +930,17 @@ export interface WorkSpacesWeb { cb: (err: any, data?: GetPortalServiceProviderMetadataCommandOutput) => void ): void; + /** + * @see {@link GetSessionCommand} + */ + getSession(args: GetSessionCommandInput, options?: __HttpHandlerOptions): Promise; + getSession(args: GetSessionCommandInput, cb: (err: any, data?: GetSessionCommandOutput) => void): void; + getSession( + args: GetSessionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: GetSessionCommandOutput) => void + ): void; + /** * @see {@link GetTrustStoreCommand} */ @@ -1047,6 +1083,17 @@ export interface WorkSpacesWeb { cb: (err: any, data?: ListPortalsCommandOutput) => void ): void; + /** + * @see {@link ListSessionsCommand} + */ + listSessions(args: ListSessionsCommandInput, options?: __HttpHandlerOptions): Promise; + listSessions(args: ListSessionsCommandInput, cb: (err: any, data?: ListSessionsCommandOutput) => void): void; + listSessions( + args: ListSessionsCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListSessionsCommandOutput) => void + ): void; + /** * @see {@link ListTagsForResourceCommand} */ @@ -1286,12 +1333,13 @@ export interface WorkSpacesWeb { } /** - *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built specifically to facilitate - * secure, web-based workloads. WorkSpaces Secure Browser makes it easy for customers to safely provide - * their employees with access to internal websites and SaaS web applications without the - * administrative burden of appliances or specialized client software. WorkSpaces Secure Browser provides - * simple policy tools tailored for user interactions, while offloading common tasks like - * capacity management, scaling, and maintaining browser images.

+ *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built + * specifically to facilitate secure, web-based workloads. WorkSpaces Secure Browser makes it + * easy for customers to safely provide their employees with access to internal websites and + * SaaS web applications without the administrative burden of appliances or specialized client + * software. WorkSpaces Secure Browser provides simple policy tools tailored for user + * interactions, while offloading common tasks like capacity management, scaling, and + * maintaining browser images.

* @public */ export class WorkSpacesWeb extends WorkSpacesWebClient implements WorkSpacesWeb {} diff --git a/clients/client-workspaces-web/src/WorkSpacesWebClient.ts b/clients/client-workspaces-web/src/WorkSpacesWebClient.ts index 7cef60713a61..4188f75645a5 100644 --- a/clients/client-workspaces-web/src/WorkSpacesWebClient.ts +++ b/clients/client-workspaces-web/src/WorkSpacesWebClient.ts @@ -147,6 +147,7 @@ import { DisassociateUserSettingsCommandInput, DisassociateUserSettingsCommandOutput, } from "./commands/DisassociateUserSettingsCommand"; +import { ExpireSessionCommandInput, ExpireSessionCommandOutput } from "./commands/ExpireSessionCommand"; import { GetBrowserSettingsCommandInput, GetBrowserSettingsCommandOutput } from "./commands/GetBrowserSettingsCommand"; import { GetIdentityProviderCommandInput, @@ -162,6 +163,7 @@ import { GetPortalServiceProviderMetadataCommandInput, GetPortalServiceProviderMetadataCommandOutput, } from "./commands/GetPortalServiceProviderMetadataCommand"; +import { GetSessionCommandInput, GetSessionCommandOutput } from "./commands/GetSessionCommand"; import { GetTrustStoreCertificateCommandInput, GetTrustStoreCertificateCommandOutput, @@ -189,6 +191,7 @@ import { ListNetworkSettingsCommandOutput, } from "./commands/ListNetworkSettingsCommand"; import { ListPortalsCommandInput, ListPortalsCommandOutput } from "./commands/ListPortalsCommand"; +import { ListSessionsCommandInput, ListSessionsCommandOutput } from "./commands/ListSessionsCommand"; import { ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput, @@ -271,12 +274,14 @@ export type ServiceInputTypes = | DisassociateTrustStoreCommandInput | DisassociateUserAccessLoggingSettingsCommandInput | DisassociateUserSettingsCommandInput + | ExpireSessionCommandInput | GetBrowserSettingsCommandInput | GetIdentityProviderCommandInput | GetIpAccessSettingsCommandInput | GetNetworkSettingsCommandInput | GetPortalCommandInput | GetPortalServiceProviderMetadataCommandInput + | GetSessionCommandInput | GetTrustStoreCertificateCommandInput | GetTrustStoreCommandInput | GetUserAccessLoggingSettingsCommandInput @@ -286,6 +291,7 @@ export type ServiceInputTypes = | ListIpAccessSettingsCommandInput | ListNetworkSettingsCommandInput | ListPortalsCommandInput + | ListSessionsCommandInput | ListTagsForResourceCommandInput | ListTrustStoreCertificatesCommandInput | ListTrustStoresCommandInput @@ -334,12 +340,14 @@ export type ServiceOutputTypes = | DisassociateTrustStoreCommandOutput | DisassociateUserAccessLoggingSettingsCommandOutput | DisassociateUserSettingsCommandOutput + | ExpireSessionCommandOutput | GetBrowserSettingsCommandOutput | GetIdentityProviderCommandOutput | GetIpAccessSettingsCommandOutput | GetNetworkSettingsCommandOutput | GetPortalCommandOutput | GetPortalServiceProviderMetadataCommandOutput + | GetSessionCommandOutput | GetTrustStoreCertificateCommandOutput | GetTrustStoreCommandOutput | GetUserAccessLoggingSettingsCommandOutput @@ -349,6 +357,7 @@ export type ServiceOutputTypes = | ListIpAccessSettingsCommandOutput | ListNetworkSettingsCommandOutput | ListPortalsCommandOutput + | ListSessionsCommandOutput | ListTagsForResourceCommandOutput | ListTrustStoreCertificatesCommandOutput | ListTrustStoresCommandOutput @@ -537,12 +546,13 @@ export type WorkSpacesWebClientResolvedConfigType = __SmithyResolvedConfiguratio export interface WorkSpacesWebClientResolvedConfig extends WorkSpacesWebClientResolvedConfigType {} /** - *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built specifically to facilitate - * secure, web-based workloads. WorkSpaces Secure Browser makes it easy for customers to safely provide - * their employees with access to internal websites and SaaS web applications without the - * administrative burden of appliances or specialized client software. WorkSpaces Secure Browser provides - * simple policy tools tailored for user interactions, while offloading common tasks like - * capacity management, scaling, and maintaining browser images.

+ *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built + * specifically to facilitate secure, web-based workloads. WorkSpaces Secure Browser makes it + * easy for customers to safely provide their employees with access to internal websites and + * SaaS web applications without the administrative burden of appliances or specialized client + * software. WorkSpaces Secure Browser provides simple policy tools tailored for user + * interactions, while offloading common tasks like capacity management, scaling, and + * maintaining browser images.

* @public */ export class WorkSpacesWebClient extends __Client< diff --git a/clients/client-workspaces-web/src/commands/CreateUserAccessLoggingSettingsCommand.ts b/clients/client-workspaces-web/src/commands/CreateUserAccessLoggingSettingsCommand.ts index b8feeb5f4073..dc254a2205a5 100644 --- a/clients/client-workspaces-web/src/commands/CreateUserAccessLoggingSettingsCommand.ts +++ b/clients/client-workspaces-web/src/commands/CreateUserAccessLoggingSettingsCommand.ts @@ -37,7 +37,8 @@ export interface CreateUserAccessLoggingSettingsCommandOutput __MetadataBearer {} /** - *

Creates a user access logging settings resource that can be associated with a web portal.

+ *

Creates a user access logging settings resource that can be associated with a web + * portal.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-workspaces-web/src/commands/ExpireSessionCommand.ts b/clients/client-workspaces-web/src/commands/ExpireSessionCommand.ts new file mode 100644 index 000000000000..322c67c62b18 --- /dev/null +++ b/clients/client-workspaces-web/src/commands/ExpireSessionCommand.ts @@ -0,0 +1,106 @@ +// 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 { ExpireSessionRequest, ExpireSessionResponse } from "../models/models_0"; +import { de_ExpireSessionCommand, se_ExpireSessionCommand } from "../protocols/Aws_restJson1"; +import { ServiceInputTypes, ServiceOutputTypes, WorkSpacesWebClientResolvedConfig } from "../WorkSpacesWebClient"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ExpireSessionCommand}. + */ +export interface ExpireSessionCommandInput extends ExpireSessionRequest {} +/** + * @public + * + * The output of {@link ExpireSessionCommand}. + */ +export interface ExpireSessionCommandOutput extends ExpireSessionResponse, __MetadataBearer {} + +/** + *

Expires an active secure browser session.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { WorkSpacesWebClient, ExpireSessionCommand } from "@aws-sdk/client-workspaces-web"; // ES Modules import + * // const { WorkSpacesWebClient, ExpireSessionCommand } = require("@aws-sdk/client-workspaces-web"); // CommonJS import + * const client = new WorkSpacesWebClient(config); + * const input = { // ExpireSessionRequest + * portalId: "STRING_VALUE", // required + * sessionId: "STRING_VALUE", // required + * }; + * const command = new ExpireSessionCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param ExpireSessionCommandInput - {@link ExpireSessionCommandInput} + * @returns {@link ExpireSessionCommandOutput} + * @see {@link ExpireSessionCommandInput} for command's `input` shape. + * @see {@link ExpireSessionCommandOutput} for command's `response` shape. + * @see {@link WorkSpacesWebClientResolvedConfig | config} for WorkSpacesWebClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

Access is denied.

+ * + * @throws {@link InternalServerException} (server fault) + *

There is an internal server error.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

The resource cannot be found.

+ * + * @throws {@link ThrottlingException} (client fault) + *

There is a throttling error.

+ * + * @throws {@link ValidationException} (client fault) + *

There is a validation error.

+ * + * @throws {@link WorkSpacesWebServiceException} + *

Base exception class for all service exceptions from WorkSpacesWeb service.

+ * + * @public + */ +export class ExpireSessionCommand extends $Command + .classBuilder< + ExpireSessionCommandInput, + ExpireSessionCommandOutput, + WorkSpacesWebClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: WorkSpacesWebClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSErmineControlPlaneService", "ExpireSession", {}) + .n("WorkSpacesWebClient", "ExpireSessionCommand") + .f(void 0, void 0) + .ser(se_ExpireSessionCommand) + .de(de_ExpireSessionCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: ExpireSessionRequest; + output: {}; + }; + sdk: { + input: ExpireSessionCommandInput; + output: ExpireSessionCommandOutput; + }; + }; +} diff --git a/clients/client-workspaces-web/src/commands/GetSessionCommand.ts b/clients/client-workspaces-web/src/commands/GetSessionCommand.ts new file mode 100644 index 000000000000..c0b3f1eeb8e3 --- /dev/null +++ b/clients/client-workspaces-web/src/commands/GetSessionCommand.ts @@ -0,0 +1,118 @@ +// 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 { GetSessionRequest, GetSessionResponse, GetSessionResponseFilterSensitiveLog } from "../models/models_0"; +import { de_GetSessionCommand, se_GetSessionCommand } from "../protocols/Aws_restJson1"; +import { ServiceInputTypes, ServiceOutputTypes, WorkSpacesWebClientResolvedConfig } from "../WorkSpacesWebClient"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link GetSessionCommand}. + */ +export interface GetSessionCommandInput extends GetSessionRequest {} +/** + * @public + * + * The output of {@link GetSessionCommand}. + */ +export interface GetSessionCommandOutput extends GetSessionResponse, __MetadataBearer {} + +/** + *

Gets information for a secure browser session.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { WorkSpacesWebClient, GetSessionCommand } from "@aws-sdk/client-workspaces-web"; // ES Modules import + * // const { WorkSpacesWebClient, GetSessionCommand } = require("@aws-sdk/client-workspaces-web"); // CommonJS import + * const client = new WorkSpacesWebClient(config); + * const input = { // GetSessionRequest + * portalId: "STRING_VALUE", // required + * sessionId: "STRING_VALUE", // required + * }; + * const command = new GetSessionCommand(input); + * const response = await client.send(command); + * // { // GetSessionResponse + * // session: { // Session + * // portalArn: "STRING_VALUE", + * // sessionId: "STRING_VALUE", + * // username: "STRING_VALUE", + * // clientIpAddresses: [ // IpAddressList + * // "STRING_VALUE", + * // ], + * // status: "Active" || "Terminated", + * // startTime: new Date("TIMESTAMP"), + * // endTime: new Date("TIMESTAMP"), + * // }, + * // }; + * + * ``` + * + * @param GetSessionCommandInput - {@link GetSessionCommandInput} + * @returns {@link GetSessionCommandOutput} + * @see {@link GetSessionCommandInput} for command's `input` shape. + * @see {@link GetSessionCommandOutput} for command's `response` shape. + * @see {@link WorkSpacesWebClientResolvedConfig | config} for WorkSpacesWebClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

Access is denied.

+ * + * @throws {@link InternalServerException} (server fault) + *

There is an internal server error.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

The resource cannot be found.

+ * + * @throws {@link ThrottlingException} (client fault) + *

There is a throttling error.

+ * + * @throws {@link ValidationException} (client fault) + *

There is a validation error.

+ * + * @throws {@link WorkSpacesWebServiceException} + *

Base exception class for all service exceptions from WorkSpacesWeb service.

+ * + * @public + */ +export class GetSessionCommand extends $Command + .classBuilder< + GetSessionCommandInput, + GetSessionCommandOutput, + WorkSpacesWebClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: WorkSpacesWebClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSErmineControlPlaneService", "GetSession", {}) + .n("WorkSpacesWebClient", "GetSessionCommand") + .f(void 0, GetSessionResponseFilterSensitiveLog) + .ser(se_GetSessionCommand) + .de(de_GetSessionCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: GetSessionRequest; + output: GetSessionResponse; + }; + sdk: { + input: GetSessionCommandInput; + output: GetSessionCommandOutput; + }; + }; +} diff --git a/clients/client-workspaces-web/src/commands/ListSessionsCommand.ts b/clients/client-workspaces-web/src/commands/ListSessionsCommand.ts new file mode 100644 index 000000000000..3dda60483657 --- /dev/null +++ b/clients/client-workspaces-web/src/commands/ListSessionsCommand.ts @@ -0,0 +1,128 @@ +// 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 { + ListSessionsRequest, + ListSessionsRequestFilterSensitiveLog, + ListSessionsResponse, + ListSessionsResponseFilterSensitiveLog, +} from "../models/models_0"; +import { de_ListSessionsCommand, se_ListSessionsCommand } from "../protocols/Aws_restJson1"; +import { ServiceInputTypes, ServiceOutputTypes, WorkSpacesWebClientResolvedConfig } from "../WorkSpacesWebClient"; + +/** + * @public + */ +export type { __MetadataBearer }; +export { $Command }; +/** + * @public + * + * The input for {@link ListSessionsCommand}. + */ +export interface ListSessionsCommandInput extends ListSessionsRequest {} +/** + * @public + * + * The output of {@link ListSessionsCommand}. + */ +export interface ListSessionsCommandOutput extends ListSessionsResponse, __MetadataBearer {} + +/** + *

Lists information for multiple secure browser sessions from a specific portal.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { WorkSpacesWebClient, ListSessionsCommand } from "@aws-sdk/client-workspaces-web"; // ES Modules import + * // const { WorkSpacesWebClient, ListSessionsCommand } = require("@aws-sdk/client-workspaces-web"); // CommonJS import + * const client = new WorkSpacesWebClient(config); + * const input = { // ListSessionsRequest + * portalId: "STRING_VALUE", // required + * username: "STRING_VALUE", + * sessionId: "STRING_VALUE", + * sortBy: "StartTimeAscending" || "StartTimeDescending", + * status: "Active" || "Terminated", + * maxResults: Number("int"), + * nextToken: "STRING_VALUE", + * }; + * const command = new ListSessionsCommand(input); + * const response = await client.send(command); + * // { // ListSessionsResponse + * // sessions: [ // SessionSummaryList // required + * // { // SessionSummary + * // portalArn: "STRING_VALUE", + * // sessionId: "STRING_VALUE", + * // username: "STRING_VALUE", + * // status: "Active" || "Terminated", + * // startTime: new Date("TIMESTAMP"), + * // endTime: new Date("TIMESTAMP"), + * // }, + * // ], + * // nextToken: "STRING_VALUE", + * // }; + * + * ``` + * + * @param ListSessionsCommandInput - {@link ListSessionsCommandInput} + * @returns {@link ListSessionsCommandOutput} + * @see {@link ListSessionsCommandInput} for command's `input` shape. + * @see {@link ListSessionsCommandOutput} for command's `response` shape. + * @see {@link WorkSpacesWebClientResolvedConfig | config} for WorkSpacesWebClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

Access is denied.

+ * + * @throws {@link InternalServerException} (server fault) + *

There is an internal server error.

+ * + * @throws {@link ResourceNotFoundException} (client fault) + *

The resource cannot be found.

+ * + * @throws {@link ThrottlingException} (client fault) + *

There is a throttling error.

+ * + * @throws {@link ValidationException} (client fault) + *

There is a validation error.

+ * + * @throws {@link WorkSpacesWebServiceException} + *

Base exception class for all service exceptions from WorkSpacesWeb service.

+ * + * @public + */ +export class ListSessionsCommand extends $Command + .classBuilder< + ListSessionsCommandInput, + ListSessionsCommandOutput, + WorkSpacesWebClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep(commonParams) + .m(function (this: any, Command: any, cs: any, config: WorkSpacesWebClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSErmineControlPlaneService", "ListSessions", {}) + .n("WorkSpacesWebClient", "ListSessionsCommand") + .f(ListSessionsRequestFilterSensitiveLog, ListSessionsResponseFilterSensitiveLog) + .ser(se_ListSessionsCommand) + .de(de_ListSessionsCommand) + .build() { + /** @internal type navigation helper, not in runtime. */ + protected declare static __types: { + api: { + input: ListSessionsRequest; + output: ListSessionsResponse; + }; + sdk: { + input: ListSessionsCommandInput; + output: ListSessionsCommandOutput; + }; + }; +} diff --git a/clients/client-workspaces-web/src/commands/index.ts b/clients/client-workspaces-web/src/commands/index.ts index daf2bac1d2e2..5e9ad2589a52 100644 --- a/clients/client-workspaces-web/src/commands/index.ts +++ b/clients/client-workspaces-web/src/commands/index.ts @@ -27,12 +27,14 @@ export * from "./DisassociateNetworkSettingsCommand"; export * from "./DisassociateTrustStoreCommand"; export * from "./DisassociateUserAccessLoggingSettingsCommand"; export * from "./DisassociateUserSettingsCommand"; +export * from "./ExpireSessionCommand"; export * from "./GetBrowserSettingsCommand"; export * from "./GetIdentityProviderCommand"; export * from "./GetIpAccessSettingsCommand"; export * from "./GetNetworkSettingsCommand"; export * from "./GetPortalCommand"; export * from "./GetPortalServiceProviderMetadataCommand"; +export * from "./GetSessionCommand"; export * from "./GetTrustStoreCertificateCommand"; export * from "./GetTrustStoreCommand"; export * from "./GetUserAccessLoggingSettingsCommand"; @@ -42,6 +44,7 @@ export * from "./ListIdentityProvidersCommand"; export * from "./ListIpAccessSettingsCommand"; export * from "./ListNetworkSettingsCommand"; export * from "./ListPortalsCommand"; +export * from "./ListSessionsCommand"; export * from "./ListTagsForResourceCommand"; export * from "./ListTrustStoreCertificatesCommand"; export * from "./ListTrustStoresCommand"; diff --git a/clients/client-workspaces-web/src/index.ts b/clients/client-workspaces-web/src/index.ts index abe187da480c..ebb8ae09e22d 100644 --- a/clients/client-workspaces-web/src/index.ts +++ b/clients/client-workspaces-web/src/index.ts @@ -1,12 +1,13 @@ // smithy-typescript generated code /* eslint-disable */ /** - *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built specifically to facilitate - * secure, web-based workloads. WorkSpaces Secure Browser makes it easy for customers to safely provide - * their employees with access to internal websites and SaaS web applications without the - * administrative burden of appliances or specialized client software. WorkSpaces Secure Browser provides - * simple policy tools tailored for user interactions, while offloading common tasks like - * capacity management, scaling, and maintaining browser images.

+ *

Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built + * specifically to facilitate secure, web-based workloads. WorkSpaces Secure Browser makes it + * easy for customers to safely provide their employees with access to internal websites and + * SaaS web applications without the administrative burden of appliances or specialized client + * software. WorkSpaces Secure Browser provides simple policy tools tailored for user + * interactions, while offloading common tasks like capacity management, scaling, and + * maintaining browser images.

* * @packageDocumentation */ diff --git a/clients/client-workspaces-web/src/models/models_0.ts b/clients/client-workspaces-web/src/models/models_0.ts index 884d925e9061..a197180bfee6 100644 --- a/clients/client-workspaces-web/src/models/models_0.ts +++ b/clients/client-workspaces-web/src/models/models_0.ts @@ -497,7 +497,8 @@ export interface CreateBrowserSettingsRequest { * request. Idempotency ensures that an API request completes only once. With an idempotent * request, if the original request completes successfully, subsequent retries with the same * client token returns the result from the original successful request.

- *

If you do not specify a client token, one is automatically generated by the Amazon Web Services SDK.

+ *

If you do not specify a client token, one is automatically generated by the Amazon Web Services SDK. + *

* @public */ clientToken?: string; @@ -616,7 +617,8 @@ export interface BrowserSettings { browserPolicy?: string; /** - *

The customer managed key used to encrypt sensitive information in the browser settings.

+ *

The customer managed key used to encrypt sensitive information in the browser + * settings.

* @public */ customerManagedKey?: string; @@ -644,7 +646,8 @@ export interface GetBrowserSettingsResponse { */ export interface ListBrowserSettingsRequest { /** - *

The pagination token used to retrieve the next page of results for this operation.

+ *

The pagination token used to retrieve the next page of results for this + * operation.

* @public */ nextToken?: string; @@ -679,7 +682,8 @@ export interface ListBrowserSettingsResponse { browserSettings?: BrowserSettingsSummary[]; /** - *

The pagination token used to retrieve the next page of results for this operation.

+ *

The pagination token used to retrieve the next page of results for this + * operation.

* @public */ nextToken?: string; @@ -725,6 +729,118 @@ export interface UpdateBrowserSettingsResponse { browserSettings: BrowserSettings | undefined; } +/** + * @public + */ +export interface ExpireSessionRequest { + /** + *

The ID of the web portal for the session.

+ * @public + */ + portalId: string | undefined; + + /** + *

The ID of the session to expire.

+ * @public + */ + sessionId: string | undefined; +} + +/** + * @public + */ +export interface ExpireSessionResponse {} + +/** + * @public + */ +export interface GetSessionRequest { + /** + *

The ID of the web portal for the session.

+ * @public + */ + portalId: string | undefined; + + /** + *

The ID of the session.

+ * @public + */ + sessionId: string | undefined; +} + +/** + * @public + * @enum + */ +export const SessionStatus = { + ACTIVE: "Active", + TERMINATED: "Terminated", +} as const; + +/** + * @public + */ +export type SessionStatus = (typeof SessionStatus)[keyof typeof SessionStatus]; + +/** + *

Information about a secure browser session.

+ * @public + */ +export interface Session { + /** + *

The ARN of the web portal.

+ * @public + */ + portalArn?: string; + + /** + *

The ID of the session.

+ * @public + */ + sessionId?: string; + + /** + *

The username of the session.

+ * @public + */ + username?: string; + + /** + *

The IP address of the client.

+ * @public + */ + clientIpAddresses?: string[]; + + /** + *

The status of the session.

+ * @public + */ + status?: SessionStatus; + + /** + *

The start time of the session.

+ * @public + */ + startTime?: Date; + + /** + *

The end time of the session.

+ * @public + */ + endTime?: Date; +} + +/** + * @public + */ +export interface GetSessionResponse { + /** + *

The sessions in a list.

+ * @public + */ + session?: Session; +} + /** * @public * @enum @@ -912,8 +1028,7 @@ export interface CreateIdentityProviderRequest { * *
  • *

    - * IDPSignout (boolean) - * optional + * IDPSignout (boolean) optional *

    *
  • *
  • @@ -1208,7 +1323,8 @@ export interface GetIdentityProviderResponse { */ export interface ListIdentityProvidersRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1255,7 +1371,8 @@ export interface IdentityProviderSummary { */ export interface ListIdentityProvidersResponse { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1290,8 +1407,8 @@ export interface UpdateIdentityProviderRequest { identityProviderType?: IdentityProviderType; /** - *

    The details of the identity provider. The following list describes the provider detail keys for - * each identity provider type.

    + *

    The details of the identity provider. The following list describes the provider detail + * keys for each identity provider type.

    *
      *
    • *

      For Google and Login with Amazon:

      @@ -1400,28 +1517,28 @@ export interface UpdateIdentityProviderRequest { *

      * authorize_url * if not available from discovery URL specified by - * oidc_issuer key + * oidc_issuer key *

      *
    • *
    • *

      * token_url * if not available from discovery URL specified by - * oidc_issuer key + * oidc_issuer key *

      *
    • *
    • *

      * attributes_url * if not available from discovery URL specified by - * oidc_issuer key + * oidc_issuer key *

      *
    • *
    • *

      * jwks_uri * if not available from discovery URL specified by - * oidc_issuer key + * oidc_issuer key *

      *
    • *
    @@ -1605,7 +1722,8 @@ export interface IpAccessSettings { ipAccessSettingsArn: string | undefined; /** - *

    A list of web portal ARNs that this IP access settings resource is associated with.

    + *

    A list of web portal ARNs that this IP access settings resource is associated + * with.

    * @public */ associatedPortalArns?: string[]; @@ -1635,7 +1753,8 @@ export interface IpAccessSettings { creationDate?: Date; /** - *

    The customer managed key used to encrypt sensitive information in the IP access settings.

    + *

    The customer managed key used to encrypt sensitive information in the IP access + * settings.

    * @public */ customerManagedKey?: string; @@ -1663,7 +1782,8 @@ export interface GetIpAccessSettingsResponse { */ export interface ListIpAccessSettingsRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1716,7 +1836,8 @@ export interface ListIpAccessSettingsResponse { ipAccessSettings?: IpAccessSettingsSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1773,6 +1894,128 @@ export interface UpdateIpAccessSettingsResponse { ipAccessSettings: IpAccessSettings | undefined; } +/** + * @public + * @enum + */ +export const SessionSortBy = { + START_TIME_ASCENDING: "StartTimeAscending", + START_TIME_DESCENDING: "StartTimeDescending", +} as const; + +/** + * @public + */ +export type SessionSortBy = (typeof SessionSortBy)[keyof typeof SessionSortBy]; + +/** + * @public + */ +export interface ListSessionsRequest { + /** + *

    The ID of the web portal for the sessions.

    + * @public + */ + portalId: string | undefined; + + /** + *

    The username of the session.

    + * @public + */ + username?: string; + + /** + *

    The ID of the session.

    + * @public + */ + sessionId?: string; + + /** + *

    The method in which the returned sessions should be sorted.

    + * @public + */ + sortBy?: SessionSortBy; + + /** + *

    The status of the session.

    + * @public + */ + status?: SessionStatus; + + /** + *

    The maximum number of results to be included in the next page.

    + * @public + */ + maxResults?: number; + + /** + *

    The pagination token used to retrieve the next page of results for this + * operation.

    + * @public + */ + nextToken?: string; +} + +/** + *

    Summary information about a secure browser session.

    + * @public + */ +export interface SessionSummary { + /** + *

    The ARN of the web portal.

    + * @public + */ + portalArn?: string; + + /** + *

    The ID of the session.

    + * @public + */ + sessionId?: string; + + /** + *

    The username of the session.

    + * @public + */ + username?: string; + + /** + *

    The status of the session.

    + * @public + */ + status?: SessionStatus; + + /** + *

    The start time of the session.

    + * @public + */ + startTime?: Date; + + /** + *

    The end time of the session.

    + * @public + */ + endTime?: Date; +} + +/** + * @public + */ +export interface ListSessionsResponse { + /** + *

    The sessions in a list.

    + * @public + */ + sessions: SessionSummary[] | undefined; + + /** + *

    The pagination token used to retrieve the next page of results for this + * operation.

    + * @public + */ + nextToken?: string; +} + /** * @public */ @@ -1806,13 +2049,15 @@ export interface CreateNetworkSettingsRequest { vpcId: string | undefined; /** - *

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    + *

    The subnets in which network interfaces are created to connect streaming instances to + * your VPC. At least two of these subnets must be in different availability zones.

    * @public */ subnetIds: string[] | undefined; /** - *

    One or more security groups used to control access from streaming instances to your VPC.

    + *

    One or more security groups used to control access from streaming instances to your + * VPC.

    * @public */ securityGroupIds: string[] | undefined; @@ -1899,13 +2144,15 @@ export interface NetworkSettings { vpcId?: string; /** - *

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    + *

    The subnets in which network interfaces are created to connect streaming instances to + * your VPC. At least two of these subnets must be in different availability zones.

    * @public */ subnetIds?: string[]; /** - *

    One or more security groups used to control access from streaming instances to your VPC.

    + *

    One or more security groups used to control access from streaming instances to your VPC. + *

    * @public */ securityGroupIds?: string[]; @@ -1927,7 +2174,8 @@ export interface GetNetworkSettingsResponse { */ export interface ListNetworkSettingsRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1968,7 +2216,8 @@ export interface ListNetworkSettingsResponse { networkSettings?: NetworkSettingsSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -1991,13 +2240,15 @@ export interface UpdateNetworkSettingsRequest { vpcId?: string; /** - *

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    + *

    The subnets in which network interfaces are created to connect streaming instances to + * your VPC. At least two of these subnets must be in different availability zones.

    * @public */ subnetIds?: string[]; /** - *

    One or more security groups used to control access from streaming instances to your VPC.

    + *

    One or more security groups used to control access from streaming instances to your + * VPC.

    * @public */ securityGroupIds?: string[]; @@ -2058,7 +2309,8 @@ export type _InstanceType = (typeof _InstanceType)[keyof typeof _InstanceType]; */ export interface CreatePortalRequest { /** - *

    The name of the web portal. This is not visible to users who log into the web portal.

    + *

    The name of the web portal. This is not visible to users who log into the web + * portal.

    * @public */ displayName?: string; @@ -2101,9 +2353,9 @@ export interface CreatePortalRequest { * provider with your web portal. User and group access to your web portal is controlled * through your identity provider.

    *

    - * IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including - * external identity provider integration), plus user and group access to your web portal, - * can be configured in the IAM Identity Center.

    + * IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources + * (including external identity provider integration), plus user and group access to your web + * portal, can be configured in the IAM Identity Center.

    * @public */ authenticationType?: AuthenticationType; @@ -2132,7 +2384,8 @@ export interface CreatePortalResponse { portalArn: string | undefined; /** - *

    The endpoint URL of the web portal that users access in order to start streaming sessions.

    + *

    The endpoint URL of the web portal that users access in order to start streaming + * sessions.

    * @public */ portalEndpoint: string | undefined; @@ -2368,7 +2621,8 @@ export interface Portal { statusReason?: string; /** - *

    The ARN of the user access logging settings that is associated with the web portal.

    + *

    The ARN of the user access logging settings that is associated with the web + * portal.

    * @public */ userAccessLoggingSettingsArn?: string; @@ -2382,9 +2636,9 @@ export interface Portal { * provider with your web portal. User and group access to your web portal is controlled * through your identity provider.

    *

    - * IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including - * external identity provider integration), plus user and group access to your web portal, - * can be configured in the IAM Identity Center.

    + * IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources + * (including external identity provider integration), plus user and group access to your web + * portal, can be configured in the IAM Identity Center.

    * @public */ authenticationType?: AuthenticationType; @@ -2464,7 +2718,8 @@ export interface GetPortalServiceProviderMetadataResponse { */ export interface ListPortalsRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this operation. + *

    * @public */ nextToken?: string; @@ -2549,7 +2804,8 @@ export interface PortalSummary { trustStoreArn?: string; /** - *

    The ARN of the user access logging settings that is associated with the web portal.

    + *

    The ARN of the user access logging settings that is associated with the web + * portal.

    * @public */ userAccessLoggingSettingsArn?: string; @@ -2563,9 +2819,9 @@ export interface PortalSummary { * provider with your web portal. User and group access to your web portal is controlled * through your identity provider.

    *

    - * IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including - * external identity provider integration), plus user and group access to your web portal, - * can be configured in the IAM Identity Center.

    + * IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources + * (including external identity provider integration), plus user and group access to your web + * portal, can be configured in the IAM Identity Center.

    * @public */ authenticationType?: AuthenticationType; @@ -2600,7 +2856,8 @@ export interface ListPortalsResponse { portals?: PortalSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this operation. + *

    * @public */ nextToken?: string; @@ -2617,7 +2874,8 @@ export interface UpdatePortalRequest { portalArn: string | undefined; /** - *

    The name of the web portal. This is not visible to users who log into the web portal.

    + *

    The name of the web portal. This is not visible to users who log into the web + * portal.

    * @public */ displayName?: string; @@ -2631,9 +2889,9 @@ export interface UpdatePortalRequest { * provider with your web portal. User and group access to your web portal is controlled * through your identity provider.

    *

    - * IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including - * external identity provider integration), plus user and group access to your web portal, - * can be configured in the IAM Identity Center.

    + * IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources + * (including external identity provider integration), plus user and group access to your web + * portal, can be configured in the IAM Identity Center.

    * @public */ authenticationType?: AuthenticationType; @@ -2944,7 +3202,8 @@ export interface ListTrustStoreCertificatesRequest { trustStoreArn: string | undefined; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -2973,7 +3232,8 @@ export interface ListTrustStoreCertificatesResponse { trustStoreArn: string | undefined; /** - *

    The pagination token used to retrieve the next page of results for this operation.>

    + *

    The pagination token used to retrieve the next page of results for this + * operation.>

    * @public */ nextToken?: string; @@ -2984,7 +3244,8 @@ export interface ListTrustStoreCertificatesResponse { */ export interface ListTrustStoresRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -3019,7 +3280,8 @@ export interface ListTrustStoresResponse { trustStores?: TrustStoreSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -3170,7 +3432,8 @@ export interface UserAccessLoggingSettings { userAccessLoggingSettingsArn: string | undefined; /** - *

    A list of web portal ARNs that this user access logging settings is associated with.

    + *

    A list of web portal ARNs that this user access logging settings is associated + * with.

    * @public */ associatedPortalArns?: string[]; @@ -3198,7 +3461,8 @@ export interface GetUserAccessLoggingSettingsResponse { */ export interface ListUserAccessLoggingSettingsRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -3239,7 +3503,8 @@ export interface ListUserAccessLoggingSettingsResponse { userAccessLoggingSettings?: UserAccessLoggingSettingsSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this + * operation.

    * @public */ nextToken?: string; @@ -3309,18 +3574,21 @@ export interface CookieSpecification { } /** - *

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    + *

    The configuration that specifies which cookies should be synchronized from the end + * user's local browser to the remote browser.

    * @public */ export interface CookieSynchronizationConfiguration { /** - *

    The list of cookie specifications that are allowed to be synchronized to the remote browser.

    + *

    The list of cookie specifications that are allowed to be synchronized to the remote + * browser.

    * @public */ allowlist: CookieSpecification[] | undefined; /** - *

    The list of cookie specifications that are blocked from being synchronized to the remote browser.

    + *

    The list of cookie specifications that are blocked from being synchronized to the remote + * browser.

    * @public */ blocklist?: CookieSpecification[]; @@ -3385,13 +3653,15 @@ export interface CreateUserSettingsRequest { tags?: Tag[]; /** - *

    The amount of time that a streaming session remains active after users disconnect.

    + *

    The amount of time that a streaming session remains active after users + * disconnect.

    * @public */ disconnectTimeoutInMinutes?: number; /** - *

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    + *

    The amount of time that users can be idle (inactive) before they are disconnected from + * their streaming session and the disconnect timeout interval begins.

    * @public */ idleDisconnectTimeoutInMinutes?: number; @@ -3408,13 +3678,15 @@ export interface CreateUserSettingsRequest { clientToken?: string; /** - *

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    + *

    The configuration that specifies which cookies should be synchronized from the end + * user's local browser to the remote browser.

    * @public */ cookieSynchronizationConfiguration?: CookieSynchronizationConfiguration; /** - *

    The customer managed key used to encrypt sensitive information in the user settings.

    + *

    The customer managed key used to encrypt sensitive information in the user + * settings.

    * @public */ customerManagedKey?: string; @@ -3426,7 +3698,8 @@ export interface CreateUserSettingsRequest { additionalEncryptionContext?: Record; /** - *

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    + *

    Specifies whether the user can use deep links that open automatically when connecting to + * a session.

    * @public */ deepLinkAllowed?: EnabledType; @@ -3524,25 +3797,29 @@ export interface UserSettings { printAllowed?: EnabledType; /** - *

    The amount of time that a streaming session remains active after users disconnect.

    + *

    The amount of time that a streaming session remains active after users + * disconnect.

    * @public */ disconnectTimeoutInMinutes?: number; /** - *

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    + *

    The amount of time that users can be idle (inactive) before they are disconnected from + * their streaming session and the disconnect timeout interval begins.

    * @public */ idleDisconnectTimeoutInMinutes?: number; /** - *

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    + *

    The configuration that specifies which cookies should be synchronized from the end + * user's local browser to the remote browser.

    * @public */ cookieSynchronizationConfiguration?: CookieSynchronizationConfiguration; /** - *

    The customer managed key used to encrypt sensitive information in the user settings.

    + *

    The customer managed key used to encrypt sensitive information in the user + * settings.

    * @public */ customerManagedKey?: string; @@ -3554,7 +3831,8 @@ export interface UserSettings { additionalEncryptionContext?: Record; /** - *

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    + *

    Specifies whether the user can use deep links that open automatically when connecting to + * a session.

    * @public */ deepLinkAllowed?: EnabledType; @@ -3576,7 +3854,8 @@ export interface GetUserSettingsResponse { */ export interface ListUserSettingsRequest { /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this operation. + *

    * @public */ nextToken?: string; @@ -3634,25 +3913,29 @@ export interface UserSettingsSummary { printAllowed?: EnabledType; /** - *

    The amount of time that a streaming session remains active after users disconnect.

    + *

    The amount of time that a streaming session remains active after users + * disconnect.

    * @public */ disconnectTimeoutInMinutes?: number; /** - *

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    + *

    The amount of time that users can be idle (inactive) before they are disconnected from + * their streaming session and the disconnect timeout interval begins.

    * @public */ idleDisconnectTimeoutInMinutes?: number; /** - *

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    + *

    The configuration that specifies which cookies should be synchronized from the end + * user's local browser to the remote browser.

    * @public */ cookieSynchronizationConfiguration?: CookieSynchronizationConfiguration; /** - *

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    + *

    Specifies whether the user can use deep links that open automatically when connecting to + * a session.

    * @public */ deepLinkAllowed?: EnabledType; @@ -3669,7 +3952,8 @@ export interface ListUserSettingsResponse { userSettings?: UserSettingsSummary[]; /** - *

    The pagination token used to retrieve the next page of results for this operation.

    + *

    The pagination token used to retrieve the next page of results for this operation. + *

    * @public */ nextToken?: string; @@ -3720,13 +4004,15 @@ export interface UpdateUserSettingsRequest { printAllowed?: EnabledType; /** - *

    The amount of time that a streaming session remains active after users disconnect.

    + *

    The amount of time that a streaming session remains active after users + * disconnect.

    * @public */ disconnectTimeoutInMinutes?: number; /** - *

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    + *

    The amount of time that users can be idle (inactive) before they are disconnected from + * their streaming session and the disconnect timeout interval begins.

    * @public */ idleDisconnectTimeoutInMinutes?: number; @@ -3743,14 +4029,16 @@ export interface UpdateUserSettingsRequest { clientToken?: string; /** - *

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    + *

    The configuration that specifies which cookies should be synchronized from the end + * user's local browser to the remote browser.

    *

    If the allowlist and blocklist are empty, the configuration becomes null.

    * @public */ cookieSynchronizationConfiguration?: CookieSynchronizationConfiguration; /** - *

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    + *

    Specifies whether the user can use deep links that open automatically when connecting to + * a session.

    * @public */ deepLinkAllowed?: EnabledType; @@ -3817,6 +4105,23 @@ export const UpdateBrowserSettingsResponseFilterSensitiveLog = (obj: UpdateBrows ...(obj.browserSettings && { browserSettings: BrowserSettingsFilterSensitiveLog(obj.browserSettings) }), }); +/** + * @internal + */ +export const SessionFilterSensitiveLog = (obj: Session): any => ({ + ...obj, + ...(obj.username && { username: SENSITIVE_STRING }), + ...(obj.clientIpAddresses && { clientIpAddresses: SENSITIVE_STRING }), +}); + +/** + * @internal + */ +export const GetSessionResponseFilterSensitiveLog = (obj: GetSessionResponse): any => ({ + ...obj, + ...(obj.session && { session: SessionFilterSensitiveLog(obj.session) }), +}); + /** * @internal */ @@ -3954,6 +4259,30 @@ export const UpdateIpAccessSettingsResponseFilterSensitiveLog = (obj: UpdateIpAc ...(obj.ipAccessSettings && { ipAccessSettings: IpAccessSettingsFilterSensitiveLog(obj.ipAccessSettings) }), }); +/** + * @internal + */ +export const ListSessionsRequestFilterSensitiveLog = (obj: ListSessionsRequest): any => ({ + ...obj, + ...(obj.username && { username: SENSITIVE_STRING }), +}); + +/** + * @internal + */ +export const SessionSummaryFilterSensitiveLog = (obj: SessionSummary): any => ({ + ...obj, + ...(obj.username && { username: SENSITIVE_STRING }), +}); + +/** + * @internal + */ +export const ListSessionsResponseFilterSensitiveLog = (obj: ListSessionsResponse): any => ({ + ...obj, + ...(obj.sessions && { sessions: obj.sessions.map((item) => SessionSummaryFilterSensitiveLog(item)) }), +}); + /** * @internal */ diff --git a/clients/client-workspaces-web/src/pagination/ListSessionsPaginator.ts b/clients/client-workspaces-web/src/pagination/ListSessionsPaginator.ts new file mode 100644 index 000000000000..45b2a24c72c2 --- /dev/null +++ b/clients/client-workspaces-web/src/pagination/ListSessionsPaginator.ts @@ -0,0 +1,24 @@ +// smithy-typescript generated code +import { createPaginator } from "@smithy/core"; +import { Paginator } from "@smithy/types"; + +import { + ListSessionsCommand, + ListSessionsCommandInput, + ListSessionsCommandOutput, +} from "../commands/ListSessionsCommand"; +import { WorkSpacesWebClient } from "../WorkSpacesWebClient"; +import { WorkSpacesWebPaginationConfiguration } from "./Interfaces"; + +/** + * @public + */ +export const paginateListSessions: ( + config: WorkSpacesWebPaginationConfiguration, + input: ListSessionsCommandInput, + ...rest: any[] +) => Paginator = createPaginator< + WorkSpacesWebPaginationConfiguration, + ListSessionsCommandInput, + ListSessionsCommandOutput +>(WorkSpacesWebClient, ListSessionsCommand, "nextToken", "nextToken", "maxResults"); diff --git a/clients/client-workspaces-web/src/pagination/index.ts b/clients/client-workspaces-web/src/pagination/index.ts index 42288fd721d2..b1b9987634c8 100644 --- a/clients/client-workspaces-web/src/pagination/index.ts +++ b/clients/client-workspaces-web/src/pagination/index.ts @@ -5,6 +5,7 @@ export * from "./ListIdentityProvidersPaginator"; export * from "./ListIpAccessSettingsPaginator"; export * from "./ListNetworkSettingsPaginator"; export * from "./ListPortalsPaginator"; +export * from "./ListSessionsPaginator"; export * from "./ListTrustStoreCertificatesPaginator"; export * from "./ListTrustStoresPaginator"; export * from "./ListUserAccessLoggingSettingsPaginator"; diff --git a/clients/client-workspaces-web/src/protocols/Aws_restJson1.ts b/clients/client-workspaces-web/src/protocols/Aws_restJson1.ts index 2d5f5cbf5b58..0c7b697d6e7e 100644 --- a/clients/client-workspaces-web/src/protocols/Aws_restJson1.ts +++ b/clients/client-workspaces-web/src/protocols/Aws_restJson1.ts @@ -120,6 +120,7 @@ import { DisassociateUserSettingsCommandInput, DisassociateUserSettingsCommandOutput, } from "../commands/DisassociateUserSettingsCommand"; +import { ExpireSessionCommandInput, ExpireSessionCommandOutput } from "../commands/ExpireSessionCommand"; import { GetBrowserSettingsCommandInput, GetBrowserSettingsCommandOutput } from "../commands/GetBrowserSettingsCommand"; import { GetIdentityProviderCommandInput, @@ -135,6 +136,7 @@ import { GetPortalServiceProviderMetadataCommandInput, GetPortalServiceProviderMetadataCommandOutput, } from "../commands/GetPortalServiceProviderMetadataCommand"; +import { GetSessionCommandInput, GetSessionCommandOutput } from "../commands/GetSessionCommand"; import { GetTrustStoreCertificateCommandInput, GetTrustStoreCertificateCommandOutput, @@ -162,6 +164,7 @@ import { ListNetworkSettingsCommandOutput, } from "../commands/ListNetworkSettingsCommand"; import { ListPortalsCommandInput, ListPortalsCommandOutput } from "../commands/ListPortalsCommand"; +import { ListSessionsCommandInput, ListSessionsCommandOutput } from "../commands/ListSessionsCommand"; import { ListTagsForResourceCommandInput, ListTagsForResourceCommandOutput, @@ -216,6 +219,8 @@ import { PortalSummary, ResourceNotFoundException, ServiceQuotaExceededException, + Session, + SessionSummary, Tag, ThrottlingException, TooManyTagsException, @@ -784,6 +789,23 @@ export const se_DisassociateUserSettingsCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1ExpireSessionCommand + */ +export const se_ExpireSessionCommand = async ( + input: ExpireSessionCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = {}; + b.bp("/portals/{portalId}/sessions/{sessionId}"); + b.p("portalId", () => input.portalId!, "{portalId}", false); + b.p("sessionId", () => input.sessionId!, "{sessionId}", false); + let body: any; + b.m("DELETE").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1GetBrowserSettingsCommand */ @@ -880,6 +902,23 @@ export const se_GetPortalServiceProviderMetadataCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1GetSessionCommand + */ +export const se_GetSessionCommand = async ( + input: GetSessionCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = {}; + b.bp("/portals/{portalId}/sessions/{sessionId}"); + b.p("portalId", () => input.portalId!, "{portalId}", false); + b.p("sessionId", () => input.sessionId!, "{sessionId}", false); + let body: any; + b.m("GET").h(headers).b(body); + return b.build(); +}; + /** * serializeAws_restJson1GetTrustStoreCommand */ @@ -1048,6 +1087,30 @@ export const se_ListPortalsCommand = async ( return b.build(); }; +/** + * serializeAws_restJson1ListSessionsCommand + */ +export const se_ListSessionsCommand = async ( + input: ListSessionsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const b = rb(input, context); + const headers: any = {}; + b.bp("/portals/{portalId}/sessions"); + b.p("portalId", () => input.portalId!, "{portalId}", false); + const query: any = map({ + [_u]: [, input[_u]!], + [_sI]: [, input[_sI]!], + [_sB]: [, input[_sB]!], + [_s]: [, input[_s]!], + [_mR]: [() => input.maxResults !== void 0, () => input[_mR]!.toString()], + [_nT]: [, input[_nT]!], + }); + let body: any; + b.m("GET").h(headers).q(query).b(body); + return b.build(); +}; + /** * serializeAws_restJson1ListTagsForResourceCommand */ @@ -1940,6 +2003,23 @@ export const de_DisassociateUserSettingsCommand = async ( return contents; }; +/** + * deserializeAws_restJson1ExpireSessionCommand + */ +export const de_ExpireSessionCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + await collectBody(output.body, context); + return contents; +}; + /** * deserializeAws_restJson1GetBrowserSettingsCommand */ @@ -2067,6 +2147,27 @@ export const de_GetPortalServiceProviderMetadataCommand = async ( return contents; }; +/** + * deserializeAws_restJson1GetSessionCommand + */ +export const de_GetSessionCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + session: (_) => de_Session(_, context), + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1GetTrustStoreCommand */ @@ -2262,6 +2363,28 @@ export const de_ListPortalsCommand = async ( return contents; }; +/** + * deserializeAws_restJson1ListSessionsCommand + */ +export const de_ListSessionsCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return de_CommandError(output, context); + } + const contents: any = map({ + $metadata: deserializeMetadata(output), + }); + const data: Record = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + const doc = take(data, { + nextToken: __expectString, + sessions: (_) => de_SessionSummaryList(_, context), + }); + Object.assign(contents, doc); + return contents; +}; + /** * deserializeAws_restJson1ListTagsForResourceCommand */ @@ -2925,6 +3048,8 @@ const de_IpAccessSettingsSummary = (output: any, context: __SerdeContext): IpAcc }) as any; }; +// de_IpAddressList omitted. + // de_IpRule omitted. // de_IpRuleList omitted. @@ -3000,6 +3125,47 @@ const de_PortalSummary = (output: any, context: __SerdeContext): PortalSummary = // de_SecurityGroupIdList omitted. +/** + * deserializeAws_restJson1Session + */ +const de_Session = (output: any, context: __SerdeContext): Session => { + return take(output, { + clientIpAddresses: _json, + endTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + portalArn: __expectString, + sessionId: __expectString, + startTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + status: __expectString, + username: __expectString, + }) as any; +}; + +/** + * deserializeAws_restJson1SessionSummary + */ +const de_SessionSummary = (output: any, context: __SerdeContext): SessionSummary => { + return take(output, { + endTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + portalArn: __expectString, + sessionId: __expectString, + startTime: (_: any) => __expectNonNull(__parseEpochTimestamp(__expectNumber(_))), + status: __expectString, + username: __expectString, + }) as any; +}; + +/** + * deserializeAws_restJson1SessionSummaryList + */ +const de_SessionSummaryList = (output: any, context: __SerdeContext): SessionSummary[] => { + const retVal = (output || []) + .filter((e: any) => e != null) + .map((entry: any) => { + return de_SessionSummary(entry, context); + }); + return retVal; +}; + // de_SubnetIdList omitted. // de_Tag omitted. @@ -3054,8 +3220,12 @@ const _nSA = "networkSettingsArn"; const _nT = "nextToken"; const _rAS = "retryAfterSeconds"; const _ra = "retry-after"; +const _s = "status"; +const _sB = "sortBy"; +const _sI = "sessionId"; const _t = "thumbprint"; const _tK = "tagKeys"; const _tSA = "trustStoreArn"; +const _u = "username"; const _uALSA = "userAccessLoggingSettingsArn"; const _uSA = "userSettingsArn"; diff --git a/codegen/sdk-codegen/aws-models/workspaces-web.json b/codegen/sdk-codegen/aws-models/workspaces-web.json index f3658c17a5c3..9aa7eb7de499 100644 --- a/codegen/sdk-codegen/aws-models/workspaces-web.json +++ b/codegen/sdk-codegen/aws-models/workspaces-web.json @@ -15,6 +15,15 @@ "type": "service", "version": "2020-07-08", "operations": [ + { + "target": "com.amazonaws.workspacesweb#ExpireSession" + }, + { + "target": "com.amazonaws.workspacesweb#GetSession" + }, + { + "target": "com.amazonaws.workspacesweb#ListSessions" + }, { "target": "com.amazonaws.workspacesweb#ListTagsForResource" }, @@ -64,7 +73,7 @@ "name": "workspaces-web" }, "aws.protocols#restJson1": {}, - "smithy.api#documentation": "

    Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built specifically to facilitate\n secure, web-based workloads. WorkSpaces Secure Browser makes it easy for customers to safely provide\n their employees with access to internal websites and SaaS web applications without the\n administrative burden of appliances or specialized client software. WorkSpaces Secure Browser provides\n simple policy tools tailored for user interactions, while offloading common tasks like\n capacity management, scaling, and maintaining browser images.

    ", + "smithy.api#documentation": "

    Amazon WorkSpaces Secure Browser is a low cost, fully managed WorkSpace built\n specifically to facilitate secure, web-based workloads. WorkSpaces Secure Browser makes it\n easy for customers to safely provide their employees with access to internal websites and\n SaaS web applications without the administrative burden of appliances or specialized client\n software. WorkSpaces Secure Browser provides simple policy tools tailored for user\n interactions, while offloading common tasks like capacity management, scaling, and\n maintaining browser images.

    ", "smithy.api#title": "Amazon WorkSpaces Web", "smithy.rules#endpointRuleSet": { "version": "1.0", @@ -1303,7 +1312,7 @@ "customerManagedKey": { "target": "com.amazonaws.workspacesweb#keyArn", "traits": { - "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the browser settings.

    " + "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the browser\n settings.

    " } }, "additionalEncryptionContext": { @@ -1636,19 +1645,19 @@ "allowlist": { "target": "com.amazonaws.workspacesweb#CookieSpecifications", "traits": { - "smithy.api#documentation": "

    The list of cookie specifications that are allowed to be synchronized to the remote browser.

    ", + "smithy.api#documentation": "

    The list of cookie specifications that are allowed to be synchronized to the remote\n browser.

    ", "smithy.api#required": {} } }, "blocklist": { "target": "com.amazonaws.workspacesweb#CookieSpecifications", "traits": { - "smithy.api#documentation": "

    The list of cookie specifications that are blocked from being synchronized to the remote browser.

    " + "smithy.api#documentation": "

    The list of cookie specifications that are blocked from being synchronized to the remote\n browser.

    " } } }, "traits": { - "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    ", + "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end\n user's local browser to the remote browser.

    ", "smithy.api#sensitive": {} } }, @@ -1724,7 +1733,7 @@ "clientToken": { "target": "com.amazonaws.workspacesweb#ClientToken", "traits": { - "smithy.api#documentation": "

    A unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. Idempotency ensures that an API request completes only once. With an idempotent\n request, if the original request completes successfully, subsequent retries with the same\n client token returns the result from the original successful request.

    \n

    If you do not specify a client token, one is automatically generated by the Amazon Web Services SDK.

    ", + "smithy.api#documentation": "

    A unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. Idempotency ensures that an API request completes only once. With an idempotent\n request, if the original request completes successfully, subsequent retries with the same\n client token returns the result from the original successful request.

    \n

    If you do not specify a client token, one is automatically generated by the Amazon Web Services SDK.\n

    ", "smithy.api#idempotencyToken": {} } } @@ -1815,7 +1824,7 @@ "identityProviderDetails": { "target": "com.amazonaws.workspacesweb#IdentityProviderDetails", "traits": { - "smithy.api#documentation": "

    The identity provider details. The following list describes the provider detail keys for\n each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) \n optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    ", + "smithy.api#documentation": "

    The identity provider details. The following list describes the provider detail keys for\n each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    ", "smithy.api#required": {} } }, @@ -2007,14 +2016,14 @@ "subnetIds": { "target": "com.amazonaws.workspacesweb#SubnetIdList", "traits": { - "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    ", + "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to\n your VPC. At least two of these subnets must be in different availability zones.

    ", "smithy.api#required": {} } }, "securityGroupIds": { "target": "com.amazonaws.workspacesweb#SecurityGroupIdList", "traits": { - "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your VPC.

    ", + "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your\n VPC.

    ", "smithy.api#required": {} } }, @@ -2098,7 +2107,7 @@ "displayName": { "target": "com.amazonaws.workspacesweb#DisplayName", "traits": { - "smithy.api#documentation": "

    The name of the web portal. This is not visible to users who log into the web portal.

    " + "smithy.api#documentation": "

    The name of the web portal. This is not visible to users who log into the web\n portal.

    " } }, "tags": { @@ -2130,7 +2139,7 @@ "authenticationType": { "target": "com.amazonaws.workspacesweb#AuthenticationType", "traits": { - "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including\n external identity provider integration), plus user and group access to your web portal,\n can be configured in the IAM Identity Center.

    " + "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources\n (including external identity provider integration), plus user and group access to your web\n portal, can be configured in the IAM Identity Center.

    " } }, "instanceType": { @@ -2163,7 +2172,7 @@ "portalEndpoint": { "target": "com.amazonaws.workspacesweb#PortalEndpoint", "traits": { - "smithy.api#documentation": "

    The endpoint URL of the web portal that users access in order to start streaming sessions.

    ", + "smithy.api#documentation": "

    The endpoint URL of the web portal that users access in order to start streaming\n sessions.

    ", "smithy.api#required": {} } } @@ -2282,7 +2291,7 @@ } ], "traits": { - "smithy.api#documentation": "

    Creates a user access logging settings resource that can be associated with a web portal.

    ", + "smithy.api#documentation": "

    Creates a user access logging settings resource that can be associated with a web\n portal.

    ", "smithy.api#http": { "method": "POST", "uri": "/userAccessLoggingSettings", @@ -2420,14 +2429,14 @@ "target": "com.amazonaws.workspacesweb#DisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users disconnect.

    " + "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users\n disconnect.

    " } }, "idleDisconnectTimeoutInMinutes": { "target": "com.amazonaws.workspacesweb#IdleDisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    " + "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from\n their streaming session and the disconnect timeout interval begins.

    " } }, "clientToken": { @@ -2440,13 +2449,13 @@ "cookieSynchronizationConfiguration": { "target": "com.amazonaws.workspacesweb#CookieSynchronizationConfiguration", "traits": { - "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    " + "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end\n user's local browser to the remote browser.

    " } }, "customerManagedKey": { "target": "com.amazonaws.workspacesweb#keyArn", "traits": { - "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the user settings.

    " + "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the user\n settings.

    " } }, "additionalEncryptionContext": { @@ -2458,7 +2467,7 @@ "deepLinkAllowed": { "target": "com.amazonaws.workspacesweb#EnabledType", "traits": { - "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    " + "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to\n a session.

    " } } }, @@ -3369,6 +3378,72 @@ "com.amazonaws.workspacesweb#ExceptionMessage": { "type": "string" }, + "com.amazonaws.workspacesweb#ExpireSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.workspacesweb#ExpireSessionRequest" + }, + "output": { + "target": "com.amazonaws.workspacesweb#ExpireSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.workspacesweb#AccessDeniedException" + }, + { + "target": "com.amazonaws.workspacesweb#InternalServerException" + }, + { + "target": "com.amazonaws.workspacesweb#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.workspacesweb#ThrottlingException" + }, + { + "target": "com.amazonaws.workspacesweb#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

    Expires an active secure browser session.

    ", + "smithy.api#http": { + "method": "DELETE", + "uri": "/portals/{portalId}/sessions/{sessionId}", + "code": 200 + }, + "smithy.api#idempotent": {} + } + }, + "com.amazonaws.workspacesweb#ExpireSessionRequest": { + "type": "structure", + "members": { + "portalId": { + "target": "com.amazonaws.workspacesweb#PortalId", + "traits": { + "smithy.api#documentation": "

    The ID of the web portal for the session.

    ", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "sessionId": { + "target": "com.amazonaws.workspacesweb#SessionId", + "traits": { + "smithy.api#documentation": "

    The ID of the session to expire.

    ", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.workspacesweb#ExpireSessionResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.workspacesweb#FieldName": { "type": "string" }, @@ -3775,6 +3850,80 @@ "smithy.api#output": {} } }, + "com.amazonaws.workspacesweb#GetSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.workspacesweb#GetSessionRequest" + }, + "output": { + "target": "com.amazonaws.workspacesweb#GetSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.workspacesweb#AccessDeniedException" + }, + { + "target": "com.amazonaws.workspacesweb#InternalServerException" + }, + { + "target": "com.amazonaws.workspacesweb#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.workspacesweb#ThrottlingException" + }, + { + "target": "com.amazonaws.workspacesweb#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

    Gets information for a secure browser session.

    ", + "smithy.api#http": { + "method": "GET", + "uri": "/portals/{portalId}/sessions/{sessionId}", + "code": 200 + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.workspacesweb#GetSessionRequest": { + "type": "structure", + "members": { + "portalId": { + "target": "com.amazonaws.workspacesweb#PortalId", + "traits": { + "smithy.api#documentation": "

    The ID of the web portal for the session.

    ", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "sessionId": { + "target": "com.amazonaws.workspacesweb#SessionId", + "traits": { + "smithy.api#documentation": "

    The ID of the session.

    ", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.workspacesweb#GetSessionResponse": { + "type": "structure", + "members": { + "session": { + "target": "com.amazonaws.workspacesweb#Session", + "traits": { + "smithy.api#documentation": "

    The sessions in a list.

    ", + "smithy.api#nestedProperties": {} + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.workspacesweb#GetTrustStore": { "type": "operation", "input": { @@ -4083,7 +4232,7 @@ "identityProviderDetails": { "target": "com.amazonaws.workspacesweb#IdentityProviderDetails", "traits": { - "smithy.api#documentation": "

    The identity provider details. The following list describes the provider detail keys for\n each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    " + "smithy.api#documentation": "

    The identity provider details. The following list describes the provider detail keys for\n each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by oidc_issuer\n key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    " } } }, @@ -4294,7 +4443,7 @@ "associatedPortalArns": { "target": "com.amazonaws.workspacesweb#ArnList", "traits": { - "smithy.api#documentation": "

    A list of web portal ARNs that this IP access settings resource is associated with.

    " + "smithy.api#documentation": "

    A list of web portal ARNs that this IP access settings resource is associated\n with.

    " } }, "ipRules": { @@ -4324,7 +4473,7 @@ "customerManagedKey": { "target": "com.amazonaws.workspacesweb#keyArn", "traits": { - "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the IP access settings.

    " + "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the IP access\n settings.

    " } }, "additionalEncryptionContext": { @@ -4439,6 +4588,29 @@ "smithy.api#documentation": "

    The summary of IP access settings.

    " } }, + "com.amazonaws.workspacesweb#IpAddress": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 15 + }, + "smithy.api#pattern": "^((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))$|^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$", + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.workspacesweb#IpAddressList": { + "type": "list", + "member": { + "target": "com.amazonaws.workspacesweb#IpAddress" + }, + "traits": { + "smithy.api#length": { + "min": 1, + "max": 45 + } + } + }, "com.amazonaws.workspacesweb#IpRange": { "type": "string", "traits": { @@ -4535,7 +4707,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -4563,7 +4735,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -4614,7 +4786,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -4644,7 +4816,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } }, "identityProviders": { @@ -4701,7 +4873,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -4729,7 +4901,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -4780,7 +4952,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -4808,7 +4980,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -4859,7 +5031,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.\n

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -4887,7 +5059,127 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.\n

    " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, + "com.amazonaws.workspacesweb#ListSessions": { + "type": "operation", + "input": { + "target": "com.amazonaws.workspacesweb#ListSessionsRequest" + }, + "output": { + "target": "com.amazonaws.workspacesweb#ListSessionsResponse" + }, + "errors": [ + { + "target": "com.amazonaws.workspacesweb#AccessDeniedException" + }, + { + "target": "com.amazonaws.workspacesweb#InternalServerException" + }, + { + "target": "com.amazonaws.workspacesweb#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.workspacesweb#ThrottlingException" + }, + { + "target": "com.amazonaws.workspacesweb#ValidationException" + } + ], + "traits": { + "smithy.api#documentation": "

    Lists information for multiple secure browser sessions from a specific portal.

    ", + "smithy.api#http": { + "method": "GET", + "uri": "/portals/{portalId}/sessions", + "code": 200 + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "pageSize": "maxResults", + "items": "sessions" + }, + "smithy.api#readonly": {} + } + }, + "com.amazonaws.workspacesweb#ListSessionsRequest": { + "type": "structure", + "members": { + "portalId": { + "target": "com.amazonaws.workspacesweb#PortalId", + "traits": { + "smithy.api#documentation": "

    The ID of the web portal for the sessions.

    ", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "username": { + "target": "com.amazonaws.workspacesweb#Username", + "traits": { + "smithy.api#documentation": "

    The username of the session.

    ", + "smithy.api#httpQuery": "username" + } + }, + "sessionId": { + "target": "com.amazonaws.workspacesweb#SessionId", + "traits": { + "smithy.api#documentation": "

    The ID of the session.

    ", + "smithy.api#httpQuery": "sessionId" + } + }, + "sortBy": { + "target": "com.amazonaws.workspacesweb#SessionSortBy", + "traits": { + "smithy.api#documentation": "

    The method in which the returned sessions should be sorted.

    ", + "smithy.api#httpQuery": "sortBy" + } + }, + "status": { + "target": "com.amazonaws.workspacesweb#SessionStatus", + "traits": { + "smithy.api#documentation": "

    The status of the session.

    ", + "smithy.api#httpQuery": "status" + } + }, + "maxResults": { + "target": "com.amazonaws.workspacesweb#MaxResults", + "traits": { + "smithy.api#documentation": "

    The maximum number of results to be included in the next page.

    ", + "smithy.api#httpQuery": "maxResults" + } + }, + "nextToken": { + "target": "com.amazonaws.workspacesweb#PaginationToken", + "traits": { + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", + "smithy.api#httpQuery": "nextToken" + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.workspacesweb#ListSessionsResponse": { + "type": "structure", + "members": { + "sessions": { + "target": "com.amazonaws.workspacesweb#SessionSummaryList", + "traits": { + "smithy.api#documentation": "

    The sessions in a list.

    ", + "smithy.api#required": {} + } + }, + "nextToken": { + "target": "com.amazonaws.workspacesweb#PaginationToken", + "traits": { + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -5015,7 +5307,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken", "smithy.api#notProperty": {} } @@ -5056,7 +5348,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.>

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.>

    ", "smithy.api#notProperty": {} } } @@ -5108,7 +5400,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -5136,7 +5428,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -5187,7 +5479,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -5215,7 +5507,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this\n operation.

    " } } }, @@ -5266,7 +5558,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    ", + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.\n

    ", "smithy.api#httpQuery": "nextToken" } }, @@ -5294,7 +5586,7 @@ "nextToken": { "target": "com.amazonaws.workspacesweb#PaginationToken", "traits": { - "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.

    " + "smithy.api#documentation": "

    The pagination token used to retrieve the next page of results for this operation.\n

    " } } }, @@ -5345,13 +5637,13 @@ "subnetIds": { "target": "com.amazonaws.workspacesweb#SubnetIdList", "traits": { - "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    " + "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to\n your VPC. At least two of these subnets must be in different availability zones.

    " } }, "securityGroupIds": { "target": "com.amazonaws.workspacesweb#SecurityGroupIdList", "traits": { - "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your VPC.

    " + "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your VPC.\n

    " } } }, @@ -5529,13 +5821,13 @@ "userAccessLoggingSettingsArn": { "target": "com.amazonaws.workspacesweb#ARN", "traits": { - "smithy.api#documentation": "

    The ARN of the user access logging settings that is associated with the web portal.

    " + "smithy.api#documentation": "

    The ARN of the user access logging settings that is associated with the web\n portal.

    " } }, "authenticationType": { "target": "com.amazonaws.workspacesweb#AuthenticationType", "traits": { - "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including\n external identity provider integration), plus user and group access to your web portal,\n can be configured in the IAM Identity Center.

    " + "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources\n (including external identity provider integration), plus user and group access to your web\n portal, can be configured in the IAM Identity Center.

    " } }, "ipAccessSettingsArn": { @@ -5583,6 +5875,16 @@ "smithy.api#pattern": "^[a-zA-Z0-9]?((?!-)([A-Za-z0-9-]*[A-Za-z0-9])\\.)+[a-zA-Z0-9]+$" } }, + "com.amazonaws.workspacesweb#PortalId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 36, + "max": 36 + }, + "smithy.api#pattern": "^[a-zA-Z0-9\\-]+$" + } + }, "com.amazonaws.workspacesweb#PortalList": { "type": "list", "member": { @@ -5830,13 +6132,13 @@ "userAccessLoggingSettingsArn": { "target": "com.amazonaws.workspacesweb#ARN", "traits": { - "smithy.api#documentation": "

    The ARN of the user access logging settings that is associated with the web portal.

    " + "smithy.api#documentation": "

    The ARN of the user access logging settings that is associated with the web\n portal.

    " } }, "authenticationType": { "target": "com.amazonaws.workspacesweb#AuthenticationType", "traits": { - "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including\n external identity provider integration), plus user and group access to your web portal,\n can be configured in the IAM Identity Center.

    " + "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources\n (including external identity provider integration), plus user and group access to your web\n portal, can be configured in the IAM Identity Center.

    " } }, "ipAccessSettingsArn": { @@ -5985,6 +6287,150 @@ "smithy.api#httpError": 402 } }, + "com.amazonaws.workspacesweb#Session": { + "type": "structure", + "members": { + "portalArn": { + "target": "com.amazonaws.workspacesweb#ARN", + "traits": { + "smithy.api#documentation": "

    The ARN of the web portal.

    " + } + }, + "sessionId": { + "target": "com.amazonaws.workspacesweb#StringType", + "traits": { + "smithy.api#documentation": "

    The ID of the session.

    " + } + }, + "username": { + "target": "com.amazonaws.workspacesweb#Username", + "traits": { + "smithy.api#documentation": "

    The username of the session.

    " + } + }, + "clientIpAddresses": { + "target": "com.amazonaws.workspacesweb#IpAddressList", + "traits": { + "smithy.api#documentation": "

    The IP address of the client.

    " + } + }, + "status": { + "target": "com.amazonaws.workspacesweb#SessionStatus", + "traits": { + "smithy.api#documentation": "

    The status of the session.

    " + } + }, + "startTime": { + "target": "com.amazonaws.workspacesweb#Timestamp", + "traits": { + "smithy.api#documentation": "

    The start time of the session.

    " + } + }, + "endTime": { + "target": "com.amazonaws.workspacesweb#Timestamp", + "traits": { + "smithy.api#documentation": "

    The end time of the session.

    " + } + } + }, + "traits": { + "smithy.api#documentation": "

    Information about a secure browser session.

    " + } + }, + "com.amazonaws.workspacesweb#SessionId": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 36, + "max": 36 + }, + "smithy.api#pattern": "^[a-zA-Z0-9\\-]+$" + } + }, + "com.amazonaws.workspacesweb#SessionSortBy": { + "type": "enum", + "members": { + "START_TIME_ASCENDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StartTimeAscending" + } + }, + "START_TIME_DESCENDING": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "StartTimeDescending" + } + } + } + }, + "com.amazonaws.workspacesweb#SessionStatus": { + "type": "enum", + "members": { + "ACTIVE": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Active" + } + }, + "TERMINATED": { + "target": "smithy.api#Unit", + "traits": { + "smithy.api#enumValue": "Terminated" + } + } + } + }, + "com.amazonaws.workspacesweb#SessionSummary": { + "type": "structure", + "members": { + "portalArn": { + "target": "com.amazonaws.workspacesweb#ARN", + "traits": { + "smithy.api#documentation": "

    The ARN of the web portal.

    " + } + }, + "sessionId": { + "target": "com.amazonaws.workspacesweb#StringType", + "traits": { + "smithy.api#documentation": "

    The ID of the session.

    " + } + }, + "username": { + "target": "com.amazonaws.workspacesweb#Username", + "traits": { + "smithy.api#documentation": "

    The username of the session.

    " + } + }, + "status": { + "target": "com.amazonaws.workspacesweb#SessionStatus", + "traits": { + "smithy.api#documentation": "

    The status of the session.

    " + } + }, + "startTime": { + "target": "com.amazonaws.workspacesweb#Timestamp", + "traits": { + "smithy.api#documentation": "

    The start time of the session.

    " + } + }, + "endTime": { + "target": "com.amazonaws.workspacesweb#Timestamp", + "traits": { + "smithy.api#documentation": "

    The end time of the session.

    " + } + } + }, + "traits": { + "smithy.api#documentation": "

    Summary information about a secure browser session.

    " + } + }, + "com.amazonaws.workspacesweb#SessionSummaryList": { + "type": "list", + "member": { + "target": "com.amazonaws.workspacesweb#SessionSummary" + } + }, "com.amazonaws.workspacesweb#StatusReason": { "type": "string", "traits": { @@ -6023,7 +6469,7 @@ "traits": { "smithy.api#length": { "min": 2, - "max": 3 + "max": 5 } } }, @@ -6542,7 +6988,7 @@ "identityProviderDetails": { "target": "com.amazonaws.workspacesweb#IdentityProviderDetails", "traits": { - "smithy.api#documentation": "

    The details of the identity provider. The following list describes the provider detail keys for\n each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    " + "smithy.api#documentation": "

    The details of the identity provider. The following list describes the provider detail\n keys for each identity provider type.

    \n
      \n
    • \n

      For Google and Login with Amazon:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For Facebook:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n api_version\n

        \n
      • \n
      \n
    • \n
    • \n

      For Sign in with Apple:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n team_id\n

        \n
      • \n
      • \n

        \n key_id\n

        \n
      • \n
      • \n

        \n private_key\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      \n
    • \n
    • \n

      For OIDC providers:

      \n
        \n
      • \n

        \n client_id\n

        \n
      • \n
      • \n

        \n client_secret\n

        \n
      • \n
      • \n

        \n attributes_request_method\n

        \n
      • \n
      • \n

        \n oidc_issuer\n

        \n
      • \n
      • \n

        \n authorize_scopes\n

        \n
      • \n
      • \n

        \n authorize_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n token_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n attributes_url\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      • \n

        \n jwks_uri\n if not available from discovery URL specified by\n oidc_issuer key\n

        \n
      • \n
      \n
    • \n
    • \n

      For SAML providers:

      \n
        \n
      • \n

        \n MetadataFile OR MetadataURL\n

        \n
      • \n
      • \n

        \n IDPSignout (boolean) optional\n

        \n
      • \n
      • \n

        \n IDPInit (boolean) optional\n

        \n
      • \n
      • \n

        \n RequestSigningAlgorithm (string) optional\n - Only accepts rsa-sha256\n

        \n
      • \n
      • \n

        \n EncryptedResponses (boolean) optional\n

        \n
      • \n
      \n
    • \n
    " } }, "clientToken": { @@ -6718,13 +7164,13 @@ "subnetIds": { "target": "com.amazonaws.workspacesweb#SubnetIdList", "traits": { - "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to your VPC. At least two of these subnets must be in different availability zones.

    " + "smithy.api#documentation": "

    The subnets in which network interfaces are created to connect streaming instances to\n your VPC. At least two of these subnets must be in different availability zones.

    " } }, "securityGroupIds": { "target": "com.amazonaws.workspacesweb#SecurityGroupIdList", "traits": { - "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your VPC.

    " + "smithy.api#documentation": "

    One or more security groups used to control access from streaming instances to your\n VPC.

    " } }, "clientToken": { @@ -6810,13 +7256,13 @@ "displayName": { "target": "com.amazonaws.workspacesweb#DisplayName", "traits": { - "smithy.api#documentation": "

    The name of the web portal. This is not visible to users who log into the web portal.

    " + "smithy.api#documentation": "

    The name of the web portal. This is not visible to users who log into the web\n portal.

    " } }, "authenticationType": { "target": "com.amazonaws.workspacesweb#AuthenticationType", "traits": { - "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center (successor to Single Sign-On). Identity sources (including\n external identity provider integration), plus user and group access to your web portal,\n can be configured in the IAM Identity Center.

    " + "smithy.api#documentation": "

    The type of authentication integration points used when signing into the web portal.\n Defaults to Standard.

    \n

    \n Standard web portals are authenticated directly through your identity\n provider. You need to call CreateIdentityProvider to integrate your identity\n provider with your web portal. User and group access to your web portal is controlled\n through your identity provider.

    \n

    \n IAM Identity Center web portals are authenticated through IAM Identity Center. Identity sources\n (including external identity provider integration), plus user and group access to your web\n portal, can be configured in the IAM Identity Center.

    " } }, "instanceType": { @@ -7098,14 +7544,14 @@ "target": "com.amazonaws.workspacesweb#DisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users disconnect.

    " + "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users\n disconnect.

    " } }, "idleDisconnectTimeoutInMinutes": { "target": "com.amazonaws.workspacesweb#IdleDisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    " + "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from\n their streaming session and the disconnect timeout interval begins.

    " } }, "clientToken": { @@ -7118,13 +7564,13 @@ "cookieSynchronizationConfiguration": { "target": "com.amazonaws.workspacesweb#CookieSynchronizationConfiguration", "traits": { - "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    \n

    If the allowlist and blocklist are empty, the configuration becomes null.

    " + "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end\n user's local browser to the remote browser.

    \n

    If the allowlist and blocklist are empty, the configuration becomes null.

    " } }, "deepLinkAllowed": { "target": "com.amazonaws.workspacesweb#EnabledType", "traits": { - "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    " + "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to\n a session.

    " } } }, @@ -7162,7 +7608,7 @@ "associatedPortalArns": { "target": "com.amazonaws.workspacesweb#ArnList", "traits": { - "smithy.api#documentation": "

    A list of web portal ARNs that this user access logging settings is associated with.

    " + "smithy.api#documentation": "

    A list of web portal ARNs that this user access logging settings is associated\n with.

    " } }, "kinesisStreamArn": { @@ -7301,26 +7747,26 @@ "target": "com.amazonaws.workspacesweb#DisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users disconnect.

    " + "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users\n disconnect.

    " } }, "idleDisconnectTimeoutInMinutes": { "target": "com.amazonaws.workspacesweb#IdleDisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    " + "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from\n their streaming session and the disconnect timeout interval begins.

    " } }, "cookieSynchronizationConfiguration": { "target": "com.amazonaws.workspacesweb#CookieSynchronizationConfiguration", "traits": { - "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    " + "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end\n user's local browser to the remote browser.

    " } }, "customerManagedKey": { "target": "com.amazonaws.workspacesweb#keyArn", "traits": { - "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the user settings.

    " + "smithy.api#documentation": "

    The customer managed key used to encrypt sensitive information in the user\n settings.

    " } }, "additionalEncryptionContext": { @@ -7332,7 +7778,7 @@ "deepLinkAllowed": { "target": "com.amazonaws.workspacesweb#EnabledType", "traits": { - "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    " + "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to\n a session.

    " } } }, @@ -7467,26 +7913,26 @@ "target": "com.amazonaws.workspacesweb#DisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users disconnect.

    " + "smithy.api#documentation": "

    The amount of time that a streaming session remains active after users\n disconnect.

    " } }, "idleDisconnectTimeoutInMinutes": { "target": "com.amazonaws.workspacesweb#IdleDisconnectTimeoutInMinutes", "traits": { "smithy.api#default": null, - "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from their streaming session and the disconnect timeout interval begins.

    " + "smithy.api#documentation": "

    The amount of time that users can be idle (inactive) before they are disconnected from\n their streaming session and the disconnect timeout interval begins.

    " } }, "cookieSynchronizationConfiguration": { "target": "com.amazonaws.workspacesweb#CookieSynchronizationConfiguration", "traits": { - "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end user's local browser to the remote browser.

    " + "smithy.api#documentation": "

    The configuration that specifies which cookies should be synchronized from the end\n user's local browser to the remote browser.

    " } }, "deepLinkAllowed": { "target": "com.amazonaws.workspacesweb#EnabledType", "traits": { - "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to a session.

    " + "smithy.api#documentation": "

    Specifies whether the user can use deep links that open automatically when connecting to\n a session.

    " } } }, @@ -7494,6 +7940,17 @@ "smithy.api#documentation": "

    The summary of user settings.

    " } }, + "com.amazonaws.workspacesweb#Username": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 256 + }, + "smithy.api#pattern": "^[\\s\\S]*$", + "smithy.api#sensitive": {} + } + }, "com.amazonaws.workspacesweb#ValidationException": { "type": "structure", "members": {