diff --git a/clients/client-nimble/README.md b/clients/client-nimble/README.md index eb39cfb7460b7..181dd1eb6cf19 100644 --- a/clients/client-nimble/README.md +++ b/clients/client-nimble/README.md @@ -7,6 +7,13 @@ AWS SDK for JavaScript Nimble Client for Node.js, Browser and React Native. +

Welcome to the Amazon Nimble Studio API reference. This API reference provides +methods, schema, resources, parameters, and more to help you get the most out of Nimble +Studio.

+

Nimble Studio is a virtual studio that empowers visual effects, animation, and +interactive content teams to create content securely within a scalable, private cloud +service.

+ ## Installing To install the this package, simply type add or install @aws-sdk/client-nimble diff --git a/clients/client-nimble/package.json b/clients/client-nimble/package.json index 2e0770be1fa02..014b315270878 100644 --- a/clients/client-nimble/package.json +++ b/clients/client-nimble/package.json @@ -49,6 +49,7 @@ "@aws-sdk/util-user-agent-node": "3.39.0", "@aws-sdk/util-utf8-browser": "3.37.0", "@aws-sdk/util-utf8-node": "3.37.0", + "@aws-sdk/util-waiter": "3.38.0", "tslib": "^2.3.0", "uuid": "^8.3.2" }, diff --git a/clients/client-nimble/src/Nimble.ts b/clients/client-nimble/src/Nimble.ts index 2720db2c3d958..cc687e51f372c 100644 --- a/clients/client-nimble/src/Nimble.ts +++ b/clients/client-nimble/src/Nimble.ts @@ -165,11 +165,21 @@ import { PutStudioMembersCommandInput, PutStudioMembersCommandOutput, } from "./commands/PutStudioMembersCommand"; +import { + StartStreamingSessionCommand, + StartStreamingSessionCommandInput, + StartStreamingSessionCommandOutput, +} from "./commands/StartStreamingSessionCommand"; import { StartStudioSSOConfigurationRepairCommand, StartStudioSSOConfigurationRepairCommandInput, StartStudioSSOConfigurationRepairCommandOutput, } from "./commands/StartStudioSSOConfigurationRepairCommand"; +import { + StopStreamingSessionCommand, + StopStreamingSessionCommandInput, + StopStreamingSessionCommandOutput, +} from "./commands/StopStreamingSessionCommand"; import { TagResourceCommand, TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; import { UntagResourceCommand, @@ -203,6 +213,14 @@ import { } from "./commands/UpdateStudioComponentCommand"; import { NimbleClient } from "./NimbleClient"; +/** + *

Welcome to the Amazon Nimble Studio API reference. This API reference provides + * methods, schema, resources, parameters, and more to help you get the most out of Nimble + * Studio.

+ *

Nimble Studio is a virtual studio that empowers visual effects, animation, and + * interactive content teams to create content securely within a scalable, private cloud + * service.

