Skip to content

Commit 389837a

Browse files
author
awstools
committed
feat(client-quicksight): API UpdatePublicSharingSettings enables IAM admins to enable/disable account level setting for public access of dashboards. When enabled, owners/co-owners for dashboards can enable public access on their dashboards. These dashboards can only be accessed through share link or embedding.
1 parent c528661 commit 389837a

10 files changed

+405
-8
lines changed

clients/client-quicksight/src/QuickSight.ts

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -507,6 +507,11 @@ import {
507507
UpdateIpRestrictionCommandInput,
508508
UpdateIpRestrictionCommandOutput,
509509
} from "./commands/UpdateIpRestrictionCommand";
510+
import {
511+
UpdatePublicSharingSettingsCommand,
512+
UpdatePublicSharingSettingsCommandInput,
513+
UpdatePublicSharingSettingsCommandOutput,
514+
} from "./commands/UpdatePublicSharingSettingsCommand";
510515
import {
511516
UpdateTemplateAliasCommand,
512517
UpdateTemplateAliasCommandInput,
@@ -2579,7 +2584,7 @@ export class QuickSight extends QuickSightClient {
25792584
* that can be customized using the <code>
25802585
* <a href="https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html#QS-GenerateEmbedUrlForAnonymousUser-request-SessionLifetimeInMinutes">SessionLifetimeInMinutes</a>
25812586
* </code> parameter.</p>
2582-
* <p>The resulting user session is valid for 15 minutes (default) to 10 hours (maximum).</p>
2587+
* <p>The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours. </p>
25832588
* </li>
25842589
* <li>
25852590
* <p>You are charged only when the URL is used or there is interaction with Amazon QuickSight.</p>
@@ -2630,7 +2635,7 @@ export class QuickSight extends QuickSightClient {
26302635
* that can be customized using the <code>
26312636
* <a href="https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html#QS-GenerateEmbedUrlForRegisteredUser-request-SessionLifetimeInMinutes">SessionLifetimeInMinutes</a>
26322637
* </code> parameter.</p>
2633-
* <p>The resulting user session is valid for 15 minutes (default) to 10 hours (maximum).</p>
2638+
* <p>The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.</p>
26342639
* </li>
26352640
* <li>
26362641
* <p>You are charged only when the URL is used or there is interaction with Amazon QuickSight.</p>
@@ -4248,6 +4253,40 @@ export class QuickSight extends QuickSightClient {
42484253
}
42494254
}
42504255

4256+
/**
4257+
* <p>Use the UpdatePublicSharingSettings operation to enable or disable the public sharing settings of an Amazon QuickSight dashboard.</p>
4258+
* <p>To use this operation, enable session capacity pricing on your Amazon QuickSight account.</p>
4259+
* <p>Before you can enable public sharing on your account, you need to allow public sharing permissions to an administrative user in the IAM console. For more information on using IAM with Amazon QuickSight, see <a href="https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html">Using Amazon QuickSight with IAM</a>.</p>
4260+
*/
4261+
public updatePublicSharingSettings(
4262+
args: UpdatePublicSharingSettingsCommandInput,
4263+
options?: __HttpHandlerOptions
4264+
): Promise<UpdatePublicSharingSettingsCommandOutput>;
4265+
public updatePublicSharingSettings(
4266+
args: UpdatePublicSharingSettingsCommandInput,
4267+
cb: (err: any, data?: UpdatePublicSharingSettingsCommandOutput) => void
4268+
): void;
4269+
public updatePublicSharingSettings(
4270+
args: UpdatePublicSharingSettingsCommandInput,
4271+
options: __HttpHandlerOptions,
4272+
cb: (err: any, data?: UpdatePublicSharingSettingsCommandOutput) => void
4273+
): void;
4274+
public updatePublicSharingSettings(
4275+
args: UpdatePublicSharingSettingsCommandInput,
4276+
optionsOrCb?: __HttpHandlerOptions | ((err: any, data?: UpdatePublicSharingSettingsCommandOutput) => void),
4277+
cb?: (err: any, data?: UpdatePublicSharingSettingsCommandOutput) => void
4278+
): Promise<UpdatePublicSharingSettingsCommandOutput> | void {
4279+
const command = new UpdatePublicSharingSettingsCommand(args);
4280+
if (typeof optionsOrCb === "function") {
4281+
this.send(command, optionsOrCb);
4282+
} else if (typeof cb === "function") {
4283+
if (typeof optionsOrCb !== "object") throw new Error(`Expect http options but get ${typeof optionsOrCb}`);
4284+
this.send(command, optionsOrCb || {}, cb);
4285+
} else {
4286+
return this.send(command, optionsOrCb);
4287+
}
4288+
}
4289+
42514290
/**
42524291
* <p>Updates a template from an existing Amazon QuickSight analysis or another template.</p>
42534292
*/

clients/client-quicksight/src/QuickSightClient.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,10 @@ import {
297297
UpdateIpRestrictionCommandInput,
298298
UpdateIpRestrictionCommandOutput,
299299
} from "./commands/UpdateIpRestrictionCommand";
300+
import {
301+
UpdatePublicSharingSettingsCommandInput,
302+
UpdatePublicSharingSettingsCommandOutput,
303+
} from "./commands/UpdatePublicSharingSettingsCommand";
300304
import {
301305
UpdateTemplateAliasCommandInput,
302306
UpdateTemplateAliasCommandOutput,
@@ -426,6 +430,7 @@ export type ServiceInputTypes =
426430
| UpdateGroupCommandInput
427431
| UpdateIAMPolicyAssignmentCommandInput
428432
| UpdateIpRestrictionCommandInput
433+
| UpdatePublicSharingSettingsCommandInput
429434
| UpdateTemplateAliasCommandInput
430435
| UpdateTemplateCommandInput
431436
| UpdateTemplatePermissionsCommandInput
@@ -545,6 +550,7 @@ export type ServiceOutputTypes =
545550
| UpdateGroupCommandOutput
546551
| UpdateIAMPolicyAssignmentCommandOutput
547552
| UpdateIpRestrictionCommandOutput
553+
| UpdatePublicSharingSettingsCommandOutput
548554
| UpdateTemplateAliasCommandOutput
549555
| UpdateTemplateCommandOutput
550556
| UpdateTemplatePermissionsCommandOutput

clients/client-quicksight/src/commands/GenerateEmbedUrlForAnonymousUserCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ export interface GenerateEmbedUrlForAnonymousUserCommandOutput
3636
* that can be customized using the <code>
3737
* <a href="https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html#QS-GenerateEmbedUrlForAnonymousUser-request-SessionLifetimeInMinutes">SessionLifetimeInMinutes</a>
3838
* </code> parameter.</p>
39-
* <p>The resulting user session is valid for 15 minutes (default) to 10 hours (maximum).</p>
39+
* <p>The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours. </p>
4040
* </li>
4141
* <li>
4242
* <p>You are charged only when the URL is used or there is interaction with Amazon QuickSight.</p>

clients/client-quicksight/src/commands/GenerateEmbedUrlForRegisteredUserCommand.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export interface GenerateEmbedUrlForRegisteredUserCommandOutput
3939
* that can be customized using the <code>
4040
* <a href="https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html#QS-GenerateEmbedUrlForRegisteredUser-request-SessionLifetimeInMinutes">SessionLifetimeInMinutes</a>
4141
* </code> parameter.</p>
42-
* <p>The resulting user session is valid for 15 minutes (default) to 10 hours (maximum).</p>
42+
* <p>The resulting user session is valid for 15 minutes (minimum) to 10 hours (maximum). The default session duration is 10 hours.</p>
4343
* </li>
4444
* <li>
4545
* <p>You are charged only when the URL is used or there is interaction with Amazon QuickSight.</p>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// smithy-typescript generated code
2+
import { getSerdePlugin } from "@aws-sdk/middleware-serde";
3+
import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http";
4+
import { Command as $Command } from "@aws-sdk/smithy-client";
5+
import {
6+
FinalizeHandlerArguments,
7+
Handler,
8+
HandlerExecutionContext,
9+
HttpHandlerOptions as __HttpHandlerOptions,
10+
MetadataBearer as __MetadataBearer,
11+
MiddlewareStack,
12+
SerdeContext as __SerdeContext,
13+
} from "@aws-sdk/types";
14+
15+
import { UpdatePublicSharingSettingsRequest, UpdatePublicSharingSettingsResponse } from "../models/models_1";
16+
import {
17+
deserializeAws_restJson1UpdatePublicSharingSettingsCommand,
18+
serializeAws_restJson1UpdatePublicSharingSettingsCommand,
19+
} from "../protocols/Aws_restJson1";
20+
import { QuickSightClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../QuickSightClient";
21+
22+
export interface UpdatePublicSharingSettingsCommandInput extends UpdatePublicSharingSettingsRequest {}
23+
export interface UpdatePublicSharingSettingsCommandOutput
24+
extends UpdatePublicSharingSettingsResponse,
25+
__MetadataBearer {}
26+
27+
/**
28+
* <p>Use the UpdatePublicSharingSettings operation to enable or disable the public sharing settings of an Amazon QuickSight dashboard.</p>
29+
* <p>To use this operation, enable session capacity pricing on your Amazon QuickSight account.</p>
30+
* <p>Before you can enable public sharing on your account, you need to allow public sharing permissions to an administrative user in the IAM console. For more information on using IAM with Amazon QuickSight, see <a href="https://docs.aws.amazon.com/quicksight/latest/user/security_iam_service-with-iam.html">Using Amazon QuickSight with IAM</a>.</p>
31+
* @example
32+
* Use a bare-bones client and the command you need to make an API call.
33+
* ```javascript
34+
* import { QuickSightClient, UpdatePublicSharingSettingsCommand } from "@aws-sdk/client-quicksight"; // ES Modules import
35+
* // const { QuickSightClient, UpdatePublicSharingSettingsCommand } = require("@aws-sdk/client-quicksight"); // CommonJS import
36+
* const client = new QuickSightClient(config);
37+
* const command = new UpdatePublicSharingSettingsCommand(input);
38+
* const response = await client.send(command);
39+
* ```
40+
*
41+
* @see {@link UpdatePublicSharingSettingsCommandInput} for command's `input` shape.
42+
* @see {@link UpdatePublicSharingSettingsCommandOutput} for command's `response` shape.
43+
* @see {@link QuickSightClientResolvedConfig | config} for QuickSightClient's `config` shape.
44+
*
45+
*/
46+
export class UpdatePublicSharingSettingsCommand extends $Command<
47+
UpdatePublicSharingSettingsCommandInput,
48+
UpdatePublicSharingSettingsCommandOutput,
49+
QuickSightClientResolvedConfig
50+
> {
51+
// Start section: command_properties
52+
// End section: command_properties
53+
54+
constructor(readonly input: UpdatePublicSharingSettingsCommandInput) {
55+
// Start section: command_constructor
56+
super();
57+
// End section: command_constructor
58+
}
59+
60+
/**
61+
* @internal
62+
*/
63+
resolveMiddleware(
64+
clientStack: MiddlewareStack<ServiceInputTypes, ServiceOutputTypes>,
65+
configuration: QuickSightClientResolvedConfig,
66+
options?: __HttpHandlerOptions
67+
): Handler<UpdatePublicSharingSettingsCommandInput, UpdatePublicSharingSettingsCommandOutput> {
68+
this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize));
69+
70+
const stack = clientStack.concat(this.middlewareStack);
71+
72+
const { logger } = configuration;
73+
const clientName = "QuickSightClient";
74+
const commandName = "UpdatePublicSharingSettingsCommand";
75+
const handlerExecutionContext: HandlerExecutionContext = {
76+
logger,
77+
clientName,
78+
commandName,
79+
inputFilterSensitiveLog: UpdatePublicSharingSettingsRequest.filterSensitiveLog,
80+
outputFilterSensitiveLog: UpdatePublicSharingSettingsResponse.filterSensitiveLog,
81+
};
82+
const { requestHandler } = configuration;
83+
return stack.resolve(
84+
(request: FinalizeHandlerArguments<any>) =>
85+
requestHandler.handle(request.request as __HttpRequest, options || {}),
86+
handlerExecutionContext
87+
);
88+
}
89+
90+
private serialize(input: UpdatePublicSharingSettingsCommandInput, context: __SerdeContext): Promise<__HttpRequest> {
91+
return serializeAws_restJson1UpdatePublicSharingSettingsCommand(input, context);
92+
}
93+
94+
private deserialize(
95+
output: __HttpResponse,
96+
context: __SerdeContext
97+
): Promise<UpdatePublicSharingSettingsCommandOutput> {
98+
return deserializeAws_restJson1UpdatePublicSharingSettingsCommand(output, context);
99+
}
100+
101+
// Start section: command_body_extra
102+
// End section: command_body_extra
103+
}

clients/client-quicksight/src/commands/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ export * from "./UpdateFolderPermissionsCommand";
109109
export * from "./UpdateGroupCommand";
110110
export * from "./UpdateIAMPolicyAssignmentCommand";
111111
export * from "./UpdateIpRestrictionCommand";
112+
export * from "./UpdatePublicSharingSettingsCommand";
112113
export * from "./UpdateTemplateAliasCommand";
113114
export * from "./UpdateTemplateCommand";
114115
export * from "./UpdateTemplatePermissionsCommand";

clients/client-quicksight/src/models/models_0.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ export interface AccountSettings {
8888
* <p>The main notification email for your Amazon QuickSight subscription.</p>
8989
*/
9090
NotificationEmail?: string;
91+
92+
/**
93+
* <p>A boolean that indicates whether or not public sharing is enabled on an Amazon QuickSight account. For more information about enabling public sharing, see <a href="https://docs.aws.amazon.com/quicksight/latest/APIReference/API_UpdatePublicSharingSettings.html">UpdatePublicSharingSettings</a>.</p>
94+
*/
95+
PublicSharingEnabled?: boolean;
9196
}
9297

9398
export namespace AccountSettings {

clients/client-quicksight/src/models/models_1.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ export interface GenerateEmbedUrlForAnonymousUserRequest {
409409
SessionTags?: SessionTag[];
410410

411411
/**
412-
* <p>The Amazon Resource Names for the Amazon QuickSight resources that the user is authorized to access during the lifetime of the session. If you choose <code>Dashboard</code> embedding experience, pass the list of dashboard ARNs in the account that you want the user to be able to view.</p>
412+
* <p>The Amazon Resource Names for the Amazon QuickSight resources that the user is authorized to access during the lifetime of the session. If you choose <code>Dashboard</code> embedding experience, pass the list of dashboard ARNs in the account that you want the user to be able to view. Currently, you can pass up to 25 dashboard ARNs in each API call.</p>
413413
*/
414414
AuthorizedResourceArns: string[] | undefined;
415415

@@ -4459,6 +4459,48 @@ export namespace UpdateIpRestrictionResponse {
44594459
});
44604460
}
44614461

4462+
export interface UpdatePublicSharingSettingsRequest {
4463+
/**
4464+
* <p>The Amazon Web Services account ID associated with your Amazon QuickSight subscription.</p>
4465+
*/
4466+
AwsAccountId: string | undefined;
4467+
4468+
/**
4469+
* <p>A boolean that indicates whether or not public sharing is enabled on a Amazon QuickSight account.</p>
4470+
*/
4471+
PublicSharingEnabled?: boolean;
4472+
}
4473+
4474+
export namespace UpdatePublicSharingSettingsRequest {
4475+
/**
4476+
* @internal
4477+
*/
4478+
export const filterSensitiveLog = (obj: UpdatePublicSharingSettingsRequest): any => ({
4479+
...obj,
4480+
});
4481+
}
4482+
4483+
export interface UpdatePublicSharingSettingsResponse {
4484+
/**
4485+
* <p>The Amazon Web Services request ID for this operation.</p>
4486+
*/
4487+
RequestId?: string;
4488+
4489+
/**
4490+
* <p>The HTTP status of the request.</p>
4491+
*/
4492+
Status?: number;
4493+
}
4494+
4495+
export namespace UpdatePublicSharingSettingsResponse {
4496+
/**
4497+
* @internal
4498+
*/
4499+
export const filterSensitiveLog = (obj: UpdatePublicSharingSettingsResponse): any => ({
4500+
...obj,
4501+
});
4502+
}
4503+
44624504
export interface UpdateTemplateRequest {
44634505
/**
44644506
* <p>The ID of the Amazon Web Services account that contains the template that you're updating.</p>

0 commit comments

Comments
 (0)