diff --git a/clients/client-budgets/README.md b/clients/client-budgets/README.md index b1510d9b33bf..5516b0701e12 100644 --- a/clients/client-budgets/README.md +++ b/clients/client-budgets/README.md @@ -65,16 +65,16 @@ using your favorite package manager: The AWS SDK is modulized by clients and commands. To send a request, you only need to import the `BudgetsClient` and -the commands you need, for example `DescribeBudgetsCommand`: +the commands you need, for example `ListTagsForResourceCommand`: ```js // ES5 example -const { BudgetsClient, DescribeBudgetsCommand } = require("@aws-sdk/client-budgets"); +const { BudgetsClient, ListTagsForResourceCommand } = require("@aws-sdk/client-budgets"); ``` ```ts // ES6+ example -import { BudgetsClient, DescribeBudgetsCommand } from "@aws-sdk/client-budgets"; +import { BudgetsClient, ListTagsForResourceCommand } from "@aws-sdk/client-budgets"; ``` ### Usage @@ -93,7 +93,7 @@ const client = new BudgetsClient({ region: "REGION" }); const params = { /** input parameters */ }; -const command = new DescribeBudgetsCommand(params); +const command = new ListTagsForResourceCommand(params); ``` #### Async/await @@ -172,7 +172,7 @@ const client = new AWS.Budgets({ region: "REGION" }); // async/await. try { - const data = await client.describeBudgets(params); + const data = await client.listTagsForResource(params); // process data. } catch (error) { // error handling. @@ -180,7 +180,7 @@ try { // Promises. client - .describeBudgets(params) + .listTagsForResource(params) .then((data) => { // process data. }) @@ -189,7 +189,7 @@ client }); // callbacks. -client.describeBudgets(params, (err, data) => { +client.listTagsForResource(params, (err, data) => { // process err and data. }); ``` @@ -396,6 +396,30 @@ ExecuteBudgetAction [Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/budgets/command/ExecuteBudgetActionCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/ExecuteBudgetActionCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/ExecuteBudgetActionCommandOutput/) + +
+ +ListTagsForResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/budgets/command/ListTagsForResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/ListTagsForResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/ListTagsForResourceCommandOutput/) + +
+
+ +TagResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/budgets/command/TagResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/TagResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/TagResourceCommandOutput/) + +
+
+ +UntagResource + + +[Command API Reference](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/budgets/command/UntagResourceCommand/) / [Input](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/UntagResourceCommandInput/) / [Output](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-budgets/Interface/UntagResourceCommandOutput/) +
diff --git a/clients/client-budgets/src/Budgets.ts b/clients/client-budgets/src/Budgets.ts index 5ea43f766874..d792103219f1 100644 --- a/clients/client-budgets/src/Budgets.ts +++ b/clients/client-budgets/src/Budgets.ts @@ -98,6 +98,17 @@ import { ExecuteBudgetActionCommandInput, ExecuteBudgetActionCommandOutput, } from "./commands/ExecuteBudgetActionCommand"; +import { + ListTagsForResourceCommand, + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; +import { TagResourceCommand, TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { + UntagResourceCommand, + UntagResourceCommandInput, + UntagResourceCommandOutput, +} from "./commands/UntagResourceCommand"; import { UpdateBudgetActionCommand, UpdateBudgetActionCommandInput, @@ -139,6 +150,9 @@ const commands = { DescribeNotificationsForBudgetCommand, DescribeSubscribersForNotificationCommand, ExecuteBudgetActionCommand, + ListTagsForResourceCommand, + TagResourceCommand, + UntagResourceCommand, UpdateBudgetCommand, UpdateBudgetActionCommand, UpdateNotificationCommand, @@ -451,6 +465,45 @@ export interface Budgets { cb: (err: any, data?: ExecuteBudgetActionCommandOutput) => void ): void; + /** + * @see {@link ListTagsForResourceCommand} + */ + listTagsForResource( + args: ListTagsForResourceCommandInput, + options?: __HttpHandlerOptions + ): Promise; + listTagsForResource( + args: ListTagsForResourceCommandInput, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + listTagsForResource( + args: ListTagsForResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: ListTagsForResourceCommandOutput) => void + ): void; + + /** + * @see {@link TagResourceCommand} + */ + tagResource(args: TagResourceCommandInput, options?: __HttpHandlerOptions): Promise; + tagResource(args: TagResourceCommandInput, cb: (err: any, data?: TagResourceCommandOutput) => void): void; + tagResource( + args: TagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: TagResourceCommandOutput) => void + ): void; + + /** + * @see {@link UntagResourceCommand} + */ + untagResource(args: UntagResourceCommandInput, options?: __HttpHandlerOptions): Promise; + untagResource(args: UntagResourceCommandInput, cb: (err: any, data?: UntagResourceCommandOutput) => void): void; + untagResource( + args: UntagResourceCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UntagResourceCommandOutput) => void + ): void; + /** * @see {@link UpdateBudgetCommand} */ diff --git a/clients/client-budgets/src/BudgetsClient.ts b/clients/client-budgets/src/BudgetsClient.ts index 56e31a726469..a42f6f3d3644 100644 --- a/clients/client-budgets/src/BudgetsClient.ts +++ b/clients/client-budgets/src/BudgetsClient.ts @@ -99,6 +99,12 @@ import { ExecuteBudgetActionCommandInput, ExecuteBudgetActionCommandOutput, } from "./commands/ExecuteBudgetActionCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "./commands/ListTagsForResourceCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "./commands/TagResourceCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "./commands/UntagResourceCommand"; import { UpdateBudgetActionCommandInput, UpdateBudgetActionCommandOutput } from "./commands/UpdateBudgetActionCommand"; import { UpdateBudgetCommandInput, UpdateBudgetCommandOutput } from "./commands/UpdateBudgetCommand"; import { UpdateNotificationCommandInput, UpdateNotificationCommandOutput } from "./commands/UpdateNotificationCommand"; @@ -137,6 +143,9 @@ export type ServiceInputTypes = | DescribeNotificationsForBudgetCommandInput | DescribeSubscribersForNotificationCommandInput | ExecuteBudgetActionCommandInput + | ListTagsForResourceCommandInput + | TagResourceCommandInput + | UntagResourceCommandInput | UpdateBudgetActionCommandInput | UpdateBudgetCommandInput | UpdateNotificationCommandInput @@ -165,6 +174,9 @@ export type ServiceOutputTypes = | DescribeNotificationsForBudgetCommandOutput | DescribeSubscribersForNotificationCommandOutput | ExecuteBudgetActionCommandOutput + | ListTagsForResourceCommandOutput + | TagResourceCommandOutput + | UntagResourceCommandOutput | UpdateBudgetActionCommandOutput | UpdateBudgetCommandOutput | UpdateNotificationCommandOutput diff --git a/clients/client-budgets/src/commands/CreateBudgetActionCommand.ts b/clients/client-budgets/src/commands/CreateBudgetActionCommand.ts index 333b7088abf1..76ad13b080eb 100644 --- a/clients/client-budgets/src/commands/CreateBudgetActionCommand.ts +++ b/clients/client-budgets/src/commands/CreateBudgetActionCommand.ts @@ -84,6 +84,12 @@ export interface CreateBudgetActionCommandOutput extends CreateBudgetActionRespo * Address: "STRING_VALUE", // required * }, * ], + * ResourceTags: [ // ResourceTagList + * { // ResourceTag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], * }; * const command = new CreateBudgetActionCommand(input); * const response = await client.send(command); @@ -119,6 +125,9 @@ export interface CreateBudgetActionCommandOutput extends CreateBudgetActionRespo * @throws {@link NotFoundException} (client fault) *

We can’t locate the resource that you specified.

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

You've reached the limit on the number of tags you can associate with a resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit * for the account.

diff --git a/clients/client-budgets/src/commands/CreateBudgetCommand.ts b/clients/client-budgets/src/commands/CreateBudgetCommand.ts index 25b32c0789c8..1d33669b045c 100644 --- a/clients/client-budgets/src/commands/CreateBudgetCommand.ts +++ b/clients/client-budgets/src/commands/CreateBudgetCommand.ts @@ -112,6 +112,12 @@ export interface CreateBudgetCommandOutput extends CreateBudgetResponse, __Metad * ], * }, * ], + * ResourceTags: [ // ResourceTagList + * { // ResourceTag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], * }; * const command = new CreateBudgetCommand(input); * const response = await client.send(command); @@ -140,6 +146,9 @@ export interface CreateBudgetCommandOutput extends CreateBudgetResponse, __Metad * @throws {@link InvalidParameterException} (client fault) *

An error on the client occurred. Typically, the cause is an invalid input value.

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

You've reached the limit on the number of tags you can associate with a resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit * for the account.

diff --git a/clients/client-budgets/src/commands/DeleteBudgetActionCommand.ts b/clients/client-budgets/src/commands/DeleteBudgetActionCommand.ts index 25ba4c46ced3..107f2c8cdb2c 100644 --- a/clients/client-budgets/src/commands/DeleteBudgetActionCommand.ts +++ b/clients/client-budgets/src/commands/DeleteBudgetActionCommand.ts @@ -119,8 +119,8 @@ export interface DeleteBudgetActionCommandOutput extends DeleteBudgetActionRespo *

We can’t locate the resource that you specified.

* * @throws {@link ResourceLockedException} (client fault) - *

The request was received and recognized by the server, but the server rejected that - * particular method for the requested resource.

+ *

The request was received and recognized by the server, but the server rejected that + * particular method for the requested resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit diff --git a/clients/client-budgets/src/commands/DescribeBudgetNotificationsForAccountCommand.ts b/clients/client-budgets/src/commands/DescribeBudgetNotificationsForAccountCommand.ts index 2741e4022cce..2ca6a38f41cf 100644 --- a/clients/client-budgets/src/commands/DescribeBudgetNotificationsForAccountCommand.ts +++ b/clients/client-budgets/src/commands/DescribeBudgetNotificationsForAccountCommand.ts @@ -36,9 +36,7 @@ export interface DescribeBudgetNotificationsForAccountCommandOutput __MetadataBearer {} /** - *

- * Lists the budget names and notifications that are associated with an account. - *

+ *

Lists the budget names and notifications that are associated with an account.

* @example * Use a bare-bones client and the command you need to make an API call. * ```javascript diff --git a/clients/client-budgets/src/commands/ExecuteBudgetActionCommand.ts b/clients/client-budgets/src/commands/ExecuteBudgetActionCommand.ts index 43afe67fe7f3..cd98e3ba63af 100644 --- a/clients/client-budgets/src/commands/ExecuteBudgetActionCommand.ts +++ b/clients/client-budgets/src/commands/ExecuteBudgetActionCommand.ts @@ -72,8 +72,8 @@ export interface ExecuteBudgetActionCommandOutput extends ExecuteBudgetActionRes *

We can’t locate the resource that you specified.

* * @throws {@link ResourceLockedException} (client fault) - *

The request was received and recognized by the server, but the server rejected that - * particular method for the requested resource.

+ *

The request was received and recognized by the server, but the server rejected that + * particular method for the requested resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit diff --git a/clients/client-budgets/src/commands/ListTagsForResourceCommand.ts b/clients/client-budgets/src/commands/ListTagsForResourceCommand.ts new file mode 100644 index 000000000000..85d45dfa57eb --- /dev/null +++ b/clients/client-budgets/src/commands/ListTagsForResourceCommand.ts @@ -0,0 +1,102 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { BudgetsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BudgetsClient"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { ListTagsForResourceRequest, ListTagsForResourceResponse } from "../models/models_0"; +import { de_ListTagsForResourceCommand, se_ListTagsForResourceCommand } from "../protocols/Aws_json1_1"; + +/** + * @public + */ +export { __MetadataBearer, $Command }; +/** + * @public + * + * The input for {@link ListTagsForResourceCommand}. + */ +export interface ListTagsForResourceCommandInput extends ListTagsForResourceRequest {} +/** + * @public + * + * The output of {@link ListTagsForResourceCommand}. + */ +export interface ListTagsForResourceCommandOutput extends ListTagsForResourceResponse, __MetadataBearer {} + +/** + *

Lists tags associated with a budget or budget action resource.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { BudgetsClient, ListTagsForResourceCommand } from "@aws-sdk/client-budgets"; // ES Modules import + * // const { BudgetsClient, ListTagsForResourceCommand } = require("@aws-sdk/client-budgets"); // CommonJS import + * const client = new BudgetsClient(config); + * const input = { // ListTagsForResourceRequest + * ResourceARN: "STRING_VALUE", // required + * }; + * const command = new ListTagsForResourceCommand(input); + * const response = await client.send(command); + * // { // ListTagsForResourceResponse + * // ResourceTags: [ // ResourceTagList + * // { // ResourceTag + * // Key: "STRING_VALUE", // required + * // Value: "STRING_VALUE", // required + * // }, + * // ], + * // }; + * + * ``` + * + * @param ListTagsForResourceCommandInput - {@link ListTagsForResourceCommandInput} + * @returns {@link ListTagsForResourceCommandOutput} + * @see {@link ListTagsForResourceCommandInput} for command's `input` shape. + * @see {@link ListTagsForResourceCommandOutput} for command's `response` shape. + * @see {@link BudgetsClientResolvedConfig | config} for BudgetsClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You are not authorized to use this operation with the given parameters.

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

An error on the server occurred during the processing of your request. Try again later.

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

An error on the client occurred. Typically, the cause is an invalid input value.

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

We can’t locate the resource that you specified.

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

The number of API requests has exceeded the maximum allowed API request throttling limit + * for the account.

+ * + * @throws {@link BudgetsServiceException} + *

Base exception class for all service exceptions from Budgets service.

+ * + * @public + */ +export class ListTagsForResourceCommand extends $Command + .classBuilder< + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, + BudgetsClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: BudgetsClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSBudgetServiceGateway", "ListTagsForResource", {}) + .n("BudgetsClient", "ListTagsForResourceCommand") + .f(void 0, void 0) + .ser(se_ListTagsForResourceCommand) + .de(de_ListTagsForResourceCommand) + .build() {} diff --git a/clients/client-budgets/src/commands/TagResourceCommand.ts b/clients/client-budgets/src/commands/TagResourceCommand.ts new file mode 100644 index 000000000000..f557cb60e534 --- /dev/null +++ b/clients/client-budgets/src/commands/TagResourceCommand.ts @@ -0,0 +1,104 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { BudgetsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BudgetsClient"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { TagResourceRequest, TagResourceResponse } from "../models/models_0"; +import { de_TagResourceCommand, se_TagResourceCommand } from "../protocols/Aws_json1_1"; + +/** + * @public + */ +export { __MetadataBearer, $Command }; +/** + * @public + * + * The input for {@link TagResourceCommand}. + */ +export interface TagResourceCommandInput extends TagResourceRequest {} +/** + * @public + * + * The output of {@link TagResourceCommand}. + */ +export interface TagResourceCommandOutput extends TagResourceResponse, __MetadataBearer {} + +/** + *

Creates tags for a budget or budget action resource.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { BudgetsClient, TagResourceCommand } from "@aws-sdk/client-budgets"; // ES Modules import + * // const { BudgetsClient, TagResourceCommand } = require("@aws-sdk/client-budgets"); // CommonJS import + * const client = new BudgetsClient(config); + * const input = { // TagResourceRequest + * ResourceARN: "STRING_VALUE", // required + * ResourceTags: [ // ResourceTagList // required + * { // ResourceTag + * Key: "STRING_VALUE", // required + * Value: "STRING_VALUE", // required + * }, + * ], + * }; + * const command = new TagResourceCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param TagResourceCommandInput - {@link TagResourceCommandInput} + * @returns {@link TagResourceCommandOutput} + * @see {@link TagResourceCommandInput} for command's `input` shape. + * @see {@link TagResourceCommandOutput} for command's `response` shape. + * @see {@link BudgetsClientResolvedConfig | config} for BudgetsClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You are not authorized to use this operation with the given parameters.

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

An error on the server occurred during the processing of your request. Try again later.

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

An error on the client occurred. Typically, the cause is an invalid input value.

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

We can’t locate the resource that you specified.

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

You've reached the limit on the number of tags you can associate with a resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit + * for the account.

+ * + * @throws {@link BudgetsServiceException} + *

Base exception class for all service exceptions from Budgets service.

+ * + * @public + */ +export class TagResourceCommand extends $Command + .classBuilder< + TagResourceCommandInput, + TagResourceCommandOutput, + BudgetsClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: BudgetsClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSBudgetServiceGateway", "TagResource", {}) + .n("BudgetsClient", "TagResourceCommand") + .f(void 0, void 0) + .ser(se_TagResourceCommand) + .de(de_TagResourceCommand) + .build() {} diff --git a/clients/client-budgets/src/commands/UntagResourceCommand.ts b/clients/client-budgets/src/commands/UntagResourceCommand.ts new file mode 100644 index 000000000000..f5e723c0e93c --- /dev/null +++ b/clients/client-budgets/src/commands/UntagResourceCommand.ts @@ -0,0 +1,98 @@ +// smithy-typescript generated code +import { getEndpointPlugin } from "@smithy/middleware-endpoint"; +import { getSerdePlugin } from "@smithy/middleware-serde"; +import { Command as $Command } from "@smithy/smithy-client"; +import { MetadataBearer as __MetadataBearer } from "@smithy/types"; + +import { BudgetsClientResolvedConfig, ServiceInputTypes, ServiceOutputTypes } from "../BudgetsClient"; +import { commonParams } from "../endpoint/EndpointParameters"; +import { UntagResourceRequest, UntagResourceResponse } from "../models/models_0"; +import { de_UntagResourceCommand, se_UntagResourceCommand } from "../protocols/Aws_json1_1"; + +/** + * @public + */ +export { __MetadataBearer, $Command }; +/** + * @public + * + * The input for {@link UntagResourceCommand}. + */ +export interface UntagResourceCommandInput extends UntagResourceRequest {} +/** + * @public + * + * The output of {@link UntagResourceCommand}. + */ +export interface UntagResourceCommandOutput extends UntagResourceResponse, __MetadataBearer {} + +/** + *

Deletes tags associated with a budget or budget action resource.

+ * @example + * Use a bare-bones client and the command you need to make an API call. + * ```javascript + * import { BudgetsClient, UntagResourceCommand } from "@aws-sdk/client-budgets"; // ES Modules import + * // const { BudgetsClient, UntagResourceCommand } = require("@aws-sdk/client-budgets"); // CommonJS import + * const client = new BudgetsClient(config); + * const input = { // UntagResourceRequest + * ResourceARN: "STRING_VALUE", // required + * ResourceTagKeys: [ // ResourceTagKeyList // required + * "STRING_VALUE", + * ], + * }; + * const command = new UntagResourceCommand(input); + * const response = await client.send(command); + * // {}; + * + * ``` + * + * @param UntagResourceCommandInput - {@link UntagResourceCommandInput} + * @returns {@link UntagResourceCommandOutput} + * @see {@link UntagResourceCommandInput} for command's `input` shape. + * @see {@link UntagResourceCommandOutput} for command's `response` shape. + * @see {@link BudgetsClientResolvedConfig | config} for BudgetsClient's `config` shape. + * + * @throws {@link AccessDeniedException} (client fault) + *

You are not authorized to use this operation with the given parameters.

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

An error on the server occurred during the processing of your request. Try again later.

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

An error on the client occurred. Typically, the cause is an invalid input value.

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

We can’t locate the resource that you specified.

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

The number of API requests has exceeded the maximum allowed API request throttling limit + * for the account.

+ * + * @throws {@link BudgetsServiceException} + *

Base exception class for all service exceptions from Budgets service.

+ * + * @public + */ +export class UntagResourceCommand extends $Command + .classBuilder< + UntagResourceCommandInput, + UntagResourceCommandOutput, + BudgetsClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes + >() + .ep({ + ...commonParams, + }) + .m(function (this: any, Command: any, cs: any, config: BudgetsClientResolvedConfig, o: any) { + return [ + getSerdePlugin(config, this.serialize, this.deserialize), + getEndpointPlugin(config, Command.getEndpointParameterInstructions()), + ]; + }) + .s("AWSBudgetServiceGateway", "UntagResource", {}) + .n("BudgetsClient", "UntagResourceCommand") + .f(void 0, void 0) + .ser(se_UntagResourceCommand) + .de(de_UntagResourceCommand) + .build() {} diff --git a/clients/client-budgets/src/commands/UpdateBudgetActionCommand.ts b/clients/client-budgets/src/commands/UpdateBudgetActionCommand.ts index 760417f7114c..b963c4bbe4e4 100644 --- a/clients/client-budgets/src/commands/UpdateBudgetActionCommand.ts +++ b/clients/client-budgets/src/commands/UpdateBudgetActionCommand.ts @@ -206,8 +206,8 @@ export interface UpdateBudgetActionCommandOutput extends UpdateBudgetActionRespo *

We can’t locate the resource that you specified.

* * @throws {@link ResourceLockedException} (client fault) - *

The request was received and recognized by the server, but the server rejected that - * particular method for the requested resource.

+ *

The request was received and recognized by the server, but the server rejected that + * particular method for the requested resource.

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

The number of API requests has exceeded the maximum allowed API request throttling limit diff --git a/clients/client-budgets/src/commands/index.ts b/clients/client-budgets/src/commands/index.ts index bfb04eabf4e9..36915c6d6944 100644 --- a/clients/client-budgets/src/commands/index.ts +++ b/clients/client-budgets/src/commands/index.ts @@ -18,6 +18,9 @@ export * from "./DescribeBudgetsCommand"; export * from "./DescribeNotificationsForBudgetCommand"; export * from "./DescribeSubscribersForNotificationCommand"; export * from "./ExecuteBudgetActionCommand"; +export * from "./ListTagsForResourceCommand"; +export * from "./TagResourceCommand"; +export * from "./UntagResourceCommand"; export * from "./UpdateBudgetActionCommand"; export * from "./UpdateBudgetCommand"; export * from "./UpdateNotificationCommand"; diff --git a/clients/client-budgets/src/models/models_0.ts b/clients/client-budgets/src/models/models_0.ts index c44bd1a7b56d..750512371df8 100644 --- a/clients/client-budgets/src/models/models_0.ts +++ b/clients/client-budgets/src/models/models_0.ts @@ -251,7 +251,8 @@ export const SubscriptionType = { export type SubscriptionType = (typeof SubscriptionType)[keyof typeof SubscriptionType]; /** - *

The subscriber to a budget notification. The subscriber consists of a subscription type and either an Amazon SNS topic or an email address.

+ *

The subscriber to a budget notification. The subscriber consists of a subscription + * type and either an Amazon SNS topic or an email address.

*

For example, an email subscriber has the following parameters:

*
    *
  • @@ -273,8 +274,10 @@ export interface Subscriber { SubscriptionType: SubscriptionType | undefined; /** - *

    The address that Amazon Web Services sends budget notifications to, either an SNS topic or an email.

    - *

    When you create a subscriber, the value of Address can't contain line breaks.

    + *

    The address that Amazon Web Services sends budget notifications to, either an SNS topic + * or an email.

    + *

    When you create a subscriber, the value of Address can't contain line + * breaks.

    * @public */ Address: string | undefined; @@ -292,8 +295,8 @@ export interface Action { ActionId: string | undefined; /** - *

    A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

    + *

    A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

    * @public */ BudgetName: string | undefined; @@ -305,8 +308,8 @@ export interface Action { NotificationType: NotificationType | undefined; /** - *

    The type of action. This defines the type of tasks that can be carried out by this action. - * This field also determines the format for definition.

    + *

    The type of action. This defines the type of tasks that can be carried out by this + * action. This field also determines the format for definition.

    * @public */ ActionType: ActionType | undefined; @@ -324,8 +327,8 @@ export interface Action { Definition: Definition | undefined; /** - *

    The role passed for action execution and reversion. Roles and actions must be in the same - * account.

    + *

    The role passed for action execution and reversion. Roles and actions must be in the + * same account.

    * @public */ ExecutionRoleArn: string | undefined; @@ -402,8 +405,8 @@ export interface ActionHistory { Status: ActionStatus | undefined; /** - *

    This distinguishes between whether the events are triggered by the user or are generated by - * the system.

    + *

    This distinguishes between whether the events are triggered by the user or are + * generated by the system.

    * @public */ EventType: EventType | undefined; @@ -430,24 +433,31 @@ export const AutoAdjustType = { export type AutoAdjustType = (typeof AutoAdjustType)[keyof typeof AutoAdjustType]; /** - *

    The parameters that define or describe the historical data that your auto-adjusting budget is based on.

    + *

    The parameters that define or describe the historical data that your auto-adjusting + * budget is based on.

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

    The number of budget periods included in the moving-average calculation that determines your auto-adjusted budget amount. The maximum value depends on the TimeUnit granularity of the budget:

    + *

    The number of budget periods included in the moving-average calculation that + * determines your auto-adjusted budget amount. The maximum value depends on the + * TimeUnit granularity of the budget:

    *
      *
    • - *

      For the DAILY granularity, the maximum value is 60.

      + *

      For the DAILY granularity, the maximum value is + * 60.

      *
    • *
    • - *

      For the MONTHLY granularity, the maximum value is 12.

      + *

      For the MONTHLY granularity, the maximum value is + * 12.

      *
    • *
    • - *

      For the QUARTERLY granularity, the maximum value is 4.

      + *

      For the QUARTERLY granularity, the maximum value is + * 4.

      *
    • *
    • - *

      For the ANNUALLY granularity, the maximum value is 1.

      + *

      For the ANNUALLY granularity, the maximum value is + * 1.

      *
    • *
    * @public @@ -455,9 +465,18 @@ export interface HistoricalOptions { BudgetAdjustmentPeriod: number | undefined; /** - *

    The integer that describes how many budget periods in your BudgetAdjustmentPeriod are included in the calculation of your current BudgetLimit. If the first budget period in your BudgetAdjustmentPeriod has no cost data, then that budget period isn’t included in the average that determines your budget limit.

    - *

    For example, if you set BudgetAdjustmentPeriod as 4 quarters, but your account had no cost data in the first quarter, then only the last three quarters are included in the calculation. In this scenario, LookBackAvailablePeriods returns 3.

    - *

    You can’t set your own LookBackAvailablePeriods. The value is automatically calculated from the BudgetAdjustmentPeriod and your historical cost data.

    + *

    The integer that describes how many budget periods in your + * BudgetAdjustmentPeriod are included in the calculation of your current + * BudgetLimit. If the first budget period in your + * BudgetAdjustmentPeriod has no cost data, then that budget period isn’t + * included in the average that determines your budget limit.

    + *

    For example, if you set BudgetAdjustmentPeriod as 4 + * quarters, but your account had no cost data in the first quarter, then only the last + * three quarters are included in the calculation. In this scenario, + * LookBackAvailablePeriods returns 3.

    + *

    You can’t set your own LookBackAvailablePeriods. The value is + * automatically calculated from the BudgetAdjustmentPeriod and your + * historical cost data.

    * @public */ LookBackAvailablePeriods?: number; @@ -469,13 +488,15 @@ export interface HistoricalOptions { */ export interface AutoAdjustData { /** - *

    The string that defines whether your budget auto-adjusts based on historical or forecasted data.

    + *

    The string that defines whether your budget auto-adjusts based on historical or + * forecasted data.

    * @public */ AutoAdjustType: AutoAdjustType | undefined; /** - *

    The parameters that define or describe the historical data that your auto-adjusting budget is based on.

    + *

    The parameters that define or describe the historical data that your auto-adjusting + * budget is based on.

    * @public */ HistoricalOptions?: HistoricalOptions; @@ -519,8 +540,8 @@ export interface AutoAdjustData { */ export interface Spend { /** - *

    The cost or usage amount that's associated with a budget forecast, actual spend, or budget - * threshold.

    + *

    The cost or usage amount that's associated with a budget forecast, actual spend, or + * budget threshold.

    * @public */ Amount: string | undefined; @@ -552,12 +573,12 @@ export const BudgetType = { export type BudgetType = (typeof BudgetType)[keyof typeof BudgetType]; /** - *

    The spend objects that are associated with this budget. The actualSpend tracks - * how much you've used, cost, usage, RI units, or Savings Plans units and the + *

    The spend objects that are associated with this budget. The actualSpend + * tracks how much you've used, cost, usage, RI units, or Savings Plans units and the * forecastedSpend tracks how much that you're predicted to spend based on * your historical usage profile.

    - *

    For example, if it's the 20th of the month and you have spent 50 dollars on - * Amazon EC2, your actualSpend is 50 USD, and your + *

    For example, if it's the 20th of the month and you have spent 50 dollars + * on Amazon EC2, your actualSpend is 50 USD, and your * forecastedSpend is 75 USD.

    * @public */ @@ -577,7 +598,8 @@ export interface CalculatedSpend { } /** - *

    The types of cost that are included in a COST budget, such as tax and subscriptions.

    + *

    The types of cost that are included in a COST budget, such as tax and + * subscriptions.

    *

    * USAGE, RI_UTILIZATION, RI_COVERAGE, * SAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE @@ -664,20 +686,29 @@ export interface CostTypes { } /** - *

    The period of time that's covered by a budget. The period has a start date and an end date. - * The start date must come before the end date. There are no restrictions on the end date.

    + *

    The period of time that's covered by a budget. The period has a start date and an end + * date. The start date must come before the end date. There are no restrictions on the end + * date.

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

    The start date for a budget. If you created your budget and didn't specify a start date, Amazon Web Services defaults to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24, 2018, chose DAILY, and didn't set a start date, Amazon Web Services set your start date to 01/24/18 00:00 UTC. If you chose MONTHLY, Amazon Web Services set your start date to 01/01/18 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the API.

    + *

    The start date for a budget. If you created your budget and didn't specify a start + * date, Amazon Web Services defaults to the start of your chosen time period (DAILY, + * MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24, + * 2018, chose DAILY, and didn't set a start date, Amazon Web Services set your + * start date to 01/24/18 00:00 UTC. If you chose MONTHLY, + * Amazon Web Services set your start date to 01/01/18 00:00 UTC. The + * defaults are the same for the Billing and Cost Management console and the API.

    *

    You can change your start date with the UpdateBudget operation.

    * @public */ Start?: Date; /** - *

    The end date for a budget. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the API.

    + *

    The end date for a budget. If you didn't specify an end date, Amazon Web Services set + * your end date to 06/15/87 00:00 UTC. The defaults are the same for the + * Billing and Cost Management console and the API.

    *

    After the end date, Amazon Web Services deletes the budget and all the associated * notifications and subscribers. You can change your end date with the * UpdateBudget operation.

    @@ -703,7 +734,9 @@ export const TimeUnit = { export type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit]; /** - *

    Represents the output of the CreateBudget operation. The content consists of the detailed metadata and data file information, and the current status of the budget object.

    + *

    Represents the output of the CreateBudget operation. The content consists + * of the detailed metadata and data file information, and the current status of the + * budget object.

    *

    This is the Amazon Resource Name (ARN) pattern for a budget:

    *

    * arn:aws:budgets::AccountId:budget/budgetName @@ -712,16 +745,16 @@ export type TimeUnit = (typeof TimeUnit)[keyof typeof TimeUnit]; */ export interface Budget { /** - *

    The name of a budget. The name must be unique within an account. The : and - * \ characters, and the "/action/" substring, aren't allowed in + *

    The name of a budget. The name must be unique within an account. The : + * and \ characters, and the "/action/" substring, aren't allowed in * BudgetName.

    * @public */ BudgetName: string | undefined; /** - *

    The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or - * Savings Plans coverage that you want to track with your budget.

    + *

    The total amount of cost, usage, RI utilization, RI coverage, Savings Plans + * utilization, or Savings Plans coverage that you want to track with your budget.

    *

    * BudgetLimit is required for cost or usage budgets, but optional for RI or * Savings Plans utilization or coverage budgets. RI and Savings Plans utilization or @@ -734,20 +767,26 @@ export interface Budget { BudgetLimit?: Spend; /** - *

    A map containing multiple BudgetLimit, including current or future limits.

    + *

    A map containing multiple BudgetLimit, including current or future + * limits.

    *

    - * PlannedBudgetLimits is available for cost or usage budget and supports both - * monthly and quarterly TimeUnit.

    - *

    For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the current month and include the next 11 months. The key is the start of the month, UTC in epoch seconds.

    + * PlannedBudgetLimits is available for cost or usage budget and supports + * both monthly and quarterly TimeUnit.

    + *

    For monthly budgets, provide 12 months of PlannedBudgetLimits values. + * This must start from the current month and include the next 11 months. The + * key is the start of the month, UTC in epoch seconds.

    *

    For quarterly budgets, provide four quarters of PlannedBudgetLimits value * entries in standard calendar quarter increments. This must start from the current * quarter and include the next three quarters. The key is the start of the * quarter, UTC in epoch seconds.

    - *

    If the planned budget expires before 12 months for monthly or four quarters for quarterly, - * provide the PlannedBudgetLimits values only for the remaining + *

    If the planned budget expires before 12 months for monthly or four quarters for + * quarterly, provide the PlannedBudgetLimits values only for the remaining * periods.

    - *

    If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date of the budget.

    - *

    After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the same experience as a fixed budget.

    + *

    If the budget begins at a date in the future, provide PlannedBudgetLimits + * values from the start date of the budget.

    + *

    After all of the BudgetLimit values in PlannedBudgetLimits + * are used, the budget continues to use the last limit as the BudgetLimit. At + * that point, the planned budget provides the same experience as a fixed budget.

    *

    * DescribeBudget and DescribeBudgets response along with * PlannedBudgetLimits also contain BudgetLimit representing @@ -761,7 +800,9 @@ export interface Budget { PlannedBudgetLimits?: Record; /** - *

    The cost filters, such as Region, Service, member account, Tag, or Cost Category, that are applied to a budget.

    + *

    The cost filters, such as Region, Service, + * LinkedAccount, Tag, or CostCategory, that are + * applied to a budget.

    *

    Amazon Web Services Budgets supports the following services as a Service filter for RI budgets:

    *
      *
    • @@ -787,7 +828,9 @@ export interface Budget { /** *

      The types of costs that are included in this COST budget.

      *

      - * USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE budgets do not have CostTypes.

      + * USAGE, RI_UTILIZATION, RI_COVERAGE, + * SAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE + * budgets do not have CostTypes.

      * @public */ CostTypes?: CostTypes; @@ -799,16 +842,16 @@ export interface Budget { TimeUnit: TimeUnit | undefined; /** - *

      The period of time that's covered by a budget. You setthe start date and end date. The start - * date must come before the end date. The end date must come before 06/15/87 00:00 - * UTC.

      - *

      If you create your budget and don't specify a start date, Amazon Web Services defaults to the - * start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, - * if you created your budget on January 24, 2018, chose DAILY, and didn't set - * a start date, Amazon Web Services set your start date to 01/24/18 00:00 UTC. - * If you chose MONTHLY, Amazon Web Services set your start date to - * 01/01/18 00:00 UTC. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are the same for - * the Billing and Cost Management console and the API.

      + *

      The period of time that's covered by a budget. You setthe start date and end date. The + * start date must come before the end date. The end date must come before 06/15/87 + * 00:00 UTC.

      + *

      If you create your budget and don't specify a start date, Amazon Web Services defaults + * to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For + * example, if you created your budget on January 24, 2018, chose DAILY, and + * didn't set a start date, Amazon Web Services set your start date to 01/24/18 00:00 + * UTC. If you chose MONTHLY, Amazon Web Services set your start + * date to 01/01/18 00:00 UTC. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are + * the same for the Billing and Cost Management console and the API.

      *

      You can change either date with the UpdateBudget operation.

      *

      After the end date, Amazon Web Services deletes the budget and all the associated * notifications and subscribers.

      @@ -823,8 +866,8 @@ export interface Budget { CalculatedSpend?: CalculatedSpend; /** - *

      Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, Savings - * Plans utilization, or Savings Plans coverage.

      + *

      Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, + * Savings Plans utilization, or Savings Plans coverage.

      * @public */ BudgetType: BudgetType | undefined; @@ -872,9 +915,12 @@ export const NotificationState = { export type NotificationState = (typeof NotificationState)[keyof typeof NotificationState]; /** - *

      A notification that's associated with a budget. A budget can have up to ten notifications.

      - *

      Each notification must have at least one subscriber. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.

      - *

      For example, if you have a budget for 200 dollars and you want to be notified when you go over 160 dollars, create a notification with the following parameters:

      + *

      A notification that's associated with a budget. A budget can have up to ten + * notifications.

      + *

      Each notification must have at least one subscriber. A notification can have one SNS + * subscriber and up to 10 email subscribers, for a total of 11 subscribers.

      + *

      For example, if you have a budget for 200 dollars and you want to be notified when you + * go over 160 dollars, create a notification with the following parameters:

      *
        *
      • *

        A notificationType of ACTUAL @@ -897,8 +943,9 @@ export type NotificationState = (typeof NotificationState)[keyof typeof Notifica */ export interface Notification { /** - *

        Specifies whether the notification is for how much you have spent (ACTUAL) or - * for how much that you're forecasted to spend (FORECASTED).

        + *

        Specifies whether the notification is for how much you have spent + * (ACTUAL) or for how much that you're forecasted to spend + * (FORECASTED).

        * @public */ NotificationType: NotificationType | undefined; @@ -910,15 +957,22 @@ export interface Notification { ComparisonOperator: ComparisonOperator | undefined; /** - *

        The threshold that's associated with a notification. Thresholds are always a percentage, and - * many customers find value being alerted between 50% - 200% of the budgeted amount. The - * maximum limit for your threshold is 1,000,000% above the budgeted amount.

        + *

        The threshold that's associated with a notification. Thresholds are always a + * percentage, and many customers find value being alerted between 50% - 200% of the + * budgeted amount. The maximum limit for your threshold is 1,000,000% above the budgeted + * amount.

        * @public */ Threshold: number | undefined; /** - *

        The type of threshold for a notification. For ABSOLUTE_VALUE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over your total cost threshold. For PERCENTAGE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over a certain percentage of your forecasted spend. For example, if you have a budget for 200 dollars and you have a PERCENTAGE threshold of 80%, Amazon Web Services notifies you when you go over 160 dollars.

        + *

        The type of threshold for a notification. For ABSOLUTE_VALUE thresholds, + * Amazon Web Services notifies you when you go over or are forecasted to go over your + * total cost threshold. For + * PERCENTAGE thresholds, Amazon Web Services notifies you when you go over + * or are forecasted to go over a certain percentage of your forecasted spend. For example, + * if you have a budget for 200 dollars and you have a PERCENTAGE threshold of + * 80%, Amazon Web Services notifies you when you go over 160 dollars.

        * @public */ ThresholdType?: ThresholdType; @@ -932,7 +986,8 @@ export interface Notification { } /** - *

        A notification with subscribers. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.

        + *

        A notification with subscribers. A notification can have one SNS subscriber and up to + * 10 email subscribers, for a total of 11 subscribers.

        * @public */ export interface NotificationWithSubscribers { @@ -949,6 +1004,24 @@ export interface NotificationWithSubscribers { Subscribers: Subscriber[] | undefined; } +/** + *

        The tag structure that contains a tag key and value.

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

        The key that's associated with the tag.

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

        The value that's associated with the tag.

        + * @public + */ + Value: string | undefined; +} + /** *

        Request of CreateBudget

        * @public @@ -971,6 +1044,13 @@ export interface CreateBudgetRequest { * @public */ NotificationsWithSubscribers?: NotificationWithSubscribers[]; + + /** + *

        An optional list of tags to associate with the specified budget. Each tag consists of a + * key and a value, and each key must be unique for the resource.

        + * @public + */ + ResourceTags?: ResourceTag[]; } /** @@ -1083,6 +1163,32 @@ export class InvalidParameterException extends __BaseException { } } +/** + *

        You've reached the limit on the number of tags you can associate with a resource.

        + * @public + */ +export class ServiceQuotaExceededException extends __BaseException { + readonly name: "ServiceQuotaExceededException" = "ServiceQuotaExceededException"; + readonly $fault: "client" = "client"; + /** + *

        The error message the exception carries.

        + * @public + */ + Message?: string; + /** + * @internal + */ + constructor(opts: __ExceptionOptionType) { + super({ + name: "ServiceQuotaExceededException", + $fault: "client", + ...opts, + }); + Object.setPrototypeOf(this, ServiceQuotaExceededException.prototype); + this.Message = opts.Message; + } +} + /** *

        The number of API requests has exceeded the maximum allowed API request throttling limit * for the account.

        @@ -1121,8 +1227,8 @@ export interface CreateBudgetActionRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1174,6 +1280,13 @@ export interface CreateBudgetActionRequest { * @public */ Subscribers: Subscriber[] | undefined; + + /** + *

        An optional list of tags to associate with the specified budget action. Each tag consists of a + * key and a value, and each key must be unique for the resource.

        + * @public + */ + ResourceTags?: ResourceTag[]; } /** @@ -1187,8 +1300,8 @@ export interface CreateBudgetActionResponse { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1335,8 +1448,8 @@ export interface DeleteBudgetActionRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1361,8 +1474,8 @@ export interface DeleteBudgetActionResponse { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1375,8 +1488,8 @@ export interface DeleteBudgetActionResponse { } /** - *

        The request was received and recognized by the server, but the server rejected that - * particular method for the requested resource.

        + *

        The request was received and recognized by the server, but the server rejected that + * particular method for the requested resource.

        * @public */ export class ResourceLockedException extends __BaseException { @@ -1508,8 +1621,8 @@ export interface DescribeBudgetActionRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1534,8 +1647,8 @@ export interface DescribeBudgetActionResponse { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1560,8 +1673,8 @@ export interface DescribeBudgetActionHistoriesRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1575,14 +1688,16 @@ export interface DescribeBudgetActionHistoriesRequest { ActionId: string | undefined; /** - *

        The period of time that's covered by a budget. The period has a start date and an end date. - * The start date must come before the end date. There are no restrictions on the end date.

        + *

        The period of time that's covered by a budget. The period has a start date and an end + * date. The start date must come before the end date. There are no restrictions on the end + * date.

        * @public */ TimePeriod?: TimePeriod; /** - *

        An integer that represents how many entries a paginated response contains. The maximum is 100.

        + *

        An integer that represents how many entries a paginated response contains. The + * maximum is 100.

        * @public */ MaxResults?: number; @@ -1650,7 +1765,8 @@ export interface DescribeBudgetActionsForAccountRequest { AccountId: string | undefined; /** - *

        An integer that represents how many entries a paginated response contains. The maximum is 100.

        + *

        An integer that represents how many entries a paginated response contains. The + * maximum is 100.

        * @public */ MaxResults?: number; @@ -1692,14 +1808,15 @@ export interface DescribeBudgetActionsForBudgetRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; /** - *

        An integer that represents how many entries a paginated response contains. The maximum is 100.

        + *

        An integer that represents how many entries a paginated response contains. The + * maximum is 100.

        * @public */ MaxResults?: number; @@ -1741,8 +1858,8 @@ export interface DescribeBudgetNotificationsForAccountRequest { AccountId: string | undefined; /** - *

        An integer that represents how many budgets a paginated response contains. The default is - * 50.

        + *

        An integer that represents how many budgets a paginated response contains. The + * default is 50.

        * @public */ MaxResults?: number; @@ -1768,8 +1885,8 @@ export interface BudgetNotificationsForAccount { Notifications?: Notification[]; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName?: string; @@ -1780,9 +1897,7 @@ export interface BudgetNotificationsForAccount { */ export interface DescribeBudgetNotificationsForAccountResponse { /** - *

        - * A list of budget names and associated notifications for an account. - *

        + *

        A list of budget names and associated notifications for an account.

        * @public */ BudgetNotificationsForAccount?: BudgetNotificationsForAccount[]; @@ -1831,8 +1946,8 @@ export interface DescribeBudgetPerformanceHistoryRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -1844,7 +1959,8 @@ export interface DescribeBudgetPerformanceHistoryRequest { TimePeriod?: TimePeriod; /** - *

        An integer that represents how many entries a paginated response contains. The maximum is 100.

        + *

        An integer that represents how many entries a paginated response contains. The + * maximum is 100.

        * @public */ MaxResults?: number; @@ -1857,7 +1973,8 @@ export interface DescribeBudgetPerformanceHistoryRequest { } /** - *

        The amount of cost or usage that you created the budget for, compared to your actual costs or usage.

        + *

        The amount of cost or usage that you created the budget for, compared to your actual + * costs or usage.

        * @public */ export interface BudgetedAndActualAmounts { @@ -1881,13 +1998,14 @@ export interface BudgetedAndActualAmounts { } /** - *

        A history of the state of a budget at the end of the budget's specified time period.

        + *

        A history of the state of a budget at the end of the budget's specified time + * period.

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

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName?: string; @@ -1895,7 +2013,9 @@ export interface BudgetPerformanceHistory { /** *

        The type of a budget. It must be one of the following types:

        *

        - * COST, USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, or SAVINGS_PLANS_COVERAGE.

        + * COST, USAGE, RI_UTILIZATION, + * RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, or + * SAVINGS_PLANS_COVERAGE.

        * @public */ BudgetType?: BudgetType; @@ -1919,8 +2039,8 @@ export interface BudgetPerformanceHistory { TimeUnit?: TimeUnit; /** - *

        A list of amounts of cost or usage that you created budgets for, which are compared to your - * actual costs or usage.

        + *

        A list of amounts of cost or usage that you created budgets for, which are compared to + * your actual costs or usage.

        * @public */ BudgetedAndActualAmountsList?: BudgetedAndActualAmounts[]; @@ -2118,8 +2238,8 @@ export interface ExecuteBudgetActionRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -2152,8 +2272,8 @@ export interface ExecuteBudgetActionResponse { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -2175,6 +2295,72 @@ export interface ExecuteBudgetActionResponse { ExecutionType: ExecutionType | undefined; } +/** + * @public + */ +export interface ListTagsForResourceRequest { + /** + *

        The unique identifier for the resource.

        + * @public + */ + ResourceARN: string | undefined; +} + +/** + * @public + */ +export interface ListTagsForResourceResponse { + /** + *

        The tags associated with the resource.

        + * @public + */ + ResourceTags?: ResourceTag[]; +} + +/** + * @public + */ +export interface TagResourceRequest { + /** + *

        The unique identifier for the resource.

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

        The tags associated with the resource.

        + * @public + */ + ResourceTags: ResourceTag[] | undefined; +} + +/** + * @public + */ +export interface TagResourceResponse {} + +/** + * @public + */ +export interface UntagResourceRequest { + /** + *

        The unique identifier for the resource.

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

        The key that's associated with the tag.

        + * @public + */ + ResourceTagKeys: string[] | undefined; +} + +/** + * @public + */ +export interface UntagResourceResponse {} + /** *

        Request of UpdateBudget

        * @public @@ -2210,8 +2396,8 @@ export interface UpdateBudgetActionRequest { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; @@ -2276,8 +2462,8 @@ export interface UpdateBudgetActionResponse { AccountId: string | undefined; /** - *

        A string that represents the budget name. The ":" and "\" characters, and the "/action/" - * substring, aren't allowed.

        + *

        A string that represents the budget name. The ":" and "\" characters, and the + * "/action/" substring, aren't allowed.

        * @public */ BudgetName: string | undefined; diff --git a/clients/client-budgets/src/protocols/Aws_json1_1.ts b/clients/client-budgets/src/protocols/Aws_json1_1.ts index af4467413012..fecc7940de5c 100644 --- a/clients/client-budgets/src/protocols/Aws_json1_1.ts +++ b/clients/client-budgets/src/protocols/Aws_json1_1.ts @@ -67,6 +67,12 @@ import { ExecuteBudgetActionCommandInput, ExecuteBudgetActionCommandOutput, } from "../commands/ExecuteBudgetActionCommand"; +import { + ListTagsForResourceCommandInput, + ListTagsForResourceCommandOutput, +} from "../commands/ListTagsForResourceCommand"; +import { TagResourceCommandInput, TagResourceCommandOutput } from "../commands/TagResourceCommand"; +import { UntagResourceCommandInput, UntagResourceCommandOutput } from "../commands/UntagResourceCommand"; import { UpdateBudgetActionCommandInput, UpdateBudgetActionCommandOutput } from "../commands/UpdateBudgetActionCommand"; import { UpdateBudgetCommandInput, UpdateBudgetCommandOutput } from "../commands/UpdateBudgetCommand"; import { UpdateNotificationCommandInput, UpdateNotificationCommandOutput } from "../commands/UpdateNotificationCommand"; @@ -123,16 +129,21 @@ import { InternalErrorException, InvalidNextTokenException, InvalidParameterException, + ListTagsForResourceRequest, NotFoundException, Notification, NotificationWithSubscribers, ResourceLockedException, + ResourceTag, ScpActionDefinition, + ServiceQuotaExceededException, Spend, SsmActionDefinition, Subscriber, + TagResourceRequest, ThrottlingException, TimePeriod, + UntagResourceRequest, UpdateBudgetActionRequest, UpdateBudgetActionResponse, UpdateBudgetRequest, @@ -387,6 +398,45 @@ export const se_ExecuteBudgetActionCommand = async ( return buildHttpRpcRequest(context, headers, "/", undefined, body); }; +/** + * serializeAws_json1_1ListTagsForResourceCommand + */ +export const se_ListTagsForResourceCommand = async ( + input: ListTagsForResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("ListTagsForResource"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + +/** + * serializeAws_json1_1TagResourceCommand + */ +export const se_TagResourceCommand = async ( + input: TagResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("TagResource"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + +/** + * serializeAws_json1_1UntagResourceCommand + */ +export const se_UntagResourceCommand = async ( + input: UntagResourceCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> => { + const headers: __HeaderBag = sharedHeaders("UntagResource"); + let body: any; + body = JSON.stringify(_json(input)); + return buildHttpRpcRequest(context, headers, "/", undefined, body); +}; + /** * serializeAws_json1_1UpdateBudgetCommand */ @@ -819,6 +869,66 @@ export const de_ExecuteBudgetActionCommand = async ( return response; }; +/** + * deserializeAws_json1_1ListTagsForResourceCommand + */ +export const de_ListTagsForResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = _json(data); + const response: ListTagsForResourceCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + +/** + * deserializeAws_json1_1TagResourceCommand + */ +export const de_TagResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = _json(data); + const response: TagResourceCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + +/** + * deserializeAws_json1_1UntagResourceCommand + */ +export const de_UntagResourceCommand = async ( + output: __HttpResponse, + context: __SerdeContext +): Promise => { + if (output.statusCode >= 300) { + return de_CommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = _json(data); + const response: UntagResourceCommandOutput = { + $metadata: deserializeMetadata(output), + ...contents, + }; + return response; +}; + /** * deserializeAws_json1_1UpdateBudgetCommand */ @@ -924,6 +1034,9 @@ const de_CommandError = async (output: __HttpResponse, context: __SerdeContext): case "InvalidParameterException": case "com.amazonaws.budgets#InvalidParameterException": throw await de_InvalidParameterExceptionRes(parsedOutput, context); + case "ServiceQuotaExceededException": + case "com.amazonaws.budgets#ServiceQuotaExceededException": + throw await de_ServiceQuotaExceededExceptionRes(parsedOutput, context); case "ThrottlingException": case "com.amazonaws.budgets#ThrottlingException": throw await de_ThrottlingExceptionRes(parsedOutput, context); @@ -1090,6 +1203,22 @@ const de_ResourceLockedExceptionRes = async ( return __decorateServiceException(exception, body); }; +/** + * deserializeAws_json1_1ServiceQuotaExceededExceptionRes + */ +const de_ServiceQuotaExceededExceptionRes = async ( + parsedOutput: any, + context: __SerdeContext +): Promise => { + const body = parsedOutput.body; + const deserialized: any = _json(body); + const exception = new ServiceQuotaExceededException({ + $metadata: deserializeMetadata(parsedOutput), + ...deserialized, + }); + return __decorateServiceException(exception, body); +}; + /** * deserializeAws_json1_1ThrottlingExceptionRes */ @@ -1162,6 +1291,7 @@ const se_CreateBudgetActionRequest = (input: CreateBudgetActionRequest, context: Definition: _json, ExecutionRoleArn: [], NotificationType: [], + ResourceTags: _json, Subscribers: _json, }); }; @@ -1174,6 +1304,7 @@ const se_CreateBudgetRequest = (input: CreateBudgetRequest, context: __SerdeCont AccountId: [], Budget: (_) => se_Budget(_, context), NotificationsWithSubscribers: (_) => se_NotificationWithSubscribersList(_, context), + ResourceTags: _json, }); }; @@ -1305,6 +1436,8 @@ const se_DescribeSubscribersForNotificationRequest = ( // se_InstanceIds omitted. +// se_ListTagsForResourceRequest omitted. + /** * serializeAws_json1_1Notification */ @@ -1341,6 +1474,12 @@ const se_NotificationWithSubscribersList = (input: NotificationWithSubscribers[] // se_PlannedBudgetLimits omitted. +// se_ResourceTag omitted. + +// se_ResourceTagKeyList omitted. + +// se_ResourceTagList omitted. + // se_Roles omitted. // se_ScpActionDefinition omitted. @@ -1353,6 +1492,8 @@ const se_NotificationWithSubscribersList = (input: NotificationWithSubscribers[] // se_Subscribers omitted. +// se_TagResourceRequest omitted. + // se_TargetIds omitted. /** @@ -1365,6 +1506,8 @@ const se_TimePeriod = (input: TimePeriod, context: __SerdeContext): any => { }); }; +// se_UntagResourceRequest omitted. + /** * serializeAws_json1_1UpdateBudgetActionRequest */ @@ -1766,6 +1909,8 @@ const de_DescribeNotificationsForBudgetResponse = ( // de_InvalidParameterException omitted. +// de_ListTagsForResourceResponse omitted. + // de_NotFoundException omitted. /** @@ -1797,10 +1942,16 @@ const de_Notifications = (output: any, context: __SerdeContext): Notification[] // de_ResourceLockedException omitted. +// de_ResourceTag omitted. + +// de_ResourceTagList omitted. + // de_Roles omitted. // de_ScpActionDefinition omitted. +// de_ServiceQuotaExceededException omitted. + // de_Spend omitted. // de_SsmActionDefinition omitted. @@ -1809,6 +1960,8 @@ const de_Notifications = (output: any, context: __SerdeContext): Notification[] // de_Subscribers omitted. +// de_TagResourceResponse omitted. + // de_TargetIds omitted. // de_ThrottlingException omitted. @@ -1823,6 +1976,8 @@ const de_TimePeriod = (output: any, context: __SerdeContext): TimePeriod => { }) as any; }; +// de_UntagResourceResponse omitted. + /** * deserializeAws_json1_1UpdateBudgetActionResponse */ diff --git a/codegen/sdk-codegen/aws-models/budgets.json b/codegen/sdk-codegen/aws-models/budgets.json index 0a91d497ba90..6932de648e8d 100644 --- a/codegen/sdk-codegen/aws-models/budgets.json +++ b/codegen/sdk-codegen/aws-models/budgets.json @@ -90,6 +90,15 @@ { "target": "com.amazonaws.budgets#ExecuteBudgetAction" }, + { + "target": "com.amazonaws.budgets#ListTagsForResource" + }, + { + "target": "com.amazonaws.budgets#TagResource" + }, + { + "target": "com.amazonaws.budgets#UntagResource" + }, { "target": "com.amazonaws.budgets#UpdateBudget" }, @@ -960,7 +969,7 @@ "ActionType": { "target": "com.amazonaws.budgets#ActionType", "traits": { - "smithy.api#documentation": "

        The type of action. This defines the type of tasks that can be carried out by this action.\n\t\t\tThis field also determines the format for definition.

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

        The type of action. This defines the type of tasks that can be carried out by this\n\t\t\taction. This field also determines the format for definition.

        ", "smithy.api#required": {} } }, @@ -981,7 +990,7 @@ "ExecutionRoleArn": { "target": "com.amazonaws.budgets#RoleArn", "traits": { - "smithy.api#documentation": "

        The role passed for action execution and reversion. Roles and actions must be in the same\n\t\t\taccount.

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

        The role passed for action execution and reversion. Roles and actions must be in the\n\t\t\tsame account.

        ", "smithy.api#required": {} } }, @@ -1041,7 +1050,7 @@ "EventType": { "target": "com.amazonaws.budgets#EventType", "traits": { - "smithy.api#documentation": "

        This distinguishes between whether the events are triggered by the user or are generated by\n\t\t\tthe system.

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

        This distinguishes between whether the events are triggered by the user or are\n\t\t\tgenerated by the system.

        ", "smithy.api#required": {} } }, @@ -1235,6 +1244,15 @@ } } }, + "com.amazonaws.budgets#AmazonResourceName": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 1011 + } + } + }, "com.amazonaws.budgets#ApprovalModel": { "type": "enum", "members": { @@ -1258,14 +1276,14 @@ "AutoAdjustType": { "target": "com.amazonaws.budgets#AutoAdjustType", "traits": { - "smithy.api#documentation": "

        The string that defines whether your budget auto-adjusts based on historical or forecasted data.

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

        The string that defines whether your budget auto-adjusts based on historical or\n\t\t\tforecasted data.

        ", "smithy.api#required": {} } }, "HistoricalOptions": { "target": "com.amazonaws.budgets#HistoricalOptions", "traits": { - "smithy.api#documentation": "

        The parameters that define or describe the historical data that your auto-adjusting budget is based on.

        " + "smithy.api#documentation": "

        The parameters that define or describe the historical data that your auto-adjusting\n\t\t\tbudget is based on.

        " } }, "LastAutoAdjustTime": { @@ -1302,32 +1320,32 @@ "BudgetName": { "target": "com.amazonaws.budgets#BudgetName", "traits": { - "smithy.api#documentation": "

        The name of a budget. The name must be unique within an account. The : and\n\t\t\t\t\\ characters, and the \"/action/\" substring, aren't allowed in\n\t\t\t\tBudgetName.

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

        The name of a budget. The name must be unique within an account. The :\n\t\t\tand \\ characters, and the \"/action/\" substring, aren't allowed in\n\t\t\t\tBudgetName.

        ", "smithy.api#required": {} } }, "BudgetLimit": { "target": "com.amazonaws.budgets#Spend", "traits": { - "smithy.api#documentation": "

        The total amount of cost, usage, RI utilization, RI coverage, Savings Plans utilization, or\n\t\t\tSavings Plans coverage that you want to track with your budget.

        \n

        \n BudgetLimit is required for cost or usage budgets, but optional for RI or\n\t\t\tSavings Plans utilization or coverage budgets. RI and Savings Plans utilization or\n\t\t\tcoverage budgets default to 100. This is the only valid value for RI or\n\t\t\tSavings Plans utilization or coverage budgets. You can't use BudgetLimit\n\t\t\twith PlannedBudgetLimits for CreateBudget and\n\t\t\t\tUpdateBudget actions.

        " + "smithy.api#documentation": "

        The total amount of cost, usage, RI utilization, RI coverage, Savings Plans\n\t\t\tutilization, or Savings Plans coverage that you want to track with your budget.

        \n

        \n BudgetLimit is required for cost or usage budgets, but optional for RI or\n\t\t\tSavings Plans utilization or coverage budgets. RI and Savings Plans utilization or\n\t\t\tcoverage budgets default to 100. This is the only valid value for RI or\n\t\t\tSavings Plans utilization or coverage budgets. You can't use BudgetLimit\n\t\t\twith PlannedBudgetLimits for CreateBudget and\n\t\t\t\tUpdateBudget actions.

        " } }, "PlannedBudgetLimits": { "target": "com.amazonaws.budgets#PlannedBudgetLimits", "traits": { - "smithy.api#documentation": "

        A map containing multiple BudgetLimit, including current or future limits.

        \n

        \n PlannedBudgetLimits is available for cost or usage budget and supports both\n\t\t\tmonthly and quarterly TimeUnit.

        \n

        For monthly budgets, provide 12 months of PlannedBudgetLimits values. This must start from the current month and include the next 11 months. The key is the start of the month, UTC in epoch seconds.

        \n

        For quarterly budgets, provide four quarters of PlannedBudgetLimits value\n\t\t\tentries in standard calendar quarter increments. This must start from the current\n\t\t\tquarter and include the next three quarters. The key is the start of the\n\t\t\tquarter, UTC in epoch seconds.

        \n

        If the planned budget expires before 12 months for monthly or four quarters for quarterly,\n\t\t\tprovide the PlannedBudgetLimits values only for the remaining\n\t\t\tperiods.

        \n

        If the budget begins at a date in the future, provide PlannedBudgetLimits values from the start date of the budget.

        \n

        After all of the BudgetLimit values in PlannedBudgetLimits are used, the budget continues to use the last limit as the BudgetLimit. At that point, the planned budget provides the same experience as a fixed budget.

        \n

        \n DescribeBudget and DescribeBudgets response along with\n\t\t\t\tPlannedBudgetLimits also contain BudgetLimit representing\n\t\t\tthe current month or quarter limit present in PlannedBudgetLimits. This\n\t\t\tonly applies to budgets that are created with PlannedBudgetLimits. Budgets\n\t\t\tthat are created without PlannedBudgetLimits only contain\n\t\t\t\tBudgetLimit. They don't contain\n\t\t\tPlannedBudgetLimits.

        " + "smithy.api#documentation": "

        A map containing multiple BudgetLimit, including current or future\n\t\t\tlimits.

        \n

        \n PlannedBudgetLimits is available for cost or usage budget and supports\n\t\t\tboth monthly and quarterly TimeUnit.

        \n

        For monthly budgets, provide 12 months of PlannedBudgetLimits values.\n\t\t\tThis must start from the current month and include the next 11 months. The\n\t\t\t\tkey is the start of the month, UTC in epoch seconds.

        \n

        For quarterly budgets, provide four quarters of PlannedBudgetLimits value\n\t\t\tentries in standard calendar quarter increments. This must start from the current\n\t\t\tquarter and include the next three quarters. The key is the start of the\n\t\t\tquarter, UTC in epoch seconds.

        \n

        If the planned budget expires before 12 months for monthly or four quarters for\n\t\t\tquarterly, provide the PlannedBudgetLimits values only for the remaining\n\t\t\tperiods.

        \n

        If the budget begins at a date in the future, provide PlannedBudgetLimits\n\t\t\tvalues from the start date of the budget.

        \n

        After all of the BudgetLimit values in PlannedBudgetLimits\n\t\t\tare used, the budget continues to use the last limit as the BudgetLimit. At\n\t\t\tthat point, the planned budget provides the same experience as a fixed budget.

        \n

        \n DescribeBudget and DescribeBudgets response along with\n\t\t\t\tPlannedBudgetLimits also contain BudgetLimit representing\n\t\t\tthe current month or quarter limit present in PlannedBudgetLimits. This\n\t\t\tonly applies to budgets that are created with PlannedBudgetLimits. Budgets\n\t\t\tthat are created without PlannedBudgetLimits only contain\n\t\t\t\tBudgetLimit. They don't contain\n\t\t\tPlannedBudgetLimits.

        " } }, "CostFilters": { "target": "com.amazonaws.budgets#CostFilters", "traits": { - "smithy.api#documentation": "

        The cost filters, such as Region, Service, member account, Tag, or Cost Category, that are applied to a budget.

        \n

        Amazon Web Services Budgets supports the following services as a Service filter for RI budgets:

        \n
          \n
        • \n

          Amazon EC2

          \n
        • \n
        • \n

          Amazon Redshift

          \n
        • \n
        • \n

          Amazon Relational Database Service

          \n
        • \n
        • \n

          Amazon ElastiCache

          \n
        • \n
        • \n

          Amazon OpenSearch Service

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

        The cost filters, such as Region, Service,\n\t\t\t\tLinkedAccount, Tag, or CostCategory, that are\n\t\t\tapplied to a budget.

        \n

        Amazon Web Services Budgets supports the following services as a Service filter for RI budgets:

        \n
          \n
        • \n

          Amazon EC2

          \n
        • \n
        • \n

          Amazon Redshift

          \n
        • \n
        • \n

          Amazon Relational Database Service

          \n
        • \n
        • \n

          Amazon ElastiCache

          \n
        • \n
        • \n

          Amazon OpenSearch Service

          \n
        • \n
        " } }, "CostTypes": { "target": "com.amazonaws.budgets#CostTypes", "traits": { - "smithy.api#documentation": "

        The types of costs that are included in this COST budget.

        \n

        \n USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE budgets do not have CostTypes.

        " + "smithy.api#documentation": "

        The types of costs that are included in this COST budget.

        \n

        \n USAGE, RI_UTILIZATION, RI_COVERAGE,\n\t\t\t\tSAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE\n\t\t\tbudgets do not have CostTypes.

        " } }, "TimeUnit": { @@ -1340,7 +1358,7 @@ "TimePeriod": { "target": "com.amazonaws.budgets#TimePeriod", "traits": { - "smithy.api#documentation": "

        The period of time that's covered by a budget. You setthe start date and end date. The start\n\t\t\tdate must come before the end date. The end date must come before 06/15/87 00:00\n\t\t\t\tUTC.

        \n

        If you create your budget and don't specify a start date, Amazon Web Services defaults to the\n\t\t\tstart of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example,\n\t\t\tif you created your budget on January 24, 2018, chose DAILY, and didn't set\n\t\t\ta start date, Amazon Web Services set your start date to 01/24/18 00:00 UTC.\n\t\t\tIf you chose MONTHLY, Amazon Web Services set your start date to\n\t\t\t\t01/01/18 00:00 UTC. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are the same for\n\t\t\tthe Billing and Cost Management console and the API.

        \n

        You can change either date with the UpdateBudget operation.

        \n

        After the end date, Amazon Web Services deletes the budget and all the associated\n\t\t\tnotifications and subscribers.

        " + "smithy.api#documentation": "

        The period of time that's covered by a budget. You setthe start date and end date. The\n\t\t\tstart date must come before the end date. The end date must come before 06/15/87\n\t\t\t\t00:00 UTC.

        \n

        If you create your budget and don't specify a start date, Amazon Web Services defaults\n\t\t\tto the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For\n\t\t\texample, if you created your budget on January 24, 2018, chose DAILY, and\n\t\t\tdidn't set a start date, Amazon Web Services set your start date to 01/24/18 00:00\n\t\t\t\tUTC. If you chose MONTHLY, Amazon Web Services set your start\n\t\t\tdate to 01/01/18 00:00 UTC. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are\n\t\t\tthe same for the Billing and Cost Management console and the API.

        \n

        You can change either date with the UpdateBudget operation.

        \n

        After the end date, Amazon Web Services deletes the budget and all the associated\n\t\t\tnotifications and subscribers.

        " } }, "CalculatedSpend": { @@ -1352,7 +1370,7 @@ "BudgetType": { "target": "com.amazonaws.budgets#BudgetType", "traits": { - "smithy.api#documentation": "

        Specifies whether this budget tracks costs, usage, RI utilization, RI coverage, Savings\n\t\t\tPlans utilization, or Savings Plans coverage.

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

        Specifies whether this budget tracks costs, usage, RI utilization, RI coverage,\n\t\t\tSavings Plans utilization, or Savings Plans coverage.

        ", "smithy.api#required": {} } }, @@ -1370,18 +1388,18 @@ } }, "traits": { - "smithy.api#documentation": "

        Represents the output of the CreateBudget operation. The content consists of the detailed metadata and data file information, and the current status of the budget object.

        \n

        This is the Amazon Resource Name (ARN) pattern for a budget:

        \n

        \n arn:aws:budgets::AccountId:budget/budgetName\n

        " + "smithy.api#documentation": "

        Represents the output of the CreateBudget operation. The content consists\n\t\t\tof the detailed metadata and data file information, and the current status of the\n\t\t\t\tbudget object.

        \n

        This is the Amazon Resource Name (ARN) pattern for a budget:

        \n

        \n arn:aws:budgets::AccountId:budget/budgetName\n

        " } }, "com.amazonaws.budgets#BudgetName": { "type": "string", "traits": { - "smithy.api#documentation": "

        A string that represents the budget name. The \":\" and \"\\\" characters, and the \"/action/\"\n\t\t\tsubstring, aren't allowed.

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

        A string that represents the budget name. The \":\" and \"\\\" characters, and the\n\t\t\t\"/action/\" substring, aren't allowed.

        ", "smithy.api#length": { "min": 1, "max": 100 }, - "smithy.api#pattern": "^(?![^:\\\\]*/action/)[^:\\\\]+$" + "smithy.api#pattern": "^(?![^:\\\\]*/action/|(?i).*.*)[^:\\\\]+$" } }, "com.amazonaws.budgets#BudgetNotificationsForAccount": { @@ -1437,12 +1455,12 @@ "BudgetedAndActualAmountsList": { "target": "com.amazonaws.budgets#BudgetedAndActualAmountsList", "traits": { - "smithy.api#documentation": "

        A list of amounts of cost or usage that you created budgets for, which are compared to your\n\t\t\tactual costs or usage.

        " + "smithy.api#documentation": "

        A list of amounts of cost or usage that you created budgets for, which are compared to\n\t\t\tyour actual costs or usage.

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

        A history of the state of a budget at the end of the budget's specified time period.

        " + "smithy.api#documentation": "

        A history of the state of a budget at the end of the budget's specified time\n\t\t\tperiod.

        " } }, "com.amazonaws.budgets#BudgetType": { @@ -1486,7 +1504,7 @@ } }, "traits": { - "smithy.api#documentation": "

        The type of a budget. It must be one of the following types:

        \n

        \n COST, USAGE, RI_UTILIZATION, RI_COVERAGE, SAVINGS_PLANS_UTILIZATION, or SAVINGS_PLANS_COVERAGE.

        " + "smithy.api#documentation": "

        The type of a budget. It must be one of the following types:

        \n

        \n COST, USAGE, RI_UTILIZATION,\n\t\t\t\tRI_COVERAGE, SAVINGS_PLANS_UTILIZATION, or\n\t\t\t\tSAVINGS_PLANS_COVERAGE.

        " } }, "com.amazonaws.budgets#BudgetedAndActualAmounts": { @@ -1512,7 +1530,7 @@ } }, "traits": { - "smithy.api#documentation": "

        The amount of cost or usage that you created the budget for, compared to your actual costs or usage.

        " + "smithy.api#documentation": "

        The amount of cost or usage that you created the budget for, compared to your actual\n\t\t\tcosts or usage.

        " } }, "com.amazonaws.budgets#BudgetedAndActualAmountsList": { @@ -1548,7 +1566,7 @@ } }, "traits": { - "smithy.api#documentation": "

        The spend objects that are associated with this budget. The actualSpend tracks\n\t\t\thow much you've used, cost, usage, RI units, or Savings Plans units and the\n\t\t\t\tforecastedSpend tracks how much that you're predicted to spend based on\n\t\t\tyour historical usage profile.

        \n

        For example, if it's the 20th of the month and you have spent 50 dollars on\n\t\t\tAmazon EC2, your actualSpend is 50 USD, and your\n\t\t\t\tforecastedSpend is 75 USD.

        " + "smithy.api#documentation": "

        The spend objects that are associated with this budget. The actualSpend\n\t\t\ttracks how much you've used, cost, usage, RI units, or Savings Plans units and the\n\t\t\t\tforecastedSpend tracks how much that you're predicted to spend based on\n\t\t\tyour historical usage profile.

        \n

        For example, if it's the 20th of the month and you have spent 50 dollars\n\t\t\ton Amazon EC2, your actualSpend is 50 USD, and your\n\t\t\t\tforecastedSpend is 75 USD.

        " } }, "com.amazonaws.budgets#ComparisonOperator": { @@ -1574,7 +1592,7 @@ } }, "traits": { - "smithy.api#documentation": "

        The comparison operator of a notification. Currently, the service supports the following\n\t\t\toperators:

        \n

        \n GREATER_THAN, LESS_THAN, EQUAL_TO\n

        " + "smithy.api#documentation": "

        The comparison operator of a notification. Currently, the service supports the\n\t\t\tfollowing operators:

        \n

        \n GREATER_THAN, LESS_THAN, EQUAL_TO\n

        " } }, "com.amazonaws.budgets#CostFilters": { @@ -1660,7 +1678,7 @@ } }, "traits": { - "smithy.api#documentation": "

        The types of cost that are included in a COST budget, such as tax and subscriptions.

        \n

        \n USAGE, RI_UTILIZATION, RI_COVERAGE,\n\t\t\t\tSAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE\n\t\t\tbudgets don't have CostTypes.

        " + "smithy.api#documentation": "

        The types of cost that are included in a COST budget, such as tax and\n\t\t\tsubscriptions.

        \n

        \n USAGE, RI_UTILIZATION, RI_COVERAGE,\n\t\t\t\tSAVINGS_PLANS_UTILIZATION, and SAVINGS_PLANS_COVERAGE\n\t\t\tbudgets don't have CostTypes.

        " } }, "com.amazonaws.budgets#CreateBudget": { @@ -1687,6 +1705,9 @@ { "target": "com.amazonaws.budgets#InvalidParameterException" }, + { + "target": "com.amazonaws.budgets#ServiceQuotaExceededException" + }, { "target": "com.amazonaws.budgets#ThrottlingException" } @@ -1722,6 +1743,9 @@ { "target": "com.amazonaws.budgets#NotFoundException" }, + { + "target": "com.amazonaws.budgets#ServiceQuotaExceededException" + }, { "target": "com.amazonaws.budgets#ThrottlingException" } @@ -1789,6 +1813,12 @@ "traits": { "smithy.api#required": {} } + }, + "ResourceTags": { + "target": "com.amazonaws.budgets#ResourceTagList", + "traits": { + "smithy.api#documentation": "

        An optional list of tags to associate with the specified budget action. Each tag consists of a\n key and a value, and each key must be unique for the resource.

        " + } } }, "traits": { @@ -1844,6 +1874,12 @@ "traits": { "smithy.api#documentation": "

        A notification that you want to associate with a budget. A budget can have up to five notifications, and each notification can have one SNS subscriber and up to 10 email subscribers. If you include notifications and subscribers in your CreateBudget call, Amazon Web Services creates the notifications and subscribers for you.

        " } + }, + "ResourceTags": { + "target": "com.amazonaws.budgets#ResourceTagList", + "traits": { + "smithy.api#documentation": "

        An optional list of tags to associate with the specified budget. Each tag consists of a\n key and a value, and each key must be unique for the resource.

        " + } } }, "traits": { @@ -2735,7 +2771,7 @@ } ], "traits": { - "smithy.api#documentation": "

        \n\t\t\tLists the budget names and notifications that are associated with an account.\n\t\t

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

        Lists the budget names and notifications that are associated with an account.

        ", "smithy.api#paginated": { "inputToken": "NextToken", "outputToken": "NextToken", @@ -2756,7 +2792,7 @@ "MaxResults": { "target": "com.amazonaws.budgets#MaxResultsBudgetNotifications", "traits": { - "smithy.api#documentation": "

        An integer that represents how many budgets a paginated response contains. The default is\n\t\t\t50.

        " + "smithy.api#documentation": "

        An integer that represents how many budgets a paginated response contains. The\n\t\t\tdefault is 50.

        " } }, "NextToken": { @@ -2773,7 +2809,7 @@ "BudgetNotificationsForAccount": { "target": "com.amazonaws.budgets#BudgetNotificationsForAccountList", "traits": { - "smithy.api#documentation": "

        \n\t\t\tA list of budget names and associated notifications for an account.\n\t\t

        " + "smithy.api#documentation": "

        A list of budget names and associated notifications for an account.

        " } }, "NextToken": { @@ -3453,19 +3489,19 @@ "BudgetAdjustmentPeriod": { "target": "com.amazonaws.budgets#AdjustmentPeriod", "traits": { - "smithy.api#documentation": "

        The number of budget periods included in the moving-average calculation that determines your auto-adjusted budget amount. The maximum value depends on the TimeUnit granularity of the budget:

        \n
          \n
        • \n

          For the DAILY granularity, the maximum value is 60.

          \n
        • \n
        • \n

          For the MONTHLY granularity, the maximum value is 12.

          \n
        • \n
        • \n

          For the QUARTERLY granularity, the maximum value is 4.

          \n
        • \n
        • \n

          For the ANNUALLY granularity, the maximum value is 1.

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

        The number of budget periods included in the moving-average calculation that\n\t\t\tdetermines your auto-adjusted budget amount. The maximum value depends on the\n\t\t\t\tTimeUnit granularity of the budget:

        \n
          \n
        • \n

          For the DAILY granularity, the maximum value is\n\t\t\t\t\t60.

          \n
        • \n
        • \n

          For the MONTHLY granularity, the maximum value is\n\t\t\t\t\t12.

          \n
        • \n
        • \n

          For the QUARTERLY granularity, the maximum value is\n\t\t\t\t\t\t4.

          \n
        • \n
        • \n

          For the ANNUALLY granularity, the maximum value is\n\t\t\t\t\t1.

          \n
        • \n
        ", "smithy.api#required": {} } }, "LookBackAvailablePeriods": { "target": "com.amazonaws.budgets#AdjustmentPeriod", "traits": { - "smithy.api#documentation": "

        The integer that describes how many budget periods in your BudgetAdjustmentPeriod are included in the calculation of your current BudgetLimit. If the first budget period in your BudgetAdjustmentPeriod has no cost data, then that budget period isn’t included in the average that determines your budget limit.

        \n

        For example, if you set BudgetAdjustmentPeriod as 4 quarters, but your account had no cost data in the first quarter, then only the last three quarters are included in the calculation. In this scenario, LookBackAvailablePeriods returns 3.

        \n

        You can’t set your own LookBackAvailablePeriods. The value is automatically calculated from the BudgetAdjustmentPeriod and your historical cost data.

        " + "smithy.api#documentation": "

        The integer that describes how many budget periods in your\n\t\t\t\tBudgetAdjustmentPeriod are included in the calculation of your current\n\t\t\t\tBudgetLimit. If the first budget period in your\n\t\t\t\tBudgetAdjustmentPeriod has no cost data, then that budget period isn’t\n\t\t\tincluded in the average that determines your budget limit.

        \n

        For example, if you set BudgetAdjustmentPeriod as 4\n\t\t\tquarters, but your account had no cost data in the first quarter, then only the last\n\t\t\tthree quarters are included in the calculation. In this scenario,\n\t\t\t\tLookBackAvailablePeriods returns 3.

        \n

        You can’t set your own LookBackAvailablePeriods. The value is\n\t\t\tautomatically calculated from the BudgetAdjustmentPeriod and your\n\t\t\thistorical cost data.

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

        The parameters that define or describe the historical data that your auto-adjusting budget is based on.

        " + "smithy.api#documentation": "

        The parameters that define or describe the historical data that your auto-adjusting\n\t\t\tbudget is based on.

        " } }, "com.amazonaws.budgets#IamActionDefinition": { @@ -3562,10 +3598,68 @@ "smithy.api#httpError": 400 } }, + "com.amazonaws.budgets#ListTagsForResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.budgets#ListTagsForResourceRequest" + }, + "output": { + "target": "com.amazonaws.budgets#ListTagsForResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.budgets#AccessDeniedException" + }, + { + "target": "com.amazonaws.budgets#InternalErrorException" + }, + { + "target": "com.amazonaws.budgets#InvalidParameterException" + }, + { + "target": "com.amazonaws.budgets#NotFoundException" + }, + { + "target": "com.amazonaws.budgets#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

        Lists tags associated with a budget or budget action resource.

        " + } + }, + "com.amazonaws.budgets#ListTagsForResourceRequest": { + "type": "structure", + "members": { + "ResourceARN": { + "target": "com.amazonaws.budgets#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

        The unique identifier for the resource.

        ", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.budgets#ListTagsForResourceResponse": { + "type": "structure", + "members": { + "ResourceTags": { + "target": "com.amazonaws.budgets#ResourceTagList", + "traits": { + "smithy.api#documentation": "

        The tags associated with the resource.

        " + } + } + }, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.budgets#MaxResults": { "type": "integer", "traits": { - "smithy.api#documentation": "

        An integer that represents how many entries a paginated response contains. The maximum is 100.

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

        An integer that represents how many entries a paginated response contains. The\n\t\t\tmaximum is 100.

        ", "smithy.api#range": { "min": 1, "max": 100 @@ -3609,7 +3703,7 @@ "NotificationType": { "target": "com.amazonaws.budgets#NotificationType", "traits": { - "smithy.api#documentation": "

        Specifies whether the notification is for how much you have spent (ACTUAL) or\n\t\t\tfor how much that you're forecasted to spend (FORECASTED).

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

        Specifies whether the notification is for how much you have spent\n\t\t\t(ACTUAL) or for how much that you're forecasted to spend\n\t\t\t\t(FORECASTED).

        ", "smithy.api#required": {} } }, @@ -3624,14 +3718,14 @@ "target": "com.amazonaws.budgets#NotificationThreshold", "traits": { "smithy.api#default": 0, - "smithy.api#documentation": "

        The threshold that's associated with a notification. Thresholds are always a percentage, and\n\t\t\tmany customers find value being alerted between 50% - 200% of the budgeted amount. The\n\t\t\tmaximum limit for your threshold is 1,000,000% above the budgeted amount.

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

        The threshold that's associated with a notification. Thresholds are always a\n\t\t\tpercentage, and many customers find value being alerted between 50% - 200% of the\n\t\t\tbudgeted amount. The maximum limit for your threshold is 1,000,000% above the budgeted\n\t\t\tamount.

        ", "smithy.api#required": {} } }, "ThresholdType": { "target": "com.amazonaws.budgets#ThresholdType", "traits": { - "smithy.api#documentation": "

        The type of threshold for a notification. For ABSOLUTE_VALUE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over your total cost threshold. For PERCENTAGE thresholds, Amazon Web Services notifies you when you go over or are forecasted to go over a certain percentage of your forecasted spend. For example, if you have a budget for 200 dollars and you have a PERCENTAGE threshold of 80%, Amazon Web Services notifies you when you go over 160 dollars.

        " + "smithy.api#documentation": "

        The type of threshold for a notification. For ABSOLUTE_VALUE thresholds,\n\t\t\t\tAmazon Web Services notifies you when you go over or are forecasted to go over your\n\t\t\ttotal cost threshold. For\n\t\t\t\tPERCENTAGE thresholds, Amazon Web Services notifies you when you go over\n\t\t\tor are forecasted to go over a certain percentage of your forecasted spend. For example,\n\t\t\tif you have a budget for 200 dollars and you have a PERCENTAGE threshold of\n\t\t\t80%, Amazon Web Services notifies you when you go over 160 dollars.

        " } }, "NotificationState": { @@ -3642,7 +3736,7 @@ } }, "traits": { - "smithy.api#documentation": "

        A notification that's associated with a budget. A budget can have up to ten notifications.

        \n

        Each notification must have at least one subscriber. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.

        \n

        For example, if you have a budget for 200 dollars and you want to be notified when you go over 160 dollars, create a notification with the following parameters:

        \n
          \n
        • \n

          A notificationType of ACTUAL\n

          \n
        • \n
        • \n

          A thresholdType of PERCENTAGE\n

          \n
        • \n
        • \n

          A comparisonOperator of GREATER_THAN\n

          \n
        • \n
        • \n

          A notification threshold of 80\n

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

        A notification that's associated with a budget. A budget can have up to ten\n\t\t\tnotifications.

        \n

        Each notification must have at least one subscriber. A notification can have one SNS\n\t\t\tsubscriber and up to 10 email subscribers, for a total of 11 subscribers.

        \n

        For example, if you have a budget for 200 dollars and you want to be notified when you\n\t\t\tgo over 160 dollars, create a notification with the following parameters:

        \n
          \n
        • \n

          A notificationType of ACTUAL\n

          \n
        • \n
        • \n

          A thresholdType of PERCENTAGE\n

          \n
        • \n
        • \n

          A comparisonOperator of GREATER_THAN\n

          \n
        • \n
        • \n

          A notification threshold of 80\n

          \n
        • \n
        " } }, "com.amazonaws.budgets#NotificationState": { @@ -3712,7 +3806,7 @@ } }, "traits": { - "smithy.api#documentation": "

        A notification with subscribers. A notification can have one SNS subscriber and up to 10 email subscribers, for a total of 11 subscribers.

        " + "smithy.api#documentation": "

        A notification with subscribers. A notification can have one SNS subscriber and up to\n\t\t\t10 email subscribers, for a total of 11 subscribers.

        " } }, "com.amazonaws.budgets#NotificationWithSubscribersList": { @@ -3798,11 +3892,75 @@ } }, "traits": { - "smithy.api#documentation": "

        The request was received and recognized by the server, but the server rejected that\n particular method for the requested resource.

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

        The request was received and recognized by the server, but the server rejected that\n particular method for the requested resource.

        ", "smithy.api#error": "client", "smithy.api#httpError": 423 } }, + "com.amazonaws.budgets#ResourceTag": { + "type": "structure", + "members": { + "Key": { + "target": "com.amazonaws.budgets#ResourceTagKey", + "traits": { + "smithy.api#documentation": "

        The key that's associated with the tag.

        ", + "smithy.api#required": {} + } + }, + "Value": { + "target": "com.amazonaws.budgets#ResourceTagValue", + "traits": { + "smithy.api#documentation": "

        The value that's associated with the tag.

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

        The tag structure that contains a tag key and value.

        " + } + }, + "com.amazonaws.budgets#ResourceTagKey": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 1, + "max": 128 + } + } + }, + "com.amazonaws.budgets#ResourceTagKeyList": { + "type": "list", + "member": { + "target": "com.amazonaws.budgets#ResourceTagKey" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 200 + } + } + }, + "com.amazonaws.budgets#ResourceTagList": { + "type": "list", + "member": { + "target": "com.amazonaws.budgets#ResourceTag" + }, + "traits": { + "smithy.api#length": { + "min": 0, + "max": 200 + } + } + }, + "com.amazonaws.budgets#ResourceTagValue": { + "type": "string", + "traits": { + "smithy.api#length": { + "min": 0, + "max": 256 + } + } + }, "com.amazonaws.budgets#Role": { "type": "string", "traits": { @@ -3857,13 +4015,26 @@ "smithy.api#documentation": "

        The service control policies (SCP) action definition details.

        " } }, + "com.amazonaws.budgets#ServiceQuotaExceededException": { + "type": "structure", + "members": { + "Message": { + "target": "com.amazonaws.budgets#errorMessage" + } + }, + "traits": { + "smithy.api#documentation": "

        You've reached the limit on the number of tags you can associate with a resource.

        ", + "smithy.api#error": "client", + "smithy.api#httpError": 402 + } + }, "com.amazonaws.budgets#Spend": { "type": "structure", "members": { "Amount": { "target": "com.amazonaws.budgets#NumericValue", "traits": { - "smithy.api#documentation": "

        The cost or usage amount that's associated with a budget forecast, actual spend, or budget\n\t\t\tthreshold.

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

        The cost or usage amount that's associated with a budget forecast, actual spend, or\n\t\t\tbudget threshold.

        ", "smithy.api#required": {} } }, @@ -3921,19 +4092,19 @@ "Address": { "target": "com.amazonaws.budgets#SubscriberAddress", "traits": { - "smithy.api#documentation": "

        The address that Amazon Web Services sends budget notifications to, either an SNS topic or an email.

        \n

        When you create a subscriber, the value of Address can't contain line breaks.

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

        The address that Amazon Web Services sends budget notifications to, either an SNS topic\n\t\t\tor an email.

        \n

        When you create a subscriber, the value of Address can't contain line\n\t\t\tbreaks.

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

        The subscriber to a budget notification. The subscriber consists of a subscription type and either an Amazon SNS topic or an email address.

        \n

        For example, an email subscriber has the following parameters:

        \n
          \n
        • \n

          A subscriptionType of EMAIL\n

          \n
        • \n
        • \n

          An address of example@example.com\n

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

        The subscriber to a budget notification. The subscriber consists of a subscription\n\t\t\ttype and either an Amazon SNS topic or an email address.

        \n

        For example, an email subscriber has the following parameters:

        \n
          \n
        • \n

          A subscriptionType of EMAIL\n

          \n
        • \n
        • \n

          An address of example@example.com\n

          \n
        • \n
        " } }, "com.amazonaws.budgets#SubscriberAddress": { "type": "string", "traits": { - "smithy.api#documentation": "

        A string that contains an email address or SNS topic for the subscriber's address.

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

        A string that contains an email address or SNS topic for the subscriber's\n\t\t\taddress.

        ", "smithy.api#length": { "min": 1, "max": 2147483647 @@ -3975,6 +4146,67 @@ "smithy.api#documentation": "

        The subscription type of the subscriber. It can be SMS or EMAIL.

        " } }, + "com.amazonaws.budgets#TagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.budgets#TagResourceRequest" + }, + "output": { + "target": "com.amazonaws.budgets#TagResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.budgets#AccessDeniedException" + }, + { + "target": "com.amazonaws.budgets#InternalErrorException" + }, + { + "target": "com.amazonaws.budgets#InvalidParameterException" + }, + { + "target": "com.amazonaws.budgets#NotFoundException" + }, + { + "target": "com.amazonaws.budgets#ServiceQuotaExceededException" + }, + { + "target": "com.amazonaws.budgets#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

        Creates tags for a budget or budget action resource.

        " + } + }, + "com.amazonaws.budgets#TagResourceRequest": { + "type": "structure", + "members": { + "ResourceARN": { + "target": "com.amazonaws.budgets#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

        The unique identifier for the resource.

        ", + "smithy.api#required": {} + } + }, + "ResourceTags": { + "target": "com.amazonaws.budgets#ResourceTagList", + "traits": { + "smithy.api#documentation": "

        The tags associated with the resource.

        ", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.budgets#TagResourceResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.budgets#TargetId": { "type": "string", "traits": { @@ -4036,18 +4268,18 @@ "Start": { "target": "com.amazonaws.budgets#GenericTimestamp", "traits": { - "smithy.api#documentation": "

        The start date for a budget. If you created your budget and didn't specify a start date, Amazon Web Services defaults to the start of your chosen time period (DAILY, MONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24, 2018, chose DAILY, and didn't set a start date, Amazon Web Services set your start date to 01/24/18 00:00 UTC. If you chose MONTHLY, Amazon Web Services set your start date to 01/01/18 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the API.

        \n

        You can change your start date with the UpdateBudget operation.

        " + "smithy.api#documentation": "

        The start date for a budget. If you created your budget and didn't specify a start\n\t\t\tdate, Amazon Web Services defaults to the start of your chosen time period (DAILY,\n\t\t\tMONTHLY, QUARTERLY, or ANNUALLY). For example, if you created your budget on January 24,\n\t\t\t2018, chose DAILY, and didn't set a start date, Amazon Web Services set your\n\t\t\tstart date to 01/24/18 00:00 UTC. If you chose MONTHLY,\n\t\t\t\tAmazon Web Services set your start date to 01/01/18 00:00 UTC. The\n\t\t\tdefaults are the same for the Billing and Cost Management console and the API.

        \n

        You can change your start date with the UpdateBudget operation.

        " } }, "End": { "target": "com.amazonaws.budgets#GenericTimestamp", "traits": { - "smithy.api#documentation": "

        The end date for a budget. If you didn't specify an end date, Amazon Web Services set your end date to 06/15/87 00:00 UTC. The defaults are the same for the Billing and Cost Management console and the API.

        \n

        After the end date, Amazon Web Services deletes the budget and all the associated\n\t\t\tnotifications and subscribers. You can change your end date with the\n\t\t\t\tUpdateBudget operation.

        " + "smithy.api#documentation": "

        The end date for a budget. If you didn't specify an end date, Amazon Web Services set\n\t\t\tyour end date to 06/15/87 00:00 UTC. The defaults are the same for the\n\t\t\t\tBilling and Cost Management console and the API.

        \n

        After the end date, Amazon Web Services deletes the budget and all the associated\n\t\t\tnotifications and subscribers. You can change your end date with the\n\t\t\t\tUpdateBudget operation.

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

        The period of time that's covered by a budget. The period has a start date and an end date.\n\t\t\tThe start date must come before the end date. There are no restrictions on the end date.

        " + "smithy.api#documentation": "

        The period of time that's covered by a budget. The period has a start date and an end\n\t\t\tdate. The start date must come before the end date. There are no restrictions on the end\n\t\t\tdate.

        " } }, "com.amazonaws.budgets#TimeUnit": { @@ -4085,7 +4317,7 @@ "com.amazonaws.budgets#UnitValue": { "type": "string", "traits": { - "smithy.api#documentation": "

        A string that represents the spend unit of a budget. It can't be null or empty.

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

        A string that represents the spend unit of a budget. It can't be null or\n\t\t\tempty.

        ", "smithy.api#length": { "min": 1, "max": 2147483647 @@ -4093,6 +4325,64 @@ "smithy.api#pattern": ".*" } }, + "com.amazonaws.budgets#UntagResource": { + "type": "operation", + "input": { + "target": "com.amazonaws.budgets#UntagResourceRequest" + }, + "output": { + "target": "com.amazonaws.budgets#UntagResourceResponse" + }, + "errors": [ + { + "target": "com.amazonaws.budgets#AccessDeniedException" + }, + { + "target": "com.amazonaws.budgets#InternalErrorException" + }, + { + "target": "com.amazonaws.budgets#InvalidParameterException" + }, + { + "target": "com.amazonaws.budgets#NotFoundException" + }, + { + "target": "com.amazonaws.budgets#ThrottlingException" + } + ], + "traits": { + "smithy.api#documentation": "

        Deletes tags associated with a budget or budget action resource.

        " + } + }, + "com.amazonaws.budgets#UntagResourceRequest": { + "type": "structure", + "members": { + "ResourceARN": { + "target": "com.amazonaws.budgets#AmazonResourceName", + "traits": { + "smithy.api#documentation": "

        The unique identifier for the resource.

        ", + "smithy.api#required": {} + } + }, + "ResourceTagKeys": { + "target": "com.amazonaws.budgets#ResourceTagKeyList", + "traits": { + "smithy.api#documentation": "

        The key that's associated with the tag.

        ", + "smithy.api#required": {} + } + } + }, + "traits": { + "smithy.api#input": {} + } + }, + "com.amazonaws.budgets#UntagResourceResponse": { + "type": "structure", + "members": {}, + "traits": { + "smithy.api#output": {} + } + }, "com.amazonaws.budgets#UpdateBudget": { "type": "operation", "input": {