From 838df9de3c3e222c15b7bb870b0861e203a4de0e Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Mon, 6 Jan 2020 16:53:38 -0800 Subject: [PATCH] feat: add client-macie (#656) --- clients/client-macie/.gitignore | 14 + clients/client-macie/.npmignore | 4 + clients/client-macie/LICENSE | 201 +++ clients/client-macie/Macie.ts | 324 ++++ clients/client-macie/MacieClient.ts | 226 +++ clients/client-macie/README.md | 6 + .../commands/AssociateMemberAccountCommand.ts | 85 ++ .../commands/AssociateS3ResourcesCommand.ts | 87 ++ .../DisassociateMemberAccountCommand.ts | 88 ++ .../DisassociateS3ResourcesCommand.ts | 90 ++ .../commands/ListMemberAccountsCommand.ts | 84 ++ .../commands/ListS3ResourcesCommand.ts | 81 + .../commands/UpdateS3ResourcesCommand.ts | 84 ++ clients/client-macie/endpoints.ts | 78 + clients/client-macie/index.ts | 9 + clients/client-macie/models/index.ts | 626 ++++++++ clients/client-macie/package.json | 75 + clients/client-macie/protocols/Aws_json1_1.ts | 1308 +++++++++++++++++ clients/client-macie/runtimeConfig.browser.ts | 30 + clients/client-macie/runtimeConfig.shared.ts | 7 + clients/client-macie/runtimeConfig.ts | 31 + clients/client-macie/tsconfig.es.json | 19 + clients/client-macie/tsconfig.json | 27 + 23 files changed, 3584 insertions(+) create mode 100644 clients/client-macie/.gitignore create mode 100644 clients/client-macie/.npmignore create mode 100644 clients/client-macie/LICENSE create mode 100644 clients/client-macie/Macie.ts create mode 100644 clients/client-macie/MacieClient.ts create mode 100644 clients/client-macie/README.md create mode 100644 clients/client-macie/commands/AssociateMemberAccountCommand.ts create mode 100644 clients/client-macie/commands/AssociateS3ResourcesCommand.ts create mode 100644 clients/client-macie/commands/DisassociateMemberAccountCommand.ts create mode 100644 clients/client-macie/commands/DisassociateS3ResourcesCommand.ts create mode 100644 clients/client-macie/commands/ListMemberAccountsCommand.ts create mode 100644 clients/client-macie/commands/ListS3ResourcesCommand.ts create mode 100644 clients/client-macie/commands/UpdateS3ResourcesCommand.ts create mode 100644 clients/client-macie/endpoints.ts create mode 100644 clients/client-macie/index.ts create mode 100644 clients/client-macie/models/index.ts create mode 100644 clients/client-macie/package.json create mode 100644 clients/client-macie/protocols/Aws_json1_1.ts create mode 100644 clients/client-macie/runtimeConfig.browser.ts create mode 100644 clients/client-macie/runtimeConfig.shared.ts create mode 100644 clients/client-macie/runtimeConfig.ts create mode 100644 clients/client-macie/tsconfig.es.json create mode 100644 clients/client-macie/tsconfig.json diff --git a/clients/client-macie/.gitignore b/clients/client-macie/.gitignore new file mode 100644 index 000000000000..b41c05b597c4 --- /dev/null +++ b/clients/client-macie/.gitignore @@ -0,0 +1,14 @@ +/node_modules/ +/build/ +/coverage/ +/docs/ +/types/ +/dist/ +*.tsbuildinfo +*.tgz +*.log +package-lock.json + +*.d.ts +*.js +*.js.map diff --git a/clients/client-macie/.npmignore b/clients/client-macie/.npmignore new file mode 100644 index 000000000000..b7ff81137c4a --- /dev/null +++ b/clients/client-macie/.npmignore @@ -0,0 +1,4 @@ +/coverage/ +/docs/ +tsconfig.test.json +*.tsbuildinfo diff --git a/clients/client-macie/LICENSE b/clients/client-macie/LICENSE new file mode 100644 index 000000000000..b7d2463d8cc0 --- /dev/null +++ b/clients/client-macie/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/clients/client-macie/Macie.ts b/clients/client-macie/Macie.ts new file mode 100644 index 000000000000..01d3568d0708 --- /dev/null +++ b/clients/client-macie/Macie.ts @@ -0,0 +1,324 @@ +import { MacieClient } from "./MacieClient"; +import { + AssociateMemberAccountCommand, + AssociateMemberAccountCommandInput, + AssociateMemberAccountCommandOutput +} from "./commands/AssociateMemberAccountCommand"; +import { + AssociateS3ResourcesCommand, + AssociateS3ResourcesCommandInput, + AssociateS3ResourcesCommandOutput +} from "./commands/AssociateS3ResourcesCommand"; +import { + DisassociateMemberAccountCommand, + DisassociateMemberAccountCommandInput, + DisassociateMemberAccountCommandOutput +} from "./commands/DisassociateMemberAccountCommand"; +import { + DisassociateS3ResourcesCommand, + DisassociateS3ResourcesCommandInput, + DisassociateS3ResourcesCommandOutput +} from "./commands/DisassociateS3ResourcesCommand"; +import { + ListMemberAccountsCommand, + ListMemberAccountsCommandInput, + ListMemberAccountsCommandOutput +} from "./commands/ListMemberAccountsCommand"; +import { + ListS3ResourcesCommand, + ListS3ResourcesCommandInput, + ListS3ResourcesCommandOutput +} from "./commands/ListS3ResourcesCommand"; +import { + UpdateS3ResourcesCommand, + UpdateS3ResourcesCommandInput, + UpdateS3ResourcesCommandOutput +} from "./commands/UpdateS3ResourcesCommand"; +import { HttpHandlerOptions as __HttpHandlerOptions } from "@aws-sdk/types"; + +/** + * + * Amazon Macie + *

Amazon Macie is a security service that uses machine learning to automatically + * discover, classify, and protect sensitive data in AWS. Macie recognizes sensitive data such as + * personally identifiable information (PII) or intellectual property, and provides you with + * dashboards and alerts that give visibility into how this data is being accessed or moved. For + * more information, see the Macie User + * Guide.

+ * + */ +export class Macie extends MacieClient { + /** + * + *

Associates a specified AWS account with Amazon Macie as a member account.

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

Associates specified S3 resources with Amazon Macie for monitoring and data + * classification. If memberAccountId isn't specified, the action associates specified S3 + * resources with Macie for the current master account. If memberAccountId is specified, the + * action associates specified S3 resources with Macie for the specified member account. + *

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

Removes the specified member account from Amazon Macie.

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

Removes specified S3 resources from being monitored by Amazon Macie. If memberAccountId + * isn't specified, the action removes specified S3 resources from Macie for the current master + * account. If memberAccountId is specified, the action removes specified S3 resources from Macie + * for the specified member account.

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

Lists all Amazon Macie member accounts for the current Amazon Macie master + * account.

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

Lists all the S3 resources associated with Amazon Macie. If memberAccountId isn't + * specified, the action lists the S3 resources associated with Amazon Macie for the current + * master account. If memberAccountId is specified, the action lists the S3 resources associated + * with Amazon Macie for the specified member account.

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

Updates the classification types for the specified S3 resources. If memberAccountId + * isn't specified, the action updates the classification types of the S3 resources associated + * with Amazon Macie for the current master account. If memberAccountId is specified, the action + * updates the classification types of the S3 resources associated with Amazon Macie for the + * specified member account.

+ * + */ + public updateS3Resources( + args: UpdateS3ResourcesCommandInput, + options?: __HttpHandlerOptions + ): Promise; + public updateS3Resources( + args: UpdateS3ResourcesCommandInput, + cb: (err: any, data?: UpdateS3ResourcesCommandOutput) => void + ): void; + public updateS3Resources( + args: UpdateS3ResourcesCommandInput, + options: __HttpHandlerOptions, + cb: (err: any, data?: UpdateS3ResourcesCommandOutput) => void + ): void; + public updateS3Resources( + args: UpdateS3ResourcesCommandInput, + optionsOrCb?: + | __HttpHandlerOptions + | ((err: any, data?: UpdateS3ResourcesCommandOutput) => void), + cb?: (err: any, data?: UpdateS3ResourcesCommandOutput) => void + ): Promise | void { + const command = new UpdateS3ResourcesCommand(args); + if (typeof optionsOrCb === "function") { + this.send(command, optionsOrCb); + } else if (typeof cb === "function") { + if (typeof optionsOrCb !== "object") + throw new Error(`Expect http options but get ${typeof optionsOrCb}`); + this.send(command, optionsOrCb || {}, cb); + } else { + return this.send(command, optionsOrCb); + } + } +} diff --git a/clients/client-macie/MacieClient.ts b/clients/client-macie/MacieClient.ts new file mode 100644 index 000000000000..f869b3c3cd56 --- /dev/null +++ b/clients/client-macie/MacieClient.ts @@ -0,0 +1,226 @@ +import { + AssociateMemberAccountRequest, + AssociateS3ResourcesRequest, + AssociateS3ResourcesResult, + DisassociateMemberAccountRequest, + DisassociateS3ResourcesRequest, + DisassociateS3ResourcesResult, + ListMemberAccountsRequest, + ListMemberAccountsResult, + ListS3ResourcesRequest, + ListS3ResourcesResult, + UpdateS3ResourcesRequest, + UpdateS3ResourcesResult +} from "./models/index"; +import { ClientDefaultValues as __ClientDefaultValues } from "./runtimeConfig"; +import { + EndpointsInputConfig, + EndpointsResolvedConfig, + RegionInputConfig, + RegionResolvedConfig, + resolveEndpointsConfig, + resolveRegionConfig +} from "@aws-sdk/config-resolver"; +import { getContentLengthPlugin } from "@aws-sdk/middleware-content-length"; +import { + HostHeaderInputConfig, + HostHeaderResolvedConfig, + getHostHeaderPlugin, + resolveHostHeaderConfig +} from "@aws-sdk/middleware-host-header"; +import { + RetryInputConfig, + RetryResolvedConfig, + getRetryPlugin, + resolveRetryConfig +} from "@aws-sdk/middleware-retry"; +import { + AwsAuthInputConfig, + AwsAuthResolvedConfig, + getAwsAuthPlugin, + resolveAwsAuthConfig +} from "@aws-sdk/middleware-signing"; +import { + UserAgentInputConfig, + UserAgentResolvedConfig, + getUserAgentPlugin, + resolveUserAgentConfig +} from "@aws-sdk/middleware-user-agent"; +import { HttpHandler as __HttpHandler } from "@aws-sdk/protocol-http"; +import { + Client as __Client, + SmithyConfiguration as __SmithyConfiguration, + SmithyResolvedConfiguration as __SmithyResolvedConfiguration +} from "@aws-sdk/smithy-client"; +import { + RegionInfoProvider, + Credentials as __Credentials, + Decoder as __Decoder, + Encoder as __Encoder, + HashConstructor as __HashConstructor, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer, + Provider as __Provider, + StreamCollector as __StreamCollector, + UrlParser as __UrlParser +} from "@aws-sdk/types"; + +export type ServiceInputTypes = + | AssociateMemberAccountRequest + | AssociateS3ResourcesRequest + | DisassociateMemberAccountRequest + | DisassociateS3ResourcesRequest + | ListMemberAccountsRequest + | ListS3ResourcesRequest + | UpdateS3ResourcesRequest; + +export type ServiceOutputTypes = + | __MetadataBearer + | AssociateS3ResourcesResult + | DisassociateS3ResourcesResult + | ListMemberAccountsResult + | ListS3ResourcesResult + | UpdateS3ResourcesResult; + +export interface ClientDefaults + extends Partial<__SmithyResolvedConfiguration<__HttpHandlerOptions>> { + /** + * The HTTP handler to use. Fetch in browser and Https in Nodejs. + */ + requestHandler?: __HttpHandler; + + /** + * A constructor for a class implementing the @aws-sdk/types.Hash interface + * that computes the SHA-256 HMAC or checksum of a string or binary buffer. + */ + sha256?: __HashConstructor; + + /** + * The function that will be used to convert strings into HTTP endpoints. + */ + urlParser?: __UrlParser; + + /** + * A function that can calculate the length of a request body. + */ + bodyLengthChecker?: (body: any) => number | undefined; + + /** + * A function that converts a stream into an array of bytes. + */ + streamCollector?: __StreamCollector; + + /** + * The function that will be used to convert a base64-encoded string to a byte array + */ + base64Decoder?: __Decoder; + + /** + * The function that will be used to convert binary data to a base64-encoded string + */ + base64Encoder?: __Encoder; + + /** + * The function that will be used to convert a UTF8-encoded string to a byte array + */ + utf8Decoder?: __Decoder; + + /** + * The function that will be used to convert binary data to a UTF-8 encoded string + */ + utf8Encoder?: __Encoder; + + /** + * The string that will be used to populate default value in 'User-Agent' header + */ + defaultUserAgent?: string; + + /** + * The runtime environment + */ + runtime?: string; + + /** + * The service name with which to sign requests. + */ + signingName?: string; + + /** + * Default credentials provider; Not available in browser runtime + */ + credentialDefaultProvider?: (input: any) => __Provider<__Credentials>; + + /** + * Provider function that return promise of a region string + */ + regionDefaultProvider?: (input: any) => __Provider; + + /** + * Fetch related hostname, signing name or signing region with given region. + */ + regionInfoProvider?: RegionInfoProvider; +} + +export type MacieClientConfig = Partial< + __SmithyConfiguration<__HttpHandlerOptions> +> & + ClientDefaults & + RegionInputConfig & + EndpointsInputConfig & + AwsAuthInputConfig & + RetryInputConfig & + UserAgentInputConfig & + HostHeaderInputConfig; + +export type MacieClientResolvedConfig = __SmithyResolvedConfiguration< + __HttpHandlerOptions +> & + Required & + RegionResolvedConfig & + EndpointsResolvedConfig & + AwsAuthResolvedConfig & + RetryResolvedConfig & + UserAgentResolvedConfig & + HostHeaderResolvedConfig; + +/** + * + * Amazon Macie + *

Amazon Macie is a security service that uses machine learning to automatically + * discover, classify, and protect sensitive data in AWS. Macie recognizes sensitive data such as + * personally identifiable information (PII) or intellectual property, and provides you with + * dashboards and alerts that give visibility into how this data is being accessed or moved. For + * more information, see the Macie User + * Guide.

+ * + */ +export class MacieClient extends __Client< + __HttpHandlerOptions, + ServiceInputTypes, + ServiceOutputTypes, + MacieClientResolvedConfig +> { + readonly config: MacieClientResolvedConfig; + + constructor(configuration: MacieClientConfig) { + let _config_0 = { + ...__ClientDefaultValues, + ...configuration + }; + let _config_1 = resolveRegionConfig(_config_0); + let _config_2 = resolveEndpointsConfig(_config_1); + let _config_3 = resolveAwsAuthConfig(_config_2); + let _config_4 = resolveRetryConfig(_config_3); + let _config_5 = resolveUserAgentConfig(_config_4); + let _config_6 = resolveHostHeaderConfig(_config_5); + super(_config_6); + this.config = _config_6; + this.middlewareStack.use(getAwsAuthPlugin(this.config)); + this.middlewareStack.use(getRetryPlugin(this.config)); + this.middlewareStack.use(getUserAgentPlugin(this.config)); + this.middlewareStack.use(getContentLengthPlugin(this.config)); + this.middlewareStack.use(getHostHeaderPlugin(this.config)); + } + + destroy(): void {} +} diff --git a/clients/client-macie/README.md b/clients/client-macie/README.md new file mode 100644 index 000000000000..d5fcea14f4b8 --- /dev/null +++ b/clients/client-macie/README.md @@ -0,0 +1,6 @@ +@aws-sdk/client-macie + +[![NPM version](https://img.shields.io/npm/v/@aws-sdk/client-macie/preview.svg)](https://www.npmjs.com/package/@aws-sdk/client-macie) +[![NPM downloads](https://img.shields.io/npm/dm/@aws-sdk/client-macie.svg)](https://www.npmjs.com/package/@aws-sdk/client-macie) + +For SDK usage, please step to [SDK reademe](https://github.com/aws/aws-sdk-js-v3). diff --git a/clients/client-macie/commands/AssociateMemberAccountCommand.ts b/clients/client-macie/commands/AssociateMemberAccountCommand.ts new file mode 100644 index 000000000000..9232879d558a --- /dev/null +++ b/clients/client-macie/commands/AssociateMemberAccountCommand.ts @@ -0,0 +1,85 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { AssociateMemberAccountRequest } from "../models/index"; +import { + deserializeAws_json1_1AssociateMemberAccountCommand, + serializeAws_json1_1AssociateMemberAccountCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer +} from "@aws-sdk/types"; + +export type AssociateMemberAccountCommandInput = AssociateMemberAccountRequest; +export type AssociateMemberAccountCommandOutput = __MetadataBearer; + +export class AssociateMemberAccountCommand extends $Command< + AssociateMemberAccountCommandInput, + AssociateMemberAccountCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: AssociateMemberAccountCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler< + AssociateMemberAccountCommandInput, + AssociateMemberAccountCommandOutput + > { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: AssociateMemberAccountCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1AssociateMemberAccountCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1AssociateMemberAccountCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/AssociateS3ResourcesCommand.ts b/clients/client-macie/commands/AssociateS3ResourcesCommand.ts new file mode 100644 index 000000000000..3718f703c3b1 --- /dev/null +++ b/clients/client-macie/commands/AssociateS3ResourcesCommand.ts @@ -0,0 +1,87 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { + AssociateS3ResourcesRequest, + AssociateS3ResourcesResult +} from "../models/index"; +import { + deserializeAws_json1_1AssociateS3ResourcesCommand, + serializeAws_json1_1AssociateS3ResourcesCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type AssociateS3ResourcesCommandInput = AssociateS3ResourcesRequest; +export type AssociateS3ResourcesCommandOutput = AssociateS3ResourcesResult; + +export class AssociateS3ResourcesCommand extends $Command< + AssociateS3ResourcesCommandInput, + AssociateS3ResourcesCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: AssociateS3ResourcesCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler< + AssociateS3ResourcesCommandInput, + AssociateS3ResourcesCommandOutput + > { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: AssociateS3ResourcesCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1AssociateS3ResourcesCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1AssociateS3ResourcesCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/DisassociateMemberAccountCommand.ts b/clients/client-macie/commands/DisassociateMemberAccountCommand.ts new file mode 100644 index 000000000000..5997575083ee --- /dev/null +++ b/clients/client-macie/commands/DisassociateMemberAccountCommand.ts @@ -0,0 +1,88 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { DisassociateMemberAccountRequest } from "../models/index"; +import { + deserializeAws_json1_1DisassociateMemberAccountCommand, + serializeAws_json1_1DisassociateMemberAccountCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions, + MetadataBearer as __MetadataBearer +} from "@aws-sdk/types"; + +export type DisassociateMemberAccountCommandInput = DisassociateMemberAccountRequest; +export type DisassociateMemberAccountCommandOutput = __MetadataBearer; + +export class DisassociateMemberAccountCommand extends $Command< + DisassociateMemberAccountCommandInput, + DisassociateMemberAccountCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: DisassociateMemberAccountCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler< + DisassociateMemberAccountCommandInput, + DisassociateMemberAccountCommandOutput + > { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: DisassociateMemberAccountCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1DisassociateMemberAccountCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1DisassociateMemberAccountCommand( + output, + context + ); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/DisassociateS3ResourcesCommand.ts b/clients/client-macie/commands/DisassociateS3ResourcesCommand.ts new file mode 100644 index 000000000000..b22e23e114ff --- /dev/null +++ b/clients/client-macie/commands/DisassociateS3ResourcesCommand.ts @@ -0,0 +1,90 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { + DisassociateS3ResourcesRequest, + DisassociateS3ResourcesResult +} from "../models/index"; +import { + deserializeAws_json1_1DisassociateS3ResourcesCommand, + serializeAws_json1_1DisassociateS3ResourcesCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type DisassociateS3ResourcesCommandInput = DisassociateS3ResourcesRequest; +export type DisassociateS3ResourcesCommandOutput = DisassociateS3ResourcesResult; + +export class DisassociateS3ResourcesCommand extends $Command< + DisassociateS3ResourcesCommandInput, + DisassociateS3ResourcesCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: DisassociateS3ResourcesCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler< + DisassociateS3ResourcesCommandInput, + DisassociateS3ResourcesCommandOutput + > { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: DisassociateS3ResourcesCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1DisassociateS3ResourcesCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1DisassociateS3ResourcesCommand( + output, + context + ); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/ListMemberAccountsCommand.ts b/clients/client-macie/commands/ListMemberAccountsCommand.ts new file mode 100644 index 000000000000..93d190f4e4b7 --- /dev/null +++ b/clients/client-macie/commands/ListMemberAccountsCommand.ts @@ -0,0 +1,84 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { + ListMemberAccountsRequest, + ListMemberAccountsResult +} from "../models/index"; +import { + deserializeAws_json1_1ListMemberAccountsCommand, + serializeAws_json1_1ListMemberAccountsCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type ListMemberAccountsCommandInput = ListMemberAccountsRequest; +export type ListMemberAccountsCommandOutput = ListMemberAccountsResult; + +export class ListMemberAccountsCommand extends $Command< + ListMemberAccountsCommandInput, + ListMemberAccountsCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: ListMemberAccountsCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: ListMemberAccountsCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1ListMemberAccountsCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1ListMemberAccountsCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/ListS3ResourcesCommand.ts b/clients/client-macie/commands/ListS3ResourcesCommand.ts new file mode 100644 index 000000000000..76c4397b4da1 --- /dev/null +++ b/clients/client-macie/commands/ListS3ResourcesCommand.ts @@ -0,0 +1,81 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { ListS3ResourcesRequest, ListS3ResourcesResult } from "../models/index"; +import { + deserializeAws_json1_1ListS3ResourcesCommand, + serializeAws_json1_1ListS3ResourcesCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type ListS3ResourcesCommandInput = ListS3ResourcesRequest; +export type ListS3ResourcesCommandOutput = ListS3ResourcesResult; + +export class ListS3ResourcesCommand extends $Command< + ListS3ResourcesCommandInput, + ListS3ResourcesCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: ListS3ResourcesCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: ListS3ResourcesCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1ListS3ResourcesCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1ListS3ResourcesCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/commands/UpdateS3ResourcesCommand.ts b/clients/client-macie/commands/UpdateS3ResourcesCommand.ts new file mode 100644 index 000000000000..201682063edb --- /dev/null +++ b/clients/client-macie/commands/UpdateS3ResourcesCommand.ts @@ -0,0 +1,84 @@ +import { + MacieClientResolvedConfig, + ServiceInputTypes, + ServiceOutputTypes +} from "../MacieClient"; +import { + UpdateS3ResourcesRequest, + UpdateS3ResourcesResult +} from "../models/index"; +import { + deserializeAws_json1_1UpdateS3ResourcesCommand, + serializeAws_json1_1UpdateS3ResourcesCommand +} from "../protocols/Aws_json1_1"; +import { getSerdePlugin } from "@aws-sdk/middleware-serde"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { Command as $Command } from "@aws-sdk/smithy-client"; +import { + FinalizeHandlerArguments, + Handler, + HandlerExecutionContext, + MiddlewareStack, + SerdeContext, + HttpHandlerOptions as __HttpHandlerOptions +} from "@aws-sdk/types"; + +export type UpdateS3ResourcesCommandInput = UpdateS3ResourcesRequest; +export type UpdateS3ResourcesCommandOutput = UpdateS3ResourcesResult; + +export class UpdateS3ResourcesCommand extends $Command< + UpdateS3ResourcesCommandInput, + UpdateS3ResourcesCommandOutput, + MacieClientResolvedConfig +> { + // Start section: command_properties + // End section: command_properties + + constructor(readonly input: UpdateS3ResourcesCommandInput) { + // Start section: command_constructor + super(); + // End section: command_constructor + } + + resolveMiddleware( + clientStack: MiddlewareStack, + configuration: MacieClientResolvedConfig, + options?: __HttpHandlerOptions + ): Handler { + this.middlewareStack.use( + getSerdePlugin(configuration, this.serialize, this.deserialize) + ); + + const stack = clientStack.concat(this.middlewareStack); + + const handlerExecutionContext: HandlerExecutionContext = { + logger: {} as any + }; + const { requestHandler } = configuration; + return stack.resolve( + (request: FinalizeHandlerArguments) => + requestHandler.handle(request.request as __HttpRequest, options || {}), + handlerExecutionContext + ); + } + + private serialize( + input: UpdateS3ResourcesCommandInput, + context: SerdeContext + ): Promise<__HttpRequest> { + return serializeAws_json1_1UpdateS3ResourcesCommand(input, context); + } + + private deserialize( + output: __HttpResponse, + context: SerdeContext + ): Promise { + return deserializeAws_json1_1UpdateS3ResourcesCommand(output, context); + } + + // Start section: command_body_extra + // End section: command_body_extra +} diff --git a/clients/client-macie/endpoints.ts b/clients/client-macie/endpoints.ts new file mode 100644 index 000000000000..df0619691655 --- /dev/null +++ b/clients/client-macie/endpoints.ts @@ -0,0 +1,78 @@ +import { RegionInfo, RegionInfoProvider } from "@aws-sdk/types"; + +// Partition default templates +const AWS_TEMPLATE = "macie.{region}.amazonaws.com"; +const AWS_CN_TEMPLATE = "macie.{region}.amazonaws.com.cn"; +const AWS_ISO_TEMPLATE = "macie.{region}.c2s.ic.gov"; +const AWS_ISO_B_TEMPLATE = "macie.{region}.sc2s.sgov.gov"; +const AWS_US_GOV_TEMPLATE = "macie.{region}.amazonaws.com"; + +// Partition regions +const AWS_REGIONS = new Set([ + "ap-south-1", + "eu-north-1", + "eu-west-3", + "eu-west-2", + "eu-west-1", + "ap-northeast-2", + "ap-northeast-1", + "me-south-1", + "ca-central-1", + "sa-east-1", + "ap-east-1", + "ap-southeast-1", + "ap-southeast-2", + "eu-central-1", + "us-east-1", + "us-east-2", + "us-west-1", + "us-west-2" +]); +const AWS_CN_REGIONS = new Set(["cn-north-1", "cn-northwest-1"]); +const AWS_ISO_REGIONS = new Set(["us-iso-east-1"]); +const AWS_ISO_B_REGIONS = new Set(["us-isob-east-1"]); +const AWS_US_GOV_REGIONS = new Set(["us-gov-west-1", "us-gov-east-1"]); + +export const defaultRegionInfoProvider: RegionInfoProvider = ( + region: string, + options?: any +) => { + let regionInfo: RegionInfo | undefined = undefined; + switch (region) { + // First, try to match exact region names. + // Next, try to match partition endpoints. + default: + if (AWS_REGIONS.has(region)) { + regionInfo = { + hostname: AWS_TEMPLATE.replace("{region}", region) + }; + } + if (AWS_CN_REGIONS.has(region)) { + regionInfo = { + hostname: AWS_CN_TEMPLATE.replace("{region}", region) + }; + } + if (AWS_ISO_REGIONS.has(region)) { + regionInfo = { + hostname: AWS_ISO_TEMPLATE.replace("{region}", region) + }; + } + if (AWS_ISO_B_REGIONS.has(region)) { + regionInfo = { + hostname: AWS_ISO_B_TEMPLATE.replace("{region}", region) + }; + } + if (AWS_US_GOV_REGIONS.has(region)) { + regionInfo = { + hostname: AWS_US_GOV_TEMPLATE.replace("{region}", region) + }; + } + // Finally, assume it's an AWS partition endpoint. + if (regionInfo === undefined) { + regionInfo = { + hostname: AWS_TEMPLATE.replace("{region}", region) + }; + } + } + return Promise.resolve(regionInfo); +}; diff --git a/clients/client-macie/index.ts b/clients/client-macie/index.ts new file mode 100644 index 000000000000..7a773d1536f5 --- /dev/null +++ b/clients/client-macie/index.ts @@ -0,0 +1,9 @@ +export * from "./MacieClient"; +export * from "./Macie"; +export * from "./commands/AssociateMemberAccountCommand"; +export * from "./commands/AssociateS3ResourcesCommand"; +export * from "./commands/DisassociateMemberAccountCommand"; +export * from "./commands/DisassociateS3ResourcesCommand"; +export * from "./commands/ListMemberAccountsCommand"; +export * from "./commands/ListS3ResourcesCommand"; +export * from "./commands/UpdateS3ResourcesCommand"; diff --git a/clients/client-macie/models/index.ts b/clients/client-macie/models/index.ts new file mode 100644 index 000000000000..feb87701be59 --- /dev/null +++ b/clients/client-macie/models/index.ts @@ -0,0 +1,626 @@ +import * as _smithy from "@aws-sdk/smithy-client"; +import { MetadataBearer as $MetadataBearer } from "@aws-sdk/types"; + +/** + * + *

You do not have required permissions to access the requested resource.

+ * + */ +export interface AccessDeniedException + extends _smithy.SmithyException, + $MetadataBearer { + __type: "AccessDeniedException"; + $fault: "client"; + message?: string; + /** + * + * Resource type that caused the exception + * + */ + resourceType?: string; +} + +export namespace AccessDeniedException { + export function isa(o: any): o is AccessDeniedException { + return _smithy.isa(o, "AccessDeniedException"); + } +} + +export interface AssociateMemberAccountRequest { + __type?: "AssociateMemberAccountRequest"; + /** + * + *

The ID of the AWS account that you want to associate with Amazon Macie as a member + * account.

+ * + */ + memberAccountId: string | undefined; +} + +export namespace AssociateMemberAccountRequest { + export function isa(o: any): o is AssociateMemberAccountRequest { + return _smithy.isa(o, "AssociateMemberAccountRequest"); + } +} + +export interface AssociateS3ResourcesRequest { + __type?: "AssociateS3ResourcesRequest"; + /** + * + *

The ID of the Amazon Macie member account whose resources you want to associate with + * Macie.

+ * + */ + memberAccountId?: string; + + /** + * + *

The S3 resources that you want to associate with Amazon Macie for monitoring and data + * classification.

+ * + */ + s3Resources: Array | undefined; +} + +export namespace AssociateS3ResourcesRequest { + export function isa(o: any): o is AssociateS3ResourcesRequest { + return _smithy.isa(o, "AssociateS3ResourcesRequest"); + } +} + +export interface AssociateS3ResourcesResult extends $MetadataBearer { + __type?: "AssociateS3ResourcesResult"; + /** + * + *

S3 resources that couldn't be associated with Amazon Macie. An error code and an error + * message are provided for each failed item.

+ * + */ + failedS3Resources?: Array; +} + +export namespace AssociateS3ResourcesResult { + export function isa(o: any): o is AssociateS3ResourcesResult { + return _smithy.isa(o, "AssociateS3ResourcesResult"); + } +} + +/** + * + *

The classification type that Amazon Macie applies to the associated S3 resources. + *

+ * + */ +export interface ClassificationType { + __type?: "ClassificationType"; + /** + * + *

A continuous classification of the objects that are added to a specified S3 bucket. + * Amazon Macie begins performing continuous classification after a bucket is successfully + * associated with Amazon Macie.

+ * + */ + continuous: S3ContinuousClassificationType | string | undefined; + + /** + * + *

A one-time classification of all of the existing objects in a specified S3 bucket. + *

+ * + */ + oneTime: S3OneTimeClassificationType | string | undefined; +} + +export namespace ClassificationType { + export function isa(o: any): o is ClassificationType { + return _smithy.isa(o, "ClassificationType"); + } +} + +/** + * + *

The classification type that Amazon Macie applies to the associated S3 resources. At + * least one of the classification types (oneTime or continuous) must be specified.

+ * + */ +export interface ClassificationTypeUpdate { + __type?: "ClassificationTypeUpdate"; + /** + * + *

A continuous classification of the objects that are added to a specified S3 bucket. + * Amazon Macie begins performing continuous classification after a bucket is successfully + * associated with Amazon Macie.

+ * + */ + continuous?: S3ContinuousClassificationType | string; + + /** + * + *

A one-time classification of all of the existing objects in a specified S3 bucket. + *

+ * + */ + oneTime?: S3OneTimeClassificationType | string; +} + +export namespace ClassificationTypeUpdate { + export function isa(o: any): o is ClassificationTypeUpdate { + return _smithy.isa(o, "ClassificationTypeUpdate"); + } +} + +export interface DisassociateMemberAccountRequest { + __type?: "DisassociateMemberAccountRequest"; + /** + * + *

The ID of the member account that you want to remove from Amazon Macie.

+ * + */ + memberAccountId: string | undefined; +} + +export namespace DisassociateMemberAccountRequest { + export function isa(o: any): o is DisassociateMemberAccountRequest { + return _smithy.isa(o, "DisassociateMemberAccountRequest"); + } +} + +export interface DisassociateS3ResourcesRequest { + __type?: "DisassociateS3ResourcesRequest"; + /** + * + *

The S3 resources (buckets or prefixes) that you want to remove from being monitored and + * classified by Amazon Macie.

+ * + */ + associatedS3Resources: Array | undefined; + + /** + * + *

The ID of the Amazon Macie member account whose resources you want to remove from being + * monitored by Amazon Macie.

+ * + */ + memberAccountId?: string; +} + +export namespace DisassociateS3ResourcesRequest { + export function isa(o: any): o is DisassociateS3ResourcesRequest { + return _smithy.isa(o, "DisassociateS3ResourcesRequest"); + } +} + +export interface DisassociateS3ResourcesResult extends $MetadataBearer { + __type?: "DisassociateS3ResourcesResult"; + /** + * + *

S3 resources that couldn't be removed from being monitored and classified by Amazon + * Macie. An error code and an error message are provided for each failed item.

+ * + */ + failedS3Resources?: Array; +} + +export namespace DisassociateS3ResourcesResult { + export function isa(o: any): o is DisassociateS3ResourcesResult { + return _smithy.isa(o, "DisassociateS3ResourcesResult"); + } +} + +/** + * + *

Includes details about the failed S3 resources.

+ * + */ +export interface FailedS3Resource { + __type?: "FailedS3Resource"; + /** + * + *

The status code of a failed item.

+ * + */ + errorCode?: string; + + /** + * + *

The error message of a failed item.

+ * + */ + errorMessage?: string; + + /** + * + *

The failed S3 resources.

+ * + */ + failedItem?: S3Resource; +} + +export namespace FailedS3Resource { + export function isa(o: any): o is FailedS3Resource { + return _smithy.isa(o, "FailedS3Resource"); + } +} + +/** + * + *

Internal server error.

+ * + */ +export interface InternalException + extends _smithy.SmithyException, + $MetadataBearer { + __type: "InternalException"; + $fault: "server"; + /** + * + * Error code for the exception + * + */ + errorCode?: string; + + message?: string; +} + +export namespace InternalException { + export function isa(o: any): o is InternalException { + return _smithy.isa(o, "InternalException"); + } +} + +/** + * + *

The request was rejected because an invalid or out-of-range value was supplied for an + * input parameter.

+ * + */ +export interface InvalidInputException + extends _smithy.SmithyException, + $MetadataBearer { + __type: "InvalidInputException"; + $fault: "client"; + /** + * + * Error code for the exception + * + */ + errorCode?: string; + + /** + * + * Field that has invalid input + * + */ + fieldName?: string; + + message?: string; +} + +export namespace InvalidInputException { + export function isa(o: any): o is InvalidInputException { + return _smithy.isa(o, "InvalidInputException"); + } +} + +/** + * + *

The request was rejected because it attempted to create resources beyond the current + * AWS account limits. The error code describes the limit exceeded.

+ * + */ +export interface LimitExceededException + extends _smithy.SmithyException, + $MetadataBearer { + __type: "LimitExceededException"; + $fault: "client"; + /** + * + * Error code for the exception + * + */ + errorCode?: string; + + message?: string; + /** + * + * Resource type that caused the exception + * + */ + resourceType?: string; +} + +export namespace LimitExceededException { + export function isa(o: any): o is LimitExceededException { + return _smithy.isa(o, "LimitExceededException"); + } +} + +export interface ListMemberAccountsRequest { + __type?: "ListMemberAccountsRequest"; + /** + * + *

Use this parameter to indicate the maximum number of items that you want in the + * response. The default value is 250.

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

Use this parameter when paginating results. Set the value of this parameter to null on + * your first call to the ListMemberAccounts action. Subsequent calls to the action fill + * nextToken in the request with the value of nextToken from the previous response to continue + * listing data.

+ * + */ + nextToken?: string; +} + +export namespace ListMemberAccountsRequest { + export function isa(o: any): o is ListMemberAccountsRequest { + return _smithy.isa(o, "ListMemberAccountsRequest"); + } +} + +export interface ListMemberAccountsResult extends $MetadataBearer { + __type?: "ListMemberAccountsResult"; + /** + * + *

A list of the Amazon Macie member accounts returned by the action. The current master + * account is also included in this list.

+ * + */ + memberAccounts?: Array; + + /** + * + *

When a response is generated, if there is more data to be listed, this parameter is + * present in the response and contains the value to use for the nextToken parameter in a + * subsequent pagination request. If there is no more data to be listed, this parameter is set to + * null.

+ * + */ + nextToken?: string; +} + +export namespace ListMemberAccountsResult { + export function isa(o: any): o is ListMemberAccountsResult { + return _smithy.isa(o, "ListMemberAccountsResult"); + } +} + +export interface ListS3ResourcesRequest { + __type?: "ListS3ResourcesRequest"; + /** + * + *

Use this parameter to indicate the maximum number of items that you want in the + * response. The default value is 250.

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

The Amazon Macie member account ID whose associated S3 resources you want to list. + *

+ * + */ + memberAccountId?: string; + + /** + * + *

Use this parameter when paginating results. Set its value to null on your first call to + * the ListS3Resources action. Subsequent calls to the action fill nextToken in the request with + * the value of nextToken from the previous response to continue listing data.

+ * + */ + nextToken?: string; +} + +export namespace ListS3ResourcesRequest { + export function isa(o: any): o is ListS3ResourcesRequest { + return _smithy.isa(o, "ListS3ResourcesRequest"); + } +} + +export interface ListS3ResourcesResult extends $MetadataBearer { + __type?: "ListS3ResourcesResult"; + /** + * + *

When a response is generated, if there is more data to be listed, this parameter is + * present in the response and contains the value to use for the nextToken parameter in a + * subsequent pagination request. If there is no more data to be listed, this parameter is set to + * null.

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

A list of the associated S3 resources returned by the action.

+ * + */ + s3Resources?: Array; +} + +export namespace ListS3ResourcesResult { + export function isa(o: any): o is ListS3ResourcesResult { + return _smithy.isa(o, "ListS3ResourcesResult"); + } +} + +/** + * + *

Contains information about the Amazon Macie member account.

+ * + */ +export interface MemberAccount { + __type?: "MemberAccount"; + /** + * + *

The AWS account ID of the Amazon Macie member account.

+ * + */ + accountId?: string; +} + +export namespace MemberAccount { + export function isa(o: any): o is MemberAccount { + return _smithy.isa(o, "MemberAccount"); + } +} + +export enum S3ContinuousClassificationType { + FULL = "FULL" +} + +export enum S3OneTimeClassificationType { + FULL = "FULL", + NONE = "NONE" +} + +/** + * + *

Contains information about the S3 resource. This data type is used as a request + * parameter in the DisassociateS3Resources action and can be used as a response parameter in the + * AssociateS3Resources and UpdateS3Resources actions.

+ * + */ +export interface S3Resource { + __type?: "S3Resource"; + /** + * + *

The name of the S3 bucket.

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

The prefix of the S3 bucket.

+ * + */ + prefix?: string; +} + +export namespace S3Resource { + export function isa(o: any): o is S3Resource { + return _smithy.isa(o, "S3Resource"); + } +} + +/** + * + *

The S3 resources that you want to associate with Amazon Macie for monitoring and data + * classification. This data type is used as a request parameter in the AssociateS3Resources + * action and a response parameter in the ListS3Resources action.

+ * + */ +export interface S3ResourceClassification { + __type?: "S3ResourceClassification"; + /** + * + *

The name of the S3 bucket that you want to associate with Amazon Macie.

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

The classification type that you want to specify for the resource associated with + * Amazon Macie.

+ * + */ + classificationType: ClassificationType | undefined; + + /** + * + *

The prefix of the S3 bucket that you want to associate with Amazon Macie.

+ * + */ + prefix?: string; +} + +export namespace S3ResourceClassification { + export function isa(o: any): o is S3ResourceClassification { + return _smithy.isa(o, "S3ResourceClassification"); + } +} + +/** + * + *

The S3 resources whose classification types you want to update. This data type is used + * as a request parameter in the UpdateS3Resources action.

+ * + */ +export interface S3ResourceClassificationUpdate { + __type?: "S3ResourceClassificationUpdate"; + /** + * + *

The name of the S3 bucket whose classification types you want to update.

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

The classification type that you want to update for the resource associated with Amazon + * Macie.

+ * + */ + classificationTypeUpdate: ClassificationTypeUpdate | undefined; + + /** + * + *

The prefix of the S3 bucket whose classification types you want to update.

+ * + */ + prefix?: string; +} + +export namespace S3ResourceClassificationUpdate { + export function isa(o: any): o is S3ResourceClassificationUpdate { + return _smithy.isa(o, "S3ResourceClassificationUpdate"); + } +} + +export interface UpdateS3ResourcesRequest { + __type?: "UpdateS3ResourcesRequest"; + /** + * + *

The AWS ID of the Amazon Macie member account whose S3 resources' classification types + * you want to update.

+ * + */ + memberAccountId?: string; + + /** + * + *

The S3 resources whose classification types you want to update.

+ * + */ + s3ResourcesUpdate: Array | undefined; +} + +export namespace UpdateS3ResourcesRequest { + export function isa(o: any): o is UpdateS3ResourcesRequest { + return _smithy.isa(o, "UpdateS3ResourcesRequest"); + } +} + +export interface UpdateS3ResourcesResult extends $MetadataBearer { + __type?: "UpdateS3ResourcesResult"; + /** + * + *

The S3 resources whose classification types can't be updated. An error code and an + * error message are provided for each failed item.

+ * + */ + failedS3Resources?: Array; +} + +export namespace UpdateS3ResourcesResult { + export function isa(o: any): o is UpdateS3ResourcesResult { + return _smithy.isa(o, "UpdateS3ResourcesResult"); + } +} diff --git a/clients/client-macie/package.json b/clients/client-macie/package.json new file mode 100644 index 000000000000..63379639c4aa --- /dev/null +++ b/clients/client-macie/package.json @@ -0,0 +1,75 @@ +{ + "name": "@aws-sdk/client-macie", + "description": "@aws-sdk/client-macie client", + "version": "1.0.0", + "scripts": { + "clean": "npm run remove-definitions && npm run remove-dist && npm run remove-js && npm run remove-maps", + "build-documentation": "npm run clean && typedoc ./", + "prepublishOnly": "yarn build", + "pretest": "tsc", + "remove-definitions": "rimraf ./types", + "remove-dist": "rimraf ./dist", + "remove-documentation": "rimraf ./docs", + "remove-js": "rimraf *.js && rimraf ./commands/*.js && rimraf ./models/*.js && rimraf ./protocols/*.js", + "remove-maps": "rimraf *.js.map && rimraf ./commands/*.js.map && rimraf ./models/*.js.map && rimraf ./protocols/*.js.map", + "test": "exit 0", + "smoke-test": "npm run pretest && node ./test/smoke/index.spec.js", + "build:es": "tsc -p tsconfig.es.json", + "build": "yarn pretest && yarn build:es" + }, + "main": "./dist/cjs/index.js", + "types": "./types/index.d.ts", + "module": "./dist/es/index.js", + "browser": { + "./runtimeConfig": "./runtimeConfig.browser" + }, + "sideEffects": false, + "dependencies": { + "tslib": "^1.8.0", + "@aws-crypto/sha256-browser": "^0.1.0-preview.1", + "@aws-sdk/config-resolver": "^0.1.0-preview.5", + "@aws-sdk/credential-provider-node": "^0.1.0-preview.7", + "@aws-sdk/fetch-http-handler": "^0.1.0-preview.5", + "@aws-sdk/hash-node": "^0.1.0-preview.5", + "@aws-sdk/invalid-dependency": "^0.1.0-preview.1", + "@aws-sdk/middleware-content-length": "^0.1.0-preview.5", + "@aws-sdk/middleware-host-header": "^0.1.0-preview.1", + "@aws-sdk/middleware-retry": "^0.1.0-preview.5", + "@aws-sdk/middleware-serde": "^0.1.0-preview.1", + "@aws-sdk/middleware-signing": "^0.1.0-preview.7", + "@aws-sdk/middleware-stack": "^0.1.0-preview.6", + "@aws-sdk/middleware-user-agent": "^0.1.0-preview.1", + "@aws-sdk/node-http-handler": "^0.1.0-preview.6", + "@aws-sdk/protocol-http": "^0.1.0-preview.1", + "@aws-sdk/region-provider": "^0.1.0-preview.5", + "@aws-sdk/smithy-client": "^0.1.0-preview.1", + "@aws-sdk/stream-collector-browser": "^0.1.0-preview.5", + "@aws-sdk/stream-collector-node": "^0.1.0-preview.6", + "@aws-sdk/types": "^0.1.0-preview.5", + "@aws-sdk/url-parser-browser": "^0.1.0-preview.5", + "@aws-sdk/url-parser-node": "^0.1.0-preview.5", + "@aws-sdk/util-base64-browser": "^0.1.0-preview.3", + "@aws-sdk/util-base64-node": "^0.1.0-preview.3", + "@aws-sdk/util-body-length-browser": "^0.1.0-preview.3", + "@aws-sdk/util-body-length-node": "^0.1.0-preview.4", + "@aws-sdk/util-user-agent-browser": "^0.1.0-preview.6", + "@aws-sdk/util-user-agent-node": "^0.1.0-preview.6", + "@aws-sdk/util-utf8-browser": "^0.1.0-preview.3", + "@aws-sdk/util-utf8-node": "^0.1.0-preview.3" + }, + "devDependencies": { + "rimraf": "^3.0.0", + "typedoc": "^0.15.0", + "typescript": "^3.6.3", + "@types/node": "^12.7.5", + "tslib": "^1.8.0" + }, + "engines": { + "node": ">=8.0.0" + }, + "author": { + "name": "AWS SDK for JavaScript Team", + "url": "https://aws.amazon.com/javascript/" + }, + "license": "Apache-2.0" +} diff --git a/clients/client-macie/protocols/Aws_json1_1.ts b/clients/client-macie/protocols/Aws_json1_1.ts new file mode 100644 index 000000000000..6c329a5b4778 --- /dev/null +++ b/clients/client-macie/protocols/Aws_json1_1.ts @@ -0,0 +1,1308 @@ +import { + AssociateMemberAccountCommandInput, + AssociateMemberAccountCommandOutput +} from "../commands/AssociateMemberAccountCommand"; +import { + AssociateS3ResourcesCommandInput, + AssociateS3ResourcesCommandOutput +} from "../commands/AssociateS3ResourcesCommand"; +import { + DisassociateMemberAccountCommandInput, + DisassociateMemberAccountCommandOutput +} from "../commands/DisassociateMemberAccountCommand"; +import { + DisassociateS3ResourcesCommandInput, + DisassociateS3ResourcesCommandOutput +} from "../commands/DisassociateS3ResourcesCommand"; +import { + ListMemberAccountsCommandInput, + ListMemberAccountsCommandOutput +} from "../commands/ListMemberAccountsCommand"; +import { + ListS3ResourcesCommandInput, + ListS3ResourcesCommandOutput +} from "../commands/ListS3ResourcesCommand"; +import { + UpdateS3ResourcesCommandInput, + UpdateS3ResourcesCommandOutput +} from "../commands/UpdateS3ResourcesCommand"; +import { + AccessDeniedException, + AssociateMemberAccountRequest, + AssociateS3ResourcesRequest, + AssociateS3ResourcesResult, + ClassificationType, + ClassificationTypeUpdate, + DisassociateMemberAccountRequest, + DisassociateS3ResourcesRequest, + DisassociateS3ResourcesResult, + FailedS3Resource, + InternalException, + InvalidInputException, + LimitExceededException, + ListMemberAccountsRequest, + ListMemberAccountsResult, + ListS3ResourcesRequest, + ListS3ResourcesResult, + MemberAccount, + S3Resource, + S3ResourceClassification, + S3ResourceClassificationUpdate, + UpdateS3ResourcesRequest, + UpdateS3ResourcesResult +} from "../models/index"; +import { + HttpRequest as __HttpRequest, + HttpResponse as __HttpResponse +} from "@aws-sdk/protocol-http"; +import { SmithyException as __SmithyException } from "@aws-sdk/smithy-client"; +import { + Endpoint as __Endpoint, + MetadataBearer as __MetadataBearer, + ResponseMetadata as __ResponseMetadata, + SerdeContext as __SerdeContext +} from "@aws-sdk/types"; + +export async function serializeAws_json1_1AssociateMemberAccountCommand( + input: AssociateMemberAccountCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.AssociateMemberAccount"; + let body: any = {}; + const wrappedBody: any = { + AssociateMemberAccountRequest: serializeAws_json1_1AssociateMemberAccountRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/AssociateMemberAccount", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1AssociateS3ResourcesCommand( + input: AssociateS3ResourcesCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.AssociateS3Resources"; + let body: any = {}; + const wrappedBody: any = { + AssociateS3ResourcesRequest: serializeAws_json1_1AssociateS3ResourcesRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/AssociateS3Resources", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1DisassociateMemberAccountCommand( + input: DisassociateMemberAccountCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.DisassociateMemberAccount"; + let body: any = {}; + const wrappedBody: any = { + DisassociateMemberAccountRequest: serializeAws_json1_1DisassociateMemberAccountRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/DisassociateMemberAccount", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1DisassociateS3ResourcesCommand( + input: DisassociateS3ResourcesCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.DisassociateS3Resources"; + let body: any = {}; + const wrappedBody: any = { + DisassociateS3ResourcesRequest: serializeAws_json1_1DisassociateS3ResourcesRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/DisassociateS3Resources", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1ListMemberAccountsCommand( + input: ListMemberAccountsCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.ListMemberAccounts"; + let body: any = {}; + const wrappedBody: any = { + ListMemberAccountsRequest: serializeAws_json1_1ListMemberAccountsRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/ListMemberAccounts", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1ListS3ResourcesCommand( + input: ListS3ResourcesCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.ListS3Resources"; + let body: any = {}; + const wrappedBody: any = { + ListS3ResourcesRequest: serializeAws_json1_1ListS3ResourcesRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/ListS3Resources", + headers: headers, + body: body + }); +} + +export async function serializeAws_json1_1UpdateS3ResourcesCommand( + input: UpdateS3ResourcesCommandInput, + context: __SerdeContext +): Promise<__HttpRequest> { + const headers: any = {}; + headers["Content-Type"] = "application/x-amz-json-1.1"; + headers["X-Amz-Target"] = "MacieService.UpdateS3Resources"; + let body: any = {}; + const wrappedBody: any = { + UpdateS3ResourcesRequest: serializeAws_json1_1UpdateS3ResourcesRequest( + input, + context + ) + }; + body = JSON.stringify(wrappedBody); + return new __HttpRequest({ + ...context.endpoint, + protocol: "https", + method: "POST", + path: "/UpdateS3Resources", + headers: headers, + body: body + }); +} + +export async function deserializeAws_json1_1AssociateMemberAccountCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1AssociateMemberAccountCommandError( + output, + context + ); + } + const response: AssociateMemberAccountCommandOutput = { + $metadata: deserializeMetadata(output) + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1AssociateMemberAccountCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + case "LimitExceededException": + case "com.amazonaws.macie.service#LimitExceededException": + response = await deserializeAws_json1_1LimitExceededExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1AssociateS3ResourcesCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1AssociateS3ResourcesCommandError( + output, + context + ); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1AssociateS3ResourcesResult( + data.AssociateS3ResourcesResult, + context + ); + const response: AssociateS3ResourcesCommandOutput = { + $metadata: deserializeMetadata(output), + __type: "AssociateS3ResourcesResult", + ...contents + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1AssociateS3ResourcesCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.macie.service#AccessDeniedException": + response = await deserializeAws_json1_1AccessDeniedExceptionResponse( + parsedOutput, + context + ); + break; + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + case "LimitExceededException": + case "com.amazonaws.macie.service#LimitExceededException": + response = await deserializeAws_json1_1LimitExceededExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1DisassociateMemberAccountCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1DisassociateMemberAccountCommandError( + output, + context + ); + } + const response: DisassociateMemberAccountCommandOutput = { + $metadata: deserializeMetadata(output) + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1DisassociateMemberAccountCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1DisassociateS3ResourcesCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1DisassociateS3ResourcesCommandError( + output, + context + ); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1DisassociateS3ResourcesResult( + data.DisassociateS3ResourcesResult, + context + ); + const response: DisassociateS3ResourcesCommandOutput = { + $metadata: deserializeMetadata(output), + __type: "DisassociateS3ResourcesResult", + ...contents + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1DisassociateS3ResourcesCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.macie.service#AccessDeniedException": + response = await deserializeAws_json1_1AccessDeniedExceptionResponse( + parsedOutput, + context + ); + break; + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1ListMemberAccountsCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1ListMemberAccountsCommandError( + output, + context + ); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1ListMemberAccountsResult( + data.ListMemberAccountsResult, + context + ); + const response: ListMemberAccountsCommandOutput = { + $metadata: deserializeMetadata(output), + __type: "ListMemberAccountsResult", + ...contents + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1ListMemberAccountsCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1ListS3ResourcesCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1ListS3ResourcesCommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1ListS3ResourcesResult( + data.ListS3ResourcesResult, + context + ); + const response: ListS3ResourcesCommandOutput = { + $metadata: deserializeMetadata(output), + __type: "ListS3ResourcesResult", + ...contents + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1ListS3ResourcesCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.macie.service#AccessDeniedException": + response = await deserializeAws_json1_1AccessDeniedExceptionResponse( + parsedOutput, + context + ); + break; + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +export async function deserializeAws_json1_1UpdateS3ResourcesCommand( + output: __HttpResponse, + context: __SerdeContext +): Promise { + if (output.statusCode >= 400) { + return deserializeAws_json1_1UpdateS3ResourcesCommandError(output, context); + } + const data: any = await parseBody(output.body, context); + let contents: any = {}; + contents = deserializeAws_json1_1UpdateS3ResourcesResult( + data.UpdateS3ResourcesResult, + context + ); + const response: UpdateS3ResourcesCommandOutput = { + $metadata: deserializeMetadata(output), + __type: "UpdateS3ResourcesResult", + ...contents + }; + return Promise.resolve(response); +} + +async function deserializeAws_json1_1UpdateS3ResourcesCommandError( + output: __HttpResponse, + context: __SerdeContext +): Promise { + const data: any = await parseBody(output.body, context); + const parsedOutput: any = { + ...output, + body: data + }; + let response: __SmithyException & __MetadataBearer; + let errorCode: String; + const errorTypeParts: String = data["__type"].split("#"); + errorCode = + errorTypeParts[1] === undefined ? errorTypeParts[0] : errorTypeParts[1]; + switch (errorCode) { + case "AccessDeniedException": + case "com.amazonaws.macie.service#AccessDeniedException": + response = await deserializeAws_json1_1AccessDeniedExceptionResponse( + parsedOutput, + context + ); + break; + case "InternalException": + case "com.amazonaws.macie.service#InternalException": + response = await deserializeAws_json1_1InternalExceptionResponse( + parsedOutput, + context + ); + break; + case "InvalidInputException": + case "com.amazonaws.macie.service#InvalidInputException": + response = await deserializeAws_json1_1InvalidInputExceptionResponse( + parsedOutput, + context + ); + break; + default: + errorCode = errorCode || "UnknownError"; + response = { + __type: `com.amazonaws.macie.service#${errorCode}`, + $fault: "client", + $metadata: deserializeMetadata(output) + }; + } + return Promise.reject(Object.assign(new Error(response.__type), response)); +} + +const deserializeAws_json1_1AccessDeniedExceptionResponse = async ( + output: any, + context: __SerdeContext +): Promise => { + const deserialized: any = deserializeAws_json1_1AccessDeniedException( + output.body, + context + ); + const contents: AccessDeniedException = { + __type: "AccessDeniedException", + $fault: "client", + $metadata: deserializeMetadata(output), + ...deserialized + }; + return contents; +}; + +const deserializeAws_json1_1InternalExceptionResponse = async ( + output: any, + context: __SerdeContext +): Promise => { + const deserialized: any = deserializeAws_json1_1InternalException( + output.body, + context + ); + const contents: InternalException = { + __type: "InternalException", + $fault: "server", + $metadata: deserializeMetadata(output), + ...deserialized + }; + return contents; +}; + +const deserializeAws_json1_1InvalidInputExceptionResponse = async ( + output: any, + context: __SerdeContext +): Promise => { + const deserialized: any = deserializeAws_json1_1InvalidInputException( + output.body, + context + ); + const contents: InvalidInputException = { + __type: "InvalidInputException", + $fault: "client", + $metadata: deserializeMetadata(output), + ...deserialized + }; + return contents; +}; + +const deserializeAws_json1_1LimitExceededExceptionResponse = async ( + output: any, + context: __SerdeContext +): Promise => { + const deserialized: any = deserializeAws_json1_1LimitExceededException( + output.body, + context + ); + const contents: LimitExceededException = { + __type: "LimitExceededException", + $fault: "client", + $metadata: deserializeMetadata(output), + ...deserialized + }; + return contents; +}; + +const serializeAws_json1_1AssociateMemberAccountRequest = ( + input: AssociateMemberAccountRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + return bodyParams; +}; + +const serializeAws_json1_1AssociateS3ResourcesRequest = ( + input: AssociateS3ResourcesRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + if (input.s3Resources !== undefined) { + bodyParams["s3Resources"] = serializeAws_json1_1S3ResourcesClassification( + input.s3Resources, + context + ); + } + return bodyParams; +}; + +const serializeAws_json1_1ClassificationType = ( + input: ClassificationType, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.continuous !== undefined) { + bodyParams["continuous"] = input.continuous; + } + if (input.oneTime !== undefined) { + bodyParams["oneTime"] = input.oneTime; + } + return bodyParams; +}; + +const serializeAws_json1_1ClassificationTypeUpdate = ( + input: ClassificationTypeUpdate, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.continuous !== undefined) { + bodyParams["continuous"] = input.continuous; + } + if (input.oneTime !== undefined) { + bodyParams["oneTime"] = input.oneTime; + } + return bodyParams; +}; + +const serializeAws_json1_1DisassociateMemberAccountRequest = ( + input: DisassociateMemberAccountRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + return bodyParams; +}; + +const serializeAws_json1_1DisassociateS3ResourcesRequest = ( + input: DisassociateS3ResourcesRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.associatedS3Resources !== undefined) { + bodyParams["associatedS3Resources"] = serializeAws_json1_1S3Resources( + input.associatedS3Resources, + context + ); + } + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + return bodyParams; +}; + +const serializeAws_json1_1ListMemberAccountsRequest = ( + input: ListMemberAccountsRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.maxResults !== undefined) { + bodyParams["maxResults"] = input.maxResults; + } + if (input.nextToken !== undefined) { + bodyParams["nextToken"] = input.nextToken; + } + return bodyParams; +}; + +const serializeAws_json1_1ListS3ResourcesRequest = ( + input: ListS3ResourcesRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.maxResults !== undefined) { + bodyParams["maxResults"] = input.maxResults; + } + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + if (input.nextToken !== undefined) { + bodyParams["nextToken"] = input.nextToken; + } + return bodyParams; +}; + +const serializeAws_json1_1S3Resource = ( + input: S3Resource, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.bucketName !== undefined) { + bodyParams["bucketName"] = input.bucketName; + } + if (input.prefix !== undefined) { + bodyParams["prefix"] = input.prefix; + } + return bodyParams; +}; + +const serializeAws_json1_1S3ResourceClassification = ( + input: S3ResourceClassification, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.bucketName !== undefined) { + bodyParams["bucketName"] = input.bucketName; + } + if (input.classificationType !== undefined) { + bodyParams["classificationType"] = serializeAws_json1_1ClassificationType( + input.classificationType, + context + ); + } + if (input.prefix !== undefined) { + bodyParams["prefix"] = input.prefix; + } + return bodyParams; +}; + +const serializeAws_json1_1S3ResourceClassificationUpdate = ( + input: S3ResourceClassificationUpdate, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.bucketName !== undefined) { + bodyParams["bucketName"] = input.bucketName; + } + if (input.classificationTypeUpdate !== undefined) { + bodyParams[ + "classificationTypeUpdate" + ] = serializeAws_json1_1ClassificationTypeUpdate( + input.classificationTypeUpdate, + context + ); + } + if (input.prefix !== undefined) { + bodyParams["prefix"] = input.prefix; + } + return bodyParams; +}; + +const serializeAws_json1_1S3Resources = ( + input: Array, + context: __SerdeContext +): any => { + return (input || []).map(entry => + serializeAws_json1_1S3Resource(entry, context) + ); +}; + +const serializeAws_json1_1S3ResourcesClassification = ( + input: Array, + context: __SerdeContext +): any => { + return (input || []).map(entry => + serializeAws_json1_1S3ResourceClassification(entry, context) + ); +}; + +const serializeAws_json1_1S3ResourcesClassificationUpdate = ( + input: Array, + context: __SerdeContext +): any => { + return (input || []).map(entry => + serializeAws_json1_1S3ResourceClassificationUpdate(entry, context) + ); +}; + +const serializeAws_json1_1UpdateS3ResourcesRequest = ( + input: UpdateS3ResourcesRequest, + context: __SerdeContext +): any => { + let bodyParams: any = {}; + if (input.memberAccountId !== undefined) { + bodyParams["memberAccountId"] = input.memberAccountId; + } + if (input.s3ResourcesUpdate !== undefined) { + bodyParams[ + "s3ResourcesUpdate" + ] = serializeAws_json1_1S3ResourcesClassificationUpdate( + input.s3ResourcesUpdate, + context + ); + } + return bodyParams; +}; + +const deserializeAws_json1_1AccessDeniedException = ( + output: any, + context: __SerdeContext +): AccessDeniedException => { + let contents: any = { + __type: "AccessDeniedException", + message: undefined, + resourceType: undefined + }; + if (output.message !== undefined) { + contents.message = output.message; + } + if (output.resourceType !== undefined) { + contents.resourceType = output.resourceType; + } + return contents; +}; + +const deserializeAws_json1_1AssociateS3ResourcesResult = ( + output: any, + context: __SerdeContext +): AssociateS3ResourcesResult => { + let contents: any = { + __type: "AssociateS3ResourcesResult", + failedS3Resources: undefined + }; + if (output.failedS3Resources !== undefined) { + contents.failedS3Resources = deserializeAws_json1_1FailedS3Resources( + output.failedS3Resources, + context + ); + } + return contents; +}; + +const deserializeAws_json1_1ClassificationType = ( + output: any, + context: __SerdeContext +): ClassificationType => { + let contents: any = { + __type: "ClassificationType", + continuous: undefined, + oneTime: undefined + }; + if (output.continuous !== undefined) { + contents.continuous = output.continuous; + } + if (output.oneTime !== undefined) { + contents.oneTime = output.oneTime; + } + return contents; +}; + +const deserializeAws_json1_1DisassociateS3ResourcesResult = ( + output: any, + context: __SerdeContext +): DisassociateS3ResourcesResult => { + let contents: any = { + __type: "DisassociateS3ResourcesResult", + failedS3Resources: undefined + }; + if (output.failedS3Resources !== undefined) { + contents.failedS3Resources = deserializeAws_json1_1FailedS3Resources( + output.failedS3Resources, + context + ); + } + return contents; +}; + +const deserializeAws_json1_1FailedS3Resource = ( + output: any, + context: __SerdeContext +): FailedS3Resource => { + let contents: any = { + __type: "FailedS3Resource", + errorCode: undefined, + errorMessage: undefined, + failedItem: undefined + }; + if (output.errorCode !== undefined) { + contents.errorCode = output.errorCode; + } + if (output.errorMessage !== undefined) { + contents.errorMessage = output.errorMessage; + } + if (output.failedItem !== undefined) { + contents.failedItem = deserializeAws_json1_1S3Resource( + output.failedItem, + context + ); + } + return contents; +}; + +const deserializeAws_json1_1FailedS3Resources = ( + output: any, + context: __SerdeContext +): Array => { + return (output || []).map((entry: any) => + deserializeAws_json1_1FailedS3Resource(entry, context) + ); +}; + +const deserializeAws_json1_1InternalException = ( + output: any, + context: __SerdeContext +): InternalException => { + let contents: any = { + __type: "InternalException", + errorCode: undefined, + message: undefined + }; + if (output.errorCode !== undefined) { + contents.errorCode = output.errorCode; + } + if (output.message !== undefined) { + contents.message = output.message; + } + return contents; +}; + +const deserializeAws_json1_1InvalidInputException = ( + output: any, + context: __SerdeContext +): InvalidInputException => { + let contents: any = { + __type: "InvalidInputException", + errorCode: undefined, + fieldName: undefined, + message: undefined + }; + if (output.errorCode !== undefined) { + contents.errorCode = output.errorCode; + } + if (output.fieldName !== undefined) { + contents.fieldName = output.fieldName; + } + if (output.message !== undefined) { + contents.message = output.message; + } + return contents; +}; + +const deserializeAws_json1_1LimitExceededException = ( + output: any, + context: __SerdeContext +): LimitExceededException => { + let contents: any = { + __type: "LimitExceededException", + errorCode: undefined, + message: undefined, + resourceType: undefined + }; + if (output.errorCode !== undefined) { + contents.errorCode = output.errorCode; + } + if (output.message !== undefined) { + contents.message = output.message; + } + if (output.resourceType !== undefined) { + contents.resourceType = output.resourceType; + } + return contents; +}; + +const deserializeAws_json1_1ListMemberAccountsResult = ( + output: any, + context: __SerdeContext +): ListMemberAccountsResult => { + let contents: any = { + __type: "ListMemberAccountsResult", + memberAccounts: undefined, + nextToken: undefined + }; + if (output.memberAccounts !== undefined) { + contents.memberAccounts = deserializeAws_json1_1MemberAccounts( + output.memberAccounts, + context + ); + } + if (output.nextToken !== undefined) { + contents.nextToken = output.nextToken; + } + return contents; +}; + +const deserializeAws_json1_1ListS3ResourcesResult = ( + output: any, + context: __SerdeContext +): ListS3ResourcesResult => { + let contents: any = { + __type: "ListS3ResourcesResult", + nextToken: undefined, + s3Resources: undefined + }; + if (output.nextToken !== undefined) { + contents.nextToken = output.nextToken; + } + if (output.s3Resources !== undefined) { + contents.s3Resources = deserializeAws_json1_1S3ResourcesClassification( + output.s3Resources, + context + ); + } + return contents; +}; + +const deserializeAws_json1_1MemberAccount = ( + output: any, + context: __SerdeContext +): MemberAccount => { + let contents: any = { + __type: "MemberAccount", + accountId: undefined + }; + if (output.accountId !== undefined) { + contents.accountId = output.accountId; + } + return contents; +}; + +const deserializeAws_json1_1MemberAccounts = ( + output: any, + context: __SerdeContext +): Array => { + return (output || []).map((entry: any) => + deserializeAws_json1_1MemberAccount(entry, context) + ); +}; + +const deserializeAws_json1_1S3Resource = ( + output: any, + context: __SerdeContext +): S3Resource => { + let contents: any = { + __type: "S3Resource", + bucketName: undefined, + prefix: undefined + }; + if (output.bucketName !== undefined) { + contents.bucketName = output.bucketName; + } + if (output.prefix !== undefined) { + contents.prefix = output.prefix; + } + return contents; +}; + +const deserializeAws_json1_1S3ResourceClassification = ( + output: any, + context: __SerdeContext +): S3ResourceClassification => { + let contents: any = { + __type: "S3ResourceClassification", + bucketName: undefined, + classificationType: undefined, + prefix: undefined + }; + if (output.bucketName !== undefined) { + contents.bucketName = output.bucketName; + } + if (output.classificationType !== undefined) { + contents.classificationType = deserializeAws_json1_1ClassificationType( + output.classificationType, + context + ); + } + if (output.prefix !== undefined) { + contents.prefix = output.prefix; + } + return contents; +}; + +const deserializeAws_json1_1S3ResourcesClassification = ( + output: any, + context: __SerdeContext +): Array => { + return (output || []).map((entry: any) => + deserializeAws_json1_1S3ResourceClassification(entry, context) + ); +}; + +const deserializeAws_json1_1UpdateS3ResourcesResult = ( + output: any, + context: __SerdeContext +): UpdateS3ResourcesResult => { + let contents: any = { + __type: "UpdateS3ResourcesResult", + failedS3Resources: undefined + }; + if (output.failedS3Resources !== undefined) { + contents.failedS3Resources = deserializeAws_json1_1FailedS3Resources( + output.failedS3Resources, + context + ); + } + return contents; +}; + +const deserializeMetadata = (output: __HttpResponse): __ResponseMetadata => ({ + httpStatusCode: output.statusCode, + httpHeaders: output.headers, + requestId: output.headers["x-amzn-requestid"] +}); + +const parseBody = (streamBody: any, context: __SerdeContext): any => { + return context.streamCollector(streamBody).then((body: any) => { + const encoded = context.utf8Encoder(body); + if (encoded.length) { + return JSON.parse(encoded); + } + return {}; + }); +}; diff --git a/clients/client-macie/runtimeConfig.browser.ts b/clients/client-macie/runtimeConfig.browser.ts new file mode 100644 index 000000000000..c71823de690b --- /dev/null +++ b/clients/client-macie/runtimeConfig.browser.ts @@ -0,0 +1,30 @@ +import { invalidFunction } from "@aws-sdk/invalid-dependency"; +import { Sha256 } from "@aws-crypto/sha256-browser"; +import { FetchHttpHandler } from "@aws-sdk/fetch-http-handler"; +import { parseUrl } from "@aws-sdk/url-parser-browser"; +import { calculateBodyLength } from "@aws-sdk/util-body-length-browser"; +import { streamCollector } from "@aws-sdk/stream-collector-browser"; +import { fromUtf8, toUtf8 } from "@aws-sdk/util-utf8-browser"; +import { fromBase64, toBase64 } from "@aws-sdk/util-base64-browser"; +import { defaultUserAgent } from "@aws-sdk/util-user-agent-browser"; +import { name, version } from "./package.json"; +import { ClientDefaults } from "./MacieClient"; +import { ClientSharedValues } from "./runtimeConfig.shared"; + +export const ClientDefaultValues: Required = { + ...ClientSharedValues, + requestHandler: new FetchHttpHandler(), + sha256: Sha256, + urlParser: parseUrl, + bodyLengthChecker: calculateBodyLength, + streamCollector, + base64Decoder: fromBase64, + base64Encoder: toBase64, + utf8Decoder: fromUtf8, + utf8Encoder: toUtf8, + defaultUserAgent: defaultUserAgent(name, version), + runtime: "browser", + signingName: "macie", + credentialDefaultProvider: invalidFunction("Credential is missing") as any, + regionDefaultProvider: invalidFunction("Region is missing") as any +}; diff --git a/clients/client-macie/runtimeConfig.shared.ts b/clients/client-macie/runtimeConfig.shared.ts new file mode 100644 index 000000000000..77b313ce343a --- /dev/null +++ b/clients/client-macie/runtimeConfig.shared.ts @@ -0,0 +1,7 @@ +import { defaultRegionInfoProvider } from "./endpoints"; + +export const ClientSharedValues = { + apiVersion: "2017-12-19", + signingName: "macie", + regionInfoProvider: defaultRegionInfoProvider +}; diff --git a/clients/client-macie/runtimeConfig.ts b/clients/client-macie/runtimeConfig.ts new file mode 100644 index 000000000000..ea1aaa0a27ec --- /dev/null +++ b/clients/client-macie/runtimeConfig.ts @@ -0,0 +1,31 @@ +import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; +import { defaultProvider as regionDefaultProvider } from "@aws-sdk/region-provider"; +import { Hash } from "@aws-sdk/hash-node"; +import { NodeHttpHandler } from "@aws-sdk/node-http-handler"; +import { parseUrl } from "@aws-sdk/url-parser-node"; +import { calculateBodyLength } from "@aws-sdk/util-body-length-node"; +import { streamCollector } from "@aws-sdk/stream-collector-node"; +import { fromUtf8, toUtf8 } from "@aws-sdk/util-utf8-node"; +import { fromBase64, toBase64 } from "@aws-sdk/util-base64-node"; +import { defaultUserAgent } from "@aws-sdk/util-user-agent-node"; +import { name, version } from "./package.json"; +import { ClientDefaults } from "./MacieClient"; +import { ClientSharedValues } from "./runtimeConfig.shared"; + +export const ClientDefaultValues: Required = { + ...ClientSharedValues, + requestHandler: new NodeHttpHandler(), + sha256: Hash.bind(null, "sha256"), + urlParser: parseUrl, + bodyLengthChecker: calculateBodyLength, + streamCollector, + base64Decoder: fromBase64, + base64Encoder: toBase64, + utf8Decoder: fromUtf8, + utf8Encoder: toUtf8, + defaultUserAgent: defaultUserAgent(name, version), + runtime: "node", + signingName: "macie", + credentialDefaultProvider, + regionDefaultProvider +}; diff --git a/clients/client-macie/tsconfig.es.json b/clients/client-macie/tsconfig.es.json new file mode 100644 index 000000000000..9add6a7c2445 --- /dev/null +++ b/clients/client-macie/tsconfig.es.json @@ -0,0 +1,19 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "target": "es5", + "module": "esnext", + "moduleResolution": "node", + "declaration": false, + "declarationDir": null, + "lib": [ + "dom", + "es5", + "es2015.promise", + "es2015.collection", + "es2015.iterable", + "es2015.symbol.wellknown" + ], + "outDir": "dist/es" + } +} diff --git a/clients/client-macie/tsconfig.json b/clients/client-macie/tsconfig.json new file mode 100644 index 000000000000..ca2fadc08187 --- /dev/null +++ b/clients/client-macie/tsconfig.json @@ -0,0 +1,27 @@ +{ + "compilerOptions": { + "alwaysStrict": true, + "target": "es2017", + "module": "commonjs", + "declaration": true, + "strict": true, + "sourceMap": true, + "downlevelIteration": true, + "importHelpers": true, + "noEmitHelpers": true, + "incremental": true, + "resolveJsonModule": true, + "declarationDir": "./types", + "outDir": "dist/cjs" + }, + "typedocOptions": { + "exclude": "**/node_modules/**", + "excludedNotExported": true, + "excludePrivate": true, + "hideGenerator": true, + "ignoreCompilerErrors": true, + "mode": "file", + "out": "./docs", + "plugin": "@aws-sdk/client-documentation-generator" + } +}