+ */ export class Nimble extends NimbleClient { /** *

Accept EULAs.

@@ -295,7 +313,9 @@ export class Nimble extends NimbleClient { } /** - *

Creates a streaming session in a studio.

After invoking this operation, you must poll GetStreamingSession until the streaming session is in state READY.

+ *

Creates a streaming session in a studio.

+ *

After invoking this operation, you must poll GetStreamingSession until the streaming + * session is in state READY.

*/ public createStreamingSession( args: CreateStreamingSessionCommandInput, @@ -327,7 +347,9 @@ export class Nimble extends NimbleClient { } /** - *

Creates a streaming session stream for a streaming session.

After invoking this API, invoke GetStreamingSessionStream with the returned streamId to poll the resource until it is in state READY.

+ *

Creates a streaming session stream for a streaming session.

+ *

After invoking this API, invoke GetStreamingSessionStream with the returned streamId + * to poll the resource until it is in state READY.

*/ public createStreamingSessionStream( args: CreateStreamingSessionStreamCommandInput, @@ -359,7 +381,26 @@ export class Nimble extends NimbleClient { } /** - *

Create a new Studio.

When creating a Studio, two IAM roles must be provided: the admin role and the user Role. These roles are assumed by your users when they log in to the Nimble Studio portal.

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for the portal to function properly.

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached for the portal to function properly.

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

In Nimble Studio, resource names, descriptions, initialization scripts, and other data you provide are always encrypted at rest using an KMS key. By default, this key is owned by Amazon Web Services and managed on your behalf. You may provide your own KMS key when calling CreateStudio to encrypt this data using a key you own and manage.

When providing an KMS key during studio creation, Nimble Studio creates KMS grants in your account to provide your studio user and admin roles access to these KMS keys.

If you delete this grant, the studio will no longer be accessible to your portal users.

If you delete the studio KMS key, your studio will no longer be accessible.

+ *

Create a new Studio.

+ *

When creating a Studio, two IAM roles must be provided: the admin role and the user + * Role. These roles are assumed by your users when they log in to the Nimble Studio + * portal.

+ *

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for + * the portal to function properly.

+ *

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached + * for the portal to function properly.

+ *

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

+ *

In Nimble Studio, resource names, descriptions, initialization scripts, and other + * data you provide are always encrypted at rest using an KMS key. By default, this key is + * owned by Amazon Web Services and managed on your behalf. You may provide your own KMS + * key when calling CreateStudio to encrypt this data using a key you own and + * manage.

+ *

When providing an KMS key during studio creation, Nimble Studio creates KMS + * grants in your account to provide your studio user and admin roles access to these KMS + * keys.

+ *

If you delete this grant, the studio will no longer be accessible to your portal + * users.

+ *

If you delete the studio KMS key, your studio will no longer be accessible.

*/ public createStudio( args: CreateStudioCommandInput, @@ -516,7 +557,11 @@ export class Nimble extends NimbleClient { } /** - *

Deletes streaming session resource.

After invoking this operation, use GetStreamingSession to poll the resource until it transitions to a DELETED state.

A streaming session will count against your streaming session quota until it is marked DELETED.

+ *

Deletes streaming session resource.

+ *

After invoking this operation, use GetStreamingSession to poll the resource until it + * transitions to a DELETED state.

+ *

A streaming session will count against your streaming session quota until it is marked + * DELETED.

*/ public deleteStreamingSession( args: DeleteStreamingSessionCommandInput, @@ -699,7 +744,10 @@ export class Nimble extends NimbleClient { } /** - *

Launch profile details include the launch profile resource and summary information of resources that are used by, or available to, the launch profile. This includes the name and description of all studio components used by the launch profiles, and the name and description of streaming images that can be used with this launch profile.

+ *

Launch profile details include the launch profile resource and summary information of + * resources that are used by, or available to, the launch profile. This includes the name + * and description of all studio components used by the launch profiles, and the name and + * description of streaming images that can be used with this launch profile.

*/ public getLaunchProfileDetails( args: GetLaunchProfileDetailsCommandInput, @@ -827,7 +875,9 @@ export class Nimble extends NimbleClient { } /** - *

Gets StreamingSession resource.

Invoke this operation to poll for a streaming session state while creating or deleting a session.

+ *

Gets StreamingSession resource.

+ *

anvoke this operation to poll for a streaming session state while creating or deleting + * a session.

*/ public getStreamingSession( args: GetStreamingSessionCommandInput, @@ -859,7 +909,11 @@ export class Nimble extends NimbleClient { } /** - *

Gets a StreamingSessionStream for a streaming session.

Invoke this operation to poll the resource after invoking CreateStreamingSessionStream.

After the StreamingSessionStream changes to the state READY, the url property will contain a stream to be used with the DCV streaming client.

+ *

Gets a StreamingSessionStream for a streaming session.

+ *

Invoke this operation to poll the resource after invoking + * CreateStreamingSessionStream.

+ *

After the StreamingSessionStream changes to the state READY, the url property will + * contain a stream to be used with the DCV streaming client.

*/ public getStreamingSessionStream( args: GetStreamingSessionStreamCommandInput, @@ -1103,7 +1157,9 @@ export class Nimble extends NimbleClient { } /** - *

List the streaming image resources available to this studio.

This list will contain both images provided by Amazon Web Services, as well as streaming images that you have created in your studio.

+ *

List the streaming image resources available to this studio.

+ *

This list will contain both images provided by Amazon Web Services, as well as + * streaming images that you have created in your studio.

*/ public listStreamingImages( args: ListStreamingImagesCommandInput, @@ -1231,7 +1287,8 @@ export class Nimble extends NimbleClient { } /** - *

List studios in your Amazon Web Services account in the requested Amazon Web Services Region.

+ *

List studios in your Amazon Web Services account in the requested Amazon Web Services + * Region.

*/ public listStudios(args: ListStudiosCommandInput, options?: __HttpHandlerOptions): Promise; public listStudios(args: ListStudiosCommandInput, cb: (err: any, data?: ListStudiosCommandOutput) => void): void; @@ -1257,7 +1314,11 @@ export class Nimble extends NimbleClient { } /** - *

Gets the tags for a resource, given its Amazon Resource Names (ARN).

This operation supports ARNs for all resource types in Nimble Studio that support tags, including studio, studio component, launch profile, streaming image, and streaming session. All resources that can be tagged will contain an ARN property, so you do not have to create this ARN yourself.

+ *

Gets the tags for a resource, given its Amazon Resource Names (ARN).

+ *

This operation supports ARNs for all resource types in Nimble Studio that support + * tags, including studio, studio component, launch profile, streaming image, and streaming + * session. All resources that can be tagged will contain an ARN property, so you do not + * have to create this ARN yourself.

*/ public listTagsForResource( args: ListTagsForResourceCommandInput, @@ -1353,7 +1414,47 @@ export class Nimble extends NimbleClient { } /** - *

Repairs the SSO configuration for a given studio.

If the studio has a valid Amazon Web Services SSO configuration currently associated with it, this operation will fail with a validation error.

If the studio does not have a valid Amazon Web Services SSO configuration currently associated with it, then a new Amazon Web Services SSO application is created for the studio and the studio is changed to the READY state.

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

+ *

Transitions sessions from the STOPPED state into the READY state. The + * START_IN_PROGRESS state is the intermediate state between the STOPPED and READY + * states.

+ */ + public startStreamingSession( + args: StartStreamingSessionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + public startStreamingSession( + args: StartStreamingSessionCommandInput, + cb: (err: any, data?: StartStreamingSessionCommandOutput) => void + ): void; + public startStreamingSession( + args: StartStreamingSessionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: StartStreamingSessionCommandOutput) => void + ): void; + public startStreamingSession( + args: StartStreamingSessionCommandInput, + optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: StartStreamingSessionCommandOutput) => void), + cb?: (err: any, data?: StartStreamingSessionCommandOutput) => void + ): Promise | void { + const command = new StartStreamingSessionCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } + + /** + *

Repairs the Amazon Web Services SSO configuration for a given studio.

+ *

If the studio has a valid Amazon Web Services SSO configuration currently associated with + * it, this operation will fail with a validation error.

+ *

If the studio does not have a valid Amazon Web Services SSO configuration currently + * associated with it, then a new Amazon Web Services SSO application is created for the studio + * and the studio is changed to the READY state.

+ *

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

*/ public startStudioSSOConfigurationRepair( args: StartStudioSSOConfigurationRepairCommandInput, @@ -1384,6 +1485,39 @@ export class Nimble extends NimbleClient { } } + /** + *

Transitions sessions from the READY state into the STOPPED state. The STOP_IN_PROGRESS + * state is the intermediate state between the READY and STOPPED states.

+ */ + public stopStreamingSession( + args: StopStreamingSessionCommandInput, + options?: __HttpHandlerOptions + ): Promise; + public stopStreamingSession( + args: StopStreamingSessionCommandInput, + cb: (err: any, data?: StopStreamingSessionCommandOutput) => void + ): void; + public stopStreamingSession( + args: StopStreamingSessionCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: StopStreamingSessionCommandOutput) => void + ): void; + public stopStreamingSession( + args: StopStreamingSessionCommandInput, + optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: StopStreamingSessionCommandOutput) => void), + cb?: (err: any, data?: StopStreamingSessionCommandOutput) => void + ): Promise | void { + const command = new StopStreamingSessionCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } + /** *

Creates tags for a resource, given its ARN.

*/ @@ -1539,7 +1673,9 @@ export class Nimble extends NimbleClient { } /** - *

Update a Studio resource.

Currently, this operation only supports updating the displayName of your studio.

+ *

Update a Studio resource.

+ *

Currently, this operation only supports updating the displayName of your + * studio.

*/ public updateStudio( args: UpdateStudioCommandInput, diff --git a/clients/client-nimble/src/NimbleClient.ts b/clients/client-nimble/src/NimbleClient.ts index 975f35805d257..d87cc29a01098 100644 --- a/clients/client-nimble/src/NimbleClient.ts +++ b/clients/client-nimble/src/NimbleClient.ts @@ -152,10 +152,18 @@ import { PutLaunchProfileMembersCommandOutput, } from "./commands/PutLaunchProfileMembersCommand"; import { PutStudioMembersCommandInput, PutStudioMembersCommandOutput } from "./commands/PutStudioMembersCommand"; +import { + StartStreamingSessionCommandInput, + StartStreamingSessionCommandOutput, +} from "./commands/StartStreamingSessionCommand"; import { StartStudioSSOConfigurationRepairCommandInput, StartStudioSSOConfigurationRepairCommandOutput, } from "./commands/StartStudioSSOConfigurationRepairCommand"; +import { + StopStreamingSessionCommandInput, + StopStreamingSessionCommandOutput, +} from "./commands/StopStreamingSessionCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; import { @@ -215,7 +223,9 @@ export type ServiceInputTypes = | ListTagsForResourceCommandInput | PutLaunchProfileMembersCommandInput | PutStudioMembersCommandInput + | StartStreamingSessionCommandInput | StartStudioSSOConfigurationRepairCommandInput + | StopStreamingSessionCommandInput | TagResourceCommandInput | UntagResourceCommandInput | UpdateLaunchProfileCommandInput @@ -262,7 +272,9 @@ export type ServiceOutputTypes = | ListTagsForResourceCommandOutput | PutLaunchProfileMembersCommandOutput | PutStudioMembersCommandOutput + | StartStreamingSessionCommandOutput | StartStudioSSOConfigurationRepairCommandOutput + | StopStreamingSessionCommandOutput | TagResourceCommandOutput | UntagResourceCommandOutput | UpdateLaunchProfileCommandOutput @@ -419,6 +431,14 @@ type NimbleClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHandle */ export interface NimbleClientResolvedConfig extends NimbleClientResolvedConfigType {} +/** + *

Welcome to the Amazon Nimble Studio API reference. This API reference provides + * methods, schema, resources, parameters, and more to help you get the most out of Nimble + * Studio.

+ *

Nimble Studio is a virtual studio that empowers visual effects, animation, and + * interactive content teams to create content securely within a scalable, private cloud + * service.

+ */ export class NimbleClient extends __Client< __HttpHandlerOptions, ServiceInputTypes, diff --git a/clients/client-nimble/src/commands/CreateStreamingSessionCommand.ts b/clients/client-nimble/src/commands/CreateStreamingSessionCommand.ts index de36413762697..6adb1a88417c1 100644 --- a/clients/client-nimble/src/commands/CreateStreamingSessionCommand.ts +++ b/clients/client-nimble/src/commands/CreateStreamingSessionCommand.ts @@ -22,7 +22,9 @@ export interface CreateStreamingSessionCommandInput extends CreateStreamingSessi export interface CreateStreamingSessionCommandOutput extends CreateStreamingSessionResponse, __MetadataBearer {} /** - *

Creates a streaming session in a studio.

After invoking this operation, you must poll GetStreamingSession until the streaming session is in state READY.

+ *

Creates a streaming session in a studio.

+ *

After invoking this operation, you must poll GetStreamingSession until the streaming + * session is in state READY.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/CreateStreamingSessionStreamCommand.ts b/clients/client-nimble/src/commands/CreateStreamingSessionStreamCommand.ts index 99cd998dd7ff3..496d02352a2a0 100644 --- a/clients/client-nimble/src/commands/CreateStreamingSessionStreamCommand.ts +++ b/clients/client-nimble/src/commands/CreateStreamingSessionStreamCommand.ts @@ -24,7 +24,9 @@ export interface CreateStreamingSessionStreamCommandOutput __MetadataBearer {} /** - *

Creates a streaming session stream for a streaming session.

After invoking this API, invoke GetStreamingSessionStream with the returned streamId to poll the resource until it is in state READY.

+ *

Creates a streaming session stream for a streaming session.

+ *

After invoking this API, invoke GetStreamingSessionStream with the returned streamId + * to poll the resource until it is in state READY.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/CreateStudioCommand.ts b/clients/client-nimble/src/commands/CreateStudioCommand.ts index 3254a1e2ade57..ff02d7fcdc6fd 100644 --- a/clients/client-nimble/src/commands/CreateStudioCommand.ts +++ b/clients/client-nimble/src/commands/CreateStudioCommand.ts @@ -22,7 +22,26 @@ export interface CreateStudioCommandInput extends CreateStudioRequest {} export interface CreateStudioCommandOutput extends CreateStudioResponse, __MetadataBearer {} /** - *

Create a new Studio.

When creating a Studio, two IAM roles must be provided: the admin role and the user Role. These roles are assumed by your users when they log in to the Nimble Studio portal.

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for the portal to function properly.

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached for the portal to function properly.

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

In Nimble Studio, resource names, descriptions, initialization scripts, and other data you provide are always encrypted at rest using an KMS key. By default, this key is owned by Amazon Web Services and managed on your behalf. You may provide your own KMS key when calling CreateStudio to encrypt this data using a key you own and manage.

When providing an KMS key during studio creation, Nimble Studio creates KMS grants in your account to provide your studio user and admin roles access to these KMS keys.

If you delete this grant, the studio will no longer be accessible to your portal users.

If you delete the studio KMS key, your studio will no longer be accessible.

+ *

Create a new Studio.

+ *

When creating a Studio, two IAM roles must be provided: the admin role and the user + * Role. These roles are assumed by your users when they log in to the Nimble Studio + * portal.

+ *

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for + * the portal to function properly.

+ *

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached + * for the portal to function properly.

+ *

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

+ *

In Nimble Studio, resource names, descriptions, initialization scripts, and other + * data you provide are always encrypted at rest using an KMS key. By default, this key is + * owned by Amazon Web Services and managed on your behalf. You may provide your own KMS + * key when calling CreateStudio to encrypt this data using a key you own and + * manage.

+ *

When providing an KMS key during studio creation, Nimble Studio creates KMS + * grants in your account to provide your studio user and admin roles access to these KMS + * keys.

+ *

If you delete this grant, the studio will no longer be accessible to your portal + * users.

+ *

If you delete the studio KMS key, your studio will no longer be accessible.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/DeleteStreamingSessionCommand.ts b/clients/client-nimble/src/commands/DeleteStreamingSessionCommand.ts index 04b3317193695..64158e2d53315 100644 --- a/clients/client-nimble/src/commands/DeleteStreamingSessionCommand.ts +++ b/clients/client-nimble/src/commands/DeleteStreamingSessionCommand.ts @@ -22,7 +22,11 @@ export interface DeleteStreamingSessionCommandInput extends DeleteStreamingSessi export interface DeleteStreamingSessionCommandOutput extends DeleteStreamingSessionResponse, __MetadataBearer {} /** - *

Deletes streaming session resource.

After invoking this operation, use GetStreamingSession to poll the resource until it transitions to a DELETED state.

A streaming session will count against your streaming session quota until it is marked DELETED.

+ *

Deletes streaming session resource.

+ *

After invoking this operation, use GetStreamingSession to poll the resource until it + * transitions to a DELETED state.

+ *

A streaming session will count against your streaming session quota until it is marked + * DELETED.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/GetLaunchProfileDetailsCommand.ts b/clients/client-nimble/src/commands/GetLaunchProfileDetailsCommand.ts index 7af43934852f1..9201d02fc59b3 100644 --- a/clients/client-nimble/src/commands/GetLaunchProfileDetailsCommand.ts +++ b/clients/client-nimble/src/commands/GetLaunchProfileDetailsCommand.ts @@ -22,7 +22,10 @@ export interface GetLaunchProfileDetailsCommandInput extends GetLaunchProfileDet export interface GetLaunchProfileDetailsCommandOutput extends GetLaunchProfileDetailsResponse, __MetadataBearer {} /** - *

Launch profile details include the launch profile resource and summary information of resources that are used by, or available to, the launch profile. This includes the name and description of all studio components used by the launch profiles, and the name and description of streaming images that can be used with this launch profile.

+ *

Launch profile details include the launch profile resource and summary information of + * resources that are used by, or available to, the launch profile. This includes the name + * and description of all studio components used by the launch profiles, and the name and + * description of streaming images that can be used with this launch profile.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/GetStreamingSessionCommand.ts b/clients/client-nimble/src/commands/GetStreamingSessionCommand.ts index 866acacf8dc93..decc973850267 100644 --- a/clients/client-nimble/src/commands/GetStreamingSessionCommand.ts +++ b/clients/client-nimble/src/commands/GetStreamingSessionCommand.ts @@ -22,7 +22,9 @@ export interface GetStreamingSessionCommandInput extends GetStreamingSessionRequ export interface GetStreamingSessionCommandOutput extends GetStreamingSessionResponse, __MetadataBearer {} /** - *

Gets StreamingSession resource.

Invoke this operation to poll for a streaming session state while creating or deleting a session.

+ *

Gets StreamingSession resource.

+ *

anvoke this operation to poll for a streaming session state while creating or deleting + * a session.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/GetStreamingSessionStreamCommand.ts b/clients/client-nimble/src/commands/GetStreamingSessionStreamCommand.ts index 527a1561bcd1a..065ac4e74d6b6 100644 --- a/clients/client-nimble/src/commands/GetStreamingSessionStreamCommand.ts +++ b/clients/client-nimble/src/commands/GetStreamingSessionStreamCommand.ts @@ -22,7 +22,11 @@ export interface GetStreamingSessionStreamCommandInput extends GetStreamingSessi export interface GetStreamingSessionStreamCommandOutput extends GetStreamingSessionStreamResponse, __MetadataBearer {} /** - *

Gets a StreamingSessionStream for a streaming session.

Invoke this operation to poll the resource after invoking CreateStreamingSessionStream.

After the StreamingSessionStream changes to the state READY, the url property will contain a stream to be used with the DCV streaming client.

+ *

Gets a StreamingSessionStream for a streaming session.

+ *

Invoke this operation to poll the resource after invoking + * CreateStreamingSessionStream.

+ *

After the StreamingSessionStream changes to the state READY, the url property will + * contain a stream to be used with the DCV streaming client.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/ListStreamingImagesCommand.ts b/clients/client-nimble/src/commands/ListStreamingImagesCommand.ts index 5832de32e6377..6de3d8d6db649 100644 --- a/clients/client-nimble/src/commands/ListStreamingImagesCommand.ts +++ b/clients/client-nimble/src/commands/ListStreamingImagesCommand.ts @@ -22,7 +22,9 @@ export interface ListStreamingImagesCommandInput extends ListStreamingImagesRequ export interface ListStreamingImagesCommandOutput extends ListStreamingImagesResponse, __MetadataBearer {} /** - *

List the streaming image resources available to this studio.

This list will contain both images provided by Amazon Web Services, as well as streaming images that you have created in your studio.

+ *

List the streaming image resources available to this studio.

+ *

This list will contain both images provided by Amazon Web Services, as well as + * streaming images that you have created in your studio.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/ListStudiosCommand.ts b/clients/client-nimble/src/commands/ListStudiosCommand.ts index 74502be70ee64..0e0b5dbb8389f 100644 --- a/clients/client-nimble/src/commands/ListStudiosCommand.ts +++ b/clients/client-nimble/src/commands/ListStudiosCommand.ts @@ -22,7 +22,8 @@ export interface ListStudiosCommandInput extends ListStudiosRequest {} export interface ListStudiosCommandOutput extends ListStudiosResponse, __MetadataBearer {} /** - *

List studios in your Amazon Web Services account in the requested Amazon Web Services Region.

+ *

List studios in your Amazon Web Services account in the requested Amazon Web Services + * Region.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/ListTagsForResourceCommand.ts b/clients/client-nimble/src/commands/ListTagsForResourceCommand.ts index 0f28d34b59a90..03119a0e3b1a7 100644 --- a/clients/client-nimble/src/commands/ListTagsForResourceCommand.ts +++ b/clients/client-nimble/src/commands/ListTagsForResourceCommand.ts @@ -22,7 +22,11 @@ export interface ListTagsForResourceCommandInput extends ListTagsForResourceRequ export interface ListTagsForResourceCommandOutput extends ListTagsForResourceResponse, __MetadataBearer {} /** - *

Gets the tags for a resource, given its Amazon Resource Names (ARN).

This operation supports ARNs for all resource types in Nimble Studio that support tags, including studio, studio component, launch profile, streaming image, and streaming session. All resources that can be tagged will contain an ARN property, so you do not have to create this ARN yourself.

+ *

Gets the tags for a resource, given its Amazon Resource Names (ARN).

+ *

This operation supports ARNs for all resource types in Nimble Studio that support + * tags, including studio, studio component, launch profile, streaming image, and streaming + * session. All resources that can be tagged will contain an ARN property, so you do not + * have to create this ARN yourself.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/StartStreamingSessionCommand.ts b/clients/client-nimble/src/commands/StartStreamingSessionCommand.ts new file mode 100644 index 0000000000000..a5772271552f6 --- /dev/null +++ b/clients/client-nimble/src/commands/StartStreamingSessionCommand.ts @@ -0,0 +1,97 @@ +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { StartStreamingSessionRequest, StartStreamingSessionResponse } from "../models/models_0"; +import { NimbleClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../NimbleClient"; +import { + deserializeAws_restJson1StartStreamingSessionCommand, + serializeAws_restJson1StartStreamingSessionCommand, +} from "../protocols/Aws_restJson1"; + +export interface StartStreamingSessionCommandInput extends StartStreamingSessionRequest {} +export interface StartStreamingSessionCommandOutput extends StartStreamingSessionResponse, __MetadataBearer {} + +/** + *

Transitions sessions from the STOPPED state into the READY state. The + * START_IN_PROGRESS state is the intermediate state between the STOPPED and READY + * states.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { NimbleClient, StartStreamingSessionCommand } from "@aws-sdk/client-nimble"; // ES Modules import + * // const { NimbleClient, StartStreamingSessionCommand } = require("@aws-sdk/client-nimble"); // CommonJS import + * const client = new NimbleClient(config); + * const command = new StartStreamingSessionCommand(input); + * const response = await client.send(command); + * ``` + * + * @see {@link StartStreamingSessionCommandInput} for command's `input` shape. + * @see {@link StartStreamingSessionCommandOutput} for command's `response` shape. + * @see {@link NimbleClientResolvedConfig | config} for command's `input` shape. + * + */ +export class StartStreamingSessionCommand extends $Command< + StartStreamingSessionCommandInput, + StartStreamingSessionCommandOutput, + NimbleClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: StartStreamingSessionCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: NimbleClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "NimbleClient"; + const commandName = "StartStreamingSessionCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: StartStreamingSessionRequest.filterSensitiveLog, + outputFilterSensitiveLog: StartStreamingSessionResponse.filterSensitiveLog, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize(input: StartStreamingSessionCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return serializeAws_restJson1StartStreamingSessionCommand(input, context); + } + + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return deserializeAws_restJson1StartStreamingSessionCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-nimble/src/commands/StartStudioSSOConfigurationRepairCommand.ts b/clients/client-nimble/src/commands/StartStudioSSOConfigurationRepairCommand.ts index a053c4c20a45f..99565cfc0d036 100644 --- a/clients/client-nimble/src/commands/StartStudioSSOConfigurationRepairCommand.ts +++ b/clients/client-nimble/src/commands/StartStudioSSOConfigurationRepairCommand.ts @@ -27,7 +27,13 @@ export interface StartStudioSSOConfigurationRepairCommandOutput __MetadataBearer {} /** - *

Repairs the SSO configuration for a given studio.

If the studio has a valid Amazon Web Services SSO configuration currently associated with it, this operation will fail with a validation error.

If the studio does not have a valid Amazon Web Services SSO configuration currently associated with it, then a new Amazon Web Services SSO application is created for the studio and the studio is changed to the READY state.

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

+ *

Repairs the Amazon Web Services SSO configuration for a given studio.

+ *

If the studio has a valid Amazon Web Services SSO configuration currently associated with + * it, this operation will fail with a validation error.

+ *

If the studio does not have a valid Amazon Web Services SSO configuration currently + * associated with it, then a new Amazon Web Services SSO application is created for the studio + * and the studio is changed to the READY state.

+ *

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/StopStreamingSessionCommand.ts b/clients/client-nimble/src/commands/StopStreamingSessionCommand.ts new file mode 100644 index 0000000000000..59d9c32861e2b --- /dev/null +++ b/clients/client-nimble/src/commands/StopStreamingSessionCommand.ts @@ -0,0 +1,96 @@ +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + MiddlewareStack, + SerdeContext as __SerdeContext, +} from "@aws-sdk/types"; + +import { StopStreamingSessionRequest, StopStreamingSessionResponse } from "../models/models_0"; +import { NimbleClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../NimbleClient"; +import { + deserializeAws_restJson1StopStreamingSessionCommand, + serializeAws_restJson1StopStreamingSessionCommand, +} from "../protocols/Aws_restJson1"; + +export interface StopStreamingSessionCommandInput extends StopStreamingSessionRequest {} +export interface StopStreamingSessionCommandOutput extends StopStreamingSessionResponse, __MetadataBearer {} + +/** + *

Transitions sessions from the READY state into the STOPPED state. The STOP_IN_PROGRESS + * state is the intermediate state between the READY and STOPPED states.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { NimbleClient, StopStreamingSessionCommand } from "@aws-sdk/client-nimble"; // ES Modules import + * // const { NimbleClient, StopStreamingSessionCommand } = require("@aws-sdk/client-nimble"); // CommonJS import + * const client = new NimbleClient(config); + * const command = new StopStreamingSessionCommand(input); + * const response = await client.send(command); + * ``` + * + * @see {@link StopStreamingSessionCommandInput} for command's `input` shape. + * @see {@link StopStreamingSessionCommandOutput} for command's `response` shape. + * @see {@link NimbleClientResolvedConfig | config} for command's `input` shape. + * + */ +export class StopStreamingSessionCommand extends $Command< + StopStreamingSessionCommandInput, + StopStreamingSessionCommandOutput, + NimbleClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: StopStreamingSessionCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + /** + * @internal + */ + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: NimbleClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + + const stack = clientStack.concat(this.middlewareStack); + + const { logger } = configuration; + const clientName = "NimbleClient"; + const commandName = "StopStreamingSessionCommand"; + const handlerExecutionContext: HandlerExecutionContext = { + logger, + clientName, + commandName, + inputFilterSensitiveLog: StopStreamingSessionRequest.filterSensitiveLog, + outputFilterSensitiveLog: StopStreamingSessionResponse.filterSensitiveLog, + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize(input: StopStreamingSessionCommandInput, context: __SerdeContext): Promise<__HttpRequest> { + return serializeAws_restJson1StopStreamingSessionCommand(input, context); + } + + private deserialize(output: __HttpResponse, context: __SerdeContext): Promise { + return deserializeAws_restJson1StopStreamingSessionCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-nimble/src/commands/UpdateStudioCommand.ts b/clients/client-nimble/src/commands/UpdateStudioCommand.ts index a0862f28e0536..5e032451e180b 100644 --- a/clients/client-nimble/src/commands/UpdateStudioCommand.ts +++ b/clients/client-nimble/src/commands/UpdateStudioCommand.ts @@ -22,7 +22,9 @@ export interface UpdateStudioCommandInput extends UpdateStudioRequest {} export interface UpdateStudioCommandOutput extends UpdateStudioResponse, __MetadataBearer {} /** - *

Update a Studio resource.

Currently, this operation only supports updating the displayName of your studio.

+ *

Update a Studio resource.

+ *

Currently, this operation only supports updating the displayName of your + * studio.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-nimble/src/commands/index.ts b/clients/client-nimble/src/commands/index.ts index 01494f8f07018..9a4b338250d40 100644 --- a/clients/client-nimble/src/commands/index.ts +++ b/clients/client-nimble/src/commands/index.ts @@ -35,7 +35,9 @@ export * from "./ListStudiosCommand"; export * from "./ListTagsForResourceCommand"; export * from "./PutLaunchProfileMembersCommand"; export * from "./PutStudioMembersCommand"; +export * from "./StartStreamingSessionCommand"; export * from "./StartStudioSSOConfigurationRepairCommand"; +export * from "./StopStreamingSessionCommand"; export * from "./TagResourceCommand"; export * from "./UntagResourceCommand"; export * from "./UpdateLaunchProfileCommand"; diff --git a/clients/client-nimble/src/index.ts b/clients/client-nimble/src/index.ts index 418a47e2c08c4..965e78d20d4c6 100644 --- a/clients/client-nimble/src/index.ts +++ b/clients/client-nimble/src/index.ts @@ -2,3 +2,5 @@ export * from "./Nimble"; export * from "./NimbleClient"; export * from "./commands"; export * from "./models"; +export * from "./pagination"; +export * from "./waiters"; diff --git a/clients/client-nimble/src/models/models_0.ts b/clients/client-nimble/src/models/models_0.ts index 03ae55ae5ded6..9072ee5577060 100644 --- a/clients/client-nimble/src/models/models_0.ts +++ b/clients/client-nimble/src/models/models_0.ts @@ -1,11 +1,14 @@ +import { SENSITIVE_STRING } from "@aws-sdk/smithy-client"; import { MetadataBearer as $MetadataBearer, SmithyException as __SmithyException } from "@aws-sdk/types"; /** - *

A collection of EULA acceptances.

+ * */ export interface AcceptEulasRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -15,7 +18,7 @@ export interface AcceptEulasRequest { eulaIds?: string[]; /** - *

The studio ID.

+ *

A collection of EULA IDs.

*/ studioId: string | undefined; } @@ -29,6 +32,9 @@ export namespace AcceptEulasRequest { }); } +/** + *

The acceptance of a EULA, required to use Amazon-provided streaming images.

+ */ export interface EulaAcceptance { /** *

The Unix epoch timestamp in seconds for when the EULA was accepted.

@@ -65,6 +71,9 @@ export namespace EulaAcceptance { }); } +/** + * + */ export interface AcceptEulasResponse { /** *

A collection of EULA acceptances.

@@ -81,6 +90,10 @@ export namespace AcceptEulasResponse { }); } +/** + *

You are not authorized to perform this operation. Check your IAM policies, and ensure + * that you are using the correct access keys.

+ */ export interface AccessDeniedException extends __SmithyException, $MetadataBearer { name: "AccessDeniedException"; $fault: "client"; @@ -109,6 +122,9 @@ export namespace AccessDeniedException { }); } +/** + *

Another operation is in progress.

+ */ export interface ConflictException extends __SmithyException, $MetadataBearer { name: "ConflictException"; $fault: "client"; @@ -137,9 +153,13 @@ export namespace ConflictException { }); } +/** + *

An internal error has occurred. Please retry your request.

+ */ export interface InternalServerErrorException extends __SmithyException, $MetadataBearer { name: "InternalServerErrorException"; $fault: "server"; + $retryable: {}; /** *

A more specific error code.

*/ @@ -165,6 +185,9 @@ export namespace InternalServerErrorException { }); } +/** + *

The specified resource could not be found.

+ */ export interface ResourceNotFoundException extends __SmithyException, $MetadataBearer { name: "ResourceNotFoundException"; $fault: "client"; @@ -193,6 +216,11 @@ export namespace ResourceNotFoundException { }); } +/** + *

Your current quota does not allow you to perform the request action. You can request + * increases for some quotas, and other quotas cannot be increased.

+ *

Please use AWS Service Quotas to request an increase.

+ */ export interface ServiceQuotaExceededException extends __SmithyException, $MetadataBearer { name: "ServiceQuotaExceededException"; $fault: "client"; @@ -221,9 +249,13 @@ export namespace ServiceQuotaExceededException { }); } +/** + *

The request throughput limit was exceeded.

+ */ export interface ThrottlingException extends __SmithyException, $MetadataBearer { name: "ThrottlingException"; $fault: "client"; + $retryable: {}; /** *

A more specific error code.

*/ @@ -249,6 +281,9 @@ export namespace ThrottlingException { }); } +/** + *

One of the parameters in the request is invalid.

+ */ export interface ValidationException extends __SmithyException, $MetadataBearer { name: "ValidationException"; $fault: "client"; @@ -278,7 +313,8 @@ export namespace ValidationException { } /** - *

An LDAP attribute of an Active Directory computer account, in the form of a name:value pair.

+ *

An LDAP attribute of an Active Directory computer account, in the form of a name:value + * pair.

*/ export interface ActiveDirectoryComputerAttribute { /** @@ -302,7 +338,8 @@ export namespace ActiveDirectoryComputerAttribute { } /** - *

The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.

+ *

The configuration for a Microsoft Active Directory (Microsoft AD) studio + * resource.

*/ export interface ActiveDirectoryConfiguration { /** @@ -311,12 +348,14 @@ export interface ActiveDirectoryConfiguration { computerAttributes?: ActiveDirectoryComputerAttribute[]; /** - *

The directory ID of the Directory Service for Microsoft Active Directory to access using this studio component.

+ *

The directory ID of the Directory Service for Microsoft Active Directory to access + * using this studio component.

*/ directoryId?: string; /** - *

The distinguished name (DN) and organizational unit (OU) of an Active Directory computer.

+ *

The distinguished name (DN) and organizational unit (OU) of an Active Directory + * computer.

*/ organizationalUnitDistinguishedName?: string; } @@ -327,6 +366,7 @@ export namespace ActiveDirectoryConfiguration { */ export const filterSensitiveLog = (obj: ActiveDirectoryConfiguration): any => ({ ...obj, + ...(obj.computerAttributes && { computerAttributes: SENSITIVE_STRING }), }); } @@ -335,12 +375,14 @@ export namespace ActiveDirectoryConfiguration { */ export interface ComputeFarmConfiguration { /** - *

The name of an Active Directory user that is used on ComputeFarm worker instances.

+ *

The name of an Active Directory user that is used on ComputeFarm worker + * instances.

*/ activeDirectoryUser?: string; /** - *

The endpoint of the ComputeFarm that is accessed by the studio component resource.

+ *

The endpoint of the ComputeFarm that is accessed by the studio component + * resource.

*/ endpoint?: string; } @@ -351,6 +393,7 @@ export namespace ComputeFarmConfiguration { */ export const filterSensitiveLog = (obj: ComputeFarmConfiguration): any => ({ ...obj, + ...(obj.endpoint && { endpoint: SENSITIVE_STRING }), }); } @@ -368,26 +411,43 @@ export enum StreamingInstanceType { g4dn_xlarge = "g4dn.xlarge", } +/** + *

Configuration for streaming workstations created using this launch profile.

+ */ export interface StreamConfigurationCreate { /** - *

Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.

+ *

Enable or disable the use of the system clipboard to copy and paste between the + * streaming session and streaming client.

*/ clipboardMode: StreamingClipboardMode | string | undefined; /** - *

The EC2 instance types that users can select from when launching a streaming session with this launch profile.

+ *

The EC2 instance types that users can select from when launching a streaming session + * with this launch profile.

*/ ec2InstanceTypes: (StreamingInstanceType | string)[] | undefined; /** - *

The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.

+ *

The length of time, in minutes, that a streaming session can be active before it is + * stopped or terminated. After this point, Nimble Studio automatically terminates + * or stops the session. The default length of time is 690 minutes, and the maximum length + * of time is 30 days.

*/ maxSessionLengthInMinutes?: number; /** - *

The streaming images that users can select from when launching a streaming session with this launch profile.

+ *

The streaming images that users can select from when launching a streaming session + * with this launch profile.

*/ streamingImageIds: string[] | undefined; + + /** + *

The length of time, in minutes, that a streaming session can be active before it is + * stopped or terminated. After this point, Nimble Studio automatically terminates or + * stops the session. The default length of time is 690 minutes, and the maximum length of + * time is 30 days.

+ */ + maxStoppedSessionLengthInMinutes?: number; } export namespace StreamConfigurationCreate { @@ -400,11 +460,13 @@ export namespace StreamConfigurationCreate { } /** - *

A collection of launch profiles.

+ * */ export interface CreateLaunchProfileRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -413,9 +475,15 @@ export interface CreateLaunchProfileRequest { */ description?: string; + /** + *

Specifies the IDs of the EC2 subnets where streaming sessions will be accessible from. + * These subnets must support the specified instance types.

+ */ ec2SubnetIds: string[] | undefined; + /** - *

The version number of the protocol that is used by the launch profile. The only valid version is "2021-03-31".

+ *

The version number of the protocol that is used by the launch profile. The only valid + * version is "2021-03-31".

*/ launchProfileProtocolVersions: string[] | undefined; @@ -430,17 +498,19 @@ export interface CreateLaunchProfileRequest { streamConfiguration: StreamConfigurationCreate | undefined; /** - *

Unique identifiers for a collection of studio components that can be used with this launch profile.

+ *

Unique identifiers for a collection of studio components that can be used with this + * launch profile.

*/ studioComponentIds: string[] | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; } @@ -451,6 +521,8 @@ export namespace CreateLaunchProfileRequest { */ export const filterSensitiveLog = (obj: CreateLaunchProfileRequest): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } @@ -486,24 +558,44 @@ export enum LaunchProfileStatusCode { */ export interface StreamConfiguration { /** - *

Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.

+ *

Enable or disable the use of the system clipboard to copy and paste between the + * streaming session and streaming client.

*/ - clipboardMode?: StreamingClipboardMode | string; + clipboardMode: StreamingClipboardMode | string | undefined; /** - *

The EC2 instance types that users can select from when launching a streaming session with this launch profile.

+ *

The EC2 instance types that users can select from when launching a streaming session + * with this launch profile.

*/ - ec2InstanceTypes?: (StreamingInstanceType | string)[]; + ec2InstanceTypes: (StreamingInstanceType | string)[] | undefined; /** - *

The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.

+ *

The length of time, in minutes, that a streaming session can be active before it is + * stopped or terminated. After this point, Nimble Studio automatically terminates + * or stops the session. The default length of time is 690 minutes, and the maximum length + * of time is 30 days.

*/ maxSessionLengthInMinutes?: number; /** - *

The streaming images that users can select from when launching a streaming session with this launch profile.

+ *

The streaming images that users can select from when launching a streaming session + * with this launch profile.

+ */ + streamingImageIds: string[] | undefined; + + /** + *

Integer that determines if you can start and stop your sessions and how long a session + * can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

+ *

If the value is missing or set to 0, your sessions can’t be stopped. If you then call + * StopStreamingSession, the session fails. If the time that a session stays in the READY + * state exceeds the maxSessionLengthInMinutes value, the session will automatically be + * terminated by AWS (instead of stopped).

+ *

If the value is set to a positive number, the session can be stopped. You can call + * StopStreamingSession to stop sessions in the READY state. If the time that a session + * stays in the READY state exceeds the maxSessionLengthInMinutes value, the session will + * automatically be stopped by AWS (instead of terminated).

*/ - streamingImageIds?: string[]; + maxStoppedSessionLengthInMinutes?: number; } export namespace StreamConfiguration { @@ -515,6 +607,16 @@ export namespace StreamConfiguration { }); } +/** + *

A launch profile controls your artist workforce’s access to studio components, like + * compute farms, shared file systems, managed file systems, and license server + * configurations, as well as instance types and Amazon Machine Images (AMIs).

+ * + *

Studio administrators create launch profiles in the Nimble Studio console. + * Artists can use their launch profiles to launch an instance from the Nimble Studio + * portal. Each user’s launch profile defines how they can launch a streaming session. By + * default, studio admins can use all launch profiles.

+ */ export interface LaunchProfile { /** *

The ARN of the resource.

@@ -547,7 +649,8 @@ export interface LaunchProfile { launchProfileId?: string; /** - *

The version number of the protocol that is used by the launch profile. The only valid version is "2021-03-31".

+ *

The version number of the protocol that is used by the launch profile. The only valid + * version is "2021-03-31".

*/ launchProfileProtocolVersions?: string[]; @@ -577,12 +680,14 @@ export interface LaunchProfile { streamConfiguration?: StreamConfiguration; /** - *

Unique identifiers for a collection of studio components that can be used with this launch profile.

+ *

Unique identifiers for a collection of studio components that can be used with this + * launch profile.

*/ studioComponentIds?: string[]; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; @@ -603,9 +708,14 @@ export namespace LaunchProfile { */ export const filterSensitiveLog = (obj: LaunchProfile): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } +/** + * + */ export interface CreateLaunchProfileResponse { /** *

The launch profile.

@@ -619,15 +729,18 @@ export namespace CreateLaunchProfileResponse { */ export const filterSensitiveLog = (obj: CreateLaunchProfileResponse): any => ({ ...obj, + ...(obj.launchProfile && { launchProfile: LaunchProfile.filterSensitiveLog(obj.launchProfile) }), }); } /** - *

A collection of streaming images.

+ * */ export interface CreateStreamingImageRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -647,12 +760,13 @@ export interface CreateStreamingImageRequest { name: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; } @@ -663,6 +777,8 @@ export namespace CreateStreamingImageRequest { */ export const filterSensitiveLog = (obj: CreateStreamingImageRequest): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } @@ -670,6 +786,9 @@ export enum StreamingImageEncryptionConfigurationKeyType { CUSTOMER_MANAGED_KEY = "CUSTOMER_MANAGED_KEY", } +/** + *

Specifies how a streaming image is encrypted.

+ */ export interface StreamingImageEncryptionConfiguration { /** *

The ARN for a KMS key that is used to encrypt studio data.

@@ -711,6 +830,16 @@ export enum StreamingImageStatusCode { STREAMING_IMAGE_UPDATE_IN_PROGRESS = "STREAMING_IMAGE_UPDATE_IN_PROGRESS", } +/** + *

Represents a streaming image resource.

+ *

Streaming images are used by studio users to select which operating system and + * software they want to use in a Nimble Studio streaming session.

+ *

Amazon provides a number of streaming images that include popular 3rd-party + * software.

+ *

You can create your own streaming images using an Amazon Elastic Compute Cloud (Amazon + * EC2) machine image that you create for this purpose. You can also include software that + * your users require.

+ */ export interface StreamingImage { /** *

The ARN of the resource.

@@ -733,7 +862,8 @@ export interface StreamingImage { encryptionConfiguration?: StreamingImageEncryptionConfiguration; /** - *

The list of EULAs that must be accepted before a Streaming Session can be started using this streaming image.

+ *

The list of EULAs that must be accepted before a Streaming Session can be started + * using this streaming image.

*/ eulaIds?: string[]; @@ -743,7 +873,8 @@ export interface StreamingImage { name?: string; /** - *

The owner of the streaming image, either the studioId that contains the streaming image, or 'amazon' for images that are provided by Amazon Nimble Studio.

+ *

The owner of the streaming image, either the studioId that contains the streaming + * image, or 'amazon' for images that are provided by Amazon Nimble Studio.

*/ owner?: string; @@ -773,7 +904,8 @@ export interface StreamingImage { streamingImageId?: string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; } @@ -784,10 +916,18 @@ export namespace StreamingImage { */ export const filterSensitiveLog = (obj: StreamingImage): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } +/** + * + */ export interface CreateStreamingImageResponse { + /** + *

The streaming image.

+ */ streamingImage?: StreamingImage; } @@ -797,15 +937,18 @@ export namespace CreateStreamingImageResponse { */ export const filterSensitiveLog = (obj: CreateStreamingImageResponse): any => ({ ...obj, + ...(obj.streamingImage && { streamingImage: StreamingImage.filterSensitiveLog(obj.streamingImage) }), }); } /** - *

A collection of streaming sessions.

+ * */ export interface CreateStreamingSessionRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -830,12 +973,13 @@ export interface CreateStreamingSessionRequest { streamingImageId?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; } @@ -856,6 +1000,11 @@ export enum StreamingSessionState { DELETE_FAILED = "DELETE_FAILED", DELETE_IN_PROGRESS = "DELETE_IN_PROGRESS", READY = "READY", + START_FAILED = "START_FAILED", + START_IN_PROGRESS = "START_IN_PROGRESS", + STOPPED = "STOPPED", + STOP_FAILED = "STOP_FAILED", + STOP_IN_PROGRESS = "STOP_IN_PROGRESS", } export enum StreamingSessionStatusCode { @@ -870,8 +1019,16 @@ export enum StreamingSessionStatusCode { STREAMING_SESSION_DELETED = "STREAMING_SESSION_DELETED", STREAMING_SESSION_DELETE_IN_PROGRESS = "STREAMING_SESSION_DELETE_IN_PROGRESS", STREAMING_SESSION_READY = "STREAMING_SESSION_READY", + STREAMING_SESSION_STARTED = "STREAMING_SESSION_STARTED", + STREAMING_SESSION_START_IN_PROGRESS = "STREAMING_SESSION_START_IN_PROGRESS", + STREAMING_SESSION_STOPPED = "STREAMING_SESSION_STOPPED", + STREAMING_SESSION_STOP_IN_PROGRESS = "STREAMING_SESSION_STOP_IN_PROGRESS", } +/** + *

A streaming session is a virtual workstation created using a particular launch + * profile.

+ */ export interface StreamingSession { /** *

The ARN of the resource.

@@ -929,12 +1086,14 @@ export interface StreamingSession { streamingImageId?: string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; /** - *

The time the streaming session will automatically terminate if not terminated by the user.

+ *

The time the streaming session will automatically terminate if not terminated by the + * user.

*/ terminateAt?: Date; @@ -947,6 +1106,32 @@ export interface StreamingSession { *

The user ID of the user that most recently updated the resource.

*/ updatedBy?: string; + + /** + *

The time the session entered STOP_IN_PROGRESS state.

+ */ + stoppedAt?: Date; + + /** + *

The user ID of the user that stopped the streaming session.

+ */ + stoppedBy?: string; + + /** + *

The time the session entered START_IN_PROGRESS state.

+ */ + startedAt?: Date; + + /** + *

The user ID of the user that started the streaming session.

+ */ + startedBy?: string; + + /** + *

The time the streaming session will automatically be stopped if the user doesn’t stop + * the session themselves.

+ */ + stopAt?: Date; } export namespace StreamingSession { @@ -958,6 +1143,9 @@ export namespace StreamingSession { }); } +/** + * + */ export interface CreateStreamingSessionResponse { /** *

The session.

@@ -975,11 +1163,13 @@ export namespace CreateStreamingSessionResponse { } /** - *

A list collection streams.

+ * */ export interface CreateStreamingSessionStreamRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -989,12 +1179,12 @@ export interface CreateStreamingSessionStreamRequest { expirationInSeconds?: number; /** - *

The session ID.

+ *

The streaming session ID.

*/ sessionId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1026,6 +1216,12 @@ export enum StreamingSessionStreamStatusCode { STREAM_READY = "STREAM_READY", } +/** + *

A stream is an active connection to a streaming session, enabling a studio user to + * control the streaming session using a compatible client. Streaming session streams are + * compatible with the NICE DCV web client, included in the Nimble Studio portal, or + * the NICE DCV desktop client.

+ */ export interface StreamingSessionStream { /** *

The Unix epoch timestamp in seconds for when the resource was created.

@@ -1074,9 +1270,13 @@ export namespace StreamingSessionStream { */ export const filterSensitiveLog = (obj: StreamingSessionStream): any => ({ ...obj, + ...(obj.url && { url: SENSITIVE_STRING }), }); } +/** + * + */ export interface CreateStreamingSessionStreamResponse { /** *

The stream.

@@ -1090,6 +1290,7 @@ export namespace CreateStreamingSessionStreamResponse { */ export const filterSensitiveLog = (obj: CreateStreamingSessionStreamResponse): any => ({ ...obj, + ...(obj.stream && { stream: StreamingSessionStream.filterSensitiveLog(obj.stream) }), }); } @@ -1123,16 +1324,19 @@ export namespace StudioEncryptionConfiguration { } /** - *

A collection of studio resources.

+ * */ export interface CreateStudioRequest { /** - *

The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.

+ *

The IAM role that Studio Admins will assume when logging in to the Nimble Studio + * portal.

*/ adminRoleArn: string | undefined; /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -1147,17 +1351,20 @@ export interface CreateStudioRequest { studioEncryptionConfiguration?: StudioEncryptionConfiguration; /** - *

The studio name that is used in the URL of the Nimble Studio portal when accessed by Nimble Studio users.

+ *

The studio name that is used in the URL of the Nimble Studio portal when accessed + * by Nimble Studio users.

*/ studioName: string | undefined; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; /** - *

The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.

+ *

The IAM role that Studio Users will assume when logging in to the Nimble Studio + * portal.

*/ userRoleArn: string | undefined; } @@ -1168,6 +1375,7 @@ export namespace CreateStudioRequest { */ export const filterSensitiveLog = (obj: CreateStudioRequest): any => ({ ...obj, + ...(obj.displayName && { displayName: SENSITIVE_STRING }), }); } @@ -1203,14 +1411,30 @@ export enum StudioStatusCode { STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED = "STUDIO_WITH_STUDIO_COMPONENTS_NOT_DELETED", } +/** + *

Represents a studio resource.

+ *

A studio is the core resource used with Nimble Studio. You must create a studio + * first, before any other resource type can be created. All other resources you create and + * manage in Nimble Studio are contained within a studio.

+ *

When creating a studio, you must provides two IAM roles for use with the Nimble Studio portal. These roles are assumed by your users when they log in to the + * Nimble Studio portal via Amazon Web Services SSO and your identity source.

+ *

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for + * the portal to function properly.

+ *

The admin role must have the AmazonNimbleStudio-StudioAdmin managed policy attached + * for the portal to function properly.

+ *

Your studio roles must trust the identity.nimble.amazonaws.com service principal to + * function properly.

+ */ export interface Studio { /** - *

The IAM role that studio admins assume when logging in to the Nimble Studio portal.

+ *

The IAM role that studio admins assume when logging in to the Nimble Studio + * portal.

*/ adminRoleArn?: string; /** - *

The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.

+ *

The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely + * identifies it. ARNs are unique across all Regions.

*/ arn?: string; @@ -1230,7 +1454,8 @@ export interface Studio { homeRegion?: string; /** - *

The Amazon Web Services SSO application client ID used to integrate with Amazon Web Services SSO to enable Amazon Web Services SSO users to log in to Nimble portal.

+ *

The Amazon Web Services SSO application client ID used to integrate with Amazon Web Services SSO + * to enable Amazon Web Services SSO users to log in to Nimble Studio portal.

*/ ssoClientId?: string; @@ -1255,7 +1480,8 @@ export interface Studio { studioEncryptionConfiguration?: StudioEncryptionConfiguration; /** - *

The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.

+ *

The unique identifier for a studio resource. In Nimble Studio, all other + * resources are contained in a studio resource.

*/ studioId?: string; @@ -1270,7 +1496,8 @@ export interface Studio { studioUrl?: string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; @@ -1280,7 +1507,8 @@ export interface Studio { updatedAt?: Date; /** - *

The IAM role that studio users assume when logging in to the Nimble Studio portal.

+ *

The IAM role that studio users assume when logging in to the Nimble Studio + * portal.

*/ userRoleArn?: string; } @@ -1291,9 +1519,13 @@ export namespace Studio { */ export const filterSensitiveLog = (obj: Studio): any => ({ ...obj, + ...(obj.displayName && { displayName: SENSITIVE_STRING }), }); } +/** + * + */ export interface CreateStudioResponse { /** *

Information about a studio.

@@ -1307,15 +1539,18 @@ export namespace CreateStudioResponse { */ export const filterSensitiveLog = (obj: CreateStudioResponse): any => ({ ...obj, + ...(obj.studio && { studio: Studio.filterSensitiveLog(obj.studio) }), }); } /** - *

The configuration for a license service that is associated with a studio resource.

+ *

The configuration for a license service that is associated with a studio + * resource.

*/ export interface LicenseServiceConfiguration { /** - *

The endpoint of the license service that is accessed by the studio component resource.

+ *

The endpoint of the license service that is accessed by the studio component + * resource.

*/ endpoint?: string; } @@ -1326,15 +1561,18 @@ export namespace LicenseServiceConfiguration { */ export const filterSensitiveLog = (obj: LicenseServiceConfiguration): any => ({ ...obj, + ...(obj.endpoint && { endpoint: SENSITIVE_STRING }), }); } /** - *

The configuration for a shared file storage system that is associated with a studio resource.

+ *

The configuration for a shared file storage system that is associated with a studio + * resource.

*/ export interface SharedFileSystemConfiguration { /** - *

The endpoint of the shared file system that is accessed by the studio component resource.

+ *

The endpoint of the shared file system that is accessed by the studio component + * resource.

*/ endpoint?: string; @@ -1365,6 +1603,9 @@ export namespace SharedFileSystemConfiguration { */ export const filterSensitiveLog = (obj: SharedFileSystemConfiguration): any => ({ ...obj, + ...(obj.endpoint && { endpoint: SENSITIVE_STRING }), + ...(obj.linuxMountPoint && { linuxMountPoint: SENSITIVE_STRING }), + ...(obj.shareName && { shareName: SENSITIVE_STRING }), }); } @@ -1373,7 +1614,8 @@ export namespace SharedFileSystemConfiguration { */ export interface StudioComponentConfiguration { /** - *

The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.

+ *

The configuration for a Microsoft Active Directory (Microsoft AD) studio + * resource.

*/ activeDirectoryConfiguration?: ActiveDirectoryConfiguration; @@ -1383,12 +1625,14 @@ export interface StudioComponentConfiguration { computeFarmConfiguration?: ComputeFarmConfiguration; /** - *

The configuration for a license service that is associated with a studio resource.

+ *

The configuration for a license service that is associated with a studio + * resource.

*/ licenseServiceConfiguration?: LicenseServiceConfiguration; /** - *

The configuration for a shared file storage system that is associated with a studio resource.

+ *

The configuration for a shared file storage system that is associated with a studio + * resource.

*/ sharedFileSystemConfiguration?: SharedFileSystemConfiguration; } @@ -1399,6 +1643,20 @@ export namespace StudioComponentConfiguration { */ export const filterSensitiveLog = (obj: StudioComponentConfiguration): any => ({ ...obj, + ...(obj.activeDirectoryConfiguration && { + activeDirectoryConfiguration: ActiveDirectoryConfiguration.filterSensitiveLog(obj.activeDirectoryConfiguration), + }), + ...(obj.computeFarmConfiguration && { + computeFarmConfiguration: ComputeFarmConfiguration.filterSensitiveLog(obj.computeFarmConfiguration), + }), + ...(obj.licenseServiceConfiguration && { + licenseServiceConfiguration: LicenseServiceConfiguration.filterSensitiveLog(obj.licenseServiceConfiguration), + }), + ...(obj.sharedFileSystemConfiguration && { + sharedFileSystemConfiguration: SharedFileSystemConfiguration.filterSensitiveLog( + obj.sharedFileSystemConfiguration + ), + }), }); } @@ -1417,7 +1675,8 @@ export enum StudioComponentInitializationScriptRunContext { */ export interface StudioComponentInitializationScript { /** - *

The version number of the protocol that is used by the launch profile. The only valid version is "2021-03-31".

+ *

The version number of the protocol that is used by the launch profile. The only valid + * version is "2021-03-31".

*/ launchProfileProtocolVersion?: string; @@ -1443,6 +1702,7 @@ export namespace StudioComponentInitializationScript { */ export const filterSensitiveLog = (obj: StudioComponentInitializationScript): any => ({ ...obj, + ...(obj.script && { script: SENSITIVE_STRING }), }); } @@ -1486,11 +1746,13 @@ export enum StudioComponentType { } /** - *

The studio components.

+ * */ export interface CreateStudioComponentRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -1525,7 +1787,7 @@ export interface CreateStudioComponentRequest { scriptParameters?: ScriptParameterKeyValue[]; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; @@ -1535,7 +1797,8 @@ export interface CreateStudioComponentRequest { subtype?: StudioComponentSubtype | string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; @@ -1551,6 +1814,15 @@ export namespace CreateStudioComponentRequest { */ export const filterSensitiveLog = (obj: CreateStudioComponentRequest): any => ({ ...obj, + ...(obj.configuration && { configuration: StudioComponentConfiguration.filterSensitiveLog(obj.configuration) }), + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.initializationScripts && { + initializationScripts: obj.initializationScripts.map((item) => + StudioComponentInitializationScript.filterSensitiveLog(item) + ), + }), + ...(obj.name && { name: SENSITIVE_STRING }), + ...(obj.scriptParameters && { scriptParameters: SENSITIVE_STRING }), }); } @@ -1579,7 +1851,15 @@ export enum StudioComponentStatusCode { } /** - *

A network that is used by a studio’s users and workflows, including render farm, Active Directory, licensing, and file system.

+ *

A studio component represents a network resource to be used by a studio's users and + * workflows. A typical studio contains studio components for each of the following: render + * farm, Active Directory, licensing, and file system.

+ *

Access to a studio component is managed by specifying security groups for the + * resource, as well as its endpoint.

+ *

A studio component also has a set of initialization scripts that are returned by + * GetLaunchProfileInitialization. These initialization scripts run on + * streaming sessions when they start. They provide users with flexibility in controlling + * how the studio resources are configured on a streaming session.

*/ export interface StudioComponent { /** @@ -1653,7 +1933,8 @@ export interface StudioComponent { subtype?: StudioComponentSubtype | string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; @@ -1679,9 +1960,21 @@ export namespace StudioComponent { */ export const filterSensitiveLog = (obj: StudioComponent): any => ({ ...obj, + ...(obj.configuration && { configuration: StudioComponentConfiguration.filterSensitiveLog(obj.configuration) }), + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.initializationScripts && { + initializationScripts: obj.initializationScripts.map((item) => + StudioComponentInitializationScript.filterSensitiveLog(item) + ), + }), + ...(obj.name && { name: SENSITIVE_STRING }), + ...(obj.scriptParameters && { scriptParameters: SENSITIVE_STRING }), }); } +/** + *

+ */ export interface CreateStudioComponentResponse { /** *

Information about the studio component.

@@ -1695,22 +1988,25 @@ export namespace CreateStudioComponentResponse { */ export const filterSensitiveLog = (obj: CreateStudioComponentResponse): any => ({ ...obj, + ...(obj.studioComponent && { studioComponent: StudioComponent.filterSensitiveLog(obj.studioComponent) }), }); } export interface DeleteLaunchProfileRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1724,6 +2020,9 @@ export namespace DeleteLaunchProfileRequest { }); } +/** + * + */ export interface DeleteLaunchProfileResponse { /** *

The launch profile.

@@ -1737,27 +2036,30 @@ export namespace DeleteLaunchProfileResponse { */ export const filterSensitiveLog = (obj: DeleteLaunchProfileResponse): any => ({ ...obj, + ...(obj.launchProfile && { launchProfile: LaunchProfile.filterSensitiveLog(obj.launchProfile) }), }); } export interface DeleteLaunchProfileMemberRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

The principal ID.

+ *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

*/ principalId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1771,6 +2073,9 @@ export namespace DeleteLaunchProfileMemberRequest { }); } +/** + * + */ export interface DeleteLaunchProfileMemberResponse {} export namespace DeleteLaunchProfileMemberResponse { @@ -1784,7 +2089,9 @@ export namespace DeleteLaunchProfileMemberResponse { export interface DeleteStreamingImageRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -1794,7 +2101,7 @@ export interface DeleteStreamingImageRequest { streamingImageId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1808,6 +2115,9 @@ export namespace DeleteStreamingImageRequest { }); } +/** + * + */ export interface DeleteStreamingImageResponse { /** *

The streaming image.

@@ -1821,22 +2131,25 @@ export namespace DeleteStreamingImageResponse { */ export const filterSensitiveLog = (obj: DeleteStreamingImageResponse): any => ({ ...obj, + ...(obj.streamingImage && { streamingImage: StreamingImage.filterSensitiveLog(obj.streamingImage) }), }); } export interface DeleteStreamingSessionRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The session ID.

+ *

The streaming session ID.

*/ sessionId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1850,6 +2163,9 @@ export namespace DeleteStreamingSessionRequest { }); } +/** + * + */ export interface DeleteStreamingSessionResponse { /** *

The session.

@@ -1868,12 +2184,14 @@ export namespace DeleteStreamingSessionResponse { export interface DeleteStudioRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1887,11 +2205,14 @@ export namespace DeleteStudioRequest { }); } +/** + * + */ export interface DeleteStudioResponse { /** *

Information about a studio.

*/ - studio?: Studio; + studio: Studio | undefined; } export namespace DeleteStudioResponse { @@ -1900,12 +2221,15 @@ export namespace DeleteStudioResponse { */ export const filterSensitiveLog = (obj: DeleteStudioResponse): any => ({ ...obj, + ...(obj.studio && { studio: Studio.filterSensitiveLog(obj.studio) }), }); } export interface DeleteStudioComponentRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -1915,7 +2239,7 @@ export interface DeleteStudioComponentRequest { studioComponentId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1929,6 +2253,9 @@ export namespace DeleteStudioComponentRequest { }); } +/** + * + */ export interface DeleteStudioComponentResponse { /** *

Information about the studio component.

@@ -1942,22 +2269,25 @@ export namespace DeleteStudioComponentResponse { */ export const filterSensitiveLog = (obj: DeleteStudioComponentResponse): any => ({ ...obj, + ...(obj.studioComponent && { studioComponent: StudioComponent.filterSensitiveLog(obj.studioComponent) }), }); } export interface DeleteStudioMemberRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The principal ID.

+ *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

*/ principalId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -1971,6 +2301,9 @@ export namespace DeleteStudioMemberRequest { }); } +/** + * + */ export interface DeleteStudioMemberResponse {} export namespace DeleteStudioMemberResponse { @@ -2021,6 +2354,56 @@ export namespace Eula { }); } +export interface ListEulaAcceptancesRequest { + /** + *

The list of EULA IDs that have been previously accepted.

+ */ + eulaIds?: string[]; + + /** + *

The token to request the next page of results.

+ */ + nextToken?: string; + + /** + *

The studio ID.

+ */ + studioId: string | undefined; +} + +export namespace ListEulaAcceptancesRequest { + /** + * @internal + */ + export const filterSensitiveLog = (obj: ListEulaAcceptancesRequest): any => ({ + ...obj, + }); +} + +/** + *

+ */ +export interface ListEulaAcceptancesResponse { + /** + *

A collection of EULA acceptances.

+ */ + eulaAcceptances?: EulaAcceptance[]; + + /** + *

The token for the next set of results, or null if there are no more results.

+ */ + nextToken?: string; +} + +export namespace ListEulaAcceptancesResponse { + /** + * @internal + */ + export const filterSensitiveLog = (obj: ListEulaAcceptancesResponse): any => ({ + ...obj, + }); +} + export interface GetEulaRequest { /** *

The EULA ID.

@@ -2037,6 +2420,9 @@ export namespace GetEulaRequest { }); } +/** + * + */ export interface GetEulaResponse { /** *

The EULA.

@@ -2053,14 +2439,59 @@ export namespace GetEulaResponse { }); } +export interface ListEulasRequest { + /** + *

The list of EULA IDs that should be returned

+ */ + eulaIds?: string[]; + + /** + *

The token to request the next page of results.

+ */ + nextToken?: string; +} + +export namespace ListEulasRequest { + /** + * @internal + */ + export const filterSensitiveLog = (obj: ListEulasRequest): any => ({ + ...obj, + }); +} + +/** + * + */ +export interface ListEulasResponse { + /** + *

A collection of EULA resources.

+ */ + eulas?: Eula[]; + + /** + *

The token for the next set of results, or null if there are no more results.

+ */ + nextToken?: string; +} + +export namespace ListEulasResponse { + /** + * @internal + */ + export const filterSensitiveLog = (obj: ListEulasResponse): any => ({ + ...obj, + }); +} + export interface GetLaunchProfileRequest { /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2074,6 +2505,9 @@ export namespace GetLaunchProfileRequest { }); } +/** + * + */ export interface GetLaunchProfileResponse { /** *

The launch profile.

@@ -2087,17 +2521,18 @@ export namespace GetLaunchProfileResponse { */ export const filterSensitiveLog = (obj: GetLaunchProfileResponse): any => ({ ...obj, + ...(obj.launchProfile && { launchProfile: LaunchProfile.filterSensitiveLog(obj.launchProfile) }), }); } export interface GetLaunchProfileDetailsRequest { /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2112,7 +2547,7 @@ export namespace GetLaunchProfileDetailsRequest { } /** - *

+ *

*/ export interface StudioComponentSummary { /** @@ -2167,9 +2602,14 @@ export namespace StudioComponentSummary { */ export const filterSensitiveLog = (obj: StudioComponentSummary): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } +/** + * + */ export interface GetLaunchProfileDetailsResponse { /** *

The launch profile.

@@ -2193,17 +2633,26 @@ export namespace GetLaunchProfileDetailsResponse { */ export const filterSensitiveLog = (obj: GetLaunchProfileDetailsResponse): any => ({ ...obj, + ...(obj.launchProfile && { launchProfile: LaunchProfile.filterSensitiveLog(obj.launchProfile) }), + ...(obj.streamingImages && { + streamingImages: obj.streamingImages.map((item) => StreamingImage.filterSensitiveLog(item)), + }), + ...(obj.studioComponentSummaries && { + studioComponentSummaries: obj.studioComponentSummaries.map((item) => + StudioComponentSummary.filterSensitiveLog(item) + ), + }), }); } export interface GetLaunchProfileInitializationRequest { /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

A collection of launch profile protocol versions.

+ *

The launch profile protocol versions supported by the client.

*/ launchProfileProtocolVersions: string[] | undefined; @@ -2213,12 +2662,12 @@ export interface GetLaunchProfileInitializationRequest { launchPurpose: string | undefined; /** - *

The platform.

+ *

The platform where this Launch Profile will be used, either WINDOWS or LINUX.

*/ platform: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2232,6 +2681,9 @@ export namespace GetLaunchProfileInitializationRequest { }); } +/** + *

+ */ export interface LaunchProfileInitializationActiveDirectory { /** *

A collection of custom attributes for an Active Directory computer.

@@ -2239,7 +2691,8 @@ export interface LaunchProfileInitializationActiveDirectory { computerAttributes?: ActiveDirectoryComputerAttribute[]; /** - *

The directory ID of the Directory Service for Microsoft Active Directory to access using this launch profile.

+ *

The directory ID of the Directory Service for Microsoft Active Directory to access + * using this launch profile.

*/ directoryId?: string; @@ -2275,9 +2728,14 @@ export namespace LaunchProfileInitializationActiveDirectory { */ export const filterSensitiveLog = (obj: LaunchProfileInitializationActiveDirectory): any => ({ ...obj, + ...(obj.computerAttributes && { computerAttributes: SENSITIVE_STRING }), + ...(obj.studioComponentName && { studioComponentName: SENSITIVE_STRING }), }); } +/** + *

+ */ export interface LaunchProfileInitializationScript { /** *

The initialization script.

@@ -2301,9 +2759,17 @@ export namespace LaunchProfileInitializationScript { */ export const filterSensitiveLog = (obj: LaunchProfileInitializationScript): any => ({ ...obj, + ...(obj.script && { script: SENSITIVE_STRING }), + ...(obj.studioComponentName && { studioComponentName: SENSITIVE_STRING }), }); } +/** + *

A Launch Profile Initialization contains information required for a workstation or + * server to connect to a launch profile

+ *

This includes scripts, endpoints, security groups, subnets, and other + * configuration.

+ */ export interface LaunchProfileInitialization { /** *

A LaunchProfileInitializationActiveDirectory resource.

@@ -2321,7 +2787,8 @@ export interface LaunchProfileInitialization { launchProfileId?: string; /** - *

The version number of the protocol that is used by the launch profile. The only valid version is "2021-03-31".

+ *

The version number of the protocol that is used by the launch profile. The only valid + * version is "2021-03-31".

*/ launchProfileProtocolVersion?: string; @@ -2357,9 +2824,26 @@ export namespace LaunchProfileInitialization { */ export const filterSensitiveLog = (obj: LaunchProfileInitialization): any => ({ ...obj, + ...(obj.activeDirectory && { + activeDirectory: LaunchProfileInitializationActiveDirectory.filterSensitiveLog(obj.activeDirectory), + }), + ...(obj.name && { name: SENSITIVE_STRING }), + ...(obj.systemInitializationScripts && { + systemInitializationScripts: obj.systemInitializationScripts.map((item) => + LaunchProfileInitializationScript.filterSensitiveLog(item) + ), + }), + ...(obj.userInitializationScripts && { + userInitializationScripts: obj.userInitializationScripts.map((item) => + LaunchProfileInitializationScript.filterSensitiveLog(item) + ), + }), }); } +/** + * + */ export interface GetLaunchProfileInitializationResponse { /** *

The launch profile initialization.

@@ -2373,22 +2857,25 @@ export namespace GetLaunchProfileInitializationResponse { */ export const filterSensitiveLog = (obj: GetLaunchProfileInitializationResponse): any => ({ ...obj, + ...(obj.launchProfileInitialization && { + launchProfileInitialization: LaunchProfileInitialization.filterSensitiveLog(obj.launchProfileInitialization), + }), }); } export interface GetLaunchProfileMemberRequest { /** - *

The launch profile ID.

+ *

The Launch Profile ID.

*/ launchProfileId: string | undefined; /** - *

The principal ID.

+ *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

*/ principalId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2406,6 +2893,9 @@ export enum LaunchProfilePersona { USER = "USER", } +/** + *

+ */ export interface LaunchProfileMembership { /** *

The ID of the identity store.

@@ -2421,6 +2911,11 @@ export interface LaunchProfileMembership { *

The principal ID.

*/ principalId?: string; + + /** + *

The Active Directory Security Identifier for this user, if available.

+ */ + sid?: string; } export namespace LaunchProfileMembership { @@ -2432,6 +2927,9 @@ export namespace LaunchProfileMembership { }); } +/** + * + */ export interface GetLaunchProfileMemberResponse { /** *

The member.

@@ -2455,7 +2953,7 @@ export interface GetStreamingImageRequest { streamingImageId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2469,6 +2967,9 @@ export namespace GetStreamingImageRequest { }); } +/** + * + */ export interface GetStreamingImageResponse { /** *

The streaming image.

@@ -2482,17 +2983,18 @@ export namespace GetStreamingImageResponse { */ export const filterSensitiveLog = (obj: GetStreamingImageResponse): any => ({ ...obj, + ...(obj.streamingImage && { streamingImage: StreamingImage.filterSensitiveLog(obj.streamingImage) }), }); } export interface GetStreamingSessionRequest { /** - *

The session ID.

+ *

The streaming session ID.

*/ sessionId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2506,6 +3008,9 @@ export namespace GetStreamingSessionRequest { }); } +/** + * + */ export interface GetStreamingSessionResponse { /** *

The session.

@@ -2524,17 +3029,17 @@ export namespace GetStreamingSessionResponse { export interface GetStreamingSessionStreamRequest { /** - *

The session ID.

+ *

The streaming session ID.

*/ sessionId: string | undefined; /** - *

The stream ID.

+ *

The streaming session stream ID.

*/ streamId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2548,6 +3053,9 @@ export namespace GetStreamingSessionStreamRequest { }); } +/** + * + */ export interface GetStreamingSessionStreamResponse { /** *

The stream.

@@ -2561,12 +3069,13 @@ export namespace GetStreamingSessionStreamResponse { */ export const filterSensitiveLog = (obj: GetStreamingSessionStreamResponse): any => ({ ...obj, + ...(obj.stream && { stream: StreamingSessionStream.filterSensitiveLog(obj.stream) }), }); } export interface GetStudioRequest { /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2580,11 +3089,14 @@ export namespace GetStudioRequest { }); } +/** + * + */ export interface GetStudioResponse { /** *

Information about a studio.

*/ - studio?: Studio; + studio: Studio | undefined; } export namespace GetStudioResponse { @@ -2593,6 +3105,7 @@ export namespace GetStudioResponse { */ export const filterSensitiveLog = (obj: GetStudioResponse): any => ({ ...obj, + ...(obj.studio && { studio: Studio.filterSensitiveLog(obj.studio) }), }); } @@ -2603,7 +3116,7 @@ export interface GetStudioComponentRequest { studioComponentId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2617,6 +3130,9 @@ export namespace GetStudioComponentRequest { }); } +/** + * + */ export interface GetStudioComponentResponse { /** *

Information about the studio component.

@@ -2630,17 +3146,18 @@ export namespace GetStudioComponentResponse { */ export const filterSensitiveLog = (obj: GetStudioComponentResponse): any => ({ ...obj, + ...(obj.studioComponent && { studioComponent: StudioComponent.filterSensitiveLog(obj.studioComponent) }), }); } export interface GetStudioMemberRequest { /** - *

The principal ID.

+ *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

*/ principalId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2658,6 +3175,18 @@ export enum StudioPersona { ADMINISTRATOR = "ADMINISTRATOR", } +/** + *

A studio member is an association of a user from your studio identity source to + * elevated permissions that they are granted in the studio.

+ *

When you add a user to your studio using the Nimble Studio console, they are + * given access to the studio's AWS SSO application and are given access to log in to the + * Nimble Studio portal. These users have the permissions provided by the studio's + * user IAM role and do not appear in the studio membership collection. Only studio admins + * appear in studio membership.

+ *

When you add a user to studio membership with the persona ADMIN, upon logging in to + * the Nimble Studio portal, they are granted permissions specified by the Studio's + * Admin IAM role.

+ */ export interface StudioMembership { /** *

The ID of the identity store.

@@ -2673,6 +3202,11 @@ export interface StudioMembership { *

The principal ID.

*/ principalId?: string; + + /** + *

The Active Directory Security Identifier for this user, if available.

+ */ + sid?: string; } export namespace StudioMembership { @@ -2684,6 +3218,9 @@ export namespace StudioMembership { }); } +/** + * + */ export interface GetStudioMemberResponse { /** *

The member.

@@ -2700,37 +3237,45 @@ export namespace GetStudioMemberResponse { }); } -export interface ListEulaAcceptancesRequest { +export interface ListLaunchProfileMembersRequest { /** - *

A collection of EULA IDs.

+ *

The Launch Profile ID.

*/ - eulaIds?: string[]; + launchProfileId: string | undefined; /** - *

The token for the next set of results, or null if there are no more results.

+ *

The max number of results to return in the response.

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

The token to request the next page of results.

*/ nextToken?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } -export namespace ListEulaAcceptancesRequest { +export namespace ListLaunchProfileMembersRequest { /** * @internal */ - export const filterSensitiveLog = (obj: ListEulaAcceptancesRequest): any => ({ + export const filterSensitiveLog = (obj: ListLaunchProfileMembersRequest): any => ({ ...obj, }); } -export interface ListEulaAcceptancesResponse { +/** + * + */ +export interface ListLaunchProfileMembersResponse { /** - *

A collection of EULA acceptances.

+ *

A list of members.

*/ - eulaAcceptances?: EulaAcceptance[]; + members?: LaunchProfileMembership[]; /** *

The token for the next set of results, or null if there are no more results.

@@ -2738,41 +3283,59 @@ export interface ListEulaAcceptancesResponse { nextToken?: string; } -export namespace ListEulaAcceptancesResponse { +export namespace ListLaunchProfileMembersResponse { /** * @internal */ - export const filterSensitiveLog = (obj: ListEulaAcceptancesResponse): any => ({ + export const filterSensitiveLog = (obj: ListLaunchProfileMembersResponse): any => ({ ...obj, }); } -export interface ListEulasRequest { +export interface ListLaunchProfilesRequest { /** - *

A collection of EULA IDs.

+ *

The max number of results to return in the response.

*/ - eulaIds?: string[]; + maxResults?: number; /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; + + /** + *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

+ */ + principalId?: string; + + /** + *

Filter this request to launch profiles in any of the given states.

+ */ + states?: string[]; + + /** + *

The studio ID.

+ */ + studioId: string | undefined; } -export namespace ListEulasRequest { +export namespace ListLaunchProfilesRequest { /** * @internal */ - export const filterSensitiveLog = (obj: ListEulasRequest): any => ({ + export const filterSensitiveLog = (obj: ListLaunchProfilesRequest): any => ({ ...obj, }); } -export interface ListEulasResponse { +/** + * + */ +export interface ListLaunchProfilesResponse { /** - *

A collection of EULA resources.

+ *

A collection of launch profiles.

*/ - eulas?: Eula[]; + launchProfiles?: LaunchProfile[]; /** *

The token for the next set of results, or null if there are no more results.

@@ -2780,137 +3343,244 @@ export interface ListEulasResponse { nextToken?: string; } -export namespace ListEulasResponse { +export namespace ListLaunchProfilesResponse { /** * @internal */ - export const filterSensitiveLog = (obj: ListEulasResponse): any => ({ + export const filterSensitiveLog = (obj: ListLaunchProfilesResponse): any => ({ ...obj, + ...(obj.launchProfiles && { + launchProfiles: obj.launchProfiles.map((item) => LaunchProfile.filterSensitiveLog(item)), + }), }); } -export interface ListLaunchProfileMembersRequest { +/** + *

+ */ +export interface NewLaunchProfileMember { /** - *

The launch profile ID.

+ *

The persona.

*/ - launchProfileId: string | undefined; + persona: LaunchProfilePersona | string | undefined; /** - *

The maximum number of results to be returned per request.

+ *

The principal ID.

*/ - maxResults?: number; + principalId: string | undefined; +} +export namespace NewLaunchProfileMember { /** - *

The token for the next set of results, or null if there are no more results.

+ * @internal */ - nextToken?: string; + export const filterSensitiveLog = (obj: NewLaunchProfileMember): any => ({ + ...obj, + }); +} + +/** + * + */ +export interface PutLaunchProfileMembersRequest { + /** + *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

+ */ + clientToken?: string; + + /** + *

The ID of the identity store.

+ */ + identityStoreId: string | undefined; + + /** + *

The Launch Profile ID.

+ */ + launchProfileId: string | undefined; /** - *

The studio ID.

+ *

A list of members.

+ */ + members: NewLaunchProfileMember[] | undefined; + + /** + *

The studio ID.

*/ studioId: string | undefined; } -export namespace ListLaunchProfileMembersRequest { +export namespace PutLaunchProfileMembersRequest { /** * @internal */ - export const filterSensitiveLog = (obj: ListLaunchProfileMembersRequest): any => ({ + export const filterSensitiveLog = (obj: PutLaunchProfileMembersRequest): any => ({ ...obj, }); } -export interface ListLaunchProfileMembersResponse { +export interface PutLaunchProfileMembersResponse {} + +export namespace PutLaunchProfileMembersResponse { /** - *

A list of members.

+ * @internal */ - members?: LaunchProfileMembership[]; + export const filterSensitiveLog = (obj: PutLaunchProfileMembersResponse): any => ({ + ...obj, + }); +} +/** + * + */ +export interface UpdateLaunchProfileRequest { /** - *

The token for the next set of results, or null if there are no more results.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ - nextToken?: string; + clientToken?: string; + + /** + *

The description.

+ */ + description?: string; + + /** + *

The Launch Profile ID.

+ */ + launchProfileId: string | undefined; + + /** + *

The version number of the protocol that is used by the launch profile. The only valid + * version is "2021-03-31".

+ */ + launchProfileProtocolVersions?: string[]; + + /** + *

The name for the launch profile.

+ */ + name?: string; + + /** + *

A configuration for a streaming session.

+ */ + streamConfiguration?: StreamConfigurationCreate; + + /** + *

Unique identifiers for a collection of studio components that can be used with this + * launch profile.

+ */ + studioComponentIds?: string[]; + + /** + *

The studio ID.

+ */ + studioId: string | undefined; } -export namespace ListLaunchProfileMembersResponse { +export namespace UpdateLaunchProfileRequest { /** * @internal */ - export const filterSensitiveLog = (obj: ListLaunchProfileMembersResponse): any => ({ + export const filterSensitiveLog = (obj: UpdateLaunchProfileRequest): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } -export interface ListLaunchProfilesRequest { +/** + * + */ +export interface UpdateLaunchProfileResponse { /** - *

The maximum number of results to be returned per request.

+ *

The launch profile.

*/ - maxResults?: number; + launchProfile?: LaunchProfile; +} +export namespace UpdateLaunchProfileResponse { /** - *

The token for the next set of results, or null if there are no more results.

+ * @internal */ - nextToken?: string; + export const filterSensitiveLog = (obj: UpdateLaunchProfileResponse): any => ({ + ...obj, + ...(obj.launchProfile && { launchProfile: LaunchProfile.filterSensitiveLog(obj.launchProfile) }), + }); +} +/** + *

+ */ +export interface UpdateLaunchProfileMemberRequest { /** - *

The principal ID.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ - principalId?: string; + clientToken?: string; /** - *

A list of states.

+ *

The Launch Profile ID.

*/ - states?: string[]; + launchProfileId: string | undefined; + + /** + *

The persona.

+ */ + persona: LaunchProfilePersona | string | undefined; + + /** + *

The principal ID. This currently supports a Amazon Web Services SSO UserId.

+ */ + principalId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } -export namespace ListLaunchProfilesRequest { +export namespace UpdateLaunchProfileMemberRequest { /** * @internal */ - export const filterSensitiveLog = (obj: ListLaunchProfilesRequest): any => ({ + export const filterSensitiveLog = (obj: UpdateLaunchProfileMemberRequest): any => ({ ...obj, }); } -export interface ListLaunchProfilesResponse { - /** - *

A collection of launch profiles.

- */ - launchProfiles?: LaunchProfile[]; - +export interface UpdateLaunchProfileMemberResponse { /** - *

The token for the next set of results, or null if there are no more results.

+ *

The updated member.

*/ - nextToken?: string; + member?: LaunchProfileMembership; } -export namespace ListLaunchProfilesResponse { +export namespace UpdateLaunchProfileMemberResponse { /** * @internal */ - export const filterSensitiveLog = (obj: ListLaunchProfilesResponse): any => ({ + export const filterSensitiveLog = (obj: UpdateLaunchProfileMemberResponse): any => ({ ...obj, }); } export interface ListStreamingImagesRequest { /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; /** - *

The owner.

+ *

Filter this request to streaming images with the given owner

*/ owner?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2924,6 +3594,9 @@ export namespace ListStreamingImagesRequest { }); } +/** + * + */ export interface ListStreamingImagesResponse { /** *

The token for the next set of results, or null if there are no more results.

@@ -2942,32 +3615,35 @@ export namespace ListStreamingImagesResponse { */ export const filterSensitiveLog = (obj: ListStreamingImagesResponse): any => ({ ...obj, + ...(obj.streamingImages && { + streamingImages: obj.streamingImages.map((item) => StreamingImage.filterSensitiveLog(item)), + }), }); } export interface ListStreamingSessionsRequest { /** - *

The user ID of the user that created the streaming session.

+ *

Filters the request to streaming sessions created by the given user.

*/ createdBy?: string; /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; /** - *

The user ID of the user that owns the streaming session.

+ *

Filters the request to streaming session owned by the given user

*/ ownedBy?: string; /** - *

A collection of session IDs.

+ *

Filters the request to only the provided session IDs.

*/ sessionIds?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -2981,6 +3657,9 @@ export namespace ListStreamingSessionsRequest { }); } +/** + * + */ export interface ListStreamingSessionsResponse { /** *

The token for the next set of results, or null if there are no more results.

@@ -3004,27 +3683,27 @@ export namespace ListStreamingSessionsResponse { export interface ListStudioComponentsRequest { /** - *

The maximum number of results to be returned per request.

+ *

The max number of results to return in the response.

*/ maxResults?: number; /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; /** - *

A list of states.

+ *

Filters the request to studio components that are in one of the given states.

*/ states?: string[]; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; /** - *

The types.

+ *

Filters the request to studio components that are of one of the given types.

*/ types?: string[]; } @@ -3038,6 +3717,9 @@ export namespace ListStudioComponentsRequest { }); } +/** + * + */ export interface ListStudioComponentsResponse { /** *

The token for the next set of results, or null if there are no more results.

@@ -3056,22 +3738,25 @@ export namespace ListStudioComponentsResponse { */ export const filterSensitiveLog = (obj: ListStudioComponentsResponse): any => ({ ...obj, + ...(obj.studioComponents && { + studioComponents: obj.studioComponents.map((item) => StudioComponent.filterSensitiveLog(item)), + }), }); } export interface ListStudioMembersRequest { /** - *

The maximum number of results to be returned per request.

+ *

The max number of results to return in the response.

*/ maxResults?: number; /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } @@ -3085,6 +3770,9 @@ export namespace ListStudioMembersRequest { }); } +/** + * + */ export interface ListStudioMembersResponse { /** *

A list of members.

@@ -3108,7 +3796,7 @@ export namespace ListStudioMembersResponse { export interface ListStudiosRequest { /** - *

The token for the next set of results, or null if there are no more results.

+ *

The token to request the next page of results.

*/ nextToken?: string; } @@ -3122,6 +3810,9 @@ export namespace ListStudiosRequest { }); } +/** + * + */ export interface ListStudiosResponse { /** *

The token for the next set of results, or null if there are no more results.

@@ -3131,7 +3822,7 @@ export interface ListStudiosResponse { /** *

A collection of studios.

*/ - studios?: Studio[]; + studios: Studio[] | undefined; } export namespace ListStudiosResponse { @@ -3140,12 +3831,13 @@ export namespace ListStudiosResponse { */ export const filterSensitiveLog = (obj: ListStudiosResponse): any => ({ ...obj, + ...(obj.studios && { studios: obj.studios.map((item) => Studio.filterSensitiveLog(item)) }), }); } export interface ListTagsForResourceRequest { /** - *

The ARN of the target resource for tagging operations.

+ *

The Amazon Resource Name (ARN) of the resource for which you want to list tags.

*/ resourceArn: string | undefined; } @@ -3159,9 +3851,13 @@ export namespace ListTagsForResourceRequest { }); } +/** + * + */ export interface ListTagsForResourceResponse { /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ tags?: { [key: string]: string }; } @@ -3175,27 +3871,9 @@ export namespace ListTagsForResourceResponse { }); } -export interface NewLaunchProfileMember { - /** - *

The persona.

- */ - persona: LaunchProfilePersona | string | undefined; - - /** - *

The principal ID.

- */ - principalId: string | undefined; -} - -export namespace NewLaunchProfileMember { - /** - * @internal - */ - export const filterSensitiveLog = (obj: NewLaunchProfileMember): any => ({ - ...obj, - }); -} - +/** + *

+ */ export interface NewStudioMember { /** *

The persona.

@@ -3218,395 +3896,365 @@ export namespace NewStudioMember { } /** - *

Information about a launch profile membership.

+ * */ -export interface PutLaunchProfileMembersRequest { +export interface UpdateStreamingImageRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The ID of the identity store.

+ *

The description.

*/ - identityStoreId: string | undefined; + description?: string; /** - *

The launch profile ID.

+ *

The name for the streaming image.

*/ - launchProfileId: string | undefined; + name?: string; /** - *

A list of members.

+ *

The streaming image ID.

*/ - members: NewLaunchProfileMember[] | undefined; + streamingImageId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } -export namespace PutLaunchProfileMembersRequest { +export namespace UpdateStreamingImageRequest { /** * @internal */ - export const filterSensitiveLog = (obj: PutLaunchProfileMembersRequest): any => ({ + export const filterSensitiveLog = (obj: UpdateStreamingImageRequest): any => ({ ...obj, + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.name && { name: SENSITIVE_STRING }), }); } -export interface PutLaunchProfileMembersResponse {} +/** + *

+ */ +export interface UpdateStreamingImageResponse { + /** + *

+ */ + streamingImage?: StreamingImage; +} -export namespace PutLaunchProfileMembersResponse { +export namespace UpdateStreamingImageResponse { /** * @internal */ - export const filterSensitiveLog = (obj: PutLaunchProfileMembersResponse): any => ({ + export const filterSensitiveLog = (obj: UpdateStreamingImageResponse): any => ({ ...obj, + ...(obj.streamingImage && { streamingImage: StreamingImage.filterSensitiveLog(obj.streamingImage) }), }); } -/** - *

A launch profile membership collection.

- */ -export interface PutStudioMembersRequest { +export interface StartStreamingSessionRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The ID of the identity store.

- */ - identityStoreId: string | undefined; - - /** - *

A list of members.

- */ - members: NewStudioMember[] | undefined; - - /** - *

The studio ID.

+ *

The streaming session ID for the StartStreamingSessionRequest.

*/ - studioId: string | undefined; -} - -export namespace PutStudioMembersRequest { - /** - * @internal - */ - export const filterSensitiveLog = (obj: PutStudioMembersRequest): any => ({ - ...obj, - }); -} - -export interface PutStudioMembersResponse {} - -export namespace PutStudioMembersResponse { - /** - * @internal - */ - export const filterSensitiveLog = (obj: PutStudioMembersResponse): any => ({ - ...obj, - }); -} - -export interface StartStudioSSOConfigurationRepairRequest { - /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

- */ - clientToken?: string; + sessionId: string | undefined; /** - *

The studio ID.

+ *

The studio ID for the StartStreamingSessionRequest.

*/ studioId: string | undefined; } -export namespace StartStudioSSOConfigurationRepairRequest { +export namespace StartStreamingSessionRequest { /** * @internal */ - export const filterSensitiveLog = (obj: StartStudioSSOConfigurationRepairRequest): any => ({ + export const filterSensitiveLog = (obj: StartStreamingSessionRequest): any => ({ ...obj, }); } -export interface StartStudioSSOConfigurationRepairResponse { +export interface StartStreamingSessionResponse { /** - *

Information about a studio.

+ *

A streaming session is a virtual workstation created using a particular launch + * profile.

*/ - studio?: Studio; + session?: StreamingSession; } -export namespace StartStudioSSOConfigurationRepairResponse { +export namespace StartStreamingSessionResponse { /** * @internal */ - export const filterSensitiveLog = (obj: StartStudioSSOConfigurationRepairResponse): any => ({ + export const filterSensitiveLog = (obj: StartStreamingSessionResponse): any => ({ ...obj, }); } -/** - *

The ARN for the role that manages access.

- */ -export interface TagResourceRequest { +export interface StopStreamingSessionRequest { /** - *

The ARN of the target resource for tagging operations.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ - resourceArn: string | undefined; + clientToken?: string; /** - *

A collection of labels, in the form of key:value pairs, that apply to this resource.

+ *

The streaming session ID for the StopStreamingSessionRequest.

*/ - tags?: { [key: string]: string }; -} + sessionId: string | undefined; -export namespace TagResourceRequest { /** - * @internal + *

The studioId for the StopStreamingSessionRequest.

*/ - export const filterSensitiveLog = (obj: TagResourceRequest): any => ({ - ...obj, - }); + studioId: string | undefined; } -export interface TagResourceResponse {} - -export namespace TagResourceResponse { +export namespace StopStreamingSessionRequest { /** * @internal */ - export const filterSensitiveLog = (obj: TagResourceResponse): any => ({ + export const filterSensitiveLog = (obj: StopStreamingSessionRequest): any => ({ ...obj, }); } -export interface UntagResourceRequest { +export interface StopStreamingSessionResponse { /** - *

The ARN of the target resource for tagging operations.

+ *

A streaming session is a virtual workstation created using a particular launch + * profile.

*/ - resourceArn: string | undefined; - - /** - *

An array of tag keys to delete.

- */ - tagKeys: string[] | undefined; -} - -export namespace UntagResourceRequest { - /** - * @internal - */ - export const filterSensitiveLog = (obj: UntagResourceRequest): any => ({ - ...obj, - }); + session?: StreamingSession; } -export interface UntagResourceResponse {} - -export namespace UntagResourceResponse { +export namespace StopStreamingSessionResponse { /** * @internal */ - export const filterSensitiveLog = (obj: UntagResourceResponse): any => ({ + export const filterSensitiveLog = (obj: StopStreamingSessionResponse): any => ({ ...obj, }); } /** - *

The launch profile ID.

+ * */ -export interface UpdateLaunchProfileRequest { +export interface UpdateStudioComponentRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; + /** + *

The configuration of the studio component, based on component type.

+ */ + configuration?: StudioComponentConfiguration; + /** *

The description.

*/ description?: string; /** - *

The launch profile ID.

+ *

The EC2 security groups that control access to the studio component.

*/ - launchProfileId: string | undefined; + ec2SecurityGroupIds?: string[]; /** - *

The version number of the protocol that is used by the launch profile. The only valid version is "2021-03-31".

+ *

Initialization scripts for studio components.

*/ - launchProfileProtocolVersions?: string[]; + initializationScripts?: StudioComponentInitializationScript[]; /** - *

The name for the launch profile.

+ *

The name for the studio component.

*/ name?: string; /** - *

A configuration for a streaming session.

+ *

Parameters for the studio component scripts.

*/ - streamConfiguration?: StreamConfigurationCreate; + scriptParameters?: ScriptParameterKeyValue[]; /** - *

Unique identifiers for a collection of studio components that can be used with this launch profile.

+ *

The studio component ID.

*/ - studioComponentIds?: string[]; + studioComponentId: string | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; + + /** + *

The specific subtype of a studio component.

+ */ + subtype?: StudioComponentSubtype | string; + + /** + *

The type of the studio component.

+ */ + type?: StudioComponentType | string; } -export namespace UpdateLaunchProfileRequest { +export namespace UpdateStudioComponentRequest { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateLaunchProfileRequest): any => ({ + export const filterSensitiveLog = (obj: UpdateStudioComponentRequest): any => ({ ...obj, + ...(obj.configuration && { configuration: StudioComponentConfiguration.filterSensitiveLog(obj.configuration) }), + ...(obj.description && { description: SENSITIVE_STRING }), + ...(obj.initializationScripts && { + initializationScripts: obj.initializationScripts.map((item) => + StudioComponentInitializationScript.filterSensitiveLog(item) + ), + }), + ...(obj.name && { name: SENSITIVE_STRING }), + ...(obj.scriptParameters && { scriptParameters: SENSITIVE_STRING }), }); } -export interface UpdateLaunchProfileResponse { +/** + * + */ +export interface UpdateStudioComponentResponse { /** - *

The launch profile.

+ *

Information about the studio component.

*/ - launchProfile?: LaunchProfile; + studioComponent?: StudioComponent; } -export namespace UpdateLaunchProfileResponse { +export namespace UpdateStudioComponentResponse { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateLaunchProfileResponse): any => ({ + export const filterSensitiveLog = (obj: UpdateStudioComponentResponse): any => ({ ...obj, + ...(obj.studioComponent && { studioComponent: StudioComponent.filterSensitiveLog(obj.studioComponent) }), }); } /** - *

The principal ID.

+ * */ -export interface UpdateLaunchProfileMemberRequest { +export interface PutStudioMembersRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The launch profile ID.

- */ - launchProfileId: string | undefined; - - /** - *

The persona.

+ *

The ID of the identity store.

*/ - persona: LaunchProfilePersona | string | undefined; + identityStoreId: string | undefined; /** - *

The principal ID.

+ *

A list of members.

*/ - principalId: string | undefined; + members: NewStudioMember[] | undefined; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } -export namespace UpdateLaunchProfileMemberRequest { +export namespace PutStudioMembersRequest { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateLaunchProfileMemberRequest): any => ({ + export const filterSensitiveLog = (obj: PutStudioMembersRequest): any => ({ ...obj, }); } -export interface UpdateLaunchProfileMemberResponse { - /** - *

The member.

- */ - member?: LaunchProfileMembership; -} +/** + * + */ +export interface PutStudioMembersResponse {} -export namespace UpdateLaunchProfileMemberResponse { +export namespace PutStudioMembersResponse { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateLaunchProfileMemberResponse): any => ({ + export const filterSensitiveLog = (obj: PutStudioMembersResponse): any => ({ ...obj, }); } -/** - *

The streaming image ID.

- */ -export interface UpdateStreamingImageRequest { +export interface StartStudioSSOConfigurationRepairRequest { /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; /** - *

The description.

- */ - description?: string; - - /** - *

The name for the streaming image.

- */ - name?: string; - - /** - *

The streaming image ID.

- */ - streamingImageId: string | undefined; - - /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; } -export namespace UpdateStreamingImageRequest { +export namespace StartStudioSSOConfigurationRepairRequest { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateStreamingImageRequest): any => ({ + export const filterSensitiveLog = (obj: StartStudioSSOConfigurationRepairRequest): any => ({ ...obj, }); } -export interface UpdateStreamingImageResponse { +/** + * + */ +export interface StartStudioSSOConfigurationRepairResponse { /** - *

+ *

Information about a studio.

*/ - streamingImage?: StreamingImage; + studio: Studio | undefined; } -export namespace UpdateStreamingImageResponse { +export namespace StartStudioSSOConfigurationRepairResponse { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateStreamingImageResponse): any => ({ + export const filterSensitiveLog = (obj: StartStudioSSOConfigurationRepairResponse): any => ({ ...obj, + ...(obj.studio && { studio: Studio.filterSensitiveLog(obj.studio) }), }); } /** - *

The studio ID.

+ * */ export interface UpdateStudioRequest { /** - *

The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.

+ *

The IAM role that Studio Admins will assume when logging in to the Nimble Studio + * portal.

*/ adminRoleArn?: string; /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

+ *

Unique, case-sensitive identifier that you provide to ensure the idempotency of the + * request. If you don’t specify a client token, the AWS SDK automatically generates a + * client token and uses it for the request to ensure idempotency.

*/ clientToken?: string; @@ -3616,12 +4264,13 @@ export interface UpdateStudioRequest { displayName?: string; /** - *

The studio ID.

+ *

The studio ID.

*/ studioId: string | undefined; /** - *

The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.

+ *

The IAM role that Studio Users will assume when logging in to the Nimble Studio + * portal.

*/ userRoleArn?: string; } @@ -3632,14 +4281,18 @@ export namespace UpdateStudioRequest { */ export const filterSensitiveLog = (obj: UpdateStudioRequest): any => ({ ...obj, + ...(obj.displayName && { displayName: SENSITIVE_STRING }), }); } +/** + * + */ export interface UpdateStudioResponse { /** *

Information about a studio.

*/ - studio?: Studio; + studio: Studio | undefined; } export namespace UpdateStudioResponse { @@ -3648,90 +4301,74 @@ export namespace UpdateStudioResponse { */ export const filterSensitiveLog = (obj: UpdateStudioResponse): any => ({ ...obj, + ...(obj.studio && { studio: Studio.filterSensitiveLog(obj.studio) }), }); } /** - *

The studio component ID.

+ *

*/ -export interface UpdateStudioComponentRequest { - /** - *

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

- */ - clientToken?: string; - - /** - *

The configuration of the studio component, based on component type.

- */ - configuration?: StudioComponentConfiguration; - - /** - *

The description.

- */ - description?: string; - - /** - *

The EC2 security groups that control access to the studio component.

- */ - ec2SecurityGroupIds?: string[]; - +export interface TagResourceRequest { /** - *

Initialization scripts for studio components.

+ *

The Amazon Resource Name (ARN) of the resource you want to add tags to.

*/ - initializationScripts?: StudioComponentInitializationScript[]; + resourceArn: string | undefined; /** - *

The name for the studio component.

+ *

A collection of labels, in the form of key:value pairs, that apply to this + * resource.

*/ - name?: string; + tags?: { [key: string]: string }; +} +export namespace TagResourceRequest { /** - *

Parameters for the studio component scripts.

+ * @internal */ - scriptParameters?: ScriptParameterKeyValue[]; + export const filterSensitiveLog = (obj: TagResourceRequest): any => ({ + ...obj, + }); +} - /** - *

The studio component ID.

- */ - studioComponentId: string | undefined; +export interface TagResourceResponse {} +export namespace TagResourceResponse { /** - *

The studio ID.

+ * @internal */ - studioId: string | undefined; + export const filterSensitiveLog = (obj: TagResourceResponse): any => ({ + ...obj, + }); +} +export interface UntagResourceRequest { /** - *

The specific subtype of a studio component.

+ *

Identifies the Amazon Resource Name(ARN) key from which you are removing tags.

*/ - subtype?: StudioComponentSubtype | string; + resourceArn: string | undefined; /** - *

The type of the studio component.

+ *

One or more tag keys. Specify only the tag keys, not the tag values.

*/ - type?: StudioComponentType | string; + tagKeys: string[] | undefined; } -export namespace UpdateStudioComponentRequest { +export namespace UntagResourceRequest { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateStudioComponentRequest): any => ({ + export const filterSensitiveLog = (obj: UntagResourceRequest): any => ({ ...obj, }); } -export interface UpdateStudioComponentResponse { - /** - *

Information about the studio component.

- */ - studioComponent?: StudioComponent; -} +export interface UntagResourceResponse {} -export namespace UpdateStudioComponentResponse { +export namespace UntagResourceResponse { /** * @internal */ - export const filterSensitiveLog = (obj: UpdateStudioComponentResponse): any => ({ + export const filterSensitiveLog = (obj: UntagResourceResponse): any => ({ ...obj, }); } diff --git a/clients/client-nimble/src/pagination/Interfaces.ts b/clients/client-nimble/src/pagination/Interfaces.ts new file mode 100644 index 0000000000000..ab14b728e241a --- /dev/null +++ b/clients/client-nimble/src/pagination/Interfaces.ts @@ -0,0 +1,8 @@ +import { PaginationConfiguration } from "@aws-sdk/types"; + +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; + +export interface NimblePaginationConfiguration extends PaginationConfiguration { + client: Nimble | NimbleClient; +} diff --git a/clients/client-nimble/src/pagination/ListEulaAcceptancesPaginator.ts b/clients/client-nimble/src/pagination/ListEulaAcceptancesPaginator.ts new file mode 100644 index 0000000000000..62045a9655730 --- /dev/null +++ b/clients/client-nimble/src/pagination/ListEulaAcceptancesPaginator.ts @@ -0,0 +1,58 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListEulaAcceptancesCommand, + ListEulaAcceptancesCommandInput, + ListEulaAcceptancesCommandOutput, +} from "../commands/ListEulaAcceptancesCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListEulaAcceptancesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListEulaAcceptancesCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListEulaAcceptancesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listEulaAcceptances(input, ...args); +}; +export async function* paginateListEulaAcceptances( + config: NimblePaginationConfiguration, + input: ListEulaAcceptancesCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListEulaAcceptancesCommandOutput; + while (hasNext) { + input.nextToken = token; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListEulasPaginator.ts b/clients/client-nimble/src/pagination/ListEulasPaginator.ts new file mode 100644 index 0000000000000..c50c4656706cd --- /dev/null +++ b/clients/client-nimble/src/pagination/ListEulasPaginator.ts @@ -0,0 +1,54 @@ +import { Paginator } from "@aws-sdk/types"; + +import { ListEulasCommand, ListEulasCommandInput, ListEulasCommandOutput } from "../commands/ListEulasCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListEulasCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListEulasCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListEulasCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listEulas(input, ...args); +}; +export async function* paginateListEulas( + config: NimblePaginationConfiguration, + input: ListEulasCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListEulasCommandOutput; + while (hasNext) { + input.nextToken = token; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListLaunchProfileMembersPaginator.ts b/clients/client-nimble/src/pagination/ListLaunchProfileMembersPaginator.ts new file mode 100644 index 0000000000000..f3b34dd617ade --- /dev/null +++ b/clients/client-nimble/src/pagination/ListLaunchProfileMembersPaginator.ts @@ -0,0 +1,59 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListLaunchProfileMembersCommand, + ListLaunchProfileMembersCommandInput, + ListLaunchProfileMembersCommandOutput, +} from "../commands/ListLaunchProfileMembersCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListLaunchProfileMembersCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListLaunchProfileMembersCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListLaunchProfileMembersCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listLaunchProfileMembers(input, ...args); +}; +export async function* paginateListLaunchProfileMembers( + config: NimblePaginationConfiguration, + input: ListLaunchProfileMembersCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListLaunchProfileMembersCommandOutput; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListLaunchProfilesPaginator.ts b/clients/client-nimble/src/pagination/ListLaunchProfilesPaginator.ts new file mode 100644 index 0000000000000..d0597e271e40f --- /dev/null +++ b/clients/client-nimble/src/pagination/ListLaunchProfilesPaginator.ts @@ -0,0 +1,59 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListLaunchProfilesCommand, + ListLaunchProfilesCommandInput, + ListLaunchProfilesCommandOutput, +} from "../commands/ListLaunchProfilesCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListLaunchProfilesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListLaunchProfilesCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListLaunchProfilesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listLaunchProfiles(input, ...args); +}; +export async function* paginateListLaunchProfiles( + config: NimblePaginationConfiguration, + input: ListLaunchProfilesCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListLaunchProfilesCommandOutput; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListStreamingImagesPaginator.ts b/clients/client-nimble/src/pagination/ListStreamingImagesPaginator.ts new file mode 100644 index 0000000000000..5db76f1a6951b --- /dev/null +++ b/clients/client-nimble/src/pagination/ListStreamingImagesPaginator.ts @@ -0,0 +1,58 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListStreamingImagesCommand, + ListStreamingImagesCommandInput, + ListStreamingImagesCommandOutput, +} from "../commands/ListStreamingImagesCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListStreamingImagesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListStreamingImagesCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListStreamingImagesCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listStreamingImages(input, ...args); +}; +export async function* paginateListStreamingImages( + config: NimblePaginationConfiguration, + input: ListStreamingImagesCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListStreamingImagesCommandOutput; + while (hasNext) { + input.nextToken = token; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListStreamingSessionsPaginator.ts b/clients/client-nimble/src/pagination/ListStreamingSessionsPaginator.ts new file mode 100644 index 0000000000000..dea82a0237d0c --- /dev/null +++ b/clients/client-nimble/src/pagination/ListStreamingSessionsPaginator.ts @@ -0,0 +1,58 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListStreamingSessionsCommand, + ListStreamingSessionsCommandInput, + ListStreamingSessionsCommandOutput, +} from "../commands/ListStreamingSessionsCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListStreamingSessionsCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListStreamingSessionsCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListStreamingSessionsCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listStreamingSessions(input, ...args); +}; +export async function* paginateListStreamingSessions( + config: NimblePaginationConfiguration, + input: ListStreamingSessionsCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListStreamingSessionsCommandOutput; + while (hasNext) { + input.nextToken = token; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListStudioComponentsPaginator.ts b/clients/client-nimble/src/pagination/ListStudioComponentsPaginator.ts new file mode 100644 index 0000000000000..67e28e620d5cc --- /dev/null +++ b/clients/client-nimble/src/pagination/ListStudioComponentsPaginator.ts @@ -0,0 +1,59 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListStudioComponentsCommand, + ListStudioComponentsCommandInput, + ListStudioComponentsCommandOutput, +} from "../commands/ListStudioComponentsCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListStudioComponentsCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListStudioComponentsCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListStudioComponentsCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listStudioComponents(input, ...args); +}; +export async function* paginateListStudioComponents( + config: NimblePaginationConfiguration, + input: ListStudioComponentsCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListStudioComponentsCommandOutput; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListStudioMembersPaginator.ts b/clients/client-nimble/src/pagination/ListStudioMembersPaginator.ts new file mode 100644 index 0000000000000..f099b7d3e5582 --- /dev/null +++ b/clients/client-nimble/src/pagination/ListStudioMembersPaginator.ts @@ -0,0 +1,59 @@ +import { Paginator } from "@aws-sdk/types"; + +import { + ListStudioMembersCommand, + ListStudioMembersCommandInput, + ListStudioMembersCommandOutput, +} from "../commands/ListStudioMembersCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListStudioMembersCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListStudioMembersCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListStudioMembersCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listStudioMembers(input, ...args); +}; +export async function* paginateListStudioMembers( + config: NimblePaginationConfiguration, + input: ListStudioMembersCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListStudioMembersCommandOutput; + while (hasNext) { + input.nextToken = token; + input["maxResults"] = config.pageSize; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/ListStudiosPaginator.ts b/clients/client-nimble/src/pagination/ListStudiosPaginator.ts new file mode 100644 index 0000000000000..d6a3bb36b1773 --- /dev/null +++ b/clients/client-nimble/src/pagination/ListStudiosPaginator.ts @@ -0,0 +1,54 @@ +import { Paginator } from "@aws-sdk/types"; + +import { ListStudiosCommand, ListStudiosCommandInput, ListStudiosCommandOutput } from "../commands/ListStudiosCommand"; +import { Nimble } from "../Nimble"; +import { NimbleClient } from "../NimbleClient"; +import { NimblePaginationConfiguration } from "./Interfaces"; + +/** + * @private + */ +const makePagedClientRequest = async ( + client: NimbleClient, + input: ListStudiosCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.send(new ListStudiosCommand(input), ...args); +}; +/** + * @private + */ +const makePagedRequest = async ( + client: Nimble, + input: ListStudiosCommandInput, + ...args: any +): Promise => { + // @ts-ignore + return await client.listStudios(input, ...args); +}; +export async function* paginateListStudios( + config: NimblePaginationConfiguration, + input: ListStudiosCommandInput, + ...additionalArguments: any +): Paginator { + // ToDo: replace with actual type instead of typeof input.nextToken + let token: typeof input.nextToken | undefined = config.startingToken || undefined; + let hasNext = true; + let page: ListStudiosCommandOutput; + while (hasNext) { + input.nextToken = token; + if (config.client instanceof Nimble) { + page = await makePagedRequest(config.client, input, ...additionalArguments); + } else if (config.client instanceof NimbleClient) { + page = await makePagedClientRequest(config.client, input, ...additionalArguments); + } else { + throw new Error("Invalid client, expected Nimble | NimbleClient"); + } + yield page; + token = page.nextToken; + hasNext = !!token; + } + // @ts-ignore + return undefined; +} diff --git a/clients/client-nimble/src/pagination/index.ts b/clients/client-nimble/src/pagination/index.ts new file mode 100644 index 0000000000000..940b5241a7cd5 --- /dev/null +++ b/clients/client-nimble/src/pagination/index.ts @@ -0,0 +1,10 @@ +export * from "./Interfaces"; +export * from "./ListEulaAcceptancesPaginator"; +export * from "./ListEulasPaginator"; +export * from "./ListLaunchProfileMembersPaginator"; +export * from "./ListLaunchProfilesPaginator"; +export * from "./ListStreamingImagesPaginator"; +export * from "./ListStreamingSessionsPaginator"; +export * from "./ListStudioComponentsPaginator"; +export * from "./ListStudioMembersPaginator"; +export * from "./ListStudiosPaginator"; diff --git a/clients/client-nimble/src/protocols/Aws_restJson1.ts b/clients/client-nimble/src/protocols/Aws_restJson1.ts index 97ad34a930f89..43b3ddeeab590 100644 --- a/clients/client-nimble/src/protocols/Aws_restJson1.ts +++ b/clients/client-nimble/src/protocols/Aws_restJson1.ts @@ -119,10 +119,18 @@ import { PutLaunchProfileMembersCommandOutput, } from "../commands/PutLaunchProfileMembersCommand"; import { PutStudioMembersCommandInput, PutStudioMembersCommandOutput } from "../commands/PutStudioMembersCommand"; +import { + StartStreamingSessionCommandInput, + StartStreamingSessionCommandOutput, +} from "../commands/StartStreamingSessionCommand"; import { StartStudioSSOConfigurationRepairCommandInput, StartStudioSSOConfigurationRepairCommandOutput, } from "../commands/StartStudioSSOConfigurationRepairCommand"; +import { + StopStreamingSessionCommandInput, + StopStreamingSessionCommandOutput, +} from "../commands/StopStreamingSessionCommand"; import { TagResourceCommandInput, TagResourceCommandOutput } from "../commands/TagResourceCommand"; import { UntagResourceCommandInput, UntagResourceCommandOutput } from "../commands/UntagResourceCommand"; import { @@ -1646,6 +1654,47 @@ export const serializeAws_restJson1PutStudioMembersCommand = async ( }); }; +export const serializeAws_restJson1StartStreamingSessionCommand = async ( + input: StartStreamingSessionCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers: any = { + ...(isSerializableHeaderValue(input.clientToken) && { "x-amz-client-token": input.clientToken! }), + }; + let resolvedPath = + `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + + "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/start"; + if (input.sessionId !== undefined) { + const labelValue: string = input.sessionId; + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: sessionId."); + } + resolvedPath = resolvedPath.replace("{sessionId}", __extendedEncodeURIComponent(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: sessionId."); + } + if (input.studioId !== undefined) { + const labelValue: string = input.studioId; + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: studioId."); + } + resolvedPath = resolvedPath.replace("{studioId}", __extendedEncodeURIComponent(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: studioId."); + } + let body: any; + return new __HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body, + }); +}; + export const serializeAws_restJson1StartStudioSSOConfigurationRepairCommand = async ( input: StartStudioSSOConfigurationRepairCommandInput, context: __SerdeContext @@ -1678,6 +1727,47 @@ export const serializeAws_restJson1StartStudioSSOConfigurationRepairCommand = as }); }; +export const serializeAws_restJson1StopStreamingSessionCommand = async ( + input: StopStreamingSessionCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const { hostname, protocol = "https", port, path: basePath } = await context.endpoint(); + const headers: any = { + ...(isSerializableHeaderValue(input.clientToken) && { "x-amz-client-token": input.clientToken! }), + }; + let resolvedPath = + `${basePath?.endsWith("/") ? basePath.slice(0, -1) : basePath || ""}` + + "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/stop"; + if (input.sessionId !== undefined) { + const labelValue: string = input.sessionId; + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: sessionId."); + } + resolvedPath = resolvedPath.replace("{sessionId}", __extendedEncodeURIComponent(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: sessionId."); + } + if (input.studioId !== undefined) { + const labelValue: string = input.studioId; + if (labelValue.length <= 0) { + throw new Error("Empty value provided for input HTTP label: studioId."); + } + resolvedPath = resolvedPath.replace("{studioId}", __extendedEncodeURIComponent(labelValue)); + } else { + throw new Error("No value provided for input HTTP label: studioId."); + } + let body: any; + return new __HttpRequest({ + protocol, + hostname, + port, + method: "POST", + headers, + path: resolvedPath, + body, + }); +}; + export const serializeAws_restJson1TagResourceCommand = async ( input: TagResourceCommandInput, context: __SerdeContext @@ -5861,6 +5951,109 @@ const deserializeAws_restJson1PutStudioMembersCommandError = async ( return Promise.reject(Object.assign(new Error(message), response)); }; +export const deserializeAws_restJson1StartStreamingSessionCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return deserializeAws_restJson1StartStreamingSessionCommandError(output, context); + } + const contents: StartStreamingSessionCommandOutput = { + $metadata: deserializeMetadata(output), + session: undefined, + }; + const data: { [key: string]: any } = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + if (data.session !== undefined && data.session !== null) { + contents.session = deserializeAws_restJson1StreamingSession(data.session, context); + } + return Promise.resolve(contents); +}; + +const deserializeAws_restJson1StartStreamingSessionCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseBody(output.body, context), + }; + let response: __SmithyException & __MetadataBearer & { [key: string]: any }; + let errorCode = "UnknownError"; + errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.nimble#AccessDeniedException": + response = { + ...(await deserializeAws_restJson1AccessDeniedExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ConflictException": + case "com.amazonaws.nimble#ConflictException": + response = { + ...(await deserializeAws_restJson1ConflictExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "InternalServerErrorException": + case "com.amazonaws.nimble#InternalServerErrorException": + response = { + ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ResourceNotFoundException": + case "com.amazonaws.nimble#ResourceNotFoundException": + response = { + ...(await deserializeAws_restJson1ResourceNotFoundExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ServiceQuotaExceededException": + case "com.amazonaws.nimble#ServiceQuotaExceededException": + response = { + ...(await deserializeAws_restJson1ServiceQuotaExceededExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ThrottlingException": + case "com.amazonaws.nimble#ThrottlingException": + response = { + ...(await deserializeAws_restJson1ThrottlingExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ValidationException": + case "com.amazonaws.nimble#ValidationException": + response = { + ...(await deserializeAws_restJson1ValidationExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + default: + const parsedBody = parsedOutput.body; + errorCode = parsedBody.code || parsedBody.Code || errorCode; + response = { + ...parsedBody, + name: `${errorCode}`, + message: parsedBody.message || parsedBody.Message || errorCode, + $fault: "client", + $metadata: deserializeMetadata(output), + } as any; + } + const message = response.message || response.Message || errorCode; + response.message = message; + delete response.Message; + return Promise.reject(Object.assign(new Error(message), response)); +}; + export const deserializeAws_restJson1StartStudioSSOConfigurationRepairCommand = async ( output: __HttpResponse, context: __SerdeContext @@ -5964,6 +6157,109 @@ const deserializeAws_restJson1StartStudioSSOConfigurationRepairCommandError = as return Promise.reject(Object.assign(new Error(message), response)); }; +export const deserializeAws_restJson1StopStreamingSessionCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode !== 200 && output.statusCode >= 300) { + return deserializeAws_restJson1StopStreamingSessionCommandError(output, context); + } + const contents: StopStreamingSessionCommandOutput = { + $metadata: deserializeMetadata(output), + session: undefined, + }; + const data: { [key: string]: any } = __expectNonNull(__expectObject(await parseBody(output.body, context)), "body"); + if (data.session !== undefined && data.session !== null) { + contents.session = deserializeAws_restJson1StreamingSession(data.session, context); + } + return Promise.resolve(contents); +}; + +const deserializeAws_restJson1StopStreamingSessionCommandError = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + const parsedOutput: any = { + ...output, + body: await parseBody(output.body, context), + }; + let response: __SmithyException & __MetadataBearer & { [key: string]: any }; + let errorCode = "UnknownError"; + errorCode = loadRestJsonErrorCode(output, parsedOutput.body); + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.nimble#AccessDeniedException": + response = { + ...(await deserializeAws_restJson1AccessDeniedExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ConflictException": + case "com.amazonaws.nimble#ConflictException": + response = { + ...(await deserializeAws_restJson1ConflictExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "InternalServerErrorException": + case "com.amazonaws.nimble#InternalServerErrorException": + response = { + ...(await deserializeAws_restJson1InternalServerErrorExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ResourceNotFoundException": + case "com.amazonaws.nimble#ResourceNotFoundException": + response = { + ...(await deserializeAws_restJson1ResourceNotFoundExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ServiceQuotaExceededException": + case "com.amazonaws.nimble#ServiceQuotaExceededException": + response = { + ...(await deserializeAws_restJson1ServiceQuotaExceededExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ThrottlingException": + case "com.amazonaws.nimble#ThrottlingException": + response = { + ...(await deserializeAws_restJson1ThrottlingExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + case "ValidationException": + case "com.amazonaws.nimble#ValidationException": + response = { + ...(await deserializeAws_restJson1ValidationExceptionResponse(parsedOutput, context)), + name: errorCode, + $metadata: deserializeMetadata(output), + }; + break; + default: + const parsedBody = parsedOutput.body; + errorCode = parsedBody.code || parsedBody.Code || errorCode; + response = { + ...parsedBody, + name: `${errorCode}`, + message: parsedBody.message || parsedBody.Message || errorCode, + $fault: "client", + $metadata: deserializeMetadata(output), + } as any; + } + const message = response.message || response.Message || errorCode; + response.message = message; + delete response.Message; + return Promise.reject(Object.assign(new Error(message), response)); +}; + export const deserializeAws_restJson1TagResourceCommand = async ( output: __HttpResponse, context: __SerdeContext @@ -6734,6 +7030,7 @@ const deserializeAws_restJson1InternalServerErrorExceptionResponse = async ( const contents: InternalServerErrorException = { name: "InternalServerErrorException", $fault: "server", + $retryable: {}, $metadata: deserializeMetadata(parsedOutput), code: undefined, context: undefined, @@ -6809,6 +7106,7 @@ const deserializeAws_restJson1ThrottlingExceptionResponse = async ( const contents: ThrottlingException = { name: "ThrottlingException", $fault: "client", + $retryable: {}, $metadata: deserializeMetadata(parsedOutput), code: undefined, context: undefined, @@ -7036,6 +7334,10 @@ const serializeAws_restJson1StreamConfigurationCreate = ( }), ...(input.maxSessionLengthInMinutes !== undefined && input.maxSessionLengthInMinutes !== null && { maxSessionLengthInMinutes: input.maxSessionLengthInMinutes }), + ...(input.maxStoppedSessionLengthInMinutes !== undefined && + input.maxStoppedSessionLengthInMinutes !== null && { + maxStoppedSessionLengthInMinutes: input.maxStoppedSessionLengthInMinutes, + }), ...(input.streamingImageIds !== undefined && input.streamingImageIds !== null && { streamingImageIds: serializeAws_restJson1StreamingImageIdList(input.streamingImageIds, context), @@ -7460,6 +7762,7 @@ const deserializeAws_restJson1LaunchProfileMembership = ( identityStoreId: __expectString(output.identityStoreId), persona: __expectString(output.persona), principalId: __expectString(output.principalId), + sid: __expectString(output.sid), } as any; }; @@ -7550,6 +7853,7 @@ const deserializeAws_restJson1StreamConfiguration = (output: any, context: __Ser ? deserializeAws_restJson1StreamingInstanceTypeList(output.ec2InstanceTypes, context) : undefined, maxSessionLengthInMinutes: __expectInt32(output.maxSessionLengthInMinutes), + maxStoppedSessionLengthInMinutes: __expectInt32(output.maxStoppedSessionLengthInMinutes), streamingImageIds: output.streamingImageIds !== undefined && output.streamingImageIds !== null ? deserializeAws_restJson1StreamingImageIdList(output.streamingImageIds, context) @@ -7642,9 +7946,23 @@ const deserializeAws_restJson1StreamingSession = (output: any, context: __SerdeC launchProfileId: __expectString(output.launchProfileId), ownedBy: __expectString(output.ownedBy), sessionId: __expectString(output.sessionId), + startedAt: + output.startedAt !== undefined && output.startedAt !== null + ? __expectNonNull(__parseRfc3339DateTime(output.startedAt)) + : undefined, + startedBy: __expectString(output.startedBy), state: __expectString(output.state), statusCode: __expectString(output.statusCode), statusMessage: __expectString(output.statusMessage), + stopAt: + output.stopAt !== undefined && output.stopAt !== null + ? __expectNonNull(__parseRfc3339DateTime(output.stopAt)) + : undefined, + stoppedAt: + output.stoppedAt !== undefined && output.stoppedAt !== null + ? __expectNonNull(__parseRfc3339DateTime(output.stoppedAt)) + : undefined, + stoppedBy: __expectString(output.stoppedBy), streamingImageId: __expectString(output.streamingImageId), tags: output.tags !== undefined && output.tags !== null @@ -7921,6 +8239,7 @@ const deserializeAws_restJson1StudioMembership = (output: any, context: __SerdeC identityStoreId: __expectString(output.identityStoreId), persona: __expectString(output.persona), principalId: __expectString(output.principalId), + sid: __expectString(output.sid), } as any; }; diff --git a/clients/client-nimble/src/waiters/index.ts b/clients/client-nimble/src/waiters/index.ts new file mode 100644 index 0000000000000..4f9079de6d3fc --- /dev/null +++ b/clients/client-nimble/src/waiters/index.ts @@ -0,0 +1,12 @@ +export * from "./waitForLaunchProfileDeleted"; +export * from "./waitForLaunchProfileReady"; +export * from "./waitForStreamingImageDeleted"; +export * from "./waitForStreamingImageReady"; +export * from "./waitForStreamingSessionDeleted"; +export * from "./waitForStreamingSessionReady"; +export * from "./waitForStreamingSessionStopped"; +export * from "./waitForStreamingSessionStreamReady"; +export * from "./waitForStudioComponentDeleted"; +export * from "./waitForStudioComponentReady"; +export * from "./waitForStudioDeleted"; +export * from "./waitForStudioReady"; diff --git a/clients/client-nimble/src/waiters/waitForLaunchProfileDeleted.ts b/clients/client-nimble/src/waiters/waitForLaunchProfileDeleted.ts new file mode 100644 index 0000000000000..e16fa03315367 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForLaunchProfileDeleted.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetLaunchProfileCommand, GetLaunchProfileCommandInput } from "../commands/GetLaunchProfileCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetLaunchProfileCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetLaunchProfileCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.launchProfile.state; + }; + if (returnComparator() === "DELETED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.launchProfile.state; + }; + if (returnComparator() === "DELETE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile + * @deprecated Use waitUntilLaunchProfileDeleted instead. waitForLaunchProfileDeleted does not throw error in non-success cases. + */ +export const waitForLaunchProfileDeleted = async ( + params: WaiterConfiguration, + input: GetLaunchProfileCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 750 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile + * @param params - Waiter configuration options. + * @param input - The input to GetLaunchProfileCommand for polling. + */ +export const waitUntilLaunchProfileDeleted = async ( + params: WaiterConfiguration, + input: GetLaunchProfileCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 750 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForLaunchProfileReady.ts b/clients/client-nimble/src/waiters/waitForLaunchProfileReady.ts new file mode 100644 index 0000000000000..c5f90c9dca62f --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForLaunchProfileReady.ts @@ -0,0 +1,63 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetLaunchProfileCommand, GetLaunchProfileCommandInput } from "../commands/GetLaunchProfileCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetLaunchProfileCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetLaunchProfileCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.launchProfile.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.launchProfile.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.launchProfile.state; + }; + if (returnComparator() === "UPDATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile + * @deprecated Use waitUntilLaunchProfileReady instead. waitForLaunchProfileReady does not throw error in non-success cases. + */ +export const waitForLaunchProfileReady = async ( + params: WaiterConfiguration, + input: GetLaunchProfileCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 750 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile + * @param params - Waiter configuration options. + * @param input - The input to GetLaunchProfileCommand for polling. + */ +export const waitUntilLaunchProfileReady = async ( + params: WaiterConfiguration, + input: GetLaunchProfileCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 750 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingImageDeleted.ts b/clients/client-nimble/src/waiters/waitForStreamingImageDeleted.ts new file mode 100644 index 0000000000000..8eb6c066f83e5 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingImageDeleted.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStreamingImageCommand, GetStreamingImageCommandInput } from "../commands/GetStreamingImageCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStreamingImageCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingImageCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.streamingImage.state; + }; + if (returnComparator() === "DELETED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.streamingImage.state; + }; + if (returnComparator() === "DELETE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingImage Deleted. Use this after invoking DeleteStreamingImage + * @deprecated Use waitUntilStreamingImageDeleted instead. waitForStreamingImageDeleted does not throw error in non-success cases. + */ +export const waitForStreamingImageDeleted = async ( + params: WaiterConfiguration, + input: GetStreamingImageCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingImage Deleted. Use this after invoking DeleteStreamingImage + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingImageCommand for polling. + */ +export const waitUntilStreamingImageDeleted = async ( + params: WaiterConfiguration, + input: GetStreamingImageCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingImageReady.ts b/clients/client-nimble/src/waiters/waitForStreamingImageReady.ts new file mode 100644 index 0000000000000..56737c188aecd --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingImageReady.ts @@ -0,0 +1,63 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStreamingImageCommand, GetStreamingImageCommandInput } from "../commands/GetStreamingImageCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStreamingImageCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingImageCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.streamingImage.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.streamingImage.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.streamingImage.state; + }; + if (returnComparator() === "UPDATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingImage is Ready. Use this after invoking CreateStreamingImage or UpdateStreamingImage + * @deprecated Use waitUntilStreamingImageReady instead. waitForStreamingImageReady does not throw error in non-success cases. + */ +export const waitForStreamingImageReady = async ( + params: WaiterConfiguration, + input: GetStreamingImageCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingImage is Ready. Use this after invoking CreateStreamingImage or UpdateStreamingImage + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingImageCommand for polling. + */ +export const waitUntilStreamingImageReady = async ( + params: WaiterConfiguration, + input: GetStreamingImageCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingSessionDeleted.ts b/clients/client-nimble/src/waiters/waitForStreamingSessionDeleted.ts new file mode 100644 index 0000000000000..1fd3f92987b62 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingSessionDeleted.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStreamingSessionCommand, GetStreamingSessionCommandInput } from "../commands/GetStreamingSessionCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStreamingSessionCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingSessionCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "DELETED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "DELETE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingSessionDeleted. Use this after invoking Deletesession + * @deprecated Use waitUntilStreamingSessionDeleted instead. waitForStreamingSessionDeleted does not throw error in non-success cases. + */ +export const waitForStreamingSessionDeleted = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 900 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingSessionDeleted. Use this after invoking Deletesession + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingSessionCommand for polling. + */ +export const waitUntilStreamingSessionDeleted = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 900 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingSessionReady.ts b/clients/client-nimble/src/waiters/waitForStreamingSessionReady.ts new file mode 100644 index 0000000000000..89110a1c98ec0 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingSessionReady.ts @@ -0,0 +1,63 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStreamingSessionCommand, GetStreamingSessionCommandInput } from "../commands/GetStreamingSessionCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStreamingSessionCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingSessionCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "START_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession + * @deprecated Use waitUntilStreamingSessionReady instead. waitForStreamingSessionReady does not throw error in non-success cases. + */ +export const waitForStreamingSessionReady = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 10, maxDelay: 1800 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingSessionCommand for polling. + */ +export const waitUntilStreamingSessionReady = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 10, maxDelay: 1800 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingSessionStopped.ts b/clients/client-nimble/src/waiters/waitForStreamingSessionStopped.ts new file mode 100644 index 0000000000000..3ea0c88608f16 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingSessionStopped.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStreamingSessionCommand, GetStreamingSessionCommandInput } from "../commands/GetStreamingSessionCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStreamingSessionCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingSessionCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "STOPPED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.session.state; + }; + if (returnComparator() === "STOP_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession + * @deprecated Use waitUntilStreamingSessionStopped instead. waitForStreamingSessionStopped does not throw error in non-success cases. + */ +export const waitForStreamingSessionStopped = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 900 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingSessionCommand for polling. + */ +export const waitUntilStreamingSessionStopped = async ( + params: WaiterConfiguration, + input: GetStreamingSessionCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 900 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStreamingSessionStreamReady.ts b/clients/client-nimble/src/waiters/waitForStreamingSessionStreamReady.ts new file mode 100644 index 0000000000000..186dc692bc3d4 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStreamingSessionStreamReady.ts @@ -0,0 +1,61 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { + GetStreamingSessionStreamCommand, + GetStreamingSessionStreamCommandInput, +} from "../commands/GetStreamingSessionStreamCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async ( + client: NimbleClient, + input: GetStreamingSessionStreamCommandInput +): Promise => { + let reason; + try { + const result: any = await client.send(new GetStreamingSessionStreamCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.stream.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.stream.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream + * @deprecated Use waitUntilStreamingSessionStreamReady instead. waitForStreamingSessionStreamReady does not throw error in non-success cases. + */ +export const waitForStreamingSessionStreamReady = async ( + params: WaiterConfiguration, + input: GetStreamingSessionStreamCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 150 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream + * @param params - Waiter configuration options. + * @param input - The input to GetStreamingSessionStreamCommand for polling. + */ +export const waitUntilStreamingSessionStreamReady = async ( + params: WaiterConfiguration, + input: GetStreamingSessionStreamCommandInput +): Promise => { + const serviceDefaults = { minDelay: 5, maxDelay: 150 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStudioComponentDeleted.ts b/clients/client-nimble/src/waiters/waitForStudioComponentDeleted.ts new file mode 100644 index 0000000000000..8f64cea4d63ea --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStudioComponentDeleted.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStudioComponentCommand, GetStudioComponentCommandInput } from "../commands/GetStudioComponentCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStudioComponentCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStudioComponentCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.studioComponent.state; + }; + if (returnComparator() === "DELETED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studioComponent.state; + }; + if (returnComparator() === "DELETE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent + * @deprecated Use waitUntilStudioComponentDeleted instead. waitForStudioComponentDeleted does not throw error in non-success cases. + */ +export const waitForStudioComponentDeleted = async ( + params: WaiterConfiguration, + input: GetStudioComponentCommandInput +): Promise => { + const serviceDefaults = { minDelay: 1, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent + * @param params - Waiter configuration options. + * @param input - The input to GetStudioComponentCommand for polling. + */ +export const waitUntilStudioComponentDeleted = async ( + params: WaiterConfiguration, + input: GetStudioComponentCommandInput +): Promise => { + const serviceDefaults = { minDelay: 1, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStudioComponentReady.ts b/clients/client-nimble/src/waiters/waitForStudioComponentReady.ts new file mode 100644 index 0000000000000..cbcdaaa490655 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStudioComponentReady.ts @@ -0,0 +1,63 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStudioComponentCommand, GetStudioComponentCommandInput } from "../commands/GetStudioComponentCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStudioComponentCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStudioComponentCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.studioComponent.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studioComponent.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studioComponent.state; + }; + if (returnComparator() === "UPDATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a StudioComponent is Ready. Use this after invoking CreateStudioComponent or UpdateStudioComponent + * @deprecated Use waitUntilStudioComponentReady instead. waitForStudioComponentReady does not throw error in non-success cases. + */ +export const waitForStudioComponentReady = async ( + params: WaiterConfiguration, + input: GetStudioComponentCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a StudioComponent is Ready. Use this after invoking CreateStudioComponent or UpdateStudioComponent + * @param params - Waiter configuration options. + * @param input - The input to GetStudioComponentCommand for polling. + */ +export const waitUntilStudioComponentReady = async ( + params: WaiterConfiguration, + input: GetStudioComponentCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStudioDeleted.ts b/clients/client-nimble/src/waiters/waitForStudioDeleted.ts new file mode 100644 index 0000000000000..6bea5352191cc --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStudioDeleted.ts @@ -0,0 +1,55 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStudioCommand, GetStudioCommandInput } from "../commands/GetStudioCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStudioCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStudioCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.studio.state; + }; + if (returnComparator() === "DELETED") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studio.state; + }; + if (returnComparator() === "DELETE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a Studio is Deleted. Use this after invoking DeleteStudio. + * @deprecated Use waitUntilStudioDeleted instead. waitForStudioDeleted does not throw error in non-success cases. + */ +export const waitForStudioDeleted = async ( + params: WaiterConfiguration, + input: GetStudioCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a Studio is Deleted. Use this after invoking DeleteStudio. + * @param params - Waiter configuration options. + * @param input - The input to GetStudioCommand for polling. + */ +export const waitUntilStudioDeleted = async ( + params: WaiterConfiguration, + input: GetStudioCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/clients/client-nimble/src/waiters/waitForStudioReady.ts b/clients/client-nimble/src/waiters/waitForStudioReady.ts new file mode 100644 index 0000000000000..8e99c57df7395 --- /dev/null +++ b/clients/client-nimble/src/waiters/waitForStudioReady.ts @@ -0,0 +1,63 @@ +import { checkExceptions, createWaiter, WaiterConfiguration, WaiterResult, WaiterState } from "@aws-sdk/util-waiter"; + +import { GetStudioCommand, GetStudioCommandInput } from "../commands/GetStudioCommand"; +import { NimbleClient } from "../NimbleClient"; + +const checkState = async (client: NimbleClient, input: GetStudioCommandInput): Promise => { + let reason; + try { + const result: any = await client.send(new GetStudioCommand(input)); + reason = result; + try { + const returnComparator = () => { + return result.studio.state; + }; + if (returnComparator() === "READY") { + return { state: WaiterState.SUCCESS, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studio.state; + }; + if (returnComparator() === "CREATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + try { + const returnComparator = () => { + return result.studio.state; + }; + if (returnComparator() === "UPDATE_FAILED") { + return { state: WaiterState.FAILURE, reason }; + } + } catch (e) {} + } catch (exception) { + reason = exception; + } + return { state: WaiterState.RETRY, reason }; +}; +/** + * Wait until a Studio is Ready. Use this after invoking CreateStudio, UpdateStudio, or StartStudioSSOConfigurationRepair + * @deprecated Use waitUntilStudioReady instead. waitForStudioReady does not throw error in non-success cases. + */ +export const waitForStudioReady = async ( + params: WaiterConfiguration, + input: GetStudioCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + return createWaiter({ ...serviceDefaults, ...params }, input, checkState); +}; +/** + * Wait until a Studio is Ready. Use this after invoking CreateStudio, UpdateStudio, or StartStudioSSOConfigurationRepair + * @param params - Waiter configuration options. + * @param input - The input to GetStudioCommand for polling. + */ +export const waitUntilStudioReady = async ( + params: WaiterConfiguration, + input: GetStudioCommandInput +): Promise => { + const serviceDefaults = { minDelay: 2, maxDelay: 120 }; + const result = await createWaiter({ ...serviceDefaults, ...params }, input, checkState); + return checkExceptions(result); +}; diff --git a/codegen/sdk-codegen/aws-models/nimble.json b/codegen/sdk-codegen/aws-models/nimble.json index cc3739fe42941..487aa25914f2d 100644 --- a/codegen/sdk-codegen/aws-models/nimble.json +++ b/codegen/sdk-codegen/aws-models/nimble.json @@ -1,33 +1,5 @@ { "smithy": "1.0", - "metadata": { - "suppressions": [ - { - "id": "HttpMethodSemantics", - "namespace": "*" - }, - { - "id": "HttpResponseCodeSemantics", - "namespace": "*" - }, - { - "id": "PaginatedTrait", - "namespace": "*" - }, - { - "id": "HttpHeaderTrait", - "namespace": "*" - }, - { - "id": "HttpUriConflict", - "namespace": "*" - }, - { - "id": "Service", - "namespace": "*" - } - ] - }, "shapes": { "com.amazonaws.nimble#AcceptEulas": { "type": "operation", @@ -61,6 +33,7 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to accept EULAs", "smithy.api#documentation": "

Accept EULAs.

", "smithy.api#http": { "method": "POST", @@ -75,7 +48,7 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -83,21 +56,20 @@ "eulaIds": { "target": "com.amazonaws.nimble#EulaIdList", "traits": { - "smithy.api#documentation": "

The EULA ID.

", - "smithy.api#jsonName": "eulaIds" + "smithy.api#documentation": "

The EULA ID.

" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

A collection of EULA IDs.

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

A collection of EULA acceptances.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#AcceptEulasResponse": { @@ -106,38 +78,38 @@ "eulaAcceptances": { "target": "com.amazonaws.nimble#EulaAcceptanceList", "traits": { - "smithy.api#documentation": "

A collection of EULA acceptances.

", - "smithy.api#jsonName": "eulaAcceptances" + "smithy.api#documentation": "

A collection of EULA acceptances.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#AccessDeniedException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

You are not authorized to perform this operation. Check your IAM policies, and ensure\n that you are using the correct access keys.

", "smithy.api#error": "client", "smithy.api#httpError": 403 } @@ -148,20 +120,18 @@ "name": { "target": "com.amazonaws.nimble#ActiveDirectoryComputerAttributeName", "traits": { - "smithy.api#documentation": "

The name for the LDAP attribute.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the LDAP attribute.

" } }, "value": { "target": "com.amazonaws.nimble#ActiveDirectoryComputerAttributeValue", "traits": { - "smithy.api#documentation": "

The value for the LDAP attribute.

", - "smithy.api#jsonName": "value" + "smithy.api#documentation": "

The value for the LDAP attribute.

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

An LDAP attribute of an Active Directory computer account, in the form of a name:value pair.

" + "smithy.api#documentation": "

An LDAP attribute of an Active Directory computer account, in the form of a name:value\n pair.

" } }, "com.amazonaws.nimble#ActiveDirectoryComputerAttributeList": { @@ -170,11 +140,12 @@ "target": "com.amazonaws.nimble#ActiveDirectoryComputerAttribute" }, "traits": { - "smithy.api#documentation": "

A collection of LDAP attributes to apply to Active Directory computer accounts that are created for streaming sessions.

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

A collection of LDAP attributes to apply to Active Directory computer accounts that\n are created for streaming sessions.

", "smithy.api#length": { "min": 0, "max": 50 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#ActiveDirectoryComputerAttributeName": { @@ -203,31 +174,31 @@ "computerAttributes": { "target": "com.amazonaws.nimble#ActiveDirectoryComputerAttributeList", "traits": { - "smithy.api#documentation": "

A collection of custom attributes for an Active Directory computer.

", - "smithy.api#jsonName": "computerAttributes" + "smithy.api#documentation": "

A collection of custom attributes for an Active Directory computer.

" } }, "directoryId": { "target": "com.amazonaws.nimble#DirectoryId", "traits": { - "smithy.api#documentation": "

The directory ID of the Directory Service for Microsoft Active Directory to access using this studio component.

", - "smithy.api#jsonName": "directoryId" + "smithy.api#documentation": "

The directory ID of the Directory Service for Microsoft Active Directory to access\n using this studio component.

" } }, "organizationalUnitDistinguishedName": { "target": "com.amazonaws.nimble#ActiveDirectoryOrganizationalUnitDistinguishedName", "traits": { - "smithy.api#documentation": "

The distinguished name (DN) and organizational unit (OU) of an Active Directory computer.

", - "smithy.api#jsonName": "organizationalUnitDistinguishedName" + "smithy.api#documentation": "

The distinguished name (DN) and organizational unit (OU) of an Active Directory\n computer.

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

The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.

" + "smithy.api#documentation": "

The configuration for a Microsoft Active Directory (Microsoft AD) studio\n resource.

" } }, "com.amazonaws.nimble#ActiveDirectoryDnsIpAddress": { - "type": "string" + "type": "string", + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#ActiveDirectoryDnsIpAddressList": { "type": "list", @@ -235,6 +206,7 @@ "target": "com.amazonaws.nimble#ActiveDirectoryDnsIpAddress" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 10 @@ -244,7 +216,7 @@ "com.amazonaws.nimble#ActiveDirectoryOrganizationalUnitDistinguishedName": { "type": "string", "traits": { - "smithy.api#documentation": "

The fully-qualified distinguished name of the organizational unit to place the computer account in.

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

The fully-qualified distinguished name of the organizational unit to place the\n computer account in.

", "smithy.api#length": { "min": 1, "max": 2000 @@ -264,17 +236,16 @@ "type": "structure", "members": { "activeDirectoryUser": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The name of an Active Directory user that is used on ComputeFarm worker instances.

", - "smithy.api#jsonName": "activeDirectoryUser" + "smithy.api#documentation": "

The name of an Active Directory user that is used on ComputeFarm worker\n instances.

" } }, "endpoint": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The endpoint of the ComputeFarm that is accessed by the studio component resource.

", - "smithy.api#jsonName": "endpoint" + "smithy.api#documentation": "

The endpoint of the ComputeFarm that is accessed by the studio component\n resource.

", + "smithy.api#sensitive": {} } } }, @@ -286,28 +257,26 @@ "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

Another operation is in progress.

", "smithy.api#error": "client", "smithy.api#httpError": 409 } @@ -344,6 +313,8 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to create a launch profile", + "aws.iam#requiredActions": ["ec2:CreateNetworkInterface", "ec2:RunInstances"], "smithy.api#documentation": "

Create a launch profile.

", "smithy.api#http": { "method": "POST", @@ -358,7 +329,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -366,22 +338,21 @@ "description": { "target": "com.amazonaws.nimble#LaunchProfileDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#documentation": "

The description.

" } }, "ec2SubnetIds": { "target": "com.amazonaws.nimble#EC2SubnetIdList", "traits": { - "smithy.api#jsonName": "ec2SubnetIds", + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

Specifies the IDs of the EC2 subnets where streaming sessions will be accessible from.\n These subnets must support the specified instance types.

", "smithy.api#required": {} } }, "launchProfileProtocolVersions": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersionList", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

", - "smithy.api#jsonName": "launchProfileProtocolVersions", + "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

", "smithy.api#required": {} } }, @@ -389,30 +360,29 @@ "target": "com.amazonaws.nimble#LaunchProfileName", "traits": { "smithy.api#documentation": "

The name for the launch profile.

", - "smithy.api#jsonName": "name", "smithy.api#required": {} } }, "streamConfiguration": { "target": "com.amazonaws.nimble#StreamConfigurationCreate", "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, "smithy.api#documentation": "

A configuration for a streaming session.

", - "smithy.api#jsonName": "streamConfiguration", "smithy.api#required": {} } }, "studioComponentIds": { "target": "com.amazonaws.nimble#LaunchProfileStudioComponentIdList", "traits": { - "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this launch profile.

", - "smithy.api#jsonName": "studioComponentIds", + "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this\n launch profile.

", "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

", + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -420,13 +390,17 @@ "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

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

A collection of launch profiles.

" + "smithy.api#documentation": "", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource" + } + ] } }, "com.amazonaws.nimble#CreateLaunchProfileResponse": { @@ -435,10 +409,12 @@ "launchProfile": { "target": "com.amazonaws.nimble#LaunchProfile", "traits": { - "smithy.api#documentation": "

The launch profile.

", - "smithy.api#jsonName": "launchProfile" + "smithy.api#documentation": "

The launch profile.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#CreateStreamingImage": { @@ -473,6 +449,14 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to create a streaming image", + "aws.iam#requiredActions": [ + "ec2:ModifyInstanceAttribute", + "ec2:ModifySnapshotAttribute", + "ec2:RegisterImage", + "ec2:DescribeImages", + "ec2:DescribeSnapshots" + ], "smithy.api#documentation": "

Creates a streaming image resource in a studio.

", "smithy.api#http": { "method": "POST", @@ -487,7 +471,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -496,14 +481,13 @@ "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { "smithy.api#documentation": "

A human-readable description of the streaming image.

", - "smithy.api#jsonName": "description" + "smithy.api#sensitive": {} } }, "ec2ImageId": { "target": "com.amazonaws.nimble#EC2ImageId", "traits": { "smithy.api#documentation": "

The ID of an EC2 machine image with which to create this streaming image.

", - "smithy.api#jsonName": "ec2ImageId", "smithy.api#required": {} } }, @@ -511,14 +495,15 @@ "target": "com.amazonaws.nimble#StreamingImageName", "traits": { "smithy.api#documentation": "

A friendly name for a streaming image resource.

", - "smithy.api#jsonName": "name", - "smithy.api#required": {} + "smithy.api#required": {}, + "smithy.api#sensitive": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

", + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -526,13 +511,18 @@ "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

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

A collection of streaming images.

" + "smithy.api#documentation": "", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource" + } + ] } }, "com.amazonaws.nimble#CreateStreamingImageResponse": { @@ -541,9 +531,12 @@ "streamingImage": { "target": "com.amazonaws.nimble#StreamingImage", "traits": { - "smithy.api#jsonName": "streamingImage" + "smithy.api#documentation": "

The streaming image.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#CreateStreamingSession": { @@ -578,7 +571,15 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a streaming session in a studio.

After invoking this operation, you must poll GetStreamingSession until the streaming session is in state READY.

", + "aws.iam#actionPermissionDescription": "Grants permission to create a streaming session", + "aws.iam#requiredActions": [ + "ec2:CreateNetworkInterface", + "ec2:CreateNetworkInterfacePermission", + "nimble:GetLaunchProfileInitialization", + "nimble:GetLaunchProfile", + "nimble:ListEulaAcceptances" + ], + "smithy.api#documentation": "

Creates a streaming session in a studio.

\n

After invoking this operation, you must poll GetStreamingSession until the streaming\n session is in state READY.

", "smithy.api#http": { "method": "POST", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions", @@ -592,7 +593,7 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -600,35 +601,31 @@ "ec2InstanceType": { "target": "com.amazonaws.nimble#StreamingInstanceType", "traits": { - "smithy.api#documentation": "

The EC2 Instance type used for the streaming session.

", - "smithy.api#jsonName": "ec2InstanceType" + "smithy.api#documentation": "

The EC2 Instance type used for the streaming session.

" } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

", - "smithy.api#jsonName": "launchProfileId" + "smithy.api#documentation": "

The launch profile ID.

" } }, "ownedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

", - "smithy.api#jsonName": "ownedBy" + "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

" } }, "streamingImageId": { "target": "com.amazonaws.nimble#StreamingImageId", "traits": { - "smithy.api#documentation": "

The ID of the streaming image.

", - "smithy.api#jsonName": "streamingImageId" + "smithy.api#documentation": "

The ID of the streaming image.

" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -636,13 +633,17 @@ "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

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

A collection of streaming sessions.

" + "smithy.api#documentation": "", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#LaunchProfileResource" + } + ] } }, "com.amazonaws.nimble#CreateStreamingSessionResponse": { @@ -651,10 +652,12 @@ "session": { "target": "com.amazonaws.nimble#StreamingSession", "traits": { - "smithy.api#documentation": "

The session.

", - "smithy.api#jsonName": "session" + "smithy.api#documentation": "

The session.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#CreateStreamingSessionStream": { @@ -689,12 +692,14 @@ } ], "traits": { - "smithy.api#documentation": "

Creates a streaming session stream for a streaming session.

After invoking this API, invoke GetStreamingSessionStream with the returned streamId to poll the resource until it is in state READY.

", + "aws.iam#actionPermissionDescription": "Grants permission to create a streaming session stream", + "smithy.api#documentation": "

Creates a streaming session stream for a streaming session.

\n

After invoking this API, invoke GetStreamingSessionStream with the returned streamId\n to poll the resource until it is in state READY.

", "smithy.api#http": { "method": "POST", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#CreateStreamingSessionStreamRequest": { @@ -703,7 +708,7 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -711,29 +716,33 @@ "expirationInSeconds": { "target": "com.amazonaws.nimble#StreamingSessionStreamExpirationInSeconds", "traits": { - "smithy.api#documentation": "

The expiration time in seconds.

", - "smithy.api#jsonName": "expirationInSeconds" + "smithy.api#documentation": "

The expiration time in seconds.

" } }, "sessionId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The session ID.

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

The streaming session ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

A list collection streams.

" + "smithy.api#documentation": "", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StreamingSessionResource" + } + ] } }, "com.amazonaws.nimble#CreateStreamingSessionStreamResponse": { @@ -742,10 +751,12 @@ "stream": { "target": "com.amazonaws.nimble#StreamingSessionStream", "traits": { - "smithy.api#documentation": "

The stream.

", - "smithy.api#jsonName": "stream" + "smithy.api#documentation": "

The stream.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#CreateStudio": { @@ -780,7 +791,9 @@ } ], "traits": { - "smithy.api#documentation": "

Create a new Studio.

When creating a Studio, two IAM roles must be provided: the admin role and the user Role. These roles are assumed by your users when they log in to the Nimble Studio portal.

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for the portal to function properly.

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached for the portal to function properly.

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

In Nimble Studio, resource names, descriptions, initialization scripts, and other data you provide are always encrypted at rest using an KMS key. By default, this key is owned by Amazon Web Services and managed on your behalf. You may provide your own KMS key when calling CreateStudio to encrypt this data using a key you own and manage.

When providing an KMS key during studio creation, Nimble Studio creates KMS grants in your account to provide your studio user and admin roles access to these KMS keys.

If you delete this grant, the studio will no longer be accessible to your portal users.

If you delete the studio KMS key, your studio will no longer be accessible.

", + "aws.iam#actionPermissionDescription": "Grants permission to create a studio", + "aws.iam#requiredActions": ["sso:CreateManagedApplicationInstance", "iam:PassRole"], + "smithy.api#documentation": "

Create a new Studio.

\n

When creating a Studio, two IAM roles must be provided: the admin role and the user\n Role. These roles are assumed by your users when they log in to the Nimble Studio\n portal.

\n

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for\n the portal to function properly.

\n

The Admin Role must have the AmazonNimbleStudio-StudioAdmin managed policy attached\n for the portal to function properly.

\n

You may optionally specify a KMS key in the StudioEncryptionConfiguration.

\n

In Nimble Studio, resource names, descriptions, initialization scripts, and other\n data you provide are always encrypted at rest using an KMS key. By default, this key is\n owned by Amazon Web Services and managed on your behalf. You may provide your own KMS\n key when calling CreateStudio to encrypt this data using a key you own and\n manage.

\n

When providing an KMS key during studio creation, Nimble Studio creates KMS\n grants in your account to provide your studio user and admin roles access to these KMS\n keys.

\n

If you delete this grant, the studio will no longer be accessible to your portal\n users.

\n

If you delete the studio KMS key, your studio will no longer be accessible.

", "smithy.api#http": { "method": "POST", "uri": "/2020-08-01/studios", @@ -820,6 +833,8 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to create a studio component. A studio component designates a network resource to which a launch profile will provide access", + "aws.iam#requiredActions": ["ec2:DescribeSecurityGroups", "fsx:DescribeFileSystems", "ds:DescribeDirectories"], "smithy.api#documentation": "

Creates a studio component resource.

", "smithy.api#http": { "method": "POST", @@ -834,7 +849,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -842,50 +858,45 @@ "configuration": { "target": "com.amazonaws.nimble#StudioComponentConfiguration", "traits": { - "smithy.api#documentation": "

The configuration of the studio component, based on component type.

", - "smithy.api#jsonName": "configuration" + "smithy.api#documentation": "

The configuration of the studio component, based on component type.

" } }, "description": { "target": "com.amazonaws.nimble#StudioComponentDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#documentation": "

The description.

" } }, "ec2SecurityGroupIds": { "target": "com.amazonaws.nimble#StudioComponentSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

", - "smithy.api#jsonName": "ec2SecurityGroupIds" + "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

" } }, "initializationScripts": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptList", "traits": { - "smithy.api#documentation": "

Initialization scripts for studio components.

", - "smithy.api#jsonName": "initializationScripts" + "smithy.api#documentation": "

Initialization scripts for studio components.

" } }, "name": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { "smithy.api#documentation": "

The name for the studio component.

", - "smithy.api#jsonName": "name", "smithy.api#required": {} } }, "scriptParameters": { "target": "com.amazonaws.nimble#StudioComponentScriptParameterKeyValueList", "traits": { - "smithy.api#documentation": "

Parameters for the studio component scripts.

", - "smithy.api#jsonName": "scriptParameters" + "smithy.api#documentation": "

Parameters for the studio component scripts.

" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

", + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -893,28 +904,32 @@ "subtype": { "target": "com.amazonaws.nimble#StudioComponentSubtype", "traits": { - "smithy.api#documentation": "

The specific subtype of a studio component.

", - "smithy.api#jsonName": "subtype" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The specific subtype of a studio component.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "type": { "target": "com.amazonaws.nimble#StudioComponentType", "traits": { "smithy.api#documentation": "

The type of the studio component.

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

The studio components.

" + "smithy.api#documentation": "", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource" + } + ] } }, "com.amazonaws.nimble#CreateStudioComponentResponse": { @@ -923,27 +938,29 @@ "studioComponent": { "target": "com.amazonaws.nimble#StudioComponent", "traits": { - "smithy.api#documentation": "

Information about the studio component.

", - "smithy.api#jsonName": "studioComponent" + "smithy.api#documentation": "

Information about the studio component.

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

" } }, "com.amazonaws.nimble#CreateStudioRequest": { "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "adminRoleArn", + "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio\n portal.

", "smithy.api#required": {} } }, "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -951,44 +968,43 @@ "displayName": { "target": "com.amazonaws.nimble#StudioDisplayName", "traits": { + "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#jsonName": "displayName", - "smithy.api#required": {} + "smithy.api#required": {}, + "smithy.api#sensitive": {} } }, "studioEncryptionConfiguration": { "target": "com.amazonaws.nimble#StudioEncryptionConfiguration", "traits": { - "smithy.api#documentation": "

The studio encryption configuration.

", - "smithy.api#jsonName": "studioEncryptionConfiguration" + "smithy.api#documentation": "

The studio encryption configuration.

" } }, "studioName": { "target": "com.amazonaws.nimble#StudioName", "traits": { - "smithy.api#documentation": "

The studio name that is used in the URL of the Nimble Studio portal when accessed by Nimble Studio users.

", - "smithy.api#jsonName": "studioName", + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The studio name that is used in the URL of the Nimble Studio portal when accessed\n by Nimble Studio users.

", "smithy.api#required": {} } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "userRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "userRoleArn", + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio\n portal.

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

A collection of studio resources.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#CreateStudioResponse": { @@ -997,10 +1013,12 @@ "studio": { "target": "com.amazonaws.nimble#Studio", "traits": { - "smithy.api#documentation": "

Information about a studio.

", - "smithy.api#jsonName": "studio" + "smithy.api#documentation": "

Information about a studio.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DeleteLaunchProfile": { @@ -1035,12 +1053,14 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a launch profile", "smithy.api#documentation": "

Permanently delete a launch profile.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteLaunchProfileMember": { @@ -1075,12 +1095,14 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a launch profile member", "smithy.api#documentation": "

Delete a user from launch profile membership.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteLaunchProfileMemberRequest": { @@ -1089,31 +1111,31 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1122,7 +1144,10 @@ }, "com.amazonaws.nimble#DeleteLaunchProfileMemberResponse": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#DeleteLaunchProfileRequest": { "type": "structure", @@ -1130,23 +1155,24 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1159,10 +1185,12 @@ "launchProfile": { "target": "com.amazonaws.nimble#LaunchProfile", "traits": { - "smithy.api#documentation": "

The launch profile.

", - "smithy.api#jsonName": "launchProfile" + "smithy.api#documentation": "

The launch profile.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DeleteStreamingImage": { @@ -1197,12 +1225,20 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a streaming image", + "aws.iam#requiredActions": [ + "ec2:ModifyInstanceAttribute", + "ec2:ModifySnapshotAttribute", + "ec2:DeregisterImage", + "ec2:DeleteSnapshot" + ], "smithy.api#documentation": "

Delete streaming image.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteStreamingImageRequest": { @@ -1211,13 +1247,14 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "streamingImageId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The streaming image ID.

", "smithy.api#httpLabel": {}, @@ -1225,9 +1262,9 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1240,10 +1277,12 @@ "streamingImage": { "target": "com.amazonaws.nimble#StreamingImage", "traits": { - "smithy.api#documentation": "

The streaming image.

", - "smithy.api#jsonName": "streamingImage" + "smithy.api#documentation": "

The streaming image.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DeleteStreamingSession": { @@ -1278,12 +1317,15 @@ } ], "traits": { - "smithy.api#documentation": "

Deletes streaming session resource.

After invoking this operation, use GetStreamingSession to poll the resource until it transitions to a DELETED state.

A streaming session will count against your streaming session quota until it is marked DELETED.

", + "aws.iam#actionPermissionDescription": "Grants permission to delete a streaming session", + "aws.iam#requiredActions": ["ec2:DeleteNetworkInterface"], + "smithy.api#documentation": "

Deletes streaming session resource.

\n

After invoking this operation, use GetStreamingSession to poll the resource until it\n transitions to a DELETED state.

\n

A streaming session will count against your streaming session quota until it is marked\n DELETED.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteStreamingSessionRequest": { @@ -1292,23 +1334,23 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "sessionId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The session ID.

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

The streaming session ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1321,10 +1363,12 @@ "session": { "target": "com.amazonaws.nimble#StreamingSession", "traits": { - "smithy.api#documentation": "

The session.

", - "smithy.api#jsonName": "session" + "smithy.api#documentation": "

The session.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DeleteStudio": { @@ -1359,12 +1403,15 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a studio", + "aws.iam#requiredActions": ["sso:DeleteManagedApplicationInstance"], "smithy.api#documentation": "

Delete a studio resource.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteStudioComponent": { @@ -1399,12 +1446,14 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a studio component", "smithy.api#documentation": "

Deletes a studio component resource.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteStudioComponentRequest": { @@ -1413,13 +1462,14 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "studioComponentId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The studio component ID.

", "smithy.api#httpLabel": {}, @@ -1427,9 +1477,9 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1442,10 +1492,12 @@ "studioComponent": { "target": "com.amazonaws.nimble#StudioComponent", "traits": { - "smithy.api#documentation": "

Information about the studio component.

", - "smithy.api#jsonName": "studioComponent" + "smithy.api#documentation": "

Information about the studio component.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DeleteStudioMember": { @@ -1480,12 +1532,14 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a studio member", "smithy.api#documentation": "

Delete a user from studio membership.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/studios/{studioId}/membership/{principalId}", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#DeleteStudioMemberRequest": { @@ -1494,23 +1548,23 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1519,7 +1573,10 @@ }, "com.amazonaws.nimble#DeleteStudioMemberResponse": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#DeleteStudioRequest": { "type": "structure", @@ -1527,15 +1584,15 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1549,22 +1606,32 @@ "target": "com.amazonaws.nimble#Studio", "traits": { "smithy.api#documentation": "

Information about a studio.

", - "smithy.api#jsonName": "studio" + "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#DirectoryId": { - "type": "string" + "type": "string", + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#EC2ImageId": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#pattern": "^ami-[0-9A-z]+$" } }, "com.amazonaws.nimble#EC2SubnetId": { - "type": "string" + "type": "string", + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#EC2SubnetIdList": { "type": "list", @@ -1572,6 +1639,7 @@ "target": "com.amazonaws.nimble#EC2SubnetId" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 6 @@ -1582,38 +1650,33 @@ "type": "structure", "members": { "content": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The EULA content.

", - "smithy.api#jsonName": "content" + "smithy.api#documentation": "

The EULA content.

" } }, "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "eulaId": { "target": "com.amazonaws.nimble#EulaId", "traits": { - "smithy.api#documentation": "

The EULA ID.

", - "smithy.api#jsonName": "eulaId" + "smithy.api#documentation": "

The EULA ID.

" } }, "name": { "target": "com.amazonaws.nimble#EulaName", "traits": { - "smithy.api#documentation": "

The name for the EULA.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the EULA.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } } }, @@ -1627,38 +1690,36 @@ "acceptedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the EULA was accepted.

", - "smithy.api#jsonName": "acceptedAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the EULA was accepted.

" } }, "acceptedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ID of the person who accepted the EULA.

", - "smithy.api#jsonName": "acceptedBy" + "smithy.api#documentation": "

The ID of the person who accepted the EULA.

" } }, "accepteeId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ID of the acceptee.

", - "smithy.api#jsonName": "accepteeId" + "smithy.api#documentation": "

The ID of the acceptee.

" } }, "eulaAcceptanceId": { "target": "com.amazonaws.nimble#EulaAcceptanceId", "traits": { - "smithy.api#documentation": "

The EULA acceptance ID.

", - "smithy.api#jsonName": "eulaAcceptanceId" + "smithy.api#documentation": "

The EULA acceptance ID.

" } }, "eulaId": { "target": "com.amazonaws.nimble#EulaId", "traits": { - "smithy.api#documentation": "

The EULA ID.

", - "smithy.api#jsonName": "eulaId" + "smithy.api#documentation": "

The EULA ID.

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

The acceptance of a EULA, required to use Amazon-provided streaming images.

" } }, "com.amazonaws.nimble#EulaAcceptanceId": { @@ -1676,6 +1737,39 @@ "type": "list", "member": { "target": "com.amazonaws.nimble#EulaAcceptance" + }, + "traits": { + "smithy.api#documentation": "" + } + }, + "com.amazonaws.nimble#EulaAcceptanceResource": { + "type": "resource", + "identifiers": { + "eulaAcceptanceId": { + "target": "com.amazonaws.nimble#EulaAcceptanceId" + } + }, + "create": { + "target": "com.amazonaws.nimble#AcceptEulas" + }, + "list": { + "target": "com.amazonaws.nimble#ListEulaAcceptances" + }, + "traits": { + "aws.api#arn": { + "template": "eula-acceptance/{eulaAcceptanceId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "aws:TagKeys", + "nimble:studioId" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents the acceptance of a EULA, specific to a studio" } }, "com.amazonaws.nimble#EulaId": { @@ -1692,34 +1786,66 @@ "com.amazonaws.nimble#EulaIdList": { "type": "list", "member": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#EulaList": { "type": "list", "member": { "target": "com.amazonaws.nimble#Eula" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#EulaName": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 64 } } }, + "com.amazonaws.nimble#EulaResource": { + "type": "resource", + "identifiers": { + "eulaId": { + "target": "com.amazonaws.nimble#String" + } + }, + "read": { + "target": "com.amazonaws.nimble#GetEula" + }, + "list": { + "target": "com.amazonaws.nimble#ListEulas" + }, + "traits": { + "aws.api#arn": { + "template": "eula/{eulaId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.iam#conditionKeys": ["aws:ResourceTag/${TagKey}", "aws:RequestTag/${TagKey}", "aws:TagKeys"], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents a EULA" + } + }, "com.amazonaws.nimble#ExceptionContext": { "type": "map", "key": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" }, "value": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" }, "traits": { - "smithy.api#documentation": "

ExceptionContext is a set of key-value pairs that provide you with more information about the error that occurred. For example, when the service returns a 404 ResourceNotFound error, ExceptionContext will contain the key `resourceId` with the value of resource that was not found.

ExceptionContext enables scripts and other programmatic clients to provide for better error handling.

" + "smithy.api#documentation": "

ExceptionContext is a set of key-value pairs that provide you with more information\n about the error that occurred. For example, when the service returns a 404\n ResourceNotFound error, ExceptionContext will contain the key `resourceId` with the\n value of resource that was not found.

\n

ExceptionContext enables scripts and other programmatic clients to provide for better\n error handling.

" } }, "com.amazonaws.nimble#GetEula": { @@ -1754,19 +1880,21 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a EULA", "smithy.api#documentation": "

Get Eula.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/eulas/{eulaId}", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#GetEulaRequest": { "type": "structure", "members": { "eulaId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The EULA ID.

", "smithy.api#httpLabel": {}, @@ -1781,10 +1909,12 @@ "eula": { "target": "com.amazonaws.nimble#Eula", "traits": { - "smithy.api#documentation": "

The EULA.

", - "smithy.api#jsonName": "eula" + "smithy.api#documentation": "

The EULA.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetLaunchProfile": { @@ -1819,11 +1949,79 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a launch profile", "smithy.api#documentation": "

Get a launch profile.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "LaunchProfileReady": { + "documentation": "Wait until a LaunchProfile is Ready. Use this after invoking CreateLaunchProfile or UpdateLaunchProfile", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "launchProfile.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "launchProfile.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "launchProfile.state", + "expected": "UPDATE_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 5, + "maxDelay": 750 + }, + "LaunchProfileDeleted": { + "documentation": "Wait until a LaunchProfile is Deleted. Use this after invoking DeleteLaunchProfile", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "launchProfile.state", + "expected": "DELETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "launchProfile.state", + "expected": "DELETE_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 5, + "maxDelay": 750 + } } } }, @@ -1859,29 +2057,31 @@ } ], "traits": { - "smithy.api#documentation": "

Launch profile details include the launch profile resource and summary information of resources that are used by, or available to, the launch profile. This includes the name and description of all studio components used by the launch profiles, and the name and description of streaming images that can be used with this launch profile.

", + "aws.iam#actionPermissionDescription": "Grants permission to get a launch profile's details, which includes the summary of studio components and streaming images used by the launch profile", + "smithy.api#documentation": "

Launch profile details include the launch profile resource and summary information of\n resources that are used by, or available to, the launch profile. This includes the name\n and description of all studio components used by the launch profiles, and the name and\n description of streaming images that can be used with this launch profile.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/details", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#GetLaunchProfileDetailsRequest": { "type": "structure", "members": { "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -1894,24 +2094,24 @@ "launchProfile": { "target": "com.amazonaws.nimble#LaunchProfile", "traits": { - "smithy.api#documentation": "

The launch profile.

", - "smithy.api#jsonName": "launchProfile" + "smithy.api#documentation": "

The launch profile.

" } }, "streamingImages": { "target": "com.amazonaws.nimble#StreamingImageList", "traits": { - "smithy.api#documentation": "

A collection of streaming images.

", - "smithy.api#jsonName": "streamingImages" + "smithy.api#documentation": "

A collection of streaming images.

" } }, "studioComponentSummaries": { "target": "com.amazonaws.nimble#StudioComponentSummaryList", "traits": { - "smithy.api#documentation": "

A collection of studio component summaries.

", - "smithy.api#jsonName": "studioComponentSummaries" + "smithy.api#documentation": "

A collection of studio component summaries.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetLaunchProfileInitialization": { @@ -1946,35 +2146,38 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a launch profile initialization. A launch profile initialization is a dereferenced version of a launch profile, including attached studio component connection information", + "aws.iam#requiredActions": ["ec2:DescribeSecurityGroups", "fsx:DescribeFileSystems", "ds:DescribeDirectories"], "smithy.api#documentation": "

Get a launch profile initialization.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/init", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#GetLaunchProfileInitializationRequest": { "type": "structure", "members": { "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "launchProfileProtocolVersions": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

A collection of launch profile protocol versions.

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

The launch profile protocol versions supported by the client.

", "smithy.api#httpQuery": "launchProfileProtocolVersions", "smithy.api#required": {} } }, "launchPurpose": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The launch purpose.

", "smithy.api#httpQuery": "launchPurpose", @@ -1982,17 +2185,17 @@ } }, "platform": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The platform.

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

The platform where this Launch Profile will be used, either WINDOWS or LINUX.

", "smithy.api#httpQuery": "platform", "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2005,10 +2208,12 @@ "launchProfileInitialization": { "target": "com.amazonaws.nimble#LaunchProfileInitialization", "traits": { - "smithy.api#documentation": "

The launch profile initialization.

", - "smithy.api#jsonName": "launchProfileInitialization" + "smithy.api#documentation": "

The launch profile initialization.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetLaunchProfileMember": { @@ -2043,37 +2248,39 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a launch profile member", "smithy.api#documentation": "

Get a user persona in launch profile membership.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership/{principalId}", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#GetLaunchProfileMemberRequest": { "type": "structure", "members": { "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2086,27 +2293,29 @@ "member": { "target": "com.amazonaws.nimble#LaunchProfileMembership", "traits": { - "smithy.api#documentation": "

The member.

", - "smithy.api#jsonName": "member" + "smithy.api#documentation": "

The member.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetLaunchProfileRequest": { "type": "structure", "members": { "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2119,10 +2328,13 @@ "launchProfile": { "target": "com.amazonaws.nimble#LaunchProfile", "traits": { - "smithy.api#documentation": "

The launch profile.

", - "smithy.api#jsonName": "launchProfile" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The launch profile.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStreamingImage": { @@ -2157,11 +2369,75 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a streaming image", "smithy.api#documentation": "

Get streaming image.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-images/{streamingImageId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "StreamingImageReady": { + "documentation": "Wait until a StreamingImage is Ready. Use this after invoking CreateStreamingImage or UpdateStreamingImage", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "streamingImage.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "streamingImage.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "streamingImage.state", + "expected": "UPDATE_FAILED", + "comparator": "stringEquals" + } + } + } + ] + }, + "StreamingImageDeleted": { + "documentation": "Wait until a StreamingImage Deleted. Use this after invoking DeleteStreamingImage", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "streamingImage.state", + "expected": "DELETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "streamingImage.state", + "expected": "DELETE_FAILED", + "comparator": "stringEquals" + } + } + } + ] + } } } }, @@ -2169,7 +2445,7 @@ "type": "structure", "members": { "streamingImageId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The streaming image ID.

", "smithy.api#httpLabel": {}, @@ -2177,9 +2453,9 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2192,10 +2468,13 @@ "streamingImage": { "target": "com.amazonaws.nimble#StreamingImage", "traits": { - "smithy.api#documentation": "

The streaming image.

", - "smithy.api#jsonName": "streamingImage" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The streaming image.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStreamingSession": { @@ -2230,11 +2509,106 @@ } ], "traits": { - "smithy.api#documentation": "

Gets StreamingSession resource.

Invoke this operation to poll for a streaming session state while creating or deleting a session.

", + "aws.iam#actionPermissionDescription": "Grants permission to get a streaming session", + "smithy.api#documentation": "

Gets StreamingSession resource.

\n

anvoke this operation to poll for a streaming session state while creating or deleting\n a session.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "StreamingSessionReady": { + "documentation": "Wait until a StreamingSession is ready. Use this after invoking CreateStreamingSession, StartStreamingSession", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "session.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "session.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "session.state", + "expected": "START_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 10, + "maxDelay": 1800 + }, + "StreamingSessionStopped": { + "documentation": "Wait until a StreamingSessionStopped. Use this after invoking StopStreamingSession", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "session.state", + "expected": "STOPPED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "session.state", + "expected": "STOP_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 5, + "maxDelay": 900 + }, + "StreamingSessionDeleted": { + "documentation": "Wait until a StreamingSessionDeleted. Use this after invoking Deletesession", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "session.state", + "expected": "DELETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "session.state", + "expected": "DELETE_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 5, + "maxDelay": 900 + } } } }, @@ -2242,17 +2616,17 @@ "type": "structure", "members": { "sessionId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The session ID.

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

The streaming session ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2265,10 +2639,12 @@ "session": { "target": "com.amazonaws.nimble#StreamingSession", "traits": { - "smithy.api#documentation": "

The session.

", - "smithy.api#jsonName": "session" + "smithy.api#documentation": "

The session.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStreamingSessionStream": { @@ -2303,11 +2679,42 @@ } ], "traits": { - "smithy.api#documentation": "

Gets a StreamingSessionStream for a streaming session.

Invoke this operation to poll the resource after invoking CreateStreamingSessionStream.

After the StreamingSessionStream changes to the state READY, the url property will contain a stream to be used with the DCV streaming client.

", + "aws.iam#actionPermissionDescription": "Grants permission to get a streaming session", + "smithy.api#documentation": "

Gets a StreamingSessionStream for a streaming session.

\n

Invoke this operation to poll the resource after invoking\n CreateStreamingSessionStream.

\n

After the StreamingSessionStream changes to the state READY, the url property will\n contain a stream to be used with the DCV streaming client.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/streams/{streamId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "StreamingSessionStreamReady": { + "documentation": "Wait until a StreamingSessionStream is ready. Use this after invoking CreateStreamingSessionStream", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "stream.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "stream.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 5, + "maxDelay": 150 + } } } }, @@ -2315,25 +2722,25 @@ "type": "structure", "members": { "sessionId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The session ID.

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

The streaming session ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "streamId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The stream ID.

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

The streaming session stream ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2346,10 +2753,12 @@ "stream": { "target": "com.amazonaws.nimble#StreamingSessionStream", "traits": { - "smithy.api#documentation": "

The stream.

", - "smithy.api#jsonName": "stream" + "smithy.api#documentation": "

The stream.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStudio": { @@ -2384,11 +2793,75 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a studio", "smithy.api#documentation": "

Get a Studio resource.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "StudioReady": { + "documentation": "Wait until a Studio is Ready. Use this after invoking CreateStudio, UpdateStudio, or StartStudioSSOConfigurationRepair", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "studio.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studio.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studio.state", + "expected": "UPDATE_FAILED", + "comparator": "stringEquals" + } + } + } + ] + }, + "StudioDeleted": { + "documentation": "Wait until a Studio is Deleted. Use this after invoking DeleteStudio.", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "studio.state", + "expected": "DELETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studio.state", + "expected": "DELETE_FAILED", + "comparator": "stringEquals" + } + } + } + ] + } } } }, @@ -2424,11 +2897,76 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to get a studio component", "smithy.api#documentation": "

Gets a studio component resource.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/studio-components/{studioComponentId}", "code": 200 + }, + "smithy.api#readonly": {}, + "smithy.waiters#waitable": { + "StudioComponentReady": { + "documentation": "Wait until a StudioComponent is Ready. Use this after invoking CreateStudioComponent or UpdateStudioComponent", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "studioComponent.state", + "expected": "READY", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studioComponent.state", + "expected": "CREATE_FAILED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studioComponent.state", + "expected": "UPDATE_FAILED", + "comparator": "stringEquals" + } + } + } + ] + }, + "StudioComponentDeleted": { + "documentation": "Wait until a StudioComponent Deleted. Use this after invoking DeleteStudioComponent", + "acceptors": [ + { + "state": "success", + "matcher": { + "output": { + "path": "studioComponent.state", + "expected": "DELETED", + "comparator": "stringEquals" + } + } + }, + { + "state": "failure", + "matcher": { + "output": { + "path": "studioComponent.state", + "expected": "DELETE_FAILED", + "comparator": "stringEquals" + } + } + } + ], + "minDelay": 1 + } } } }, @@ -2436,7 +2974,7 @@ "type": "structure", "members": { "studioComponentId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The studio component ID.

", "smithy.api#httpLabel": {}, @@ -2444,9 +2982,9 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2459,10 +2997,13 @@ "studioComponent": { "target": "com.amazonaws.nimble#StudioComponent", "traits": { - "smithy.api#documentation": "

Information about the studio component.

", - "smithy.api#jsonName": "studioComponent" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Information about the studio component.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStudioMember": { @@ -2497,29 +3038,31 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to delete a studio member", "smithy.api#documentation": "

Get a user's membership in a studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/membership/{principalId}", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#GetStudioMemberRequest": { "type": "structure", "members": { "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2532,19 +3075,21 @@ "member": { "target": "com.amazonaws.nimble#StudioMembership", "traits": { - "smithy.api#documentation": "

The member.

", - "smithy.api#jsonName": "member" + "smithy.api#documentation": "

The member.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#GetStudioRequest": { "type": "structure", "members": { "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -2557,171 +3102,179 @@ "studio": { "target": "com.amazonaws.nimble#Studio", "traits": { + "aws.cloudformation#cfnExcludeProperty": {}, "smithy.api#documentation": "

Information about a studio.

", - "smithy.api#jsonName": "studio" + "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#InternalServerErrorException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

An internal error has occurred. Please retry your request.

", "smithy.api#error": "server", - "smithy.api#httpError": 500 + "smithy.api#httpError": 500, + "smithy.api#retryable": {} } }, "com.amazonaws.nimble#LaunchProfile": { "type": "structure", "members": { "arn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the resource.

", - "smithy.api#jsonName": "arn" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The ARN of the resource.

" } }, "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the launch profile.

", - "smithy.api#jsonName": "createdBy" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The user ID of the user that created the launch profile.

" } }, "description": { "target": "com.amazonaws.nimble#LaunchProfileDescription", "traits": { - "smithy.api#documentation": "

A human-readable description of the launch profile.

", - "smithy.api#jsonName": "description" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

A human-readable description of the launch profile.

" } }, "ec2SubnetIds": { "target": "com.amazonaws.nimble#EC2SubnetIdList", "traits": { - "smithy.api#documentation": "

Unique identifiers for a collection of EC2 subnets.

", - "smithy.api#jsonName": "ec2SubnetIds" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

Unique identifiers for a collection of EC2 subnets.

" } }, "launchProfileId": { "target": "com.amazonaws.nimble#LaunchProfileId", "traits": { - "smithy.api#documentation": "

The launch profile ID.

", - "smithy.api#jsonName": "launchProfileId" + "smithy.api#documentation": "

The launch profile ID.

" } }, "launchProfileProtocolVersions": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersionList", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

", - "smithy.api#jsonName": "launchProfileProtocolVersions" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

" } }, "name": { "target": "com.amazonaws.nimble#LaunchProfileName", "traits": { - "smithy.api#documentation": "

A friendly name for the launch profile.

", - "smithy.api#jsonName": "name" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

A friendly name for the launch profile.

" } }, "state": { "target": "com.amazonaws.nimble#LaunchProfileState", "traits": { - "smithy.api#documentation": "

The current state.

", - "smithy.api#jsonName": "state" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current state.

" } }, "statusCode": { "target": "com.amazonaws.nimble#LaunchProfileStatusCode", "traits": { - "smithy.api#documentation": "

The status code.

", - "smithy.api#jsonName": "statusCode" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status code.

" } }, "statusMessage": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The status message for the launch profile.

", - "smithy.api#jsonName": "statusMessage" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status message for the launch profile.

" } }, "streamConfiguration": { "target": "com.amazonaws.nimble#StreamConfiguration", "traits": { - "smithy.api#documentation": "

A configuration for a streaming session.

", - "smithy.api#jsonName": "streamConfiguration" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

A configuration for a streaming session.

" } }, "studioComponentIds": { "target": "com.amazonaws.nimble#LaunchProfileStudioComponentIdList", "traits": { - "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this launch profile.

", - "smithy.api#jsonName": "studioComponentIds" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this\n launch profile.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } }, "updatedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

", - "smithy.api#jsonName": "updatedBy" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

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

A launch profile controls your artist workforce’s access to studio components, like\n compute farms, shared file systems, managed file systems, and license server\n configurations, as well as instance types and Amazon Machine Images (AMIs).

\n\n

Studio administrators create launch profiles in the Nimble Studio console.\n Artists can use their launch profiles to launch an instance from the Nimble Studio\n portal. Each user’s launch profile defines how they can launch a streaming session. By\n default, studio admins can use all launch profiles.

" } }, "com.amazonaws.nimble#LaunchProfileDescription": { "type": "string", "traits": { + "smithy.api#documentation": "

A human-readable description of the launch profile.

", "smithy.api#length": { "min": 0, "max": 256 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#LaunchProfileId": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 22 @@ -2735,66 +3288,60 @@ "activeDirectory": { "target": "com.amazonaws.nimble#LaunchProfileInitializationActiveDirectory", "traits": { - "smithy.api#documentation": "

A LaunchProfileInitializationActiveDirectory resource.

", - "smithy.api#jsonName": "activeDirectory" + "smithy.api#documentation": "

A LaunchProfileInitializationActiveDirectory resource.

" } }, "ec2SecurityGroupIds": { "target": "com.amazonaws.nimble#LaunchProfileSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

", - "smithy.api#jsonName": "ec2SecurityGroupIds" + "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

" } }, "launchProfileId": { "target": "com.amazonaws.nimble#LaunchProfileId", "traits": { - "smithy.api#documentation": "

The launch profile ID.

", - "smithy.api#jsonName": "launchProfileId" + "smithy.api#documentation": "

The launch profile ID.

" } }, "launchProfileProtocolVersion": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersion", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

", - "smithy.api#jsonName": "launchProfileProtocolVersion" + "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

" } }, "launchPurpose": { "target": "com.amazonaws.nimble#LaunchPurpose", "traits": { - "smithy.api#documentation": "

The launch purpose.

", - "smithy.api#jsonName": "launchPurpose" + "smithy.api#documentation": "

The launch purpose.

" } }, "name": { "target": "com.amazonaws.nimble#LaunchProfileName", "traits": { - "smithy.api#documentation": "

The name for the launch profile.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the launch profile.

" } }, "platform": { "target": "com.amazonaws.nimble#LaunchProfilePlatform", "traits": { - "smithy.api#documentation": "

The platform of the launch platform, either WINDOWS or LINUX.

", - "smithy.api#jsonName": "platform" + "smithy.api#documentation": "

The platform of the launch platform, either WINDOWS or LINUX.

" } }, "systemInitializationScripts": { "target": "com.amazonaws.nimble#LaunchProfileInitializationScriptList", "traits": { - "smithy.api#documentation": "

The system initializtion scripts.

", - "smithy.api#jsonName": "systemInitializationScripts" + "smithy.api#documentation": "

The system initializtion scripts.

" } }, "userInitializationScripts": { "target": "com.amazonaws.nimble#LaunchProfileInitializationScriptList", "traits": { - "smithy.api#documentation": "

The user initializtion scripts.

", - "smithy.api#jsonName": "userInitializationScripts" + "smithy.api#documentation": "

The user initializtion scripts.

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

A Launch Profile Initialization contains information required for a workstation or\n server to connect to a launch profile

\n

This includes scripts, endpoints, security groups, subnets, and other\n configuration.

" } }, "com.amazonaws.nimble#LaunchProfileInitializationActiveDirectory": { @@ -2803,52 +3350,48 @@ "computerAttributes": { "target": "com.amazonaws.nimble#ActiveDirectoryComputerAttributeList", "traits": { - "smithy.api#documentation": "

A collection of custom attributes for an Active Directory computer.

", - "smithy.api#jsonName": "computerAttributes" + "smithy.api#documentation": "

A collection of custom attributes for an Active Directory computer.

" } }, "directoryId": { "target": "com.amazonaws.nimble#DirectoryId", "traits": { - "smithy.api#documentation": "

The directory ID of the Directory Service for Microsoft Active Directory to access using this launch profile.

", - "smithy.api#jsonName": "directoryId" + "smithy.api#documentation": "

The directory ID of the Directory Service for Microsoft Active Directory to access\n using this launch profile.

" } }, "directoryName": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The directory name.

", - "smithy.api#jsonName": "directoryName" + "smithy.api#documentation": "

The directory name.

" } }, "dnsIpAddresses": { "target": "com.amazonaws.nimble#ActiveDirectoryDnsIpAddressList", "traits": { - "smithy.api#documentation": "

The DNS IP address.

", - "smithy.api#jsonName": "dnsIpAddresses" + "smithy.api#documentation": "

The DNS IP address.

" } }, "organizationalUnitDistinguishedName": { "target": "com.amazonaws.nimble#ActiveDirectoryOrganizationalUnitDistinguishedName", "traits": { - "smithy.api#documentation": "

The name for the organizational unit distinguished name.

", - "smithy.api#jsonName": "organizationalUnitDistinguishedName" + "smithy.api#documentation": "

The name for the organizational unit distinguished name.

" } }, "studioComponentId": { "target": "com.amazonaws.nimble#StudioComponentId", "traits": { - "smithy.api#documentation": "

The unique identifier for a studio component resource.

", - "smithy.api#jsonName": "studioComponentId" + "smithy.api#documentation": "

The unique identifier for a studio component resource.

" } }, "studioComponentName": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { - "smithy.api#documentation": "

The name for the studio component.

", - "smithy.api#jsonName": "studioComponentName" + "smithy.api#documentation": "

The name for the studio component.

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

" } }, "com.amazonaws.nimble#LaunchProfileInitializationScript": { @@ -2857,62 +3400,74 @@ "script": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptContent", "traits": { - "smithy.api#documentation": "

The initialization script.

", - "smithy.api#jsonName": "script" + "smithy.api#documentation": "

The initialization script.

" } }, "studioComponentId": { "target": "com.amazonaws.nimble#StudioComponentId", "traits": { - "smithy.api#documentation": "

The unique identifier for a studio component resource.

", - "smithy.api#jsonName": "studioComponentId" + "smithy.api#documentation": "

The unique identifier for a studio component resource.

" } }, "studioComponentName": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { - "smithy.api#documentation": "

The name for the studio component.

", - "smithy.api#jsonName": "studioComponentName" + "smithy.api#documentation": "

The name for the studio component.

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

" } }, "com.amazonaws.nimble#LaunchProfileInitializationScriptList": { "type": "list", "member": { "target": "com.amazonaws.nimble#LaunchProfileInitializationScript" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#LaunchProfileList": { "type": "list", "member": { "target": "com.amazonaws.nimble#LaunchProfile" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#LaunchProfileMembership": { "type": "structure", "members": { "identityStoreId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ID of the identity store.

", - "smithy.api#jsonName": "identityStoreId" + "smithy.api#documentation": "

The ID of the identity store.

" } }, "persona": { "target": "com.amazonaws.nimble#LaunchProfilePersona", "traits": { - "smithy.api#documentation": "

The persona.

", - "smithy.api#jsonName": "persona" + "smithy.api#documentation": "

The persona.

" } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

", - "smithy.api#jsonName": "principalId" + "smithy.api#documentation": "

The principal ID.

" + } + }, + "sid": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The Active Directory Security Identifier for this user, if available.

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

" } }, "com.amazonaws.nimble#LaunchProfileMembershipList": { @@ -2921,7 +3476,7 @@ "target": "com.amazonaws.nimble#LaunchProfileMembership" }, "traits": { - "smithy.api#documentation": "

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

", "smithy.api#length": { "min": 0, "max": 20 @@ -2931,15 +3486,18 @@ "com.amazonaws.nimble#LaunchProfileName": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { - "min": 0, + "min": 1, "max": 64 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#LaunchProfilePersona": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "USER", @@ -2951,6 +3509,7 @@ "com.amazonaws.nimble#LaunchProfilePlatform": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "LINUX", @@ -2966,7 +3525,7 @@ "com.amazonaws.nimble#LaunchProfileProtocolVersion": { "type": "string", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

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

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

", "smithy.api#length": { "min": 0, "max": 10 @@ -2978,6 +3537,78 @@ "type": "list", "member": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersion" + }, + "traits": { + "smithy.api#documentation": "" + } + }, + "com.amazonaws.nimble#LaunchProfileResource": { + "type": "resource", + "identifiers": { + "launchProfileId": { + "target": "com.amazonaws.nimble#String" + } + }, + "create": { + "target": "com.amazonaws.nimble#CreateLaunchProfile" + }, + "read": { + "target": "com.amazonaws.nimble#GetLaunchProfile" + }, + "update": { + "target": "com.amazonaws.nimble#UpdateLaunchProfile" + }, + "delete": { + "target": "com.amazonaws.nimble#DeleteLaunchProfile" + }, + "list": { + "target": "com.amazonaws.nimble#ListLaunchProfiles" + }, + "operations": [ + { + "target": "com.amazonaws.nimble#DeleteLaunchProfileMember" + }, + { + "target": "com.amazonaws.nimble#GetLaunchProfileDetails" + }, + { + "target": "com.amazonaws.nimble#GetLaunchProfileInitialization" + }, + { + "target": "com.amazonaws.nimble#GetLaunchProfileMember" + }, + { + "target": "com.amazonaws.nimble#ListLaunchProfileMembers" + }, + { + "target": "com.amazonaws.nimble#PutLaunchProfileMembers" + }, + { + "target": "com.amazonaws.nimble#UpdateLaunchProfileMember" + } + ], + "traits": { + "aws.api#arn": { + "template": "launch-profile/{launchProfileId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.cloudformation#cfnResource": { + "additionalSchemas": ["com.amazonaws.nimble#LaunchProfile"], + "name": "LaunchProfile" + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "aws:TagKeys", + "nimble:studioId" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents a launch profile which delegates access to a collection of studio components to studio users", + "smithy.api#externalDocumentation": { + "CFNSourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio" + } } }, "com.amazonaws.nimble#LaunchProfileSecurityGroupIdList": { @@ -2986,6 +3617,7 @@ "target": "com.amazonaws.nimble#SecurityGroupId" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1 } @@ -2994,6 +3626,7 @@ "com.amazonaws.nimble#LaunchProfileState": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "CREATE_IN_PROGRESS", @@ -3033,6 +3666,7 @@ "com.amazonaws.nimble#LaunchProfileStatusCode": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "LAUNCH_PROFILE_CREATED", @@ -3092,9 +3726,10 @@ "com.amazonaws.nimble#LaunchProfileStudioComponentIdList": { "type": "list", "member": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1, "max": 100 @@ -3116,25 +3751,27 @@ "type": "structure", "members": { "endpoint": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The endpoint of the license service that is accessed by the studio component resource.

", - "smithy.api#jsonName": "endpoint" + "smithy.api#documentation": "

The endpoint of the license service that is accessed by the studio component\n resource.

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

The configuration for a license service that is associated with a studio resource.

" + "smithy.api#documentation": "

The configuration for a license service that is associated with a studio\n resource.

" } }, "com.amazonaws.nimble#LinuxMountPoint": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 128 }, - "smithy.api#pattern": "^(/?|(\\$HOME)?(/[^/\\n\\s\\\\]+)*)$" + "smithy.api#pattern": "^(/?|(\\$HOME)?(/[^/\\n\\s\\\\]+)*)$", + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#ListEulaAcceptances": { @@ -3169,35 +3806,42 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list EULA acceptances", "smithy.api#documentation": "

List Eula Acceptances.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/eula-acceptances", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "eulaAcceptances" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListEulaAcceptancesRequest": { "type": "structure", "members": { "eulaIds": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

A collection of EULA IDs.

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

The list of EULA IDs that have been previously accepted.

", "smithy.api#httpQuery": "eulaIds" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3210,17 +3854,18 @@ "eulaAcceptances": { "target": "com.amazonaws.nimble#EulaAcceptanceList", "traits": { - "smithy.api#documentation": "

A collection of EULA acceptances.

", - "smithy.api#jsonName": "eulaAcceptances" + "smithy.api#documentation": "

A collection of EULA acceptances.

" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

" } }, "com.amazonaws.nimble#ListEulas": { @@ -3255,28 +3900,35 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list EULAs", "smithy.api#documentation": "

List Eulas.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/eulas", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "eulas" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListEulasRequest": { "type": "structure", "members": { "eulaIds": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

A collection of EULA IDs.

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

The list of EULA IDs that should be returned

", "smithy.api#httpQuery": "eulaIds" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } } @@ -3288,17 +3940,18 @@ "eulas": { "target": "com.amazonaws.nimble#EulaList", "traits": { - "smithy.api#documentation": "

A collection of EULA resources.

", - "smithy.api#jsonName": "eulas" + "smithy.api#documentation": "

A collection of EULA resources.

" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListLaunchProfileMembers": { @@ -3333,21 +3986,29 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list launch profile members", "smithy.api#documentation": "

Get all users in a given launch profile membership.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles/{launchProfileId}/membership", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "members", + "pageSize": "maxResults" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListLaunchProfileMembersRequest": { "type": "structure", "members": { "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3355,21 +4016,21 @@ "maxResults": { "target": "com.amazonaws.nimble#MaxResults", "traits": { - "smithy.api#documentation": "

The maximum number of results to be returned per request.

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

The max number of results to return in the response.

", "smithy.api#httpQuery": "maxResults" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3382,17 +4043,18 @@ "members": { "target": "com.amazonaws.nimble#LaunchProfileMembershipList", "traits": { - "smithy.api#documentation": "

A list of members.

", - "smithy.api#jsonName": "members" + "smithy.api#documentation": "

A list of members.

" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListLaunchProfiles": { @@ -3427,13 +4089,21 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list launch profiles", "smithy.api#documentation": "

List all the launch profiles a studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/launch-profiles", "code": 200 - } - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "launchProfiles", + "pageSize": "maxResults" + }, + "smithy.api#readonly": {} + } }, "com.amazonaws.nimble#ListLaunchProfilesRequest": { "type": "structure", @@ -3441,35 +4111,35 @@ "maxResults": { "target": "com.amazonaws.nimble#MaxResults", "traits": { - "smithy.api#documentation": "

The maximum number of results to be returned per request.

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

The max number of results to return in the response.

", "smithy.api#httpQuery": "maxResults" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpQuery": "principalId" } }, "states": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

A list of states.

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

Filter this request to launch profiles in any of the given states.

", "smithy.api#httpQuery": "states" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3482,17 +4152,18 @@ "launchProfiles": { "target": "com.amazonaws.nimble#LaunchProfileList", "traits": { - "smithy.api#documentation": "

A collection of launch profiles.

", - "smithy.api#jsonName": "launchProfiles" + "smithy.api#documentation": "

A collection of launch profiles.

" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListStreamingImages": { @@ -3527,35 +4198,42 @@ } ], "traits": { - "smithy.api#documentation": "

List the streaming image resources available to this studio.

This list will contain both images provided by Amazon Web Services, as well as streaming images that you have created in your studio.

", + "aws.iam#actionPermissionDescription": "Grants permission to list streaming images", + "smithy.api#documentation": "

List the streaming image resources available to this studio.

\n

This list will contain both images provided by Amazon Web Services, as well as\n streaming images that you have created in your studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-images", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "streamingImages" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListStreamingImagesRequest": { "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "owner": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The owner.

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

Filter this request to streaming images with the given owner

", "smithy.api#httpQuery": "owner" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3566,19 +4244,20 @@ "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } }, "streamingImages": { "target": "com.amazonaws.nimble#StreamingImageList", "traits": { - "smithy.api#documentation": "

A collection of streaming images.

", - "smithy.api#jsonName": "streamingImages" + "smithy.api#documentation": "

A collection of streaming images.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListStreamingSessions": { @@ -3613,49 +4292,57 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list streaming sessions", + "aws.iam#conditionKeys": ["nimble:createdBy", "nimble:ownedBy"], "smithy.api#documentation": "

Lists the streaming image resources in a studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/streaming-sessions", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "sessions" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListStreamingSessionsRequest": { "type": "structure", "members": { "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the streaming session.

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

Filters the request to streaming sessions created by the given user.

", "smithy.api#httpQuery": "createdBy" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "ownedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

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

Filters the request to streaming session owned by the given user

", "smithy.api#httpQuery": "ownedBy" } }, "sessionIds": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A collection of session IDs.

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

Filters the request to only the provided session IDs.

", "smithy.api#httpQuery": "sessionIds" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3666,19 +4353,20 @@ "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } }, "sessions": { "target": "com.amazonaws.nimble#StreamingSessionList", "traits": { - "smithy.api#documentation": "

A collection of streaming sessions.

", - "smithy.api#jsonName": "sessions" + "smithy.api#documentation": "

A collection of streaming sessions.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListStudioComponents": { @@ -3713,12 +4401,20 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list studio components", "smithy.api#documentation": "

Lists the StudioComponents in a studio.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/studio-components", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "studioComponents", + "pageSize": "maxResults" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListStudioComponentsRequest": { @@ -3727,36 +4423,36 @@ "maxResults": { "target": "com.amazonaws.nimble#MaxResults", "traits": { - "smithy.api#documentation": "

The maximum number of results to be returned per request.

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

The max number of results to return in the response.

", "smithy.api#httpQuery": "maxResults" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "states": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

A list of states.

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

Filters the request to studio components that are in one of the given states.

", "smithy.api#httpQuery": "states" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "types": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

The types.

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

Filters the request to studio components that are of one of the given types.

", "smithy.api#httpQuery": "types" } } @@ -3766,19 +4462,20 @@ "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } }, "studioComponents": { "target": "com.amazonaws.nimble#StudioComponentList", "traits": { - "smithy.api#documentation": "

A collection of studio components.

", - "smithy.api#jsonName": "studioComponents" + "smithy.api#documentation": "

A collection of studio components.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListStudioMembers": { @@ -3813,12 +4510,20 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to list studio members", "smithy.api#documentation": "

Get all users in a given studio membership.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios/{studioId}/membership", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "members", + "pageSize": "maxResults" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListStudioMembersRequest": { @@ -3827,21 +4532,21 @@ "maxResults": { "target": "com.amazonaws.nimble#MaxResults", "traits": { - "smithy.api#documentation": "

The maximum number of results to be returned per request.

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

The max number of results to return in the response.

", "smithy.api#httpQuery": "maxResults" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -3854,17 +4559,18 @@ "members": { "target": "com.amazonaws.nimble#StudioMembershipList", "traits": { - "smithy.api#documentation": "

A list of members.

", - "smithy.api#jsonName": "members" + "smithy.api#documentation": "

A list of members.

" } }, "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListStudios": { @@ -3899,21 +4605,28 @@ } ], "traits": { - "smithy.api#documentation": "

List studios in your Amazon Web Services account in the requested Amazon Web Services Region.

", + "aws.iam#actionPermissionDescription": "Grants permission to list studios", + "smithy.api#documentation": "

List studios in your Amazon Web Services account in the requested Amazon Web Services\n Region.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/studios", "code": 200 - } + }, + "smithy.api#paginated": { + "inputToken": "nextToken", + "outputToken": "nextToken", + "items": "studios" + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListStudiosRequest": { "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

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

The token to request the next page of results.

", "smithy.api#httpQuery": "nextToken" } } @@ -3923,19 +4636,21 @@ "type": "structure", "members": { "nextToken": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

", - "smithy.api#jsonName": "nextToken" + "smithy.api#documentation": "

The token for the next set of results, or null if there are no more results.

" } }, "studios": { "target": "com.amazonaws.nimble#StudioList", "traits": { "smithy.api#documentation": "

A collection of studios.

", - "smithy.api#jsonName": "studios" + "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ListTagsForResource": { @@ -3970,25 +4685,61 @@ } ], "traits": { - "smithy.api#documentation": "

Gets the tags for a resource, given its Amazon Resource Names (ARN).

This operation supports ARNs for all resource types in Nimble Studio that support tags, including studio, studio component, launch profile, streaming image, and streaming session. All resources that can be tagged will contain an ARN property, so you do not have to create this ARN yourself.

", + "aws.iam#actionPermissionDescription": "Grants permission to list all tags on a Nimble Studio resource", + "smithy.api#documentation": "

Gets the tags for a resource, given its Amazon Resource Names (ARN).

\n

This operation supports ARNs for all resource types in Nimble Studio that support\n tags, including studio, studio component, launch profile, streaming image, and streaming\n session. All resources that can be tagged will contain an ARN property, so you do not\n have to create this ARN yourself.

", "smithy.api#http": { "method": "GET", "uri": "/2020-08-01/tags/{resourceArn}", "code": 200 - } + }, + "smithy.api#readonly": {} } }, "com.amazonaws.nimble#ListTagsForResourceRequest": { "type": "structure", "members": { "resourceArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the target resource for tagging operations.

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

The Amazon Resource Name (ARN) of the resource for which you want to list tags.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource", + "ids": { + "studioId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StudioComponentResource", + "ids": { + "studioComponentId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#LaunchProfileResource", + "ids": { + "launchProfileId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingSessionResource", + "ids": { + "sessionId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingImageResource", + "ids": { + "streamingImageId": "resourceArn" + } + } + ] } }, "com.amazonaws.nimble#ListTagsForResourceResponse": { @@ -3997,10 +4748,12 @@ "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#MaxResults": { @@ -4019,18 +4772,19 @@ "target": "com.amazonaws.nimble#LaunchProfilePersona", "traits": { "smithy.api#documentation": "

The persona.

", - "smithy.api#jsonName": "persona", "smithy.api#required": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The principal ID.

", - "smithy.api#jsonName": "principalId", "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "

" } }, "com.amazonaws.nimble#NewLaunchProfileMemberList": { @@ -4039,6 +4793,7 @@ "target": "com.amazonaws.nimble#NewLaunchProfileMember" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1, "max": 20 @@ -4052,18 +4807,19 @@ "target": "com.amazonaws.nimble#StudioPersona", "traits": { "smithy.api#documentation": "

The persona.

", - "smithy.api#jsonName": "persona", "smithy.api#required": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The principal ID.

", - "smithy.api#jsonName": "principalId", "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "

" } }, "com.amazonaws.nimble#NewStudioMemberList": { @@ -4072,6 +4828,7 @@ "target": "com.amazonaws.nimble#NewStudioMember" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1, "max": 20 @@ -4110,6 +4867,8 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to add/update launch profile members", + "aws.iam#requiredActions": ["sso-directory:DescribeUsers"], "smithy.api#documentation": "

Add/update users with given persona to launch profile membership.

", "smithy.api#http": { "method": "POST", @@ -4124,23 +4883,22 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "identityStoreId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The ID of the identity store.

", - "smithy.api#jsonName": "identityStoreId", "smithy.api#required": {} } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -4149,21 +4907,20 @@ "target": "com.amazonaws.nimble#NewLaunchProfileMemberList", "traits": { "smithy.api#documentation": "

A list of members.

", - "smithy.api#jsonName": "members", "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

Information about a launch profile membership.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#PutLaunchProfileMembersResponse": { @@ -4202,6 +4959,8 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to add/update studio members", + "aws.iam#requiredActions": ["sso-directory:DescribeUsers"], "smithy.api#documentation": "

Add/update users with given persona to studio membership.

", "smithy.api#http": { "method": "POST", @@ -4216,16 +4975,15 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "identityStoreId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The ID of the identity store.

", - "smithy.api#jsonName": "identityStoreId", "smithy.api#required": {} } }, @@ -4233,63 +4991,64 @@ "target": "com.amazonaws.nimble#NewStudioMemberList", "traits": { "smithy.api#documentation": "

A list of members.

", - "smithy.api#jsonName": "members", "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

A launch profile membership collection.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#PutStudioMembersResponse": { "type": "structure", - "members": {} + "members": {}, + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#Region": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 50 }, - "smithy.api#pattern": "^[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]$" + "smithy.api#pattern": "[a-z]{2}-?(iso|gov)?-{1}[a-z]*-{1}[0-9]" } }, "com.amazonaws.nimble#ResourceNotFoundException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

The specified resource could not be found.

", "smithy.api#error": "client", "smithy.api#httpError": 404 } @@ -4311,15 +5070,13 @@ "key": { "target": "com.amazonaws.nimble#ScriptParameterKey", "traits": { - "smithy.api#documentation": "

A script parameter key.

", - "smithy.api#jsonName": "key" + "smithy.api#documentation": "

A script parameter key.

" } }, "value": { "target": "com.amazonaws.nimble#ScriptParameterValue", "traits": { - "smithy.api#documentation": "

A script parameter value.

", - "smithy.api#jsonName": "value" + "smithy.api#documentation": "

A script parameter value.

" } } }, @@ -4338,34 +5095,35 @@ } }, "com.amazonaws.nimble#SecurityGroupId": { - "type": "string" + "type": "string", + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#ServiceQuotaExceededException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

Your current quota does not allow you to perform the request action. You can request\n increases for some quotas, and other quotas cannot be increased.

\n

Please use AWS Service Quotas to request an increase.

", "smithy.api#error": "client", "smithy.api#httpError": 402 } @@ -4374,43 +5132,121 @@ "type": "structure", "members": { "endpoint": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The endpoint of the shared file system that is accessed by the studio component resource.

", - "smithy.api#jsonName": "endpoint" + "smithy.api#documentation": "

The endpoint of the shared file system that is accessed by the studio component\n resource.

", + "smithy.api#sensitive": {} } }, "fileSystemId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The unique identifier for a file system.

", - "smithy.api#jsonName": "fileSystemId" + "smithy.api#documentation": "

The unique identifier for a file system.

" } }, "linuxMountPoint": { "target": "com.amazonaws.nimble#LinuxMountPoint", "traits": { - "smithy.api#documentation": "

The mount location for a shared file system on a Linux virtual workstation.

", - "smithy.api#jsonName": "linuxMountPoint" + "smithy.api#documentation": "

The mount location for a shared file system on a Linux virtual workstation.

" } }, "shareName": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The name of the file share.

", - "smithy.api#jsonName": "shareName" + "smithy.api#sensitive": {} } }, "windowsMountDrive": { "target": "com.amazonaws.nimble#WindowsMountDrive", "traits": { - "smithy.api#documentation": "

The mount location for a shared file system on a Windows virtual workstation.

", - "smithy.api#jsonName": "windowsMountDrive" + "smithy.api#documentation": "

The mount location for a shared file system on a Windows virtual workstation.

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

The configuration for a shared file storage system that is associated with a studio resource.

" + "smithy.api#documentation": "

The configuration for a shared file storage system that is associated with a studio\n resource.

" + } + }, + "com.amazonaws.nimble#StartStreamingSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.nimble#StartStreamingSessionRequest" + }, + "output": { + "target": "com.amazonaws.nimble#StartStreamingSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.nimble#AccessDeniedException" + }, + { + "target": "com.amazonaws.nimble#ConflictException" + }, + { + "target": "com.amazonaws.nimble#InternalServerErrorException" + }, + { + "target": "com.amazonaws.nimble#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.nimble#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.nimble#ThrottlingException" + }, + { + "target": "com.amazonaws.nimble#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to start a streaming session", + "aws.iam#requiredActions": ["nimble:GetLaunchProfile", "nimble:GetLaunchProfileMember"], + "smithy.api#documentation": "

Transitions sessions from the STOPPED state into the READY state. The\n START_IN_PROGRESS state is the intermediate state between the STOPPED and READY\n states.

", + "smithy.api#http": { + "method": "POST", + "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/start", + "code": 200 + }, + "smithy.api#idempotent": {}, + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "com.amazonaws.nimble#StartStreamingSessionRequest": { + "type": "structure", + "members": { + "clientToken": { + "target": "com.amazonaws.nimble#ClientToken", + "traits": { + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", + "smithy.api#httpHeader": "X-Amz-Client-Token", + "smithy.api#idempotencyToken": {} + } + }, + "sessionId": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The streaming session ID for the StartStreamingSessionRequest.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "studioId": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The studio ID for the StartStreamingSessionRequest.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + } + } + }, + "com.amazonaws.nimble#StartStreamingSessionResponse": { + "type": "structure", + "members": { + "session": { + "target": "com.amazonaws.nimble#StreamingSession" + } } }, "com.amazonaws.nimble#StartStudioSSOConfigurationRepair": { @@ -4445,12 +5281,15 @@ } ], "traits": { - "smithy.api#documentation": "

Repairs the SSO configuration for a given studio.

If the studio has a valid Amazon Web Services SSO configuration currently associated with it, this operation will fail with a validation error.

If the studio does not have a valid Amazon Web Services SSO configuration currently associated with it, then a new Amazon Web Services SSO application is created for the studio and the studio is changed to the READY state.

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

", + "aws.iam#actionPermissionDescription": "Grants permission to repair the studio's AWS SSO configuration", + "aws.iam#requiredActions": ["sso:CreateManagedApplicationInstance", "sso:GetManagedApplicationInstance"], + "smithy.api#documentation": "

Repairs the Amazon Web Services SSO configuration for a given studio.

\n

If the studio has a valid Amazon Web Services SSO configuration currently associated with\n it, this operation will fail with a validation error.

\n

If the studio does not have a valid Amazon Web Services SSO configuration currently\n associated with it, then a new Amazon Web Services SSO application is created for the studio\n and the studio is changed to the READY state.

\n

After the Amazon Web Services SSO application is repaired, you must use the Amazon Nimble Studio console to add administrators and users to your studio.

", "smithy.api#http": { "method": "PUT", "uri": "/2020-08-01/studios/{studioId}/sso-configuration", "code": 200 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#StartStudioSSOConfigurationRepairRequest": { @@ -4459,15 +5298,15 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -4481,40 +5320,130 @@ "target": "com.amazonaws.nimble#Studio", "traits": { "smithy.api#documentation": "

Information about a studio.

", - "smithy.api#jsonName": "studio" + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#documentation": "" + } + }, + "com.amazonaws.nimble#StopStreamingSession": { + "type": "operation", + "input": { + "target": "com.amazonaws.nimble#StopStreamingSessionRequest" + }, + "output": { + "target": "com.amazonaws.nimble#StopStreamingSessionResponse" + }, + "errors": [ + { + "target": "com.amazonaws.nimble#AccessDeniedException" + }, + { + "target": "com.amazonaws.nimble#ConflictException" + }, + { + "target": "com.amazonaws.nimble#InternalServerErrorException" + }, + { + "target": "com.amazonaws.nimble#ResourceNotFoundException" + }, + { + "target": "com.amazonaws.nimble#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.nimble#ThrottlingException" + }, + { + "target": "com.amazonaws.nimble#ValidationException" + } + ], + "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to stop a streaming session", + "aws.iam#requiredActions": ["nimble:GetLaunchProfile"], + "smithy.api#documentation": "

Transitions sessions from the READY state into the STOPPED state. The STOP_IN_PROGRESS\n state is the intermediate state between the READY and STOPPED states.

", + "smithy.api#http": { + "method": "POST", + "uri": "/2020-08-01/studios/{studioId}/streaming-sessions/{sessionId}/stop", + "code": 200 + }, + "smithy.api#idempotent": {}, + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "com.amazonaws.nimble#StopStreamingSessionRequest": { + "type": "structure", + "members": { + "clientToken": { + "target": "com.amazonaws.nimble#ClientToken", + "traits": { + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", + "smithy.api#httpHeader": "X-Amz-Client-Token", + "smithy.api#idempotencyToken": {} + } + }, + "sessionId": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The streaming session ID for the StopStreamingSessionRequest.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} + } + }, + "studioId": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The studioId for the StopStreamingSessionRequest.

", + "smithy.api#httpLabel": {}, + "smithy.api#required": {} } } } }, + "com.amazonaws.nimble#StopStreamingSessionResponse": { + "type": "structure", + "members": { + "session": { + "target": "com.amazonaws.nimble#StreamingSession" + } + } + }, "com.amazonaws.nimble#StreamConfiguration": { "type": "structure", "members": { "clipboardMode": { "target": "com.amazonaws.nimble#StreamingClipboardMode", "traits": { - "smithy.api#documentation": "

Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.

", - "smithy.api#jsonName": "clipboardMode" + "smithy.api#documentation": "

Enable or disable the use of the system clipboard to copy and paste between the\n streaming session and streaming client.

", + "smithy.api#required": {} } }, "ec2InstanceTypes": { "target": "com.amazonaws.nimble#StreamingInstanceTypeList", "traits": { - "smithy.api#documentation": "

The EC2 instance types that users can select from when launching a streaming session with this launch profile.

", - "smithy.api#jsonName": "ec2InstanceTypes" + "smithy.api#documentation": "

The EC2 instance types that users can select from when launching a streaming session\n with this launch profile.

", + "smithy.api#required": {} } }, "maxSessionLengthInMinutes": { "target": "com.amazonaws.nimble#StreamConfigurationMaxSessionLengthInMinutes", "traits": { - "smithy.api#documentation": "

The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.

", - "smithy.api#jsonName": "maxSessionLengthInMinutes" + "smithy.api#documentation": "

The length of time, in minutes, that a streaming session can be active before it is\n stopped or terminated. After this point, Nimble Studio automatically terminates\n or stops the session. The default length of time is 690 minutes, and the maximum length\n of time is 30 days.

" } }, "streamingImageIds": { "target": "com.amazonaws.nimble#StreamingImageIdList", "traits": { - "smithy.api#documentation": "

The streaming images that users can select from when launching a streaming session with this launch profile.

", - "smithy.api#jsonName": "streamingImageIds" + "smithy.api#documentation": "

The streaming images that users can select from when launching a streaming session\n with this launch profile.

", + "smithy.api#required": {} + } + }, + "maxStoppedSessionLengthInMinutes": { + "target": "com.amazonaws.nimble#StreamConfigurationMaxStoppedSessionLengthInMinutes", + "traits": { + "smithy.api#documentation": "

Integer that determines if you can start and stop your sessions and how long a session\n can stay in the STOPPED state. The default value is 0. The maximum value is 5760.

\n

If the value is missing or set to 0, your sessions can’t be stopped. If you then call\n StopStreamingSession, the session fails. If the time that a session stays in the READY\n state exceeds the maxSessionLengthInMinutes value, the session will automatically be\n terminated by AWS (instead of stopped).

\n

If the value is set to a positive number, the session can be stopped. You can call\n StopStreamingSession to stop sessions in the READY state. If the time that a session\n stays in the READY state exceeds the maxSessionLengthInMinutes value, the session will\n automatically be stopped by AWS (instead of terminated).

", + "smithy.api#tags": ["stop_start_streaming_session"] } } }, @@ -4528,48 +5457,65 @@ "clipboardMode": { "target": "com.amazonaws.nimble#StreamingClipboardMode", "traits": { - "smithy.api#documentation": "

Enable or disable the use of the system clipboard to copy and paste between the streaming session and streaming client.

", - "smithy.api#jsonName": "clipboardMode", + "smithy.api#documentation": "

Enable or disable the use of the system clipboard to copy and paste between the\n streaming session and streaming client.

", "smithy.api#required": {} } }, "ec2InstanceTypes": { "target": "com.amazonaws.nimble#StreamingInstanceTypeList", "traits": { - "smithy.api#documentation": "

The EC2 instance types that users can select from when launching a streaming session with this launch profile.

", - "smithy.api#jsonName": "ec2InstanceTypes", + "smithy.api#documentation": "

The EC2 instance types that users can select from when launching a streaming session\n with this launch profile.

", "smithy.api#required": {} } }, "maxSessionLengthInMinutes": { "target": "com.amazonaws.nimble#StreamConfigurationMaxSessionLengthInMinutes", "traits": { - "smithy.api#documentation": "

The length of time, in minutes, that a streaming session can run. After this point, Nimble Studio automatically terminates the session.

", - "smithy.api#jsonName": "maxSessionLengthInMinutes" + "smithy.api#documentation": "

The length of time, in minutes, that a streaming session can be active before it is\n stopped or terminated. After this point, Nimble Studio automatically terminates\n or stops the session. The default length of time is 690 minutes, and the maximum length\n of time is 30 days.

" } }, "streamingImageIds": { "target": "com.amazonaws.nimble#StreamingImageIdList", "traits": { - "smithy.api#documentation": "

The streaming images that users can select from when launching a streaming session with this launch profile.

", - "smithy.api#jsonName": "streamingImageIds", + "smithy.api#documentation": "

The streaming images that users can select from when launching a streaming session\n with this launch profile.

", "smithy.api#required": {} } + }, + "maxStoppedSessionLengthInMinutes": { + "target": "com.amazonaws.nimble#StreamConfigurationMaxStoppedSessionLengthInMinutes", + "traits": { + "smithy.api#documentation": "

The length of time, in minutes, that a streaming session can be active before it is\n stopped or terminated. After this point, Nimble Studio automatically terminates or\n stops the session. The default length of time is 690 minutes, and the maximum length of\n time is 30 days.

", + "smithy.api#tags": ["stop_start_streaming_session"] + } } + }, + "traits": { + "smithy.api#documentation": "

Configuration for streaming workstations created using this launch profile.

" } }, "com.amazonaws.nimble#StreamConfigurationMaxSessionLengthInMinutes": { "type": "integer", "traits": { + "smithy.api#documentation": "", "smithy.api#range": { "min": 1, - "max": 690 + "max": 43200 + } + } + }, + "com.amazonaws.nimble#StreamConfigurationMaxStoppedSessionLengthInMinutes": { + "type": "integer", + "traits": { + "smithy.api#range": { + "min": 0, + "max": 5760 } } }, "com.amazonaws.nimble#StreamingClipboardMode": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "ENABLED", @@ -4586,96 +5532,100 @@ "type": "structure", "members": { "arn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the resource.

", - "smithy.api#jsonName": "arn" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The ARN of the resource.

" } }, "description": { "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { + "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

A human-readable description of the streaming image.

", - "smithy.api#jsonName": "description" + "smithy.api#sensitive": {} } }, "ec2ImageId": { "target": "com.amazonaws.nimble#EC2ImageId", "traits": { - "smithy.api#documentation": "

The ID of an EC2 machine image with which to create the streaming image.

", - "smithy.api#jsonName": "ec2ImageId" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

The ID of an EC2 machine image with which to create the streaming image.

" } }, "encryptionConfiguration": { "target": "com.amazonaws.nimble#StreamingImageEncryptionConfiguration", "traits": { - "smithy.api#documentation": "

The encryption configuration.

", - "smithy.api#jsonName": "encryptionConfiguration" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The encryption configuration.

" } }, "eulaIds": { "target": "com.amazonaws.nimble#EulaIdList", "traits": { - "smithy.api#documentation": "

The list of EULAs that must be accepted before a Streaming Session can be started using this streaming image.

", - "smithy.api#jsonName": "eulaIds" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The list of EULAs that must be accepted before a Streaming Session can be started\n using this streaming image.

" } }, "name": { "target": "com.amazonaws.nimble#StreamingImageName", "traits": { + "aws.cloudformation#cfnMutability": "full", "smithy.api#documentation": "

A friendly name for a streaming image resource.

", - "smithy.api#jsonName": "name" + "smithy.api#sensitive": {} } }, "owner": { "target": "com.amazonaws.nimble#StreamingImageOwner", "traits": { - "smithy.api#documentation": "

The owner of the streaming image, either the studioId that contains the streaming image, or 'amazon' for images that are provided by Amazon Nimble Studio.

", - "smithy.api#jsonName": "owner" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The owner of the streaming image, either the studioId that contains the streaming\n image, or 'amazon' for images that are provided by Amazon Nimble Studio.

" } }, "platform": { "target": "com.amazonaws.nimble#StreamingImagePlatform", "traits": { - "smithy.api#documentation": "

The platform of the streaming image, either WINDOWS or LINUX.

", - "smithy.api#jsonName": "platform" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The platform of the streaming image, either WINDOWS or LINUX.

" } }, "state": { "target": "com.amazonaws.nimble#StreamingImageState", "traits": { - "smithy.api#documentation": "

The current state.

", - "smithy.api#jsonName": "state" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current state.

" } }, "statusCode": { "target": "com.amazonaws.nimble#StreamingImageStatusCode", "traits": { - "smithy.api#documentation": "

The status code.

", - "smithy.api#jsonName": "statusCode" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status code.

" } }, "statusMessage": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The status message for the streaming image.

", - "smithy.api#jsonName": "statusMessage" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status message for the streaming image.

" } }, "streamingImageId": { "target": "com.amazonaws.nimble#StreamingImageId", "traits": { - "smithy.api#documentation": "

The ID of the streaming image.

", - "smithy.api#jsonName": "streamingImageId" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The ID of the streaming image.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

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

Represents a streaming image resource.

\n

Streaming images are used by studio users to select which operating system and\n software they want to use in a Nimble Studio streaming session.

\n

Amazon provides a number of streaming images that include popular 3rd-party\n software.

\n

You can create your own streaming images using an Amazon Elastic Compute Cloud (Amazon\n EC2) machine image that you create for this purpose. You can also include software that\n your users require.

" } }, "com.amazonaws.nimble#StreamingImageDescription": { @@ -4694,33 +5644,35 @@ "keyArn": { "target": "com.amazonaws.nimble#StreamingImageEncryptionConfigurationKeyArn", "traits": { - "smithy.api#documentation": "

The ARN for a KMS key that is used to encrypt studio data.

", - "smithy.api#jsonName": "keyArn" + "smithy.api#documentation": "

The ARN for a KMS key that is used to encrypt studio data.

" } }, "keyType": { "target": "com.amazonaws.nimble#StreamingImageEncryptionConfigurationKeyType", "traits": { "smithy.api#documentation": "

The type of KMS key that is used to encrypt studio data.

", - "smithy.api#jsonName": "keyType", "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "

Specifies how a streaming image is encrypted.

" } }, "com.amazonaws.nimble#StreamingImageEncryptionConfigurationKeyArn": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 4 }, - "smithy.api#pattern": "^arn:" + "smithy.api#pattern": "^arn:.*" } }, "com.amazonaws.nimble#StreamingImageEncryptionConfigurationKeyType": { "type": "string", "traits": { - "smithy.api#documentation": "

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

", "smithy.api#enum": [ { "value": "CUSTOMER_MANAGED_KEY", @@ -4732,6 +5684,7 @@ "com.amazonaws.nimble#StreamingImageId": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 22 @@ -4745,9 +5698,9 @@ "target": "com.amazonaws.nimble#StreamingImageId" }, "traits": { - "smithy.api#documentation": "

A list of streaming image IDs that users can select from when launching a streaming session with this launch profile.

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

A list of streaming image IDs that users can select from when launching a streaming\n session with this launch profile.

", "smithy.api#length": { - "min": 0, + "min": 1, "max": 20 } } @@ -4756,6 +5709,9 @@ "type": "list", "member": { "target": "com.amazonaws.nimble#StreamingImage" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#StreamingImageName": { @@ -4771,7 +5727,7 @@ "com.amazonaws.nimble#StreamingImageOwner": { "type": "string", "traits": { - "smithy.api#documentation": "

StreamingImageOwner is the owner of a particular streaming image.

This string is either the studioId that contains the streaming image, or the word 'AMAZON' for images provided by Nimble Studio.

" + "smithy.api#documentation": "

StreamingImageOwner is the owner of a particular streaming image.

\n

This string is either the studioId that contains the streaming image, or the word\n 'AMAZON' for images provided by Nimble Studio.

" } }, "com.amazonaws.nimble#StreamingImagePlatform": { @@ -4781,9 +5737,56 @@ "smithy.api#pattern": "^[a-zA-Z]*$" } }, + "com.amazonaws.nimble#StreamingImageResource": { + "type": "resource", + "identifiers": { + "streamingImageId": { + "target": "com.amazonaws.nimble#String" + } + }, + "create": { + "target": "com.amazonaws.nimble#CreateStreamingImage" + }, + "read": { + "target": "com.amazonaws.nimble#GetStreamingImage" + }, + "update": { + "target": "com.amazonaws.nimble#UpdateStreamingImage" + }, + "delete": { + "target": "com.amazonaws.nimble#DeleteStreamingImage" + }, + "list": { + "target": "com.amazonaws.nimble#ListStreamingImages" + }, + "traits": { + "aws.api#arn": { + "template": "streaming-image/{streamingImageId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.cloudformation#cfnResource": { + "additionalSchemas": ["com.amazonaws.nimble#StreamingImage"], + "name": "StreamingImage" + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "aws:TagKeys", + "nimble:studioId" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents a streaming session machine image that can be used to launch a streaming session", + "smithy.api#externalDocumentation": { + "CFNSourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio" + } + } + }, "com.amazonaws.nimble#StreamingImageState": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "CREATE_IN_PROGRESS", @@ -4855,6 +5858,7 @@ "com.amazonaws.nimble#StreamingInstanceType": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "g4dn.xlarge", @@ -4889,7 +5893,7 @@ "target": "com.amazonaws.nimble#StreamingInstanceType" }, "traits": { - "smithy.api#documentation": "

The EC2 instance types that users can select from when launching a streaming session with this launch profile.

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

The EC2 instance types that users can select from when launching a streaming session\n with this launch profile.

", "smithy.api#length": { "min": 1, "max": 30 @@ -4900,119 +5904,197 @@ "type": "structure", "members": { "arn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the resource.

", - "smithy.api#jsonName": "arn" + "smithy.api#documentation": "

The ARN of the resource.

" } }, "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the streaming session.

", - "smithy.api#jsonName": "createdBy" + "smithy.api#documentation": "

The user ID of the user that created the streaming session.

" } }, "ec2InstanceType": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The EC2 Instance type used for the streaming session.

", - "smithy.api#jsonName": "ec2InstanceType" + "smithy.api#documentation": "

The EC2 Instance type used for the streaming session.

" } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ID of the launch profile used to control access from the streaming session.

", - "smithy.api#jsonName": "launchProfileId" + "smithy.api#documentation": "

The ID of the launch profile used to control access from the streaming session.

" } }, "ownedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

", - "smithy.api#jsonName": "ownedBy" + "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

" } }, "sessionId": { "target": "com.amazonaws.nimble#StreamingSessionId", "traits": { - "smithy.api#documentation": "

The session ID.

", - "smithy.api#jsonName": "sessionId" + "smithy.api#documentation": "

The session ID.

" } }, "state": { "target": "com.amazonaws.nimble#StreamingSessionState", "traits": { - "smithy.api#documentation": "

The current state.

", - "smithy.api#jsonName": "state" + "smithy.api#documentation": "

The current state.

" } }, "statusCode": { "target": "com.amazonaws.nimble#StreamingSessionStatusCode", "traits": { - "smithy.api#documentation": "

The status code.

", - "smithy.api#jsonName": "statusCode" + "smithy.api#documentation": "

The status code.

" } }, "statusMessage": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The status message for the streaming session.

", - "smithy.api#jsonName": "statusMessage" + "smithy.api#documentation": "

The status message for the streaming session.

" } }, "streamingImageId": { "target": "com.amazonaws.nimble#StreamingImageId", "traits": { - "smithy.api#documentation": "

The ID of the streaming image.

", - "smithy.api#jsonName": "streamingImageId" + "smithy.api#documentation": "

The ID of the streaming image.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "terminateAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The time the streaming session will automatically terminate if not terminated by the user.

", - "smithy.api#jsonName": "terminateAt" + "smithy.api#documentation": "

The time the streaming session will automatically terminate if not terminated by the\n user.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } }, "updatedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

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

The time the session entered STOP_IN_PROGRESS state.

", + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "stoppedBy": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The user ID of the user that stopped the streaming session.

", + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "startedAt": { + "target": "com.amazonaws.nimble#Timestamp", + "traits": { + "smithy.api#documentation": "

The time the session entered START_IN_PROGRESS state.

", + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "startedBy": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The user ID of the user that started the streaming session.

", + "smithy.api#tags": ["stop_start_streaming_session"] + } + }, + "stopAt": { + "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

", - "smithy.api#jsonName": "updatedBy" + "smithy.api#documentation": "

The time the streaming session will automatically be stopped if the user doesn’t stop\n the session themselves.

", + "smithy.api#tags": ["stop_start_streaming_session"] } } + }, + "traits": { + "smithy.api#documentation": "

A streaming session is a virtual workstation created using a particular launch\n profile.

" } }, "com.amazonaws.nimble#StreamingSessionId": { - "type": "string" + "type": "string", + "traits": { + "smithy.api#documentation": "" + } }, "com.amazonaws.nimble#StreamingSessionList": { "type": "list", "member": { "target": "com.amazonaws.nimble#StreamingSession" + }, + "traits": { + "smithy.api#documentation": "" + } + }, + "com.amazonaws.nimble#StreamingSessionResource": { + "type": "resource", + "identifiers": { + "sessionId": { + "target": "com.amazonaws.nimble#String" + } + }, + "create": { + "target": "com.amazonaws.nimble#CreateStreamingSession" + }, + "read": { + "target": "com.amazonaws.nimble#GetStreamingSession" + }, + "delete": { + "target": "com.amazonaws.nimble#DeleteStreamingSession" + }, + "list": { + "target": "com.amazonaws.nimble#ListStreamingSessions" + }, + "operations": [ + { + "target": "com.amazonaws.nimble#CreateStreamingSessionStream" + }, + { + "target": "com.amazonaws.nimble#GetStreamingSessionStream" + }, + { + "target": "com.amazonaws.nimble#StartStreamingSession" + }, + { + "target": "com.amazonaws.nimble#StopStreamingSession" + } + ], + "traits": { + "aws.api#arn": { + "template": "streaming-session/{sessionId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "nimble:createdBy", + "nimble:ownedBy" + ], + "aws.iam#disableConditionKeyInference": {} } }, "com.amazonaws.nimble#StreamingSessionState": { @@ -5043,6 +6125,26 @@ { "value": "DELETE_FAILED", "name": "DELETE_FAILED" + }, + { + "value": "STOP_IN_PROGRESS", + "name": "STOP_IN_PROGRESS" + }, + { + "value": "START_IN_PROGRESS", + "name": "START_IN_PROGRESS" + }, + { + "value": "STOPPED", + "name": "STOPPED" + }, + { + "value": "STOP_FAILED", + "name": "STOP_FAILED" + }, + { + "value": "START_FAILED", + "name": "START_FAILED" } ] } @@ -5050,6 +6152,7 @@ "com.amazonaws.nimble#StreamingSessionStatusCode": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "STREAMING_SESSION_READY", @@ -5094,6 +6197,22 @@ { "value": "NETWORK_INTERFACE_ERROR", "name": "NETWORK_INTERFACE_ERROR" + }, + { + "value": "STREAMING_SESSION_STOPPED", + "name": "STREAMING_SESSION_STOPPED" + }, + { + "value": "STREAMING_SESSION_STARTED", + "name": "STREAMING_SESSION_STARTED" + }, + { + "value": "STREAMING_SESSION_STOP_IN_PROGRESS", + "name": "STREAMING_SESSION_STOP_IN_PROGRESS" + }, + { + "value": "STREAMING_SESSION_START_IN_PROGRESS", + "name": "STREAMING_SESSION_START_IN_PROGRESS" } ] } @@ -5104,64 +6223,61 @@ "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the streaming session stream.

", - "smithy.api#jsonName": "createdBy" + "smithy.api#documentation": "

The user ID of the user that created the streaming session stream.

" } }, "expiresAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource expires.

", - "smithy.api#jsonName": "expiresAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource expires.

" } }, "ownedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

", - "smithy.api#jsonName": "ownedBy" + "smithy.api#documentation": "

The user ID of the user that owns the streaming session.

" } }, "state": { "target": "com.amazonaws.nimble#StreamingSessionStreamState", "traits": { - "smithy.api#documentation": "

The current state.

", - "smithy.api#jsonName": "state" + "smithy.api#documentation": "

The current state.

" } }, "statusCode": { "target": "com.amazonaws.nimble#StreamingSessionStreamStatusCode", "traits": { - "smithy.api#documentation": "

The streaming session stream status code.

", - "smithy.api#jsonName": "statusCode" + "smithy.api#documentation": "

The streaming session stream status code.

" } }, "streamId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The stream ID.

", - "smithy.api#jsonName": "streamId" + "smithy.api#documentation": "

The stream ID.

" } }, "url": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The URL to connect to this stream using the DCV client.

", - "smithy.api#jsonName": "url" + "smithy.api#sensitive": {} } } + }, + "traits": { + "smithy.api#documentation": "

A stream is an active connection to a streaming session, enabling a studio user to\n control the streaming session using a compatible client. Streaming session streams are\n compatible with the NICE DCV web client, included in the Nimble Studio portal, or\n the NICE DCV desktop client.

" } }, "com.amazonaws.nimble#StreamingSessionStreamExpirationInSeconds": { "type": "integer", "traits": { + "smithy.api#documentation": "", "smithy.api#range": { "min": 60, "max": 3600 @@ -5171,6 +6287,7 @@ "com.amazonaws.nimble#StreamingSessionStreamState": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "READY", @@ -5202,6 +6319,7 @@ "com.amazonaws.nimble#StreamingSessionStreamStatusCode": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "STREAM_CREATE_IN_PROGRESS", @@ -5230,286 +6348,290 @@ ] } }, + "com.amazonaws.nimble#String": { + "type": "string" + }, + "com.amazonaws.nimble#StringList": { + "type": "list", + "member": { + "target": "com.amazonaws.nimble#String" + } + }, "com.amazonaws.nimble#Studio": { "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that studio admins assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "adminRoleArn" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The IAM role that studio admins assume when logging in to the Nimble Studio\n portal.

" } }, "arn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely identifies it. ARNs are unique across all Regions.

", - "smithy.api#jsonName": "arn" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Amazon Resource Name (ARN) that is assigned to a studio resource and uniquely\n identifies it. ARNs are unique across all Regions.

" } }, "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "displayName": { "target": "com.amazonaws.nimble#StudioDisplayName", "traits": { "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#jsonName": "displayName" + "smithy.api#sensitive": {} } }, "homeRegion": { "target": "com.amazonaws.nimble#Region", "traits": { - "smithy.api#documentation": "

The Amazon Web Services Region where the studio resource is located.

", - "smithy.api#jsonName": "homeRegion" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The Amazon Web Services Region where the studio resource is located.

" } }, "ssoClientId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The Amazon Web Services SSO application client ID used to integrate with Amazon Web Services SSO to enable Amazon Web Services SSO users to log in to Nimble portal.

", - "smithy.api#jsonName": "ssoClientId" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The Amazon Web Services SSO application client ID used to integrate with Amazon Web Services SSO\n to enable Amazon Web Services SSO users to log in to Nimble Studio portal.

" } }, "state": { "target": "com.amazonaws.nimble#StudioState", "traits": { - "smithy.api#documentation": "

The current state of the studio resource.

", - "smithy.api#jsonName": "state" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current state of the studio resource.

" } }, "statusCode": { "target": "com.amazonaws.nimble#StudioStatusCode", "traits": { - "smithy.api#documentation": "

Status codes that provide additional detail on the studio state.

", - "smithy.api#jsonName": "statusCode" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Status codes that provide additional detail on the studio state.

" } }, "statusMessage": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

Additional detail on the studio state.

", - "smithy.api#jsonName": "statusMessage" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Additional detail on the studio state.

" } }, "studioEncryptionConfiguration": { "target": "com.amazonaws.nimble#StudioEncryptionConfiguration", "traits": { - "smithy.api#documentation": "

Configuration of the encryption method that is used for the studio.

", - "smithy.api#jsonName": "studioEncryptionConfiguration" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

Configuration of the encryption method that is used for the studio.

" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The unique identifier for a studio resource. In Nimble Studio, all other resources are contained in a studio resource.

", - "smithy.api#jsonName": "studioId" + "smithy.api#documentation": "

The unique identifier for a studio resource. In Nimble Studio, all other\n resources are contained in a studio resource.

" } }, "studioName": { "target": "com.amazonaws.nimble#StudioName", "traits": { - "smithy.api#documentation": "

The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.

", - "smithy.api#jsonName": "studioName" + "smithy.api#documentation": "

The name of the studio, as included in the URL when accessing it in the Nimble Studio portal.

" } }, "studioUrl": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The address of the web page for the studio.

", - "smithy.api#jsonName": "studioUrl" + "aws.cloudformation#cfnMutability": "read", + "smithy.api#documentation": "

The address of the web page for the studio.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "aws.cloudformation#cfnMutability": "create-and-read", + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } }, "userRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that studio users assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "userRoleArn" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The IAM role that studio users assume when logging in to the Nimble Studio\n portal.

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

Represents a studio resource.

\n

A studio is the core resource used with Nimble Studio. You must create a studio\n first, before any other resource type can be created. All other resources you create and\n manage in Nimble Studio are contained within a studio.

\n

When creating a studio, you must provides two IAM roles for use with the Nimble Studio portal. These roles are assumed by your users when they log in to the\n Nimble Studio portal via Amazon Web Services SSO and your identity source.

\n

The user role must have the AmazonNimbleStudio-StudioUser managed policy attached for\n the portal to function properly.

\n

The admin role must have the AmazonNimbleStudio-StudioAdmin managed policy attached\n for the portal to function properly.

\n

Your studio roles must trust the identity.nimble.amazonaws.com service principal to\n function properly.

" } }, "com.amazonaws.nimble#StudioComponent": { "type": "structure", "members": { "arn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the resource.

", - "smithy.api#jsonName": "arn" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The ARN of the resource.

" } }, "configuration": { "target": "com.amazonaws.nimble#StudioComponentConfiguration", "traits": { - "smithy.api#documentation": "

The configuration of the studio component, based on component type.

", - "smithy.api#jsonName": "configuration" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The configuration of the studio component, based on component type.

" } }, "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the studio component.

", - "smithy.api#jsonName": "createdBy" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The user ID of the user that created the studio component.

" } }, "description": { "target": "com.amazonaws.nimble#StudioComponentDescription", "traits": { - "smithy.api#documentation": "

A human-readable description for the studio component resource.

", - "smithy.api#jsonName": "description" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

A human-readable description for the studio component resource.

" } }, "ec2SecurityGroupIds": { "target": "com.amazonaws.nimble#StudioComponentSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

", - "smithy.api#jsonName": "ec2SecurityGroupIds" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

" } }, "initializationScripts": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptList", "traits": { - "smithy.api#documentation": "

Initialization scripts for studio components.

", - "smithy.api#jsonName": "initializationScripts" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

Initialization scripts for studio components.

" } }, "name": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { - "smithy.api#documentation": "

A friendly name for the studio component resource.

", - "smithy.api#jsonName": "name" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

A friendly name for the studio component resource.

" } }, "scriptParameters": { "target": "com.amazonaws.nimble#StudioComponentScriptParameterKeyValueList", "traits": { - "smithy.api#documentation": "

Parameters for the studio component scripts.

", - "smithy.api#jsonName": "scriptParameters" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

Parameters for the studio component scripts.

" } }, "state": { "target": "com.amazonaws.nimble#StudioComponentState", "traits": { - "smithy.api#documentation": "

The current state.

", - "smithy.api#jsonName": "state" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The current state.

" } }, "statusCode": { "target": "com.amazonaws.nimble#StudioComponentStatusCode", "traits": { - "smithy.api#documentation": "

The status code.

", - "smithy.api#jsonName": "statusCode" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status code.

" } }, "statusMessage": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The status message for the studio component.

", - "smithy.api#jsonName": "statusMessage" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The status message for the studio component.

" } }, "studioComponentId": { "target": "com.amazonaws.nimble#StudioComponentId", "traits": { - "smithy.api#documentation": "

The unique identifier for a studio component resource.

", - "smithy.api#jsonName": "studioComponentId" + "smithy.api#documentation": "

The unique identifier for a studio component resource.

" } }, "subtype": { "target": "com.amazonaws.nimble#StudioComponentSubtype", "traits": { - "smithy.api#documentation": "

The specific subtype of a studio component.

", - "smithy.api#jsonName": "subtype" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The specific subtype of a studio component.

" } }, "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

" } }, "type": { "target": "com.amazonaws.nimble#StudioComponentType", "traits": { - "smithy.api#documentation": "

The type of the studio component.

", - "smithy.api#jsonName": "type" + "aws.cloudformation#cfnMutability": "full", + "smithy.api#documentation": "

The type of the studio component.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } }, "updatedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

", - "smithy.api#jsonName": "updatedBy" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

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

A network that is used by a studio’s users and workflows, including render farm, Active Directory, licensing, and file system.

" + "smithy.api#documentation": "

A studio component represents a network resource to be used by a studio's users and\n workflows. A typical studio contains studio components for each of the following: render\n farm, Active Directory, licensing, and file system.

\n

Access to a studio component is managed by specifying security groups for the\n resource, as well as its endpoint.

\n

A studio component also has a set of initialization scripts that are returned by\n GetLaunchProfileInitialization. These initialization scripts run on\n streaming sessions when they start. They provide users with flexibility in controlling\n how the studio resources are configured on a streaming session.

" } }, "com.amazonaws.nimble#StudioComponentConfiguration": { - "type": "structure", + "type": "union", "members": { "activeDirectoryConfiguration": { "target": "com.amazonaws.nimble#ActiveDirectoryConfiguration", "traits": { - "smithy.api#documentation": "

The configuration for a Microsoft Active Directory (Microsoft AD) studio resource.

", - "smithy.api#jsonName": "activeDirectoryConfiguration" + "smithy.api#documentation": "

The configuration for a Microsoft Active Directory (Microsoft AD) studio\n resource.

" } }, "computeFarmConfiguration": { "target": "com.amazonaws.nimble#ComputeFarmConfiguration", "traits": { - "smithy.api#documentation": "

The configuration for a render farm that is associated with a studio resource.

", - "smithy.api#jsonName": "computeFarmConfiguration" + "smithy.api#documentation": "

The configuration for a render farm that is associated with a studio resource.

" } }, "licenseServiceConfiguration": { "target": "com.amazonaws.nimble#LicenseServiceConfiguration", "traits": { - "smithy.api#documentation": "

The configuration for a license service that is associated with a studio resource.

", - "smithy.api#jsonName": "licenseServiceConfiguration" + "smithy.api#documentation": "

The configuration for a license service that is associated with a studio\n resource.

" } }, "sharedFileSystemConfiguration": { "target": "com.amazonaws.nimble#SharedFileSystemConfiguration", "traits": { - "smithy.api#documentation": "

The configuration for a shared file storage system that is associated with a studio resource.

", - "smithy.api#jsonName": "sharedFileSystemConfiguration" + "smithy.api#documentation": "

The configuration for a shared file storage system that is associated with a studio\n resource.

" } } }, @@ -5520,15 +6642,18 @@ "com.amazonaws.nimble#StudioComponentDescription": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 256 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StudioComponentId": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 22 @@ -5542,29 +6667,25 @@ "launchProfileProtocolVersion": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersion", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

", - "smithy.api#jsonName": "launchProfileProtocolVersion" + "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

" } }, "platform": { "target": "com.amazonaws.nimble#LaunchProfilePlatform", "traits": { - "smithy.api#documentation": "

The platform of the initialization script, either WINDOWS or LINUX.

", - "smithy.api#jsonName": "platform" + "smithy.api#documentation": "

The platform of the initialization script, either WINDOWS or LINUX.

" } }, "runContext": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptRunContext", "traits": { - "smithy.api#documentation": "

The method to use when running the initialization script.

", - "smithy.api#jsonName": "runContext" + "smithy.api#documentation": "

The method to use when running the initialization script.

" } }, "script": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptContent", "traits": { - "smithy.api#documentation": "

The initialization script.

", - "smithy.api#jsonName": "script" + "smithy.api#documentation": "

The initialization script.

" } } }, @@ -5575,21 +6696,27 @@ "com.amazonaws.nimble#StudioComponentInitializationScriptContent": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1, "max": 5120 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StudioComponentInitializationScriptList": { "type": "list", "member": { "target": "com.amazonaws.nimble#StudioComponentInitializationScript" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#StudioComponentInitializationScriptRunContext": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "SYSTEM_INITIALIZATION", @@ -5608,6 +6735,7 @@ "target": "com.amazonaws.nimble#StudioComponent" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 50 @@ -5617,9 +6745,57 @@ "com.amazonaws.nimble#StudioComponentName": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 64 + }, + "smithy.api#sensitive": {} + } + }, + "com.amazonaws.nimble#StudioComponentResource": { + "type": "resource", + "identifiers": { + "studioComponentId": { + "target": "com.amazonaws.nimble#String" + } + }, + "create": { + "target": "com.amazonaws.nimble#CreateStudioComponent" + }, + "read": { + "target": "com.amazonaws.nimble#GetStudioComponent" + }, + "update": { + "target": "com.amazonaws.nimble#UpdateStudioComponent" + }, + "delete": { + "target": "com.amazonaws.nimble#DeleteStudioComponent" + }, + "list": { + "target": "com.amazonaws.nimble#ListStudioComponents" + }, + "traits": { + "aws.api#arn": { + "template": "studio-component/{studioComponentId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.cloudformation#cfnResource": { + "additionalSchemas": ["com.amazonaws.nimble#StudioComponent"], + "name": "StudioComponent" + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "aws:TagKeys", + "nimble:studioId" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents a studio component which connects a non-Nimble Studio resource in your account to your studio", + "smithy.api#externalDocumentation": { + "CFNSourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio" } } }, @@ -5629,10 +6805,12 @@ "target": "com.amazonaws.nimble#ScriptParameterKeyValue" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 30 - } + }, + "smithy.api#sensitive": {} } }, "com.amazonaws.nimble#StudioComponentSecurityGroupIdList": { @@ -5641,6 +6819,7 @@ "target": "com.amazonaws.nimble#SecurityGroupId" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 1, "max": 30 @@ -5650,7 +6829,7 @@ "com.amazonaws.nimble#StudioComponentState": { "type": "string", "traits": { - "smithy.api#documentation": "

The current state of the studio component resource.

While a studio component is being created, modified, or deleted, its state will equal \"CREATE_IN_PROGRESS\", \"UPDATE_IN_PROGRESS\", or \"DELETE_IN_PROGRESS\"

These are called 'transition states'.

No modifications may be made to the studio component while it is in a transition state.

If creation of the resource fails, the state will change to `CREATE_FAILED`. The resource StatusCode and StatusMessage will provide more information of why creation failed. The resource in this state will automatically be deleted from your account after a period of time.

If updating the resource fails, the state will change to `UPDATE_FAILED`. The resource StatusCode and StatusMessage will provide more information of why the update failed. The resource will be returned to the state it was in when the update request was invoked.

If deleting the resource fails, the state will change to `DELETE_FAILED`. The resource StatusCode and StatusMessage will provide more information of why the update failed. The resource will be returned to the state it was in when the update request was invoked. After the resource is deleted successfully, it will change to the \"DELETED\" state. The resource will no longer count against service quotas and cannot be used or acted upon any futher. It will be removed from your account after a period of time.

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

The current state of the studio component resource.

\n

While a studio component is being created, modified, or deleted, its state will equal\n \"CREATE_IN_PROGRESS\", \"UPDATE_IN_PROGRESS\", or \"DELETE_IN_PROGRESS\"

\n

These are called 'transition states'.

\n

No modifications may be made to the studio component while it is in a transition\n state.

\n

If creation of the resource fails, the state will change to `CREATE_FAILED`. The\n resource StatusCode and StatusMessage will provide more information of why creation\n failed. The resource in this state will automatically be deleted from your account after\n a period of time.

\n

If updating the resource fails, the state will change to `UPDATE_FAILED`. The resource\n StatusCode and StatusMessage will provide more information of why the update failed. The\n resource will be returned to the state it was in when the update request was\n invoked.

\n

If deleting the resource fails, the state will change to `DELETE_FAILED`. The resource\n StatusCode and StatusMessage will provide more information of why the update failed. The\n resource will be returned to the state it was in when the update request was invoked.\n After the resource is deleted successfully, it will change to the \"DELETED\" state. The\n resource will no longer count against service quotas and cannot be used or acted upon\n any futher. It will be removed from your account after a period of time.

", "smithy.api#enum": [ { "value": "CREATE_IN_PROGRESS", @@ -5690,7 +6869,7 @@ "com.amazonaws.nimble#StudioComponentStatusCode": { "type": "string", "traits": { - "smithy.api#documentation": "

The current status of the studio component resource.

When the resource is in the 'READY' state, the status code signals what the last mutation made to the resource was.

When the resource is in a CREATE_FAILED/UPDATE_FAILED/DELETE_FAILED state, the status code signals what went wrong and why the mutation failed.

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

The current status of the studio component resource.

\n

When the resource is in the 'READY' state, the status code signals what the last\n mutation made to the resource was.

\n

When the resource is in a CREATE_FAILED/UPDATE_FAILED/DELETE_FAILED state, the status\n code signals what went wrong and why the mutation failed.

", "smithy.api#enum": [ { "value": "ACTIVE_DIRECTORY_ALREADY_EXISTS", @@ -5738,6 +6917,7 @@ "com.amazonaws.nimble#StudioComponentSubtype": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "AWS_MANAGED_MICROSOFT_AD", @@ -5764,80 +6944,75 @@ "createdAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

", - "smithy.api#jsonName": "createdAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was created.

" } }, "createdBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that created the studio component.

", - "smithy.api#jsonName": "createdBy" + "smithy.api#documentation": "

The user ID of the user that created the studio component.

" } }, "description": { "target": "com.amazonaws.nimble#StudioComponentDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#documentation": "

The description.

" } }, "name": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { - "smithy.api#documentation": "

The name for the studio component.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the studio component.

" } }, "studioComponentId": { "target": "com.amazonaws.nimble#StudioComponentId", "traits": { - "smithy.api#documentation": "

The unique identifier for a studio component resource.

", - "smithy.api#jsonName": "studioComponentId" + "smithy.api#documentation": "

The unique identifier for a studio component resource.

" } }, "subtype": { "target": "com.amazonaws.nimble#StudioComponentSubtype", "traits": { - "smithy.api#documentation": "

The specific subtype of a studio component.

", - "smithy.api#jsonName": "subtype" + "smithy.api#documentation": "

The specific subtype of a studio component.

" } }, "type": { "target": "com.amazonaws.nimble#StudioComponentType", "traits": { - "smithy.api#documentation": "

The type of the studio component.

", - "smithy.api#jsonName": "type" + "smithy.api#documentation": "

The type of the studio component.

" } }, "updatedAt": { "target": "com.amazonaws.nimble#Timestamp", "traits": { - "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

", - "smithy.api#jsonName": "updatedAt" + "smithy.api#documentation": "

The Unix epoch timestamp in seconds for when the resource was updated.

" } }, "updatedBy": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

", - "smithy.api#jsonName": "updatedBy" + "smithy.api#documentation": "

The user ID of the user that most recently updated the resource.

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

" + "smithy.api#documentation": "

" } }, "com.amazonaws.nimble#StudioComponentSummaryList": { "type": "list", "member": { "target": "com.amazonaws.nimble#StudioComponentSummary" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#StudioComponentType": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "ACTIVE_DIRECTORY", @@ -5865,6 +7040,7 @@ "com.amazonaws.nimble#StudioDisplayName": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 64 @@ -5877,15 +7053,13 @@ "keyArn": { "target": "com.amazonaws.nimble#StudioEncryptionConfigurationKeyArn", "traits": { - "smithy.api#documentation": "

The ARN for a KMS key that is used to encrypt studio data.

", - "smithy.api#jsonName": "keyArn" + "smithy.api#documentation": "

The ARN for a KMS key that is used to encrypt studio data.

" } }, "keyType": { "target": "com.amazonaws.nimble#StudioEncryptionConfigurationKeyType", "traits": { "smithy.api#documentation": "

The type of KMS key that is used to encrypt studio data.

", - "smithy.api#jsonName": "keyType", "smithy.api#required": {} } } @@ -5897,11 +7071,11 @@ "com.amazonaws.nimble#StudioEncryptionConfigurationKeyArn": { "type": "string", "traits": { - "smithy.api#documentation": "

The Amazon Resource Name (ARN) for a KMS key that is used to encrypt studio data.

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

The Amazon Resource Name (ARN) for a KMS key that is used to encrypt studio\n data.

", "smithy.api#length": { "min": 4 }, - "smithy.api#pattern": "^arn:" + "smithy.api#pattern": "^arn:.*" } }, "com.amazonaws.nimble#StudioEncryptionConfigurationKeyType": { @@ -5924,32 +7098,41 @@ "type": "list", "member": { "target": "com.amazonaws.nimble#Studio" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#StudioMembership": { "type": "structure", "members": { "identityStoreId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ID of the identity store.

", - "smithy.api#jsonName": "identityStoreId" + "smithy.api#documentation": "

The ID of the identity store.

" } }, "persona": { "target": "com.amazonaws.nimble#StudioPersona", "traits": { - "smithy.api#documentation": "

The persona.

", - "smithy.api#jsonName": "persona" + "smithy.api#documentation": "

The persona.

" } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

", - "smithy.api#jsonName": "principalId" + "smithy.api#documentation": "

The principal ID.

" + } + }, + "sid": { + "target": "com.amazonaws.nimble#String", + "traits": { + "smithy.api#documentation": "

The Active Directory Security Identifier for this user, if available.

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

A studio member is an association of a user from your studio identity source to\n elevated permissions that they are granted in the studio.

\n

When you add a user to your studio using the Nimble Studio console, they are\n given access to the studio's AWS SSO application and are given access to log in to the\n Nimble Studio portal. These users have the permissions provided by the studio's\n user IAM role and do not appear in the studio membership collection. Only studio admins\n appear in studio membership.

\n

When you add a user to studio membership with the persona ADMIN, upon logging in to\n the Nimble Studio portal, they are granted permissions specified by the Studio's\n Admin IAM role.

" } }, "com.amazonaws.nimble#StudioMembershipList": { @@ -5958,6 +7141,7 @@ "target": "com.amazonaws.nimble#StudioMembership" }, "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 0, "max": 20 @@ -5967,6 +7151,7 @@ "com.amazonaws.nimble#StudioName": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#length": { "min": 3, "max": 64 @@ -5977,6 +7162,7 @@ "com.amazonaws.nimble#StudioPersona": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "ADMINISTRATOR", @@ -5985,9 +7171,73 @@ ] } }, + "com.amazonaws.nimble#StudioResource": { + "type": "resource", + "identifiers": { + "studioId": { + "target": "com.amazonaws.nimble#String" + } + }, + "create": { + "target": "com.amazonaws.nimble#CreateStudio" + }, + "read": { + "target": "com.amazonaws.nimble#GetStudio" + }, + "update": { + "target": "com.amazonaws.nimble#UpdateStudio" + }, + "delete": { + "target": "com.amazonaws.nimble#DeleteStudio" + }, + "list": { + "target": "com.amazonaws.nimble#ListStudios" + }, + "operations": [ + { + "target": "com.amazonaws.nimble#DeleteStudioMember" + }, + { + "target": "com.amazonaws.nimble#GetStudioMember" + }, + { + "target": "com.amazonaws.nimble#ListStudioMembers" + }, + { + "target": "com.amazonaws.nimble#PutStudioMembers" + }, + { + "target": "com.amazonaws.nimble#StartStudioSSOConfigurationRepair" + } + ], + "traits": { + "aws.api#arn": { + "template": "studio/{studioId}", + "absolute": false, + "noAccount": false, + "noRegion": false + }, + "aws.cloudformation#cfnResource": { + "additionalSchemas": ["com.amazonaws.nimble#Studio"], + "name": "Studio" + }, + "aws.iam#conditionKeys": [ + "aws:ResourceTag/${TagKey}", + "aws:RequestTag/${TagKey}", + "aws:TagKeys", + "nimble:studioId" + ], + "aws.iam#disableConditionKeyInference": {}, + "smithy.api#documentation": "Represents a studio that contains other Nimble Studio resources", + "smithy.api#externalDocumentation": { + "CFNSourceUrl": "https://github.com/aws-cloudformation/aws-cloudformation-resource-providers-nimblestudio" + } + } + }, "com.amazonaws.nimble#StudioState": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#enum": [ { "value": "CREATE_IN_PROGRESS", @@ -6136,6 +7386,7 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to add or overwrite one or more tags for the specified Nimble Studio resource", "smithy.api#documentation": "

Creates tags for a resource, given its ARN.

", "smithy.api#http": { "method": "POST", @@ -6148,9 +7399,9 @@ "type": "structure", "members": { "resourceArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the target resource for tagging operations.

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

The Amazon Resource Name (ARN) of the resource you want to add tags to.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -6158,13 +7409,44 @@ "tags": { "target": "com.amazonaws.nimble#Tags", "traits": { - "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this resource.

", - "smithy.api#jsonName": "tags" + "smithy.api#documentation": "

A collection of labels, in the form of key:value pairs, that apply to this\n resource.

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

The ARN for the role that manages access.

" + "smithy.api#documentation": "

", + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource", + "ids": { + "studioId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StudioComponentResource", + "ids": { + "studioComponentId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#LaunchProfileResource", + "ids": { + "launchProfileId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingSessionResource", + "ids": { + "sessionId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingImageResource", + "ids": { + "streamingImageId": "resourceArn" + } + } + ] } }, "com.amazonaws.nimble#TagResourceResponse": { @@ -6174,45 +7456,48 @@ "com.amazonaws.nimble#Tags": { "type": "map", "key": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" }, "value": { - "target": "com.amazonaws.nimble#__string" + "target": "com.amazonaws.nimble#String" + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ThrottlingException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

The request throughput limit was exceeded.

", "smithy.api#error": "client", - "smithy.api#httpError": 429 + "smithy.api#httpError": 429, + "smithy.api#retryable": {} } }, "com.amazonaws.nimble#Timestamp": { "type": "timestamp", "traits": { + "smithy.api#documentation": "", "smithy.api#timestampFormat": "date-time" } }, @@ -6248,33 +7533,69 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to disassociate one or more tags from the specified Nimble Studio resource", "smithy.api#documentation": "

Deletes the tags for a resource.

", "smithy.api#http": { "method": "DELETE", "uri": "/2020-08-01/tags/{resourceArn}", "code": 204 - } + }, + "smithy.api#idempotent": {} } }, "com.amazonaws.nimble#UntagResourceRequest": { "type": "structure", "members": { "resourceArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The ARN of the target resource for tagging operations.

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

Identifies the Amazon Resource Name(ARN) key from which you are removing tags.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "tagKeys": { - "target": "com.amazonaws.nimble#multiValueQueryStringList", + "target": "com.amazonaws.nimble#StringList", "traits": { - "smithy.api#documentation": "

An array of tag keys to delete.

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

One or more tag keys. Specify only the tag keys, not the tag values.

", "smithy.api#httpQuery": "tagKeys", "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#references": [ + { + "resource": "com.amazonaws.nimble#StudioResource", + "ids": { + "studioId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StudioComponentResource", + "ids": { + "studioComponentId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#LaunchProfileResource", + "ids": { + "launchProfileId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingSessionResource", + "ids": { + "sessionId": "resourceArn" + } + }, + { + "resource": "com.amazonaws.nimble#StreamingImageResource", + "ids": { + "streamingImageId": "resourceArn" + } + } + ] } }, "com.amazonaws.nimble#UntagResourceResponse": { @@ -6313,6 +7634,7 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to update a launch profile", "smithy.api#documentation": "

Update a launch profile.

", "smithy.api#http": { "method": "PATCH", @@ -6353,6 +7675,7 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to update a launch profile member", "smithy.api#documentation": "

Update a user persona in launch profile membership.

", "smithy.api#http": { "method": "PATCH", @@ -6367,15 +7690,15 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

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

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -6384,29 +7707,28 @@ "target": "com.amazonaws.nimble#LaunchProfilePersona", "traits": { "smithy.api#documentation": "

The persona.

", - "smithy.api#jsonName": "persona", "smithy.api#required": {} } }, "principalId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The principal ID.

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

The principal ID. This currently supports a Amazon Web Services SSO UserId.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

The principal ID.

" + "smithy.api#documentation": "

" } }, "com.amazonaws.nimble#UpdateLaunchProfileMemberResponse": { @@ -6415,8 +7737,7 @@ "member": { "target": "com.amazonaws.nimble#LaunchProfileMembership", "traits": { - "smithy.api#documentation": "

The member.

", - "smithy.api#jsonName": "member" + "smithy.api#documentation": "

The updated member.

" } } } @@ -6427,7 +7748,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -6435,14 +7757,13 @@ "description": { "target": "com.amazonaws.nimble#LaunchProfileDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#documentation": "

The description.

" } }, "launchProfileId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The launch profile ID.

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

The Launch Profile ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -6450,42 +7771,39 @@ "launchProfileProtocolVersions": { "target": "com.amazonaws.nimble#LaunchProfileProtocolVersionList", "traits": { - "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid version is \"2021-03-31\".

", - "smithy.api#jsonName": "launchProfileProtocolVersions" + "smithy.api#documentation": "

The version number of the protocol that is used by the launch profile. The only valid\n version is \"2021-03-31\".

" } }, "name": { "target": "com.amazonaws.nimble#LaunchProfileName", "traits": { - "smithy.api#documentation": "

The name for the launch profile.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the launch profile.

" } }, "streamConfiguration": { "target": "com.amazonaws.nimble#StreamConfigurationCreate", "traits": { - "smithy.api#documentation": "

A configuration for a streaming session.

", - "smithy.api#jsonName": "streamConfiguration" + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

A configuration for a streaming session.

" } }, "studioComponentIds": { "target": "com.amazonaws.nimble#LaunchProfileStudioComponentIdList", "traits": { - "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this launch profile.

", - "smithy.api#jsonName": "studioComponentIds" + "smithy.api#documentation": "

Unique identifiers for a collection of studio components that can be used with this\n launch profile.

" } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

The launch profile ID.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateLaunchProfileResponse": { @@ -6494,10 +7812,12 @@ "launchProfile": { "target": "com.amazonaws.nimble#LaunchProfile", "traits": { - "smithy.api#documentation": "

The launch profile.

", - "smithy.api#jsonName": "launchProfile" + "smithy.api#documentation": "

The launch profile.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateStreamingImage": { @@ -6532,6 +7852,7 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to update a streaming image", "smithy.api#documentation": "

Update streaming image.

", "smithy.api#http": { "method": "PATCH", @@ -6546,7 +7867,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -6555,18 +7877,18 @@ "target": "com.amazonaws.nimble#StreamingImageDescription", "traits": { "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#sensitive": {} } }, "name": { "target": "com.amazonaws.nimble#StreamingImageName", "traits": { "smithy.api#documentation": "

The name for the streaming image.

", - "smithy.api#jsonName": "name" + "smithy.api#sensitive": {} } }, "streamingImageId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The streaming image ID.

", "smithy.api#httpLabel": {}, @@ -6574,16 +7896,16 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

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

The streaming image ID.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateStreamingImageResponse": { @@ -6592,10 +7914,12 @@ "streamingImage": { "target": "com.amazonaws.nimble#StreamingImage", "traits": { - "smithy.api#documentation": "

", - "smithy.api#jsonName": "streamingImage" + "smithy.api#documentation": "

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

" } }, "com.amazonaws.nimble#UpdateStudio": { @@ -6630,7 +7954,9 @@ } ], "traits": { - "smithy.api#documentation": "

Update a Studio resource.

Currently, this operation only supports updating the displayName of your studio.

", + "aws.iam#actionPermissionDescription": "Grants permission to update a studio", + "aws.iam#requiredActions": ["iam:PassRole"], + "smithy.api#documentation": "

Update a Studio resource.

\n

Currently, this operation only supports updating the displayName of your\n studio.

", "smithy.api#http": { "method": "PATCH", "uri": "/2020-08-01/studios/{studioId}", @@ -6670,6 +7996,8 @@ } ], "traits": { + "aws.iam#actionPermissionDescription": "Grants permission to update a studio component", + "aws.iam#requiredActions": ["ec2:DescribeSecurityGroups", "fsx:DescribeFileSystems", "ds:DescribeDirectories"], "smithy.api#documentation": "

Updates a studio component resource.

", "smithy.api#http": { "method": "PATCH", @@ -6684,7 +8012,8 @@ "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -6692,47 +8021,41 @@ "configuration": { "target": "com.amazonaws.nimble#StudioComponentConfiguration", "traits": { - "smithy.api#documentation": "

The configuration of the studio component, based on component type.

", - "smithy.api#jsonName": "configuration" + "smithy.api#documentation": "

The configuration of the studio component, based on component type.

" } }, "description": { "target": "com.amazonaws.nimble#StudioComponentDescription", "traits": { - "smithy.api#documentation": "

The description.

", - "smithy.api#jsonName": "description" + "smithy.api#documentation": "

The description.

" } }, "ec2SecurityGroupIds": { "target": "com.amazonaws.nimble#StudioComponentSecurityGroupIdList", "traits": { - "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

", - "smithy.api#jsonName": "ec2SecurityGroupIds" + "smithy.api#documentation": "

The EC2 security groups that control access to the studio component.

" } }, "initializationScripts": { "target": "com.amazonaws.nimble#StudioComponentInitializationScriptList", "traits": { - "smithy.api#documentation": "

Initialization scripts for studio components.

", - "smithy.api#jsonName": "initializationScripts" + "smithy.api#documentation": "

Initialization scripts for studio components.

" } }, "name": { "target": "com.amazonaws.nimble#StudioComponentName", "traits": { - "smithy.api#documentation": "

The name for the studio component.

", - "smithy.api#jsonName": "name" + "smithy.api#documentation": "

The name for the studio component.

" } }, "scriptParameters": { "target": "com.amazonaws.nimble#StudioComponentScriptParameterKeyValueList", "traits": { - "smithy.api#documentation": "

Parameters for the studio component scripts.

", - "smithy.api#jsonName": "scriptParameters" + "smithy.api#documentation": "

Parameters for the studio component scripts.

" } }, "studioComponentId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { "smithy.api#documentation": "

The studio component ID.

", "smithy.api#httpLabel": {}, @@ -6740,9 +8063,9 @@ } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } @@ -6750,20 +8073,18 @@ "subtype": { "target": "com.amazonaws.nimble#StudioComponentSubtype", "traits": { - "smithy.api#documentation": "

The specific subtype of a studio component.

", - "smithy.api#jsonName": "subtype" + "smithy.api#documentation": "

The specific subtype of a studio component.

" } }, "type": { "target": "com.amazonaws.nimble#StudioComponentType", "traits": { - "smithy.api#documentation": "

The type of the studio component.

", - "smithy.api#jsonName": "type" + "smithy.api#documentation": "

The type of the studio component.

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

The studio component ID.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateStudioComponentResponse": { @@ -6772,26 +8093,28 @@ "studioComponent": { "target": "com.amazonaws.nimble#StudioComponent", "traits": { - "smithy.api#documentation": "

Information about the studio component.

", - "smithy.api#jsonName": "studioComponent" + "smithy.api#documentation": "

Information about the studio component.

" } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateStudioRequest": { "type": "structure", "members": { "adminRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "adminRoleArn" + "smithy.api#documentation": "

The IAM role that Studio Admins will assume when logging in to the Nimble Studio\n portal.

" } }, "clientToken": { "target": "com.amazonaws.nimble#ClientToken", "traits": { - "smithy.api#documentation": "

To make an idempotent API request using one of these actions, specify a client token in the request. You should not reuse the same client token for other API requests. If you retry a request that completed successfully using the same client token and the same parameters, the retry succeeds without performing any further actions. If you retry a successful request using the same client token, but one or more of the parameters are different, the retry fails with a ValidationException error.

", + "aws.cloudformation#cfnExcludeProperty": {}, + "smithy.api#documentation": "

Unique, case-sensitive identifier that you provide to ensure the idempotency of the\n request. If you don’t specify a client token, the AWS SDK automatically generates a\n client token and uses it for the request to ensure idempotency.

", "smithy.api#httpHeader": "X-Amz-Client-Token", "smithy.api#idempotencyToken": {} } @@ -6800,27 +8123,26 @@ "target": "com.amazonaws.nimble#StudioDisplayName", "traits": { "smithy.api#documentation": "

A friendly name for the studio.

", - "smithy.api#jsonName": "displayName" + "smithy.api#sensitive": {} } }, "studioId": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The studio ID.

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

The studio ID.

", "smithy.api#httpLabel": {}, "smithy.api#required": {} } }, "userRoleArn": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio portal.

", - "smithy.api#jsonName": "userRoleArn" + "smithy.api#documentation": "

The IAM role that Studio Users will assume when logging in to the Nimble Studio\n portal.

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

The studio ID.

" + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#UpdateStudioResponse": { @@ -6830,37 +8152,38 @@ "target": "com.amazonaws.nimble#Studio", "traits": { "smithy.api#documentation": "

Information about a studio.

", - "smithy.api#jsonName": "studio" + "smithy.api#required": {} } } + }, + "traits": { + "smithy.api#documentation": "" } }, "com.amazonaws.nimble#ValidationException": { "type": "structure", "members": { "code": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A more specific error code.

", - "smithy.api#jsonName": "code" + "smithy.api#documentation": "

A more specific error code.

" } }, "context": { "target": "com.amazonaws.nimble#ExceptionContext", "traits": { - "smithy.api#documentation": "

The exception context.

", - "smithy.api#jsonName": "context" + "smithy.api#documentation": "

The exception context.

" } }, "message": { - "target": "com.amazonaws.nimble#__string", + "target": "com.amazonaws.nimble#String", "traits": { - "smithy.api#documentation": "

A human-readable description of the error.

", - "smithy.api#jsonName": "message" + "smithy.api#documentation": "

A human-readable description of the error.

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

One of the parameters in the request is invalid.

", "smithy.api#error": "client", "smithy.api#httpError": 400 } @@ -6868,172 +8191,119 @@ "com.amazonaws.nimble#WindowsMountDrive": { "type": "string", "traits": { + "smithy.api#documentation": "", "smithy.api#pattern": "^[A-Z]$" } }, - "com.amazonaws.nimble#__string": { - "type": "string" - }, - "com.amazonaws.nimble#multiValueQueryStringList": { - "type": "list", - "member": { - "target": "com.amazonaws.nimble#__string" - } - }, "com.amazonaws.nimble#nimble": { "type": "service", - "version": "2020-08-01", - "operations": [ - { - "target": "com.amazonaws.nimble#AcceptEulas" - }, - { - "target": "com.amazonaws.nimble#CreateLaunchProfile" - }, - { - "target": "com.amazonaws.nimble#CreateStreamingImage" - }, - { - "target": "com.amazonaws.nimble#CreateStreamingSession" - }, - { - "target": "com.amazonaws.nimble#CreateStreamingSessionStream" - }, - { - "target": "com.amazonaws.nimble#CreateStudio" - }, - { - "target": "com.amazonaws.nimble#CreateStudioComponent" - }, - { - "target": "com.amazonaws.nimble#DeleteLaunchProfile" - }, - { - "target": "com.amazonaws.nimble#DeleteLaunchProfileMember" - }, - { - "target": "com.amazonaws.nimble#DeleteStreamingImage" - }, - { - "target": "com.amazonaws.nimble#DeleteStreamingSession" - }, - { - "target": "com.amazonaws.nimble#DeleteStudio" - }, - { - "target": "com.amazonaws.nimble#DeleteStudioComponent" - }, - { - "target": "com.amazonaws.nimble#DeleteStudioMember" - }, - { - "target": "com.amazonaws.nimble#GetEula" - }, - { - "target": "com.amazonaws.nimble#GetLaunchProfile" - }, - { - "target": "com.amazonaws.nimble#GetLaunchProfileDetails" - }, - { - "target": "com.amazonaws.nimble#GetLaunchProfileInitialization" - }, - { - "target": "com.amazonaws.nimble#GetLaunchProfileMember" - }, - { - "target": "com.amazonaws.nimble#GetStreamingImage" - }, - { - "target": "com.amazonaws.nimble#GetStreamingSession" - }, - { - "target": "com.amazonaws.nimble#GetStreamingSessionStream" - }, - { - "target": "com.amazonaws.nimble#GetStudio" - }, - { - "target": "com.amazonaws.nimble#GetStudioComponent" - }, - { - "target": "com.amazonaws.nimble#GetStudioMember" - }, - { - "target": "com.amazonaws.nimble#ListEulaAcceptances" - }, - { - "target": "com.amazonaws.nimble#ListEulas" - }, - { - "target": "com.amazonaws.nimble#ListLaunchProfileMembers" - }, - { - "target": "com.amazonaws.nimble#ListLaunchProfiles" - }, - { - "target": "com.amazonaws.nimble#ListStreamingImages" - }, - { - "target": "com.amazonaws.nimble#ListStreamingSessions" - }, - { - "target": "com.amazonaws.nimble#ListStudioComponents" + "traits": { + "aws.api#service": { + "sdkId": "nimble", + "arnNamespace": "nimble", + "cloudFormationName": "NimbleStudio", + "cloudTrailEventSource": "nimble.amazonaws.com", + "endpointPrefix": "nimble" }, - { - "target": "com.amazonaws.nimble#ListStudioMembers" + "aws.auth#sigv4": { + "name": "nimble" }, - { - "target": "com.amazonaws.nimble#ListStudios" + "aws.iam#defineConditionKeys": { + "nimble:ownedBy": { + "type": "String", + "documentation": "Filters access based on the ownedBy request parameter or the ID of the owner of the resource", + "externalDocumentation": "${ContextKeysDocRoot}" + }, + "nimble:principalId": { + "type": "String", + "documentation": "Filters access based on the principalId request parameter", + "externalDocumentation": "${ContextKeysDocRoot}" + }, + "nimble:createdBy": { + "type": "String", + "documentation": "Filters access based on the createdBy request parameter or the ID of the creator of the resource", + "externalDocumentation": "${ContextKeysDocRoot}" + }, + "nimble:studioId": { + "type": "String", + "documentation": "Filters access to resources in a specific studio", + "externalDocumentation": "${ContextKeysDocRoot}" + }, + "aws:RequestTag/${TagKey}": { + "type": "String", + "documentation": "Filters access by a tag key and value pair that is allowed in the request", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-requesttag" + }, + "aws:TagKeys": { + "type": "String", + "documentation": "Filters access by a list of tag keys that are allowed in the request", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-tagkeys" + }, + "nimble:requesterPrincipalId": { + "type": "String", + "documentation": "Filters access to Nimble Studio portal using the ID of the logged in user", + "externalDocumentation": "${ContextKeysDocRoot}" + }, + "aws:ResourceTag/${TagKey}": { + "type": "String", + "documentation": "Filters access by a tag key and value pair of a resource", + "externalDocumentation": "${DocHomeURL}IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourcetag" + } }, + "aws.protocols#restJson1": {}, + "smithy.api#cors": { + "additionalAllowedHeaders": [ + "authorization", + "x-amz-content-sha256", + "x-amzn-trace-id", + "x-amz-date", + "x-api-key", + "x-amz-client-token", + "x-amz-user-agent", + "*", + "content-type", + "x-amz-dryrun" + ], + "additionalExposedHeaders": ["x-amz-apigw-id", "x-amzn-trace-id", "x-amzn-errortype", "x-amzn-requestid"] + }, + "smithy.api#documentation": "

Welcome to the Amazon Nimble Studio API reference. This API reference provides\n methods, schema, resources, parameters, and more to help you get the most out of Nimble\n Studio.

\n

Nimble Studio is a virtual studio that empowers visual effects, animation, and\n interactive content teams to create content securely within a scalable, private cloud\n service.

", + "smithy.api#title": "AmazonNimbleStudio" + }, + "version": "2020-08-01", + "operations": [ { "target": "com.amazonaws.nimble#ListTagsForResource" }, { - "target": "com.amazonaws.nimble#PutLaunchProfileMembers" - }, - { - "target": "com.amazonaws.nimble#PutStudioMembers" + "target": "com.amazonaws.nimble#TagResource" }, { - "target": "com.amazonaws.nimble#StartStudioSSOConfigurationRepair" - }, + "target": "com.amazonaws.nimble#UntagResource" + } + ], + "resources": [ { - "target": "com.amazonaws.nimble#TagResource" + "target": "com.amazonaws.nimble#EulaAcceptanceResource" }, { - "target": "com.amazonaws.nimble#UntagResource" + "target": "com.amazonaws.nimble#EulaResource" }, { - "target": "com.amazonaws.nimble#UpdateLaunchProfile" + "target": "com.amazonaws.nimble#LaunchProfileResource" }, { - "target": "com.amazonaws.nimble#UpdateLaunchProfileMember" + "target": "com.amazonaws.nimble#StreamingImageResource" }, { - "target": "com.amazonaws.nimble#UpdateStreamingImage" + "target": "com.amazonaws.nimble#StreamingSessionResource" }, { - "target": "com.amazonaws.nimble#UpdateStudio" + "target": "com.amazonaws.nimble#StudioComponentResource" }, { - "target": "com.amazonaws.nimble#UpdateStudioComponent" + "target": "com.amazonaws.nimble#StudioResource" } - ], - "traits": { - "aws.api#service": { - "sdkId": "nimble", - "arnNamespace": "nimble", - "cloudFormationName": "Nimble", - "cloudTrailEventSource": "nimble.amazonaws.com", - "endpointPrefix": "nimble" - }, - "aws.auth#sigv4": { - "name": "nimble" - }, - "aws.protocols#restJson1": {}, - "smithy.api#title": "AmazonNimbleStudio" - } + ] } } }