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"
+ }
+}