From 7938281b7cebec6d60ab26e76bbc83cf69f21bae Mon Sep 17 00:00:00 2001
From: aws-sdk-go-automation
 <43143561+aws-sdk-go-automation@users.noreply.github.com>
Date: Tue, 3 Aug 2021 11:18:09 -0700
Subject: [PATCH] Release v1.40.14 (2021-08-03) (#4044)

Release v1.40.14 (2021-08-03)
===

### Service Client Updates
* `service/glue`: Updates service API and documentation
  * Add ConcurrentModificationException to create-table, delete-table, create-database, update-database, delete-database
* `service/iotsitewise`: Updates service API and documentation
* `service/mediaconvert`: Updates service API and documentation
  * AWS Elemental MediaConvert SDK has added control over the passthrough of XDS captions metadata to outputs.
* `service/proton`: Updates service documentation
* `service/redshift`: Updates service API and documentation
  * API support for Redshift Data Sharing feature.
---
 CHANGELOG.md                                  |   13 +
 aws/version.go                                |    2 +-
 models/apis/glue/2017-03-31/api-2.json        |   15 +-
 models/apis/glue/2017-03-31/docs-2.json       |    4 +-
 models/apis/iotsitewise/2019-12-02/api-2.json |   13 +-
 .../apis/iotsitewise/2019-12-02/docs-2.json   |   14 +-
 .../apis/mediaconvert/2017-08-29/api-2.json   |   35 +
 .../apis/mediaconvert/2017-08-29/docs-2.json  |   19 +
 models/apis/proton/2020-07-20/docs-2.json     |    2 +-
 models/apis/redshift/2012-12-01/api-2.json    |  292 ++
 models/apis/redshift/2012-12-01/docs-2.json   |  278 +-
 service/glue/api.go                           |   22 +-
 service/iotsitewise/api.go                    |   69 +-
 service/mediaconvert/api.go                   |   96 +
 service/proton/doc.go                         |   23 +
 service/redshift/api.go                       | 2413 ++++++++++++++---
 service/redshift/errors.go                    |   19 +-
 service/redshift/redshiftiface/interface.go   |   32 +
 18 files changed, 2884 insertions(+), 477 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index e533db6fa3b..0873b1918ae 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,16 @@
+Release v1.40.14 (2021-08-03)
+===
+
+### Service Client Updates
+* `service/glue`: Updates service API and documentation
+  * Add ConcurrentModificationException to create-table, delete-table, create-database, update-database, delete-database
+* `service/iotsitewise`: Updates service API and documentation
+* `service/mediaconvert`: Updates service API and documentation
+  * AWS Elemental MediaConvert SDK has added control over the passthrough of XDS captions metadata to outputs.
+* `service/proton`: Updates service documentation
+* `service/redshift`: Updates service API and documentation
+  * API support for Redshift Data Sharing feature.
+
 Release v1.40.13 (2021-08-02)
 ===
 
diff --git a/aws/version.go b/aws/version.go
index 68aa3515cc1..8973a94671b 100644
--- a/aws/version.go
+++ b/aws/version.go
@@ -5,4 +5,4 @@ package aws
 const SDKName = "aws-sdk-go"
 
 // SDKVersion is the version of this SDK
-const SDKVersion = "1.40.13"
+const SDKVersion = "1.40.14"
diff --git a/models/apis/glue/2017-03-31/api-2.json b/models/apis/glue/2017-03-31/api-2.json
index 4a8d5ad2eae..fb2cabb6126 100644
--- a/models/apis/glue/2017-03-31/api-2.json
+++ b/models/apis/glue/2017-03-31/api-2.json
@@ -292,7 +292,8 @@
         {"shape":"ResourceNumberLimitExceededException"},
         {"shape":"InternalServiceException"},
         {"shape":"OperationTimeoutException"},
-        {"shape":"GlueEncryptionException"}
+        {"shape":"GlueEncryptionException"},
+        {"shape":"ConcurrentModificationException"}
       ]
     },
     "CreateDevEndpoint":{
@@ -464,7 +465,8 @@
         {"shape":"ResourceNumberLimitExceededException"},
         {"shape":"InternalServiceException"},
         {"shape":"OperationTimeoutException"},
-        {"shape":"GlueEncryptionException"}
+        {"shape":"GlueEncryptionException"},
+        {"shape":"ConcurrentModificationException"}
       ]
     },
     "CreateTrigger":{
@@ -606,7 +608,8 @@
         {"shape":"EntityNotFoundException"},
         {"shape":"InvalidInputException"},
         {"shape":"InternalServiceException"},
-        {"shape":"OperationTimeoutException"}
+        {"shape":"OperationTimeoutException"},
+        {"shape":"ConcurrentModificationException"}
       ]
     },
     "DeleteDevEndpoint":{
@@ -773,7 +776,8 @@
         {"shape":"EntityNotFoundException"},
         {"shape":"InvalidInputException"},
         {"shape":"InternalServiceException"},
-        {"shape":"OperationTimeoutException"}
+        {"shape":"OperationTimeoutException"},
+        {"shape":"ConcurrentModificationException"}
       ]
     },
     "DeleteTableVersion":{
@@ -2254,7 +2258,8 @@
         {"shape":"InvalidInputException"},
         {"shape":"InternalServiceException"},
         {"shape":"OperationTimeoutException"},
-        {"shape":"GlueEncryptionException"}
+        {"shape":"GlueEncryptionException"},
+        {"shape":"ConcurrentModificationException"}
       ]
     },
     "UpdateDevEndpoint":{
diff --git a/models/apis/glue/2017-03-31/docs-2.json b/models/apis/glue/2017-03-31/docs-2.json
index cc2ffbe351a..9d7111a52b1 100644
--- a/models/apis/glue/2017-03-31/docs-2.json
+++ b/models/apis/glue/2017-03-31/docs-2.json
@@ -947,7 +947,7 @@
       "base": null,
       "refs": {
         "Connection$ConnectionType": "<p>The type of the connection. Currently, SFTP is not supported.</p>",
-        "ConnectionInput$ConnectionType": "<p>The type of the connection. Currently, these types are supported:</p> <ul> <li> <p> <code>JDBC</code> - Designates a connection to a database through Java Database Connectivity (JDBC).</p> </li> <li> <p> <code>KAFKA</code> - Designates a connection to an Apache Kafka streaming platform.</p> </li> <li> <p> <code>MONGODB</code> - Designates a connection to a MongoDB document database.</p> </li> <li> <p> <code>NETWORK</code> - Designates a network connection to a data source within an Amazon Virtual Private Cloud environment (Amazon VPC).</p> </li> <li> <p> <code>MARKETPLACE</code> - Uses configuration settings contained in a connector purchased from Marketplace to read from and write to data stores that are not natively supported by Glue.</p> </li> <li> <p> <code>CUSTOM</code> - Uses configuration settings contained in a custom connector to read from and write to data stores that are not natively supported by Glue.</p> </li> </ul> <p>SFTP is not supported.</p>",
+        "ConnectionInput$ConnectionType": "<p>The type of the connection. Currently, these types are supported:</p> <ul> <li> <p> <code>JDBC</code> - Designates a connection to a database through Java Database Connectivity (JDBC).</p> </li> <li> <p> <code>KAFKA</code> - Designates a connection to an Apache Kafka streaming platform.</p> </li> <li> <p> <code>MONGODB</code> - Designates a connection to a MongoDB document database.</p> </li> <li> <p> <code>NETWORK</code> - Designates a network connection to a data source within an Amazon Virtual Private Cloud environment (Amazon VPC).</p> </li> <li> <p> <code>MARKETPLACE</code> - Uses configuration settings contained in a connector purchased from Amazon Web Services Marketplace to read from and write to data stores that are not natively supported by Glue.</p> </li> <li> <p> <code>CUSTOM</code> - Uses configuration settings contained in a custom connector to read from and write to data stores that are not natively supported by Glue.</p> </li> </ul> <p>SFTP is not supported.</p>",
         "GetConnectionsFilter$ConnectionType": "<p>The type of connections to return. Currently, SFTP is not supported.</p>"
       }
     },
@@ -1768,7 +1768,7 @@
     "EnableHybridValues": {
       "base": null,
       "refs": {
-        "PutResourcePolicyRequest$EnableHybrid": "<p>If <code>'TRUE'</code>, indicates that you are using both methods to grant cross-account access to Data Catalog resources:</p> <ul> <li> <p>By directly updating the resource policy with <code>PutResourePolicy</code> </p> </li> <li> <p>By using the <b>Grant permissions</b> command on the Management Console.</p> </li> </ul> <p>Must be set to <code>'TRUE'</code> if you have already used the Management Console to grant cross-account access, otherwise the call fails. Default is 'FALSE'.</p>"
+        "PutResourcePolicyRequest$EnableHybrid": "<p>If <code>'TRUE'</code>, indicates that you are using both methods to grant cross-account access to Data Catalog resources:</p> <ul> <li> <p>By directly updating the resource policy with <code>PutResourePolicy</code> </p> </li> <li> <p>By using the <b>Grant permissions</b> command on the Amazon Web Services Management Console.</p> </li> </ul> <p>Must be set to <code>'TRUE'</code> if you have already used the Management Console to grant cross-account access, otherwise the call fails. Default is 'FALSE'.</p>"
       }
     },
     "EncryptionAtRest": {
diff --git a/models/apis/iotsitewise/2019-12-02/api-2.json b/models/apis/iotsitewise/2019-12-02/api-2.json
index 2ba4f8c6d16..b41da8d6e4e 100644
--- a/models/apis/iotsitewise/2019-12-02/api-2.json
+++ b/models/apis/iotsitewise/2019-12-02/api-2.json
@@ -3016,9 +3016,8 @@
     },
     "Interval":{
       "type":"string",
-      "max":3,
-      "min":2,
-      "pattern":"1w|1d|1h|15m|5m|1m"
+      "max":23,
+      "min":2
     },
     "IntervalInSeconds":{
       "type":"long",
@@ -3489,6 +3488,11 @@
       "min":1,
       "pattern":"[A-Za-z0-9+/=]+"
     },
+    "Offset":{
+      "type":"string",
+      "max":25,
+      "min":2
+    },
     "OffsetInNanos":{
       "type":"integer",
       "max":999999999,
@@ -3927,7 +3931,8 @@
       "type":"structure",
       "required":["interval"],
       "members":{
-        "interval":{"shape":"Interval"}
+        "interval":{"shape":"Interval"},
+        "offset":{"shape":"Offset"}
       }
     },
     "UnauthorizedException":{
diff --git a/models/apis/iotsitewise/2019-12-02/docs-2.json b/models/apis/iotsitewise/2019-12-02/docs-2.json
index 349e66a7302..4c9434d2a3e 100644
--- a/models/apis/iotsitewise/2019-12-02/docs-2.json
+++ b/models/apis/iotsitewise/2019-12-02/docs-2.json
@@ -31,7 +31,7 @@
     "DescribeLoggingOptions": "<p>Retrieves the current IoT SiteWise logging options.</p>",
     "DescribePortal": "<p>Retrieves information about a portal.</p>",
     "DescribeProject": "<p>Retrieves information about a project.</p>",
-    "DescribeStorageConfiguration": "<p>Retrieves information about the storage configuration for IoT SiteWise.</p> <note> <p>Exporting data to Amazon S3 is currently in preview release and is subject to change. We recommend that you use this feature only with test data, and not in production environments.</p> </note>",
+    "DescribeStorageConfiguration": "<p>Retrieves information about the storage configuration for IoT SiteWise.</p>",
     "DisassociateAssets": "<p>Disassociates a child asset from the given parent asset through a hierarchy defined in the parent asset's model.</p>",
     "GetAssetPropertyAggregates": "<p>Gets aggregated values for an asset property. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#aggregates\">Querying aggregates</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
     "GetAssetPropertyValue": "<p>Gets an asset property's current value. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/query-industrial-data.html#current-values\">Querying current values</a> in the <i>IoT SiteWise User Guide</i>.</p> <p>To identify an asset property, you must specify one of the following:</p> <ul> <li> <p>The <code>assetId</code> and <code>propertyId</code> of an asset property.</p> </li> <li> <p>A <code>propertyAlias</code>, which is a data stream alias (for example, <code>/company/windfarm/3/turbine/7/temperature</code>). To define an asset property's alias, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/APIReference/API_UpdateAssetProperty.html\">UpdateAssetProperty</a>.</p> </li> </ul>",
@@ -50,7 +50,7 @@
     "ListTagsForResource": "<p>Retrieves the list of tags for an IoT SiteWise resource.</p>",
     "PutDefaultEncryptionConfiguration": "<p>Sets the default encryption configuration for the Amazon Web Services account. For more information, see <a href=\"https://docs.aws.amazon.com/iot-sitewise/latest/userguide/key-management.html\">Key management</a> in the <i>IoT SiteWise User Guide</i>.</p>",
     "PutLoggingOptions": "<p>Sets logging options for IoT SiteWise.</p>",
-    "PutStorageConfiguration": "<p>Configures storage settings for IoT SiteWise.</p> <note> <p>Exporting data to Amazon S3 is currently in preview release and is subject to change. We recommend that you use this feature only with test data, and not in production environments.</p> </note>",
+    "PutStorageConfiguration": "<p>Configures storage settings for IoT SiteWise.</p>",
     "TagResource": "<p>Adds tags to an IoT SiteWise resource. If a tag already exists for the resource, this operation updates the tag's value.</p>",
     "UntagResource": "<p>Removes a tag from an IoT SiteWise resource.</p>",
     "UpdateAccessPolicy": "<p>Updates an existing access policy that specifies an identity's access to an IoT SiteWise Monitor portal or project resource.</p>",
@@ -1355,7 +1355,7 @@
     "Interval": {
       "base": null,
       "refs": {
-        "TumblingWindow$interval": "<p>The time interval for the tumbling window. Note that <code>w</code> represents weeks, <code>d</code> represents days, <code>h</code> represents hours, and <code>m</code> represents minutes. IoT SiteWise computes the <code>1w</code> interval the end of Sunday at midnight each week (UTC), the <code>1d</code> interval at the end of each day at midnight (UTC), the <code>1h</code> interval at the end of each hour, and so on. </p> <p>When IoT SiteWise aggregates data points for metric computations, the start of each interval is exclusive and the end of each interval is inclusive. IoT SiteWise places the computed data point at the end of the interval.</p>"
+        "TumblingWindow$interval": "<p>The time interval for the tumbling window. The interval time must be between 1 minute and 1 week.</p> <p>IoT SiteWise computes the <code>1w</code> interval the end of Sunday at midnight each week (UTC), the <code>1d</code> interval at the end of each day at midnight (UTC), the <code>1h</code> interval at the end of each hour, and so on. </p> <p>When IoT SiteWise aggregates data points for metric computations, the start of each interval is exclusive and the end of each interval is inclusive. IoT SiteWise places the computed data point at the end of the interval.</p>"
       }
     },
     "IntervalInSeconds": {
@@ -1675,6 +1675,12 @@
         "ListProjectsResponse$nextToken": "<p>The token for the next set of results, or null if there are no additional results.</p>"
       }
     },
+    "Offset": {
+      "base": null,
+      "refs": {
+        "TumblingWindow$offset": "<p>The offset for the tumbling window. The <code>offset</code> parameter accepts the following:</p> <ul> <li> <p>The offset time.</p> <p>For example, if you specify <code>18h</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6:00 p.m. (UTC), you get the first aggregation result at 6 p.m. (UTC) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6:00 p.m. (UTC), you get the first aggregation result at 6 p.m. (UTC) the next day.</p> </li> </ul> </li> <li> <p>The ISO 8601 format.</p> <p>For example, if you specify <code>PT18H</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6:00 p.m. (UTC), you get the first aggregation result at 6 p.m. (UTC) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6:00 p.m. (UTC), you get the first aggregation result at 6 p.m. (UTC) the next day.</p> </li> </ul> </li> <li> <p>The 24-hour clock.</p> <p>For example, if you specify <code>00:03:00</code> for <code>offset</code> and <code>5m</code> for <code>interval</code>, and you create the metric at 2 p.m. (UTC), you get the first aggregation result at 2:03 p.m. (UTC). You get the second aggregation result at 2:08 p.m. (UTC). </p> </li> <li> <p>The offset time zone.</p> <p>For example, if you specify <code>2021-07-23T18:00-08</code> for <code>offset</code> and <code>1d</code> for <code>interval</code>, IoT SiteWise aggregates data in one of the following ways:</p> <ul> <li> <p>If you create the metric before or at 6:00 p.m. (PST), you get the first aggregation result at 6 p.m. (PST) on the day when you create the metric.</p> </li> <li> <p>If you create the metric after 6:00 p.m. (PST), you get the first aggregation result at 6 p.m. (PST) the next day.</p> </li> </ul> </li> </ul>"
+      }
+    },
     "OffsetInNanos": {
       "base": null,
       "refs": {
@@ -2105,7 +2111,7 @@
       }
     },
     "TumblingWindow": {
-      "base": "<p>Contains a tumbling window, which is a repeating fixed-sized, non-overlapping, and contiguous time interval. This window is used in metric and aggregation computations.</p>",
+      "base": "<p>Contains a tumbling window, which is a repeating fixed-sized, non-overlapping, and contiguous time window. You use this window in metrics to aggregate data from properties and other assets.</p> <p>You can use <code>m</code>, <code>h</code>, <code>d</code>, and <code>w</code> when you specify an interval or offset. Note that <code>m</code> represents minutes, and <code>w</code> represents weeks. You can also use <code>s</code> to represent seconds in <code>offset</code>.</p> <p>The <code>interval</code> and <code>offset</code> parameters support the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO 8601 format</a>. For example, <code>PT5S</code> represents five seconds, <code>PT5M</code> represents five minutes, and <code>PT5H</code> represents five hours.</p>",
       "refs": {
         "MetricWindow$tumbling": "<p>The tumbling time interval window.</p>"
       }
diff --git a/models/apis/mediaconvert/2017-08-29/api-2.json b/models/apis/mediaconvert/2017-08-29/api-2.json
index 474a62bd581..384166e6c28 100644
--- a/models/apis/mediaconvert/2017-08-29/api-2.json
+++ b/models/apis/mediaconvert/2017-08-29/api-2.json
@@ -2571,6 +2571,13 @@
         "RAW"
       ]
     },
+    "CopyProtectionAction": {
+      "type": "string",
+      "enum": [
+        "PASSTHROUGH",
+        "STRIP"
+      ]
+    },
     "CreateJobRequest": {
       "type": "structure",
       "members": {
@@ -3831,6 +3838,19 @@
         }
       }
     },
+    "ExtendedDataServices": {
+      "type": "structure",
+      "members": {
+        "CopyProtectionAction": {
+          "shape": "CopyProtectionAction",
+          "locationName": "copyProtectionAction"
+        },
+        "VchipAction": {
+          "shape": "VchipAction",
+          "locationName": "vchipAction"
+        }
+      }
+    },
     "F4vMoovPlacement": {
       "type": "string",
       "enum": [
@@ -5770,6 +5790,10 @@
           "shape": "EsamSettings",
           "locationName": "esam"
         },
+        "ExtendedDataServices": {
+          "shape": "ExtendedDataServices",
+          "locationName": "extendedDataServices"
+        },
         "Inputs": {
           "shape": "__listOfInput",
           "locationName": "inputs"
@@ -5898,6 +5922,10 @@
           "shape": "EsamSettings",
           "locationName": "esam"
         },
+        "ExtendedDataServices": {
+          "shape": "ExtendedDataServices",
+          "locationName": "extendedDataServices"
+        },
         "Inputs": {
           "shape": "__listOfInputTemplate",
           "locationName": "inputs"
@@ -8853,6 +8881,13 @@
         "HARD"
       ]
     },
+    "VchipAction": {
+      "type": "string",
+      "enum": [
+        "PASSTHROUGH",
+        "STRIP"
+      ]
+    },
     "VideoCodec": {
       "type": "string",
       "enum": [
diff --git a/models/apis/mediaconvert/2017-08-29/docs-2.json b/models/apis/mediaconvert/2017-08-29/docs-2.json
index 10bc7f45b76..929ac97345a 100644
--- a/models/apis/mediaconvert/2017-08-29/docs-2.json
+++ b/models/apis/mediaconvert/2017-08-29/docs-2.json
@@ -747,6 +747,12 @@
         "ContainerSettings$Container": "Container for this output. Some containers require a container settings object. If not specified, the default object will be created."
       }
     },
+    "CopyProtectionAction": {
+      "base": "The action to take on copy and redistribution control XDS packets.  If you select PASSTHROUGH, packets will not be changed. If you select STRIP, any packets will be removed in output captions.",
+      "refs": {
+        "ExtendedDataServices$CopyProtectionAction": "The action to take on copy and redistribution control XDS packets.  If you select PASSTHROUGH, packets will not be changed. If you select STRIP, any packets will be removed in output captions."
+      }
+    },
     "CreateJobRequest": {
       "base": "Send your create job request with your job settings and IAM role. Optionally, include user metadata and the ARN for the queue.",
       "refs": {
@@ -1267,6 +1273,13 @@
       "refs": {
       }
     },
+    "ExtendedDataServices": {
+      "base": "Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h Content Advisory.",
+      "refs": {
+        "JobSettings$ExtendedDataServices": "Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h Content Advisory.",
+        "JobTemplateSettings$ExtendedDataServices": "Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h Content Advisory."
+      }
+    },
     "F4vMoovPlacement": {
       "base": "If set to PROGRESSIVE_DOWNLOAD, the MOOV atom is relocated to the beginning of the archive as required for progressive downloading. Otherwise it is placed normally at the end.",
       "refs": {
@@ -3177,6 +3190,12 @@
         "Vc3Settings$Telecine": "When you do frame rate conversion from 23.976 frames per second (fps) to 29.97 fps, and your output scan type is interlaced, you can optionally enable hard telecine (HARD) to create a smoother picture. When you keep the default value, None (NONE), MediaConvert does a standard frame rate conversion to 29.97 without doing anything with the field polarity to create a smoother picture."
       }
     },
+    "VchipAction": {
+      "base": "The action to take on content advisory XDS packets.  If you select PASSTHROUGH, packets will not be changed. If you select STRIP, any packets will be removed in output captions.",
+      "refs": {
+        "ExtendedDataServices$VchipAction": "The action to take on content advisory XDS packets.  If you select PASSTHROUGH, packets will not be changed. If you select STRIP, any packets will be removed in output captions."
+      }
+    },
     "VideoCodec": {
       "base": "Type of video codec",
       "refs": {
diff --git a/models/apis/proton/2020-07-20/docs-2.json b/models/apis/proton/2020-07-20/docs-2.json
index c9af0790518..bdf5a4e7a82 100644
--- a/models/apis/proton/2020-07-20/docs-2.json
+++ b/models/apis/proton/2020-07-20/docs-2.json
@@ -1,6 +1,6 @@
 {
   "version": "2.0",
-  "service": "<p>This is the AWS Proton Service API Reference. It provides descriptions, syntax and usage examples for each of the <a href=\"https://docs.aws.amazon.com/proton/latest/APIReference/API_Operations.html\">actions</a> and <a href=\"https://docs.aws.amazon.com/proton/latest/APIReference/API_Types.html\">data types</a> for the AWS Proton service.</p> <p>The documentation for each action shows the Query API request parameters and the XML response.</p> <p>Alternatively, you can use the AWS CLI to access an API. For more information, see the <a href=\"https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html\">AWS Command Line Interface User Guide</a>.</p> <p>The AWS Proton service is a two-pronged automation framework. Administrators create service templates to provide standardized infrastructure and deployment tooling for serverless and container based applications. Developers, in turn, select from the available service templates to automate their application or service deployments.</p> <p>Because administrators define the infrastructure and tooling that AWS Proton deploys and manages, they need permissions to use all of the listed API operations.</p> <p>When developers select a specific infrastructure and tooling set, AWS Proton deploys their applications. To monitor their applications that are running on AWS Proton, developers need permissions to the service <i>create</i>, <i>list</i>, <i>update</i> and <i>delete</i> API operations and the service instance <i>list</i> and <i>update</i> API operations.</p> <p>To learn more about AWS Proton administration, see the <a href=\"https://docs.aws.amazon.com/proton/latest/adminguide/Welcome.html\">AWS Proton Administrator Guide</a>.</p> <p>To learn more about deploying serverless and containerized applications on AWS Proton, see the <a href=\"https://docs.aws.amazon.com/proton/latest/userguide/Welcome.html\">AWS Proton User Guide</a>.</p> <p> <b>Ensuring Idempotency</b> </p> <p>When you make a mutating API request, the request typically returns a result before the asynchronous workflows of the operation are complete. Operations might also time out or encounter other server issues before they're complete, even if the request already returned a result. This might make it difficult to determine whether the request succeeded. Moreover, you might need to retry the request multiple times to ensure that the operation completes successfully. However, if the original request and the subsequent retries are successful, the operation occurs multiple times. This means that you might create more resources than you intended.</p> <p> <i>Idempotency</i> ensures that an API request action completes no more than one time. With an idempotent request, if the original request action completes successfully, any subsequent retries complete successfully without performing any further actions. However, the result might contain updated information, such as the current creation status.</p> <p>The following lists of APIs are grouped according to methods that ensure idempotency.</p> <p> <b>Idempotent create APIs with a client token</b> </p> <p>The API actions in this list support idempotency with the use of a <i>client token</i>. The corresponding AWS CLI commands also support idempotency using a client token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request using one of these actions, specify a client token in the request. We recommend that you <i>don't</i> reuse the same client token for other API requests. If you don’t provide a client token for these APIs, a default client token is automatically provided by SDKs.</p> <p>Given a request action that has succeeded:</p> <p>If you retry the request using the same client token and the same parameters, the retry succeeds without performing any further actions other than returning the original resource detail data in the response.</p> <p>If you retry the request using the same client token, but one or more of the parameters are different, the retry throws a <code>ValidationException</code> with an <code>IdempotentParameterMismatch</code> error.</p> <p>Client tokens expire eight hours after a request is made. If you retry the request with the expired token, a new resource is created.</p> <p>If the original resource is deleted and you retry the request, a new resource is created.</p> <p>Idempotent create APIs with a client token:</p> <ul> <li> <p>CreateEnvironmentTemplateVersion</p> </li> <li> <p>CreateServiceTemplateVersion</p> </li> <li> <p>CreateEnvironmentAccountConnection</p> </li> </ul> <p> <b>Idempotent delete APIs</b> </p> <p>Given a request action that has succeeded:</p> <p>When you retry the request with an API from this group and the resource was deleted, its metadata is returned in the response.</p> <p>If you retry and the resource doesn't exist, the response is empty.</p> <p>In both cases, the retry succeeds.</p> <p>Idempotent delete APIs:</p> <ul> <li> <p>DeleteEnvironmentTemplate</p> </li> <li> <p>DeleteEnvironmentTemplateVersion</p> </li> <li> <p>DeleteServiceTemplate</p> </li> <li> <p>DeleteServiceTemplateVersion</p> </li> <li> <p>DeleteEnvironmentAccountConnection</p> </li> </ul> <p> <b>Asynchronous idempotent delete APIs</b> </p> <p>Given a request action that has succeeded:</p> <p>If you retry the request with an API from this group, if the original request delete operation status is <code>DELETE_IN_PROGRESS</code>, the retry returns the resource detail data in the response without performing any further actions.</p> <p>If the original request delete operation is complete, a retry returns an empty response.</p> <p>Asynchronous idempotent delete APIs:</p> <ul> <li> <p>DeleteEnvironment</p> </li> <li> <p>DeleteService</p> </li> </ul>",
+  "service": "<p>This is the AWS Proton Service API Reference. It provides descriptions, syntax and usage examples for each of the <a href=\"https://docs.aws.amazon.com/proton/latest/APIReference/API_Operations.html\">actions</a> and <a href=\"https://docs.aws.amazon.com/proton/latest/APIReference/API_Types.html\">data types</a> for the AWS Proton service.</p> <p>The documentation for each action shows the Query API request parameters and the XML response.</p> <p>Alternatively, you can use the AWS CLI to access an API. For more information, see the <a href=\"https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html\">AWS Command Line Interface User Guide</a>.</p> <p>The AWS Proton service is a two-pronged automation framework. Administrators create service templates to provide standardized infrastructure and deployment tooling for serverless and container based applications. Developers, in turn, select from the available service templates to automate their application or service deployments.</p> <p>Because administrators define the infrastructure and tooling that AWS Proton deploys and manages, they need permissions to use all of the listed API operations.</p> <p>When developers select a specific infrastructure and tooling set, AWS Proton deploys their applications. To monitor their applications that are running on AWS Proton, developers need permissions to the service <i>create</i>, <i>list</i>, <i>update</i> and <i>delete</i> API operations and the service instance <i>list</i> and <i>update</i> API operations.</p> <p>To learn more about AWS Proton administration, see the <a href=\"https://docs.aws.amazon.com/proton/latest/adminguide/Welcome.html\">AWS Proton Administrator Guide</a>.</p> <p>To learn more about deploying serverless and containerized applications on AWS Proton, see the <a href=\"https://docs.aws.amazon.com/proton/latest/userguide/Welcome.html\">AWS Proton User Guide</a>.</p> <p> <b>Ensuring Idempotency</b> </p> <p>When you make a mutating API request, the request typically returns a result before the asynchronous workflows of the operation are complete. Operations might also time out or encounter other server issues before they're complete, even if the request already returned a result. This might make it difficult to determine whether the request succeeded. Moreover, you might need to retry the request multiple times to ensure that the operation completes successfully. However, if the original request and the subsequent retries are successful, the operation occurs multiple times. This means that you might create more resources than you intended.</p> <p> <i>Idempotency</i> ensures that an API request action completes no more than one time. With an idempotent request, if the original request action completes successfully, any subsequent retries complete successfully without performing any further actions. However, the result might contain updated information, such as the current creation status.</p> <p>The following lists of APIs are grouped according to methods that ensure idempotency.</p> <p> <b>Idempotent create APIs with a client token</b> </p> <p>The API actions in this list support idempotency with the use of a <i>client token</i>. The corresponding AWS CLI commands also support idempotency using a client token. A client token is a unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request using one of these actions, specify a client token in the request. We recommend that you <i>don't</i> reuse the same client token for other API requests. If you don’t provide a client token for these APIs, a default client token is automatically provided by SDKs.</p> <p>Given a request action that has succeeded:</p> <p>If you retry the request using the same client token and the same parameters, the retry succeeds without performing any further actions other than returning the original resource detail data in the response.</p> <p>If you retry the request using the same client token, but one or more of the parameters are different, the retry throws a <code>ValidationException</code> with an <code>IdempotentParameterMismatch</code> error.</p> <p>Client tokens expire eight hours after a request is made. If you retry the request with the expired token, a new resource is created.</p> <p>If the original resource is deleted and you retry the request, a new resource is created.</p> <p>Idempotent create APIs with a client token:</p> <ul> <li> <p>CreateEnvironmentTemplateVersion</p> </li> <li> <p>CreateServiceTemplateVersion</p> </li> <li> <p>CreateEnvironmentAccountConnection</p> </li> </ul> <p> <b>Idempotent create APIs</b> </p> <p>Given a request action that has succeeded:</p> <p>If you retry the request with an API from this group, and the original resource <i>hasn't</i> been modified, the retry succeeds without performing any further actions other than returning the original resource detail data in the response.</p> <p>If the original resource has been modified, the retry throws a <code>ConflictException</code>.</p> <p>If you retry with different input parameters, the retry throws a <code>ValidationException</code> with an <code>IdempotentParameterMismatch</code> error.</p> <p>Idempotent create APIs:</p> <ul> <li> <p>CreateEnvironmentTemplate</p> </li> <li> <p>CreateServiceTemplate</p> </li> <li> <p>CreateEnvironment</p> </li> <li> <p>CreateService</p> </li> </ul> <p> <b>Idempotent delete APIs</b> </p> <p>Given a request action that has succeeded:</p> <p>When you retry the request with an API from this group and the resource was deleted, its metadata is returned in the response.</p> <p>If you retry and the resource doesn't exist, the response is empty.</p> <p>In both cases, the retry succeeds.</p> <p>Idempotent delete APIs:</p> <ul> <li> <p>DeleteEnvironmentTemplate</p> </li> <li> <p>DeleteEnvironmentTemplateVersion</p> </li> <li> <p>DeleteServiceTemplate</p> </li> <li> <p>DeleteServiceTemplateVersion</p> </li> <li> <p>DeleteEnvironmentAccountConnection</p> </li> </ul> <p> <b>Asynchronous idempotent delete APIs</b> </p> <p>Given a request action that has succeeded:</p> <p>If you retry the request with an API from this group, if the original request delete operation status is <code>DELETE_IN_PROGRESS</code>, the retry returns the resource detail data in the response without performing any further actions.</p> <p>If the original request delete operation is complete, a retry returns an empty response.</p> <p>Asynchronous idempotent delete APIs:</p> <ul> <li> <p>DeleteEnvironment</p> </li> <li> <p>DeleteService</p> </li> </ul>",
   "operations": {
     "AcceptEnvironmentAccountConnection": "<p>In a management account, an environment account connection request is accepted. When the environment account connection request is accepted, AWS Proton can use the associated IAM role to provision environment infrastructure resources in the associated environment account.</p> <p>For more information, see <a href=\"https://docs.aws.amazon.com/proton/latest/adminguide/ag-env-account-connections.html\">Environment account connections</a> in the <i>AWS Proton Administrator guide</i>.</p>",
     "CancelEnvironmentDeployment": "<p>Attempts to cancel an environment deployment on an <a>UpdateEnvironment</a> action, if the deployment is <code>IN_PROGRESS</code>. For more information, see <a href=\"https://docs.aws.amazon.com/proton/latest/adminguide/ag-env-update.html\">Update an environment</a> in the <i>AWS Proton Administrator guide</i>.</p> <p>The following list includes potential cancellation scenarios.</p> <ul> <li> <p>If the cancellation attempt succeeds, the resulting deployment state is <code>CANCELLED</code>.</p> </li> <li> <p>If the cancellation attempt fails, the resulting deployment state is <code>FAILED</code>.</p> </li> <li> <p>If the current <a>UpdateEnvironment</a> action succeeds before the cancellation attempt starts, the resulting deployment state is <code>SUCCEEDED</code> and the cancellation attempt has no effect.</p> </li> </ul>",
diff --git a/models/apis/redshift/2012-12-01/api-2.json b/models/apis/redshift/2012-12-01/api-2.json
index 06e72dd9480..15b90eb4161 100644
--- a/models/apis/redshift/2012-12-01/api-2.json
+++ b/models/apis/redshift/2012-12-01/api-2.json
@@ -49,6 +49,22 @@
         {"shape":"UnauthorizedPartnerIntegrationFault"}
       ]
     },
+    "AssociateDataShareConsumer":{
+      "name":"AssociateDataShareConsumer",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AssociateDataShareConsumerMessage"},
+      "output":{
+        "shape":"DataShare",
+        "resultWrapper":"AssociateDataShareConsumerResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"},
+        {"shape":"InvalidNamespaceFault"}
+      ]
+    },
     "AuthorizeClusterSecurityGroupIngress":{
       "name":"AuthorizeClusterSecurityGroupIngress",
       "http":{
@@ -67,6 +83,21 @@
         {"shape":"AuthorizationQuotaExceededFault"}
       ]
     },
+    "AuthorizeDataShare":{
+      "name":"AuthorizeDataShare",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"AuthorizeDataShareMessage"},
+      "output":{
+        "shape":"DataShare",
+        "resultWrapper":"AuthorizeDataShareResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"}
+      ]
+    },
     "AuthorizeEndpointAccess":{
       "name":"AuthorizeEndpointAccess",
       "http":{
@@ -487,6 +518,21 @@
         {"shape":"UnsupportedOperationFault"}
       ]
     },
+    "DeauthorizeDataShare":{
+      "name":"DeauthorizeDataShare",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DeauthorizeDataShareMessage"},
+      "output":{
+        "shape":"DataShare",
+        "resultWrapper":"DeauthorizeDataShareResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"}
+      ]
+    },
     "DeleteAuthenticationProfile":{
       "name":"DeleteAuthenticationProfile",
       "http":{
@@ -875,6 +921,51 @@
         {"shape":"InvalidTagFault"}
       ]
     },
+    "DescribeDataShares":{
+      "name":"DescribeDataShares",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeDataSharesMessage"},
+      "output":{
+        "shape":"DescribeDataSharesResult",
+        "resultWrapper":"DescribeDataSharesResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"}
+      ]
+    },
+    "DescribeDataSharesForConsumer":{
+      "name":"DescribeDataSharesForConsumer",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeDataSharesForConsumerMessage"},
+      "output":{
+        "shape":"DescribeDataSharesForConsumerResult",
+        "resultWrapper":"DescribeDataSharesForConsumerResult"
+      },
+      "errors":[
+        {"shape":"InvalidNamespaceFault"}
+      ]
+    },
+    "DescribeDataSharesForProducer":{
+      "name":"DescribeDataSharesForProducer",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DescribeDataSharesForProducerMessage"},
+      "output":{
+        "shape":"DescribeDataSharesForProducerResult",
+        "resultWrapper":"DescribeDataSharesForProducerResult"
+      },
+      "errors":[
+        {"shape":"InvalidNamespaceFault"}
+      ]
+    },
     "DescribeDefaultClusterParameters":{
       "name":"DescribeDefaultClusterParameters",
       "http":{
@@ -1239,6 +1330,22 @@
         {"shape":"UnauthorizedOperation"}
       ]
     },
+    "DisassociateDataShareConsumer":{
+      "name":"DisassociateDataShareConsumer",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"DisassociateDataShareConsumerMessage"},
+      "output":{
+        "shape":"DataShare",
+        "resultWrapper":"DisassociateDataShareConsumerResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"},
+        {"shape":"InvalidNamespaceFault"}
+      ]
+    },
     "EnableLogging":{
       "name":"EnableLogging",
       "http":{
@@ -1667,6 +1774,21 @@
         {"shape":"ClusterNotFoundFault"}
       ]
     },
+    "RejectDataShare":{
+      "name":"RejectDataShare",
+      "http":{
+        "method":"POST",
+        "requestUri":"/"
+      },
+      "input":{"shape":"RejectDataShareMessage"},
+      "output":{
+        "shape":"DataShare",
+        "resultWrapper":"RejectDataShareResult"
+      },
+      "errors":[
+        {"shape":"InvalidDataShareFault"}
+      ]
+    },
     "ResetClusterParameterGroup":{
       "name":"ResetClusterParameterGroup",
       "http":{
@@ -1971,6 +2093,15 @@
         "applying"
       ]
     },
+    "AssociateDataShareConsumerMessage":{
+      "type":"structure",
+      "required":["DataShareArn"],
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "AssociateEntireAccount":{"shape":"BooleanOptional"},
+        "ConsumerArn":{"shape":"String"}
+      }
+    },
     "AssociatedClusterList":{
       "type":"list",
       "member":{
@@ -2110,6 +2241,17 @@
         "ClusterSecurityGroup":{"shape":"ClusterSecurityGroup"}
       }
     },
+    "AuthorizeDataShareMessage":{
+      "type":"structure",
+      "required":[
+        "DataShareArn",
+        "ConsumerIdentifier"
+      ],
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "ConsumerIdentifier":{"shape":"String"}
+      }
+    },
     "AuthorizeEndpointAccessMessage":{
       "type":"structure",
       "required":["Account"],
@@ -3052,6 +3194,60 @@
         "TotalProvisionedStorageInMegaBytes":{"shape":"Double"}
       }
     },
+    "DataShare":{
+      "type":"structure",
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "ProducerArn":{"shape":"String"},
+        "AllowPubliclyAccessibleConsumers":{"shape":"Boolean"},
+        "DataShareAssociations":{"shape":"DataShareAssociationList"}
+      }
+    },
+    "DataShareAssociation":{
+      "type":"structure",
+      "members":{
+        "ConsumerIdentifier":{"shape":"String"},
+        "Status":{"shape":"DataShareStatus"},
+        "CreatedDate":{"shape":"TStamp"},
+        "StatusChangeDate":{"shape":"TStamp"}
+      }
+    },
+    "DataShareAssociationList":{
+      "type":"list",
+      "member":{"shape":"DataShareAssociation"}
+    },
+    "DataShareList":{
+      "type":"list",
+      "member":{"shape":"DataShare"}
+    },
+    "DataShareStatus":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "PENDING_AUTHORIZATION",
+        "AUTHORIZED",
+        "DEAUTHORIZED",
+        "REJECTED",
+        "AVAILABLE"
+      ]
+    },
+    "DataShareStatusForConsumer":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "AVAILABLE"
+      ]
+    },
+    "DataShareStatusForProducer":{
+      "type":"string",
+      "enum":[
+        "ACTIVE",
+        "AUTHORIZED",
+        "PENDING_AUTHORIZATION",
+        "DEAUTHORIZED",
+        "REJECTED"
+      ]
+    },
     "DataTransferProgress":{
       "type":"structure",
       "members":{
@@ -3070,6 +3266,17 @@
         "locationName":"DbGroup"
       }
     },
+    "DeauthorizeDataShareMessage":{
+      "type":"structure",
+      "required":[
+        "DataShareArn",
+        "ConsumerIdentifier"
+      ],
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "ConsumerIdentifier":{"shape":"String"}
+      }
+    },
     "DefaultClusterParameters":{
       "type":"structure",
       "members":{
@@ -3364,6 +3571,53 @@
         "TagValues":{"shape":"TagValueList"}
       }
     },
+    "DescribeDataSharesForConsumerMessage":{
+      "type":"structure",
+      "members":{
+        "ConsumerArn":{"shape":"String"},
+        "Status":{"shape":"DataShareStatusForConsumer"},
+        "MaxRecords":{"shape":"IntegerOptional"},
+        "Marker":{"shape":"String"}
+      }
+    },
+    "DescribeDataSharesForConsumerResult":{
+      "type":"structure",
+      "members":{
+        "DataShares":{"shape":"DataShareList"},
+        "Marker":{"shape":"String"}
+      }
+    },
+    "DescribeDataSharesForProducerMessage":{
+      "type":"structure",
+      "members":{
+        "ProducerArn":{"shape":"String"},
+        "Status":{"shape":"DataShareStatusForProducer"},
+        "MaxRecords":{"shape":"IntegerOptional"},
+        "Marker":{"shape":"String"}
+      }
+    },
+    "DescribeDataSharesForProducerResult":{
+      "type":"structure",
+      "members":{
+        "DataShares":{"shape":"DataShareList"},
+        "Marker":{"shape":"String"}
+      }
+    },
+    "DescribeDataSharesMessage":{
+      "type":"structure",
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "MaxRecords":{"shape":"IntegerOptional"},
+        "Marker":{"shape":"String"}
+      }
+    },
+    "DescribeDataSharesResult":{
+      "type":"structure",
+      "members":{
+        "DataShares":{"shape":"DataShareList"},
+        "Marker":{"shape":"String"}
+      }
+    },
     "DescribeDefaultClusterParametersMessage":{
       "type":"structure",
       "required":["ParameterGroupFamily"],
@@ -3615,6 +3869,15 @@
         "Cluster":{"shape":"Cluster"}
       }
     },
+    "DisassociateDataShareConsumerMessage":{
+      "type":"structure",
+      "required":["DataShareArn"],
+      "members":{
+        "DataShareArn":{"shape":"String"},
+        "DisassociateEntireAccount":{"shape":"BooleanOptional"},
+        "ConsumerArn":{"shape":"String"}
+      }
+    },
     "Double":{"type":"double"},
     "DoubleOptional":{"type":"double"},
     "EC2SecurityGroup":{
@@ -4271,6 +4534,17 @@
       },
       "exception":true
     },
+    "InvalidDataShareFault":{
+      "type":"structure",
+      "members":{
+      },
+      "error":{
+        "code":"InvalidDataShareFault",
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
     "InvalidElasticIpFault":{
       "type":"structure",
       "members":{
@@ -4315,6 +4589,17 @@
       },
       "exception":true
     },
+    "InvalidNamespaceFault":{
+      "type":"structure",
+      "members":{
+      },
+      "error":{
+        "code":"InvalidNamespaceFault",
+        "httpStatusCode":400,
+        "senderFault":true
+      },
+      "exception":true
+    },
     "InvalidReservedNodeStateFault":{
       "type":"structure",
       "members":{
@@ -5079,6 +5364,13 @@
         "locationName":"RecurringCharge"
       }
     },
+    "RejectDataShareMessage":{
+      "type":"structure",
+      "required":["DataShareArn"],
+      "members":{
+        "DataShareArn":{"shape":"String"}
+      }
+    },
     "ReservedNode":{
       "type":"structure",
       "members":{
diff --git a/models/apis/redshift/2012-12-01/docs-2.json b/models/apis/redshift/2012-12-01/docs-2.json
index 4904f5c957a..f0b22d349af 100644
--- a/models/apis/redshift/2012-12-01/docs-2.json
+++ b/models/apis/redshift/2012-12-01/docs-2.json
@@ -4,9 +4,11 @@
   "operations": {
     "AcceptReservedNodeExchange": "<p>Exchanges a DC1 Reserved Node for a DC2 Reserved Node with no changes to the configuration (term, payment type, or number of nodes) and no additional costs. </p>",
     "AddPartner": "<p>Adds a partner integration to a cluster. This operation authorizes a partner to push status updates for the specified database. To complete the integration, you also set up the integration on the partner website.</p>",
-    "AuthorizeClusterSecurityGroupIngress": "<p>Adds an inbound (ingress) rule to an Amazon Redshift security group. Depending on whether the application accessing your cluster is running on the Internet or an Amazon EC2 instance, you can authorize inbound access to either a Classless Interdomain Routing (CIDR)/Internet Protocol (IP) range or to an Amazon EC2 security group. You can add as many as 20 ingress rules to an Amazon Redshift security group.</p> <p>If you authorize access to an Amazon EC2 security group, specify <i>EC2SecurityGroupName</i> and <i>EC2SecurityGroupOwnerId</i>. The Amazon EC2 security group and Amazon Redshift cluster must be in the same Region. </p> <p>If you authorize access to a CIDR/IP address range, specify <i>CIDRIP</i>. For an overview of CIDR blocks, see the Wikipedia article on <a href=\"http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\">Classless Inter-Domain Routing</a>. </p> <p>You must also associate the security group with a cluster so that clients running on these IP addresses or the EC2 instance are authorized to connect to the cluster. For information about managing security groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html\">Working with Security Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "AssociateDataShareConsumer": "<p>From a datashare consumer account, associates a datashare with the account (AssociateEntireAccount) or the specified namespace (ConsumerArn). If you make this association, the consumer can consume the datashare.</p>",
+    "AuthorizeClusterSecurityGroupIngress": "<p>Adds an inbound (ingress) rule to an Amazon Redshift security group. Depending on whether the application accessing your cluster is running on the Internet or an Amazon EC2 instance, you can authorize inbound access to either a Classless Interdomain Routing (CIDR)/Internet Protocol (IP) range or to an Amazon EC2 security group. You can add as many as 20 ingress rules to an Amazon Redshift security group.</p> <p>If you authorize access to an Amazon EC2 security group, specify <i>EC2SecurityGroupName</i> and <i>EC2SecurityGroupOwnerId</i>. The Amazon EC2 security group and Amazon Redshift cluster must be in the same Amazon Web Services Region. </p> <p>If you authorize access to a CIDR/IP address range, specify <i>CIDRIP</i>. For an overview of CIDR blocks, see the Wikipedia article on <a href=\"http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing\">Classless Inter-Domain Routing</a>. </p> <p>You must also associate the security group with a cluster so that clients running on these IP addresses or the EC2 instance are authorized to connect to the cluster. For information about managing security groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html\">Working with Security Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "AuthorizeDataShare": "<p>From a data producer account, authorizes the sharing of a datashare with one or more consumer accounts. To authorize a datashare for a data consumer, the producer account must have the correct access privileges.</p>",
     "AuthorizeEndpointAccess": "<p>Grants access to a cluster.</p>",
-    "AuthorizeSnapshotAccess": "<p>Authorizes the specified account to restore the specified snapshot.</p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "AuthorizeSnapshotAccess": "<p>Authorizes the specified Amazon Web Services account to restore the specified snapshot.</p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "BatchDeleteClusterSnapshots": "<p>Deletes a set of cluster snapshots.</p>",
     "BatchModifyClusterSnapshots": "<p>Modifies the settings for a set of cluster snapshots.</p>",
     "CancelResize": "<p>Cancels a resize operation for a cluster.</p>",
@@ -18,7 +20,7 @@
     "CreateClusterSnapshot": "<p>Creates a manual snapshot of the specified cluster. The cluster must be in the <code>available</code> state. </p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "CreateClusterSubnetGroup": "<p>Creates a new Amazon Redshift subnet group. You must provide a list of one or more subnets in your existing Amazon Virtual Private Cloud (Amazon VPC) when creating Amazon Redshift subnet group.</p> <p> For information about subnet groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-cluster-subnet-groups.html\">Amazon Redshift Cluster Subnet Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "CreateEndpointAccess": "<p>Creates a Redshift-managed VPC endpoint.</p>",
-    "CreateEventSubscription": "<p>Creates an Amazon Redshift event notification subscription. This action requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by either the Amazon Redshift console, the Amazon SNS console, or the Amazon SNS API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.</p> <p>You can specify the source type, and lists of Amazon Redshift source IDs, event categories, and event severities. Notifications will be sent for all events you want that match those criteria. For example, you can specify source type = cluster, source ID = my-cluster-1 and mycluster2, event categories = Availability, Backup, and severity = ERROR. The subscription will only send notifications for those ERROR events in the Availability and Backup categories for the specified clusters.</p> <p>If you specify both the source type and source IDs, such as source type = cluster and source identifier = my-cluster-1, notifications will be sent for all the cluster events for my-cluster-1. If you specify a source type but do not specify a source identifier, you will receive notice of the events for the objects of that type in your account. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all Amazon Redshift sources belonging to your account. You must specify a source type if you specify a source ID.</p>",
+    "CreateEventSubscription": "<p>Creates an Amazon Redshift event notification subscription. This action requires an ARN (Amazon Resource Name) of an Amazon SNS topic created by either the Amazon Redshift console, the Amazon SNS console, or the Amazon SNS API. To obtain an ARN with Amazon SNS, you must create a topic in Amazon SNS and subscribe to the topic. The ARN is displayed in the SNS console.</p> <p>You can specify the source type, and lists of Amazon Redshift source IDs, event categories, and event severities. Notifications will be sent for all events you want that match those criteria. For example, you can specify source type = cluster, source ID = my-cluster-1 and mycluster2, event categories = Availability, Backup, and severity = ERROR. The subscription will only send notifications for those ERROR events in the Availability and Backup categories for the specified clusters.</p> <p>If you specify both the source type and source IDs, such as source type = cluster and source identifier = my-cluster-1, notifications will be sent for all the cluster events for my-cluster-1. If you specify a source type but do not specify a source identifier, you will receive notice of the events for the objects of that type in your Amazon Web Services account. If you do not specify either the SourceType nor the SourceIdentifier, you will be notified of events generated from all Amazon Redshift sources belonging to your Amazon Web Services account. You must specify a source type if you specify a source ID.</p>",
     "CreateHsmClientCertificate": "<p>Creates an HSM client certificate that an Amazon Redshift cluster will use to connect to the client's HSM in order to store and retrieve the keys used to encrypt the cluster databases.</p> <p>The command returns a public key, which you must store in the HSM. In addition to creating the HSM certificate, you must create an Amazon Redshift HSM configuration that provides a cluster the information needed to store and use encryption keys in the HSM. For more information, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html#working-with-HSM\">Hardware Security Modules</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "CreateHsmConfiguration": "<p>Creates an HSM configuration that contains the information required by an Amazon Redshift cluster to store and use database encryption keys in a Hardware Security Module (HSM). After creating the HSM configuration, you can specify it as a parameter when creating a cluster. The cluster will then store its encryption keys in the HSM.</p> <p>In addition to creating an HSM configuration, you must also create an HSM client certificate. For more information, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-HSM.html\">Hardware Security Modules</a> in the Amazon Redshift Cluster Management Guide.</p>",
     "CreateScheduledAction": "<p>Creates a scheduled action. A scheduled action contains a schedule and an Amazon Redshift API action. For example, you can create a schedule of when to run the <code>ResizeCluster</code> API operation. </p>",
@@ -26,6 +28,7 @@
     "CreateSnapshotSchedule": "<p>Create a snapshot schedule that can be associated to a cluster and which overrides the default system backup schedule. </p>",
     "CreateTags": "<p>Adds tags to a cluster.</p> <p>A resource can have up to 50 tags. If you try to create more than 50 tags for a resource, you will receive an error and the attempt will fail.</p> <p>If you specify a key that already exists for the resource, the value for that key will be updated with the new value.</p>",
     "CreateUsageLimit": "<p>Creates a usage limit for a specified Amazon Redshift feature on a cluster. The usage limit is identified by the returned usage limit identifier.</p>",
+    "DeauthorizeDataShare": "<p>From the producer account, removes authorization from the specified datashare. </p>",
     "DeleteAuthenticationProfile": "<p>Deletes an authentication profile.</p>",
     "DeleteCluster": "<p>Deletes a previously provisioned cluster without its final snapshot being created. A successful response from the web service indicates that the request was received correctly. Use <a>DescribeClusters</a> to monitor the status of the deletion. The delete operation cannot be canceled or reverted once submitted. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p> <p>If you want to shut down the cluster and retain it for future use, set <i>SkipFinalClusterSnapshot</i> to <code>false</code> and specify a name for <i>FinalClusterSnapshotIdentifier</i>. You can later restore this snapshot to resume using the cluster. If a final cluster snapshot is requested, the status of the cluster will be \"final-snapshot\" while the snapshot is being taken, then it's \"deleting\" once Amazon Redshift begins deleting the cluster. </p> <p> For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DeleteClusterParameterGroup": "<p>Deletes a specified Amazon Redshift parameter group.</p> <note> <p>You cannot delete a parameter group if it is associated with a cluster.</p> </note>",
@@ -48,28 +51,31 @@
     "DescribeClusterParameterGroups": "<p>Returns a list of Amazon Redshift parameter groups, including parameter groups you created and the default parameter group. For each parameter group, the response includes the parameter group name, description, and parameter group family name. You can optionally specify a name to retrieve the description of a specific parameter group.</p> <p> For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all parameter groups that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all parameter groups that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, parameter groups are returned regardless of whether they have tag keys or values associated with them.</p>",
     "DescribeClusterParameters": "<p>Returns a detailed list of parameters contained within the specified Amazon Redshift parameter group. For each parameter the response includes information such as parameter name, description, data type, value, whether the parameter value is modifiable, and so on.</p> <p>You can specify <i>source</i> filter to retrieve parameters of only specific type. For example, to retrieve parameters that were modified by a user action such as from <a>ModifyClusterParameterGroup</a>, you can specify <i>source</i> equal to <i>user</i>.</p> <p> For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DescribeClusterSecurityGroups": "<p>Returns information about Amazon Redshift security groups. If the name of a security group is specified, the response will contain only information about only that security group.</p> <p> For information about managing security groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html\">Amazon Redshift Cluster Security Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all security groups that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all security groups that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, security groups are returned regardless of whether they have tag keys or values associated with them.</p>",
-    "DescribeClusterSnapshots": "<p>Returns one or more snapshot objects, which contain metadata about your cluster snapshots. By default, this operation returns information about all snapshots of all clusters that are owned by your account. No information is returned for snapshots owned by inactive accounts.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all snapshots that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all snapshots that have any combination of those values are returned. Only snapshots that you own are returned in the response; shared snapshots are not returned with the tag key and tag value request parameters.</p> <p>If both tag keys and values are omitted from the request, snapshots are returned regardless of whether they have tag keys or values associated with them.</p>",
-    "DescribeClusterSubnetGroups": "<p>Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By default, this operation returns information about all cluster subnet groups that are defined in your account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all subnet groups that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they have tag keys or values associated with them.</p>",
+    "DescribeClusterSnapshots": "<p>Returns one or more snapshot objects, which contain metadata about your cluster snapshots. By default, this operation returns information about all snapshots of all clusters that are owned by your Amazon Web Services account. No information is returned for snapshots owned by inactive Amazon Web Services accounts.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all snapshots that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all snapshots that have any combination of those values are returned. Only snapshots that you own are returned in the response; shared snapshots are not returned with the tag key and tag value request parameters.</p> <p>If both tag keys and values are omitted from the request, snapshots are returned regardless of whether they have tag keys or values associated with them.</p>",
+    "DescribeClusterSubnetGroups": "<p>Returns one or more cluster subnet group objects, which contain metadata about your cluster subnet groups. By default, this operation returns information about all cluster subnet groups that are defined in your Amazon Web Services account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all subnet groups that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all subnet groups that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, subnet groups are returned regardless of whether they have tag keys or values associated with them.</p>",
     "DescribeClusterTracks": "<p>Returns a list of all the available maintenance tracks.</p>",
     "DescribeClusterVersions": "<p>Returns descriptions of the available Amazon Redshift cluster versions. You can call this operation even before creating any clusters to learn more about the Amazon Redshift versions. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DescribeClusters": "<p>Returns properties of provisioned clusters including general cluster properties, cluster database properties, maintenance and backup properties, and security and access properties. This operation supports pagination. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all clusters that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all clusters that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, clusters are returned regardless of whether they have tag keys or values associated with them.</p>",
+    "DescribeDataShares": "<p>Shows the status of any inbound or outbound datashares available in the specified account.</p>",
+    "DescribeDataSharesForConsumer": "<p>Returns a list of datashares where the account identifier being called is a consumer account identifier.</p>",
+    "DescribeDataSharesForProducer": "<p>Returns a list of datashares when the account identifier being called is a producer account identifier.</p>",
     "DescribeDefaultClusterParameters": "<p>Returns a list of parameter settings for the specified parameter group family.</p> <p> For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DescribeEndpointAccess": "<p>Describes a Redshift-managed VPC endpoint.</p>",
     "DescribeEndpointAuthorization": "<p>Describes an endpoint authorization.</p>",
     "DescribeEventCategories": "<p>Displays a list of event categories for all event source types, or for a specified source type. For a list of the event categories and source types, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-event-notifications.html\">Amazon Redshift Event Notifications</a>.</p>",
     "DescribeEventSubscriptions": "<p>Lists descriptions of all the Amazon Redshift event notification subscriptions for a customer account. If you specify a subscription name, lists the description for that subscription.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all event notification subscriptions that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all subscriptions that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, subscriptions are returned regardless of whether they have tag keys or values associated with them.</p>",
     "DescribeEvents": "<p>Returns events related to clusters, security groups, snapshots, and parameter groups for the past 14 days. Events specific to a particular cluster, security group, snapshot or parameter group can be obtained by providing the name as a parameter. By default, the past hour of events are returned.</p>",
-    "DescribeHsmClientCertificates": "<p>Returns information about the specified HSM client certificate. If no certificate ID is specified, returns information about all the HSM certificates owned by your account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM client certificates that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all HSM client certificates that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, HSM client certificates are returned regardless of whether they have tag keys or values associated with them.</p>",
-    "DescribeHsmConfigurations": "<p>Returns information about the specified Amazon Redshift HSM configuration. If no configuration ID is specified, returns information about all the HSM configurations owned by your account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM connections that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all HSM connections that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, HSM connections are returned regardless of whether they have tag keys or values associated with them.</p>",
+    "DescribeHsmClientCertificates": "<p>Returns information about the specified HSM client certificate. If no certificate ID is specified, returns information about all the HSM certificates owned by your Amazon Web Services account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM client certificates that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all HSM client certificates that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, HSM client certificates are returned regardless of whether they have tag keys or values associated with them.</p>",
+    "DescribeHsmConfigurations": "<p>Returns information about the specified Amazon Redshift HSM configuration. If no configuration ID is specified, returns information about all the HSM configurations owned by your Amazon Web Services account.</p> <p>If you specify both tag keys and tag values in the same request, Amazon Redshift returns all HSM connections that match any combination of the specified keys and values. For example, if you have <code>owner</code> and <code>environment</code> for tag keys, and <code>admin</code> and <code>test</code> for tag values, all HSM connections that have any combination of those values are returned.</p> <p>If both tag keys and values are omitted from the request, HSM connections are returned regardless of whether they have tag keys or values associated with them.</p>",
     "DescribeLoggingStatus": "<p>Describes whether information, such as queries and connection attempts, is being logged for the specified Amazon Redshift cluster.</p>",
     "DescribeNodeConfigurationOptions": "<p>Returns properties of possible node configurations such as node type, number of nodes, and disk usage for the specified action type.</p>",
-    "DescribeOrderableClusterOptions": "<p>Returns a list of orderable cluster options. Before you create a new cluster you can use this operation to find what options are available, such as the EC2 Availability Zones (AZ) in the specific Region that you can specify, and the node types you can request. The node types differ by available storage, memory, CPU and price. With the cost involved you might want to obtain a list of cluster options in the specific region and specify values when creating a cluster. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "DescribeOrderableClusterOptions": "<p>Returns a list of orderable cluster options. Before you create a new cluster you can use this operation to find what options are available, such as the EC2 Availability Zones (AZ) in the specific Amazon Web Services Region that you can specify, and the node types you can request. The node types differ by available storage, memory, CPU and price. With the cost involved you might want to obtain a list of cluster options in the specific region and specify values when creating a cluster. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DescribePartners": "<p>Returns information about the partner integrations defined for a cluster.</p>",
     "DescribeReservedNodeOfferings": "<p>Returns a list of the available reserved node offerings by Amazon Redshift with their descriptions including the node type, the fixed and recurring costs of reserving the node and duration the node will be reserved for you. These descriptions help you determine which reserve node offering you want to purchase. You then use the unique offering ID in you call to <a>PurchaseReservedNodeOffering</a> to reserve one or more nodes for your Amazon Redshift cluster. </p> <p> For more information about reserved node offerings, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/purchase-reserved-node-instance.html\">Purchasing Reserved Nodes</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "DescribeReservedNodes": "<p>Returns the descriptions of the reserved nodes.</p>",
     "DescribeResize": "<p>Returns information about the last resize operation for the specified cluster. If no resize operation has ever been initiated for the specified cluster, a <code>HTTP 404</code> error is returned. If a resize operation was initiated and completed, the status of the resize remains as <code>SUCCEEDED</code> until the next resize. </p> <p>A resize operation can be requested using <a>ModifyCluster</a> and specifying a different number or type of nodes for the cluster. </p>",
     "DescribeScheduledActions": "<p>Describes properties of scheduled actions. </p>",
-    "DescribeSnapshotCopyGrants": "<p>Returns a list of snapshot copy grants owned by the account in the destination region.</p> <p> For more information about managing snapshot copy grants, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html\">Amazon Redshift Database Encryption</a> in the <i>Amazon Redshift Cluster Management Guide</i>. </p>",
+    "DescribeSnapshotCopyGrants": "<p>Returns a list of snapshot copy grants owned by the Amazon Web Services account in the destination region.</p> <p> For more information about managing snapshot copy grants, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html\">Amazon Redshift Database Encryption</a> in the <i>Amazon Redshift Cluster Management Guide</i>. </p>",
     "DescribeSnapshotSchedules": "<p>Returns a list of snapshot schedules. </p>",
     "DescribeStorage": "<p>Returns account level backups storage size and provisional storage.</p>",
     "DescribeTableRestoreStatus": "<p>Lists the status of one or more table restore requests made using the <a>RestoreTableFromClusterSnapshot</a> API action. If you don't specify a value for the <code>TableRestoreRequestId</code> parameter, then <code>DescribeTableRestoreStatus</code> returns the status of all table restore requests ordered by the date and time of the request in ascending order. Otherwise <code>DescribeTableRestoreStatus</code> returns the status of the table specified by <code>TableRestoreRequestId</code>.</p>",
@@ -77,6 +83,7 @@
     "DescribeUsageLimits": "<p>Shows usage limits on a cluster. Results are filtered based on the combination of input usage limit identifier, cluster identifier, and feature type parameters:</p> <ul> <li> <p>If usage limit identifier, cluster identifier, and feature type are not provided, then all usage limit objects for the current account in the current region are returned.</p> </li> <li> <p>If usage limit identifier is provided, then the corresponding usage limit object is returned.</p> </li> <li> <p>If cluster identifier is provided, then all usage limit objects for the specified cluster are returned.</p> </li> <li> <p>If cluster identifier and feature type are provided, then all usage limit objects for the combination of cluster and feature are returned.</p> </li> </ul>",
     "DisableLogging": "<p>Stops logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster.</p>",
     "DisableSnapshotCopy": "<p>Disables the automatic copying of snapshots from one region to another region for a specified cluster.</p> <p>If your cluster and its snapshots are encrypted using a customer master key (CMK) from Key Management Service, use <a>DeleteSnapshotCopyGrant</a> to delete the grant that grants Amazon Redshift permission to the CMK in the destination region. </p>",
+    "DisassociateDataShareConsumer": "<p>From a consumer account, remove association for the specified datashare. </p>",
     "EnableLogging": "<p>Starts logging information, such as queries and connection attempts, for the specified Amazon Redshift cluster.</p>",
     "EnableSnapshotCopy": "<p>Enables the automatic copy of snapshots from one region to another region for a specified cluster.</p>",
     "GetClusterCredentials": "<p>Returns a database user name and temporary password with temporary authorization to log on to an Amazon Redshift database. The action returns the database user name prefixed with <code>IAM:</code> if <code>AutoCreate</code> is <code>False</code> or <code>IAMA:</code> if <code>AutoCreate</code> is <code>True</code>. You can optionally specify one or more database user groups that the user will join at log on. By default, the temporary credentials expire in 900 seconds. You can optionally specify a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more information, see <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html\">Using IAM Authentication to Generate Database User Credentials</a> in the Amazon Redshift Cluster Management Guide.</p> <p>The Identity and Access Management (IAM) user or role that runs GetClusterCredentials must have an IAM policy attached that allows access to all necessary actions and resources. For more information about permissions, see <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html#redshift-policy-resources.getclustercredentials-resources\">Resource Policies for GetClusterCredentials</a> in the Amazon Redshift Cluster Management Guide.</p> <p>If the <code>DbGroups</code> parameter is specified, the IAM policy must allow the <code>redshift:JoinGroup</code> action with access to the listed <code>dbgroups</code>. </p> <p>In addition, if the <code>AutoCreate</code> parameter is set to <code>True</code>, then the policy must include the <code>redshift:CreateClusterUser</code> privilege.</p> <p>If the <code>DbName</code> parameter is specified, the IAM policy must allow access to the resource <code>dbname</code> for the specified database name. </p>",
@@ -87,19 +94,20 @@
     "ModifyClusterDbRevision": "<p>Modifies the database revision of a cluster. The database revision is a unique revision of the database running in a cluster.</p>",
     "ModifyClusterIamRoles": "<p>Modifies the list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services.</p> <p>A cluster can have up to 10 IAM roles associated at any time.</p>",
     "ModifyClusterMaintenance": "<p>Modifies the maintenance settings of a cluster.</p>",
-    "ModifyClusterParameterGroup": "<p>Modifies the parameters of a parameter group.</p> <p> For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "ModifyClusterParameterGroup": "<p>Modifies the parameters of a parameter group. For the parameters parameter, it can't contain ASCII characters.</p> <p> For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "ModifyClusterSnapshot": "<p>Modifies the settings for a snapshot.</p> <p>This exanmple modifies the manual retention period setting for a cluster snapshot.</p>",
     "ModifyClusterSnapshotSchedule": "<p>Modifies a snapshot schedule for a cluster.</p>",
     "ModifyClusterSubnetGroup": "<p>Modifies a cluster subnet group to include the specified list of VPC subnets. The operation replaces the existing list of subnets with the new list of subnets.</p>",
     "ModifyEndpointAccess": "<p>Modifies a Redshift-managed VPC endpoint.</p>",
     "ModifyEventSubscription": "<p>Modifies an existing Amazon Redshift event notification subscription.</p>",
     "ModifyScheduledAction": "<p>Modifies a scheduled action. </p>",
-    "ModifySnapshotCopyRetentionPeriod": "<p>Modifies the number of days to retain snapshots in the destination Region after they are copied from the source Region. By default, this operation only changes the retention period of copied automated snapshots. The retention periods for both new and existing copied automated snapshots are updated with the new retention period. You can set the manual option to change only the retention periods of copied manual snapshots. If you set this option, only newly copied manual snapshots have the new retention period. </p>",
+    "ModifySnapshotCopyRetentionPeriod": "<p>Modifies the number of days to retain snapshots in the destination Amazon Web Services Region after they are copied from the source Amazon Web Services Region. By default, this operation only changes the retention period of copied automated snapshots. The retention periods for both new and existing copied automated snapshots are updated with the new retention period. You can set the manual option to change only the retention periods of copied manual snapshots. If you set this option, only newly copied manual snapshots have the new retention period. </p>",
     "ModifySnapshotSchedule": "<p>Modifies a snapshot schedule. Any schedule associated with a cluster is modified asynchronously.</p>",
     "ModifyUsageLimit": "<p>Modifies a usage limit in a cluster. You can't modify the feature type or period of a usage limit.</p>",
     "PauseCluster": "<p>Pauses a cluster.</p>",
     "PurchaseReservedNodeOffering": "<p>Allows you to purchase reserved nodes. Amazon Redshift offers a predefined set of reserved node offerings. You can purchase one or more of the offerings. You can call the <a>DescribeReservedNodeOfferings</a> API to obtain the available reserved node offerings. You can call this API by providing a specific reserved node offering and the number of nodes you want to reserve. </p> <p> For more information about reserved node offerings, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/purchase-reserved-node-instance.html\">Purchasing Reserved Nodes</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "RebootCluster": "<p>Reboots a cluster. This action is taken as soon as possible. It results in a momentary outage to the cluster, during which the cluster status is set to <code>rebooting</code>. A cluster event is created when the reboot is completed. Any pending cluster modifications (see <a>ModifyCluster</a>) are applied at this reboot. For more information about managing clusters, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html\">Amazon Redshift Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>. </p>",
+    "RejectDataShare": "<p>From the consumer account, rejects the specified datashare.</p>",
     "ResetClusterParameterGroup": "<p>Sets one or more parameters of the specified parameter group to their default values and sets the source values of the parameters to \"engine-default\". To reset the entire parameter group specify the <i>ResetAllParameters</i> parameter. For parameter changes to take effect you must reboot any associated clusters. </p>",
     "ResizeCluster": "<p>Changes the size of the cluster. You can change the cluster's type, or change the number or type of nodes. The default behavior is to use the elastic resize method. With an elastic resize, your cluster is available for read and write operations more quickly than with the classic resize method. </p> <p>Elastic resize operations have the following restrictions:</p> <ul> <li> <p>You can only resize clusters of the following types:</p> <ul> <li> <p>dc1.large (if your cluster is in a VPC)</p> </li> <li> <p>dc1.8xlarge (if your cluster is in a VPC)</p> </li> <li> <p>dc2.large</p> </li> <li> <p>dc2.8xlarge</p> </li> <li> <p>ds2.xlarge</p> </li> <li> <p>ds2.8xlarge</p> </li> <li> <p>ra3.xlplus</p> </li> <li> <p>ra3.4xlarge</p> </li> <li> <p>ra3.16xlarge</p> </li> </ul> </li> <li> <p>The type of nodes that you add must match the node type for the cluster.</p> </li> </ul>",
     "RestoreFromClusterSnapshot": "<p>Creates a new cluster from a snapshot. By default, Amazon Redshift creates the resulting cluster with the same configuration as the original cluster from which the snapshot was created, except that the new cluster is created with the default cluster security and parameter groups. After Amazon Redshift creates the cluster, you can use the <a>ModifyCluster</a> API to associate a different security group and different parameter group with the restored cluster. If you are using a DS node type, you can also choose to change to another DS node type of the same size during restore.</p> <p>If you restore a cluster into a VPC, you must provide a cluster subnet group where you want the cluster restored.</p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
@@ -107,7 +115,7 @@
     "ResumeCluster": "<p>Resumes a paused cluster.</p>",
     "RevokeClusterSecurityGroupIngress": "<p>Revokes an ingress rule in an Amazon Redshift security group for a previously authorized IP range or Amazon EC2 security group. To add an ingress rule, see <a>AuthorizeClusterSecurityGroupIngress</a>. For information about managing security groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-security-groups.html\">Amazon Redshift Cluster Security Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>. </p>",
     "RevokeEndpointAccess": "<p>Revokes access to a cluster.</p>",
-    "RevokeSnapshotAccess": "<p>Removes the ability of the specified account to restore the specified snapshot. If the account is currently restoring the snapshot, the restore will run to completion.</p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
+    "RevokeSnapshotAccess": "<p>Removes the ability of the specified Amazon Web Services account to restore the specified snapshot. If the account is currently restoring the snapshot, the restore will run to completion.</p> <p> For more information about working with snapshots, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html\">Amazon Redshift Snapshots</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p>",
     "RotateEncryptionKey": "<p>Rotates the encryption keys for a cluster.</p>",
     "UpdatePartnerStatus": "<p>Updates the status of a partner integration.</p>"
   },
@@ -144,7 +152,7 @@
       }
     },
     "AccountWithRestoreAccess": {
-      "base": "<p>Describes an account authorized to restore a snapshot.</p>",
+      "base": "<p>Describes an Amazon Web Services account authorized to restore a snapshot.</p>",
       "refs": {
         "AccountsWithRestoreAccessList$member": null
       }
@@ -152,7 +160,7 @@
     "AccountsWithRestoreAccessList": {
       "base": null,
       "refs": {
-        "Snapshot$AccountsWithRestoreAccess": "<p>A list of the accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner. </p>"
+        "Snapshot$AccountsWithRestoreAccess": "<p>A list of the Amazon Web Services accounts authorized to restore the snapshot. Returns <code>null</code> if no accounts are authorized. Visible only to the snapshot owner. </p>"
       }
     },
     "ActionType": {
@@ -171,10 +179,10 @@
     "AquaConfigurationStatus": {
       "base": null,
       "refs": {
-        "AquaConfiguration$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
-        "CreateClusterMessage$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) when it is created. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
-        "ModifyAquaInputMessage$AquaConfigurationStatus": "<p>The new value of AQUA configuration status. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
-        "RestoreFromClusterSnapshotMessage$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>"
+        "AquaConfiguration$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Amazon Web Services Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
+        "CreateClusterMessage$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) when it is created. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Amazon Web Services Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
+        "ModifyAquaInputMessage$AquaConfigurationStatus": "<p>The new value of AQUA configuration status. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Amazon Web Services Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>",
+        "RestoreFromClusterSnapshotMessage$AquaConfigurationStatus": "<p>The value represents how the cluster is configured to use AQUA (Advanced Query Accelerator) after the cluster is restored. Possible values include the following.</p> <ul> <li> <p>enabled - Use AQUA if it is available for the current Amazon Web Services Region and Amazon Redshift node type.</p> </li> <li> <p>disabled - Don't use AQUA. </p> </li> <li> <p>auto - Amazon Redshift determines whether to use AQUA.</p> </li> </ul>"
       }
     },
     "AquaStatus": {
@@ -183,6 +191,11 @@
         "AquaConfiguration$AquaStatus": "<p>The value indicates the status of AQUA on the cluster. Possible values include the following.</p> <ul> <li> <p>enabled - AQUA is enabled.</p> </li> <li> <p>disabled - AQUA is not enabled. </p> </li> <li> <p>applying - AQUA status is being applied. </p> </li> </ul>"
       }
     },
+    "AssociateDataShareConsumerMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
     "AssociatedClusterList": {
       "base": null,
       "refs": {
@@ -284,6 +297,11 @@
       "refs": {
       }
     },
+    "AuthorizeDataShareMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
     "AuthorizeEndpointAccessMessage": {
       "base": null,
       "refs": {
@@ -362,6 +380,7 @@
         "Cluster$PubliclyAccessible": "<p>A boolean value that, if <code>true</code>, indicates that the cluster can be accessed from a public network.</p>",
         "Cluster$Encrypted": "<p>A boolean value that, if <code>true</code>, indicates that data in the cluster is encrypted at rest.</p>",
         "Cluster$EnhancedVpcRouting": "<p>An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html\">Enhanced VPC Routing</a> in the Amazon Redshift Cluster Management Guide.</p> <p>If this option is <code>true</code>, enhanced VPC routing is enabled. </p> <p>Default: false</p>",
+        "DataShare$AllowPubliclyAccessibleConsumers": "<p>A value that specifies whether the datashare can be shared to a publicly accessible cluster.</p>",
         "DeleteClusterMessage$SkipFinalClusterSnapshot": "<p>Determines whether a final snapshot of the cluster is created before Amazon Redshift deletes the cluster. If <code>true</code>, a final cluster snapshot is not created. If <code>false</code>, a final cluster snapshot is created before the cluster is deleted. </p> <note> <p>The <i>FinalClusterSnapshotIdentifier</i> parameter must be specified if <i>SkipFinalClusterSnapshot</i> is <code>false</code>.</p> </note> <p>Default: <code>false</code> </p>",
         "EndpointAuthorization$AllowedAllVPCs": "<p>Indicates whether all VPCs in the grantee account are allowed access to the cluster.</p>",
         "EventSubscription$Enabled": "<p>A boolean value indicating whether the subscription is enabled; <code>true</code> indicates that the subscription is enabled.</p>",
@@ -380,6 +399,7 @@
     "BooleanOptional": {
       "base": null,
       "refs": {
+        "AssociateDataShareConsumerMessage$AssociateEntireAccount": "<p>A value that specifies whether the datashare is associated with the entire account.</p>",
         "CreateClusterMessage$AllowVersionUpgrade": "<p>If <code>true</code>, major version upgrades can be applied during the maintenance window to the Amazon Redshift engine that is running on the cluster.</p> <p>When a new major version of the Amazon Redshift engine is released, you can request that the service automatically apply upgrades during the maintenance window to the Amazon Redshift engine that is running on your cluster.</p> <p>Default: <code>true</code> </p>",
         "CreateClusterMessage$PubliclyAccessible": "<p>If <code>true</code>, the cluster can be accessed from a public network. </p>",
         "CreateClusterMessage$Encrypted": "<p>If <code>true</code>, the data in the cluster is encrypted at rest. </p> <p>Default: false</p>",
@@ -391,6 +411,7 @@
         "DescribeClusterSnapshotsMessage$ClusterExists": "<p>A value that indicates whether to return snapshots only for an existing cluster. You can perform table-level restore only by using a snapshot of an existing cluster, that is, a cluster that has not been deleted. Values for this parameter work as follows: </p> <ul> <li> <p>If <code>ClusterExists</code> is set to <code>true</code>, <code>ClusterIdentifier</code> is required.</p> </li> <li> <p>If <code>ClusterExists</code> is set to <code>false</code> and <code>ClusterIdentifier</code> isn't specified, all snapshots associated with deleted clusters (orphaned snapshots) are returned. </p> </li> <li> <p>If <code>ClusterExists</code> is set to <code>false</code> and <code>ClusterIdentifier</code> is specified for a deleted cluster, snapshots associated with that cluster are returned.</p> </li> <li> <p>If <code>ClusterExists</code> is set to <code>false</code> and <code>ClusterIdentifier</code> is specified for an existing cluster, no snapshots are returned. </p> </li> </ul>",
         "DescribeEndpointAuthorizationMessage$Grantee": "<p>Indicates whether to check authorization from a grantor or grantee point of view. If true, Amazon Redshift returns endpoint authorizations that you've been granted. If false (default), checks authorization from a grantor point of view.</p>",
         "DescribeScheduledActionsMessage$Active": "<p>If true, retrieve only active scheduled actions. If false, retrieve only disabled scheduled actions. </p>",
+        "DisassociateDataShareConsumerMessage$DisassociateEntireAccount": "<p>A value that specifies whether association for the datashare is removed from the entire account.</p>",
         "GetClusterCredentialsMessage$AutoCreate": "<p>Create a database user with the name specified for the user named in <code>DbUser</code> if one does not exist.</p>",
         "ModifyClusterMaintenanceMessage$DeferMaintenance": "<p>A boolean indicating whether to enable the deferred maintenance window. </p>",
         "ModifyClusterMessage$AllowVersionUpgrade": "<p>If <code>true</code>, major version upgrades will be applied automatically to the cluster during the maintenance window. </p> <p>Default: <code>false</code> </p>",
@@ -863,6 +884,50 @@
       "refs": {
       }
     },
+    "DataShare": {
+      "base": null,
+      "refs": {
+        "DataShareList$member": null
+      }
+    },
+    "DataShareAssociation": {
+      "base": "<p>The association of a datashare from a producer account with a data consumer. </p>",
+      "refs": {
+        "DataShareAssociationList$member": null
+      }
+    },
+    "DataShareAssociationList": {
+      "base": null,
+      "refs": {
+        "DataShare$DataShareAssociations": "<p>A value that specifies when the datashare has an association between a producer and data consumers.</p>"
+      }
+    },
+    "DataShareList": {
+      "base": null,
+      "refs": {
+        "DescribeDataSharesForConsumerResult$DataShares": "<p>Shows the results of datashares available for consumers.</p>",
+        "DescribeDataSharesForProducerResult$DataShares": "<p>Shows the results of datashares available for producers.</p>",
+        "DescribeDataSharesResult$DataShares": "<p>The results returned from describing datashares.</p>"
+      }
+    },
+    "DataShareStatus": {
+      "base": null,
+      "refs": {
+        "DataShareAssociation$Status": "<p>The status of the datashare that is associated.</p>"
+      }
+    },
+    "DataShareStatusForConsumer": {
+      "base": null,
+      "refs": {
+        "DescribeDataSharesForConsumerMessage$Status": "<p>An identifier giving the status of a datashare in the consumer cluster. If this field is specified, Amazon Redshift returns the list of datashares that have the specified status.</p>"
+      }
+    },
+    "DataShareStatusForProducer": {
+      "base": null,
+      "refs": {
+        "DescribeDataSharesForProducerMessage$Status": "<p>An identifier giving the status of a datashare in the producer. If this field is specified, Amazon Redshift returns the list of datashares that have the specified status.</p>"
+      }
+    },
     "DataTransferProgress": {
       "base": "<p>Describes the status of a cluster while it is in the process of resizing with an incremental resize.</p>",
       "refs": {
@@ -875,6 +940,11 @@
         "GetClusterCredentialsMessage$DbGroups": "<p>A list of the names of existing database groups that the user named in <code>DbUser</code> will join for the current session, in addition to any group memberships for an existing user. If not specified, a new user is added only to PUBLIC.</p> <p>Database group name constraints</p> <ul> <li> <p>Must be 1 to 64 alphanumeric characters or hyphens</p> </li> <li> <p>Must contain only lowercase letters, numbers, underscore, plus sign, period (dot), at symbol (@), or hyphen.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Must not contain a colon ( : ) or slash ( / ). </p> </li> <li> <p>Cannot be a reserved word. A list of reserved words can be found in <a href=\"http://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html\">Reserved Words</a> in the Amazon Redshift Database Developer Guide.</p> </li> </ul>"
       }
     },
+    "DeauthorizeDataShareMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
     "DefaultClusterParameters": {
       "base": "<p>Describes the default cluster parameters for a parameter group family.</p>",
       "refs": {
@@ -1060,6 +1130,36 @@
       "refs": {
       }
     },
+    "DescribeDataSharesForConsumerMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DescribeDataSharesForConsumerResult": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DescribeDataSharesForProducerMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DescribeDataSharesForProducerResult": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DescribeDataSharesMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
+    "DescribeDataSharesResult": {
+      "base": null,
+      "refs": {
+      }
+    },
     "DescribeDefaultClusterParametersMessage": {
       "base": "<p/>",
       "refs": {
@@ -1195,6 +1295,11 @@
       "refs": {
       }
     },
+    "DisassociateDataShareConsumerMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
     "Double": {
       "base": null,
       "refs": {
@@ -1289,7 +1394,7 @@
       }
     },
     "EndpointAuthorization": {
-      "base": "<p>Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across accounts.</p>",
+      "base": "<p>Describes an endpoint authorization for authorizing Redshift-managed VPC endpoint access to a cluster across Amazon Web Services accounts.</p>",
       "refs": {
         "EndpointAuthorizations$member": null
       }
@@ -1344,11 +1449,11 @@
     "EventCategoriesList": {
       "base": null,
       "refs": {
-        "CreateEventSubscriptionMessage$EventCategories": "<p>Specifies the Amazon Redshift event categories to be published by the event notification subscription.</p> <p>Values: configuration, management, monitoring, security</p>",
-        "Event$EventCategories": "<p>A list of the event categories.</p> <p>Values: Configuration, Management, Monitoring, Security</p>",
+        "CreateEventSubscriptionMessage$EventCategories": "<p>Specifies the Amazon Redshift event categories to be published by the event notification subscription.</p> <p>Values: configuration, management, monitoring, security, pending</p>",
+        "Event$EventCategories": "<p>A list of the event categories.</p> <p>Values: Configuration, Management, Monitoring, Security, Pending</p>",
         "EventInfoMap$EventCategories": "<p>The category of an Amazon Redshift event.</p>",
-        "EventSubscription$EventCategoriesList": "<p>The list of Amazon Redshift event categories specified in the event notification subscription.</p> <p>Values: Configuration, Management, Monitoring, Security</p>",
-        "ModifyEventSubscriptionMessage$EventCategories": "<p>Specifies the Amazon Redshift event categories to be published by the event notification subscription.</p> <p>Values: configuration, management, monitoring, security</p>"
+        "EventSubscription$EventCategoriesList": "<p>The list of Amazon Redshift event categories specified in the event notification subscription.</p> <p>Values: Configuration, Management, Monitoring, Security, Pending</p>",
+        "ModifyEventSubscriptionMessage$EventCategories": "<p>Specifies the Amazon Redshift event categories to be published by the event notification subscription.</p> <p>Values: configuration, management, monitoring, security, pending</p>"
       }
     },
     "EventCategoriesMap": {
@@ -1571,7 +1676,7 @@
         "Endpoint$Port": "<p>The port that the database engine is listening on.</p>",
         "EndpointAccess$Port": "<p>The port number on which the cluster accepts incoming connections.</p>",
         "EndpointAuthorization$EndpointCount": "<p>The number of Redshift-managed VPC endpoints created for the authorization.</p>",
-        "ModifySnapshotCopyRetentionPeriodMessage$RetentionPeriod": "<p>The number of days to retain automated snapshots in the destination Region after they are copied from the source Region.</p> <p>By default, this only changes the retention period of copied automated snapshots. </p> <p>If you decrease the retention period for automated snapshots that are copied to a destination Region, Amazon Redshift deletes any existing automated snapshots that were copied to the destination Region and that fall outside of the new retention period.</p> <p>Constraints: Must be at least 1 and no more than 35 for automated snapshots. </p> <p>If you specify the <code>manual</code> option, only newly copied manual snapshots will have the new retention period. </p> <p>If you specify the value of -1 newly copied manual snapshots are retained indefinitely.</p> <p>Constraints: The number of days must be either -1 or an integer between 1 and 3,653 for manual snapshots.</p>",
+        "ModifySnapshotCopyRetentionPeriodMessage$RetentionPeriod": "<p>The number of days to retain automated snapshots in the destination Amazon Web Services Region after they are copied from the source Amazon Web Services Region.</p> <p>By default, this only changes the retention period of copied automated snapshots. </p> <p>If you decrease the retention period for automated snapshots that are copied to a destination Amazon Web Services Region, Amazon Redshift deletes any existing automated snapshots that were copied to the destination Amazon Web Services Region and that fall outside of the new retention period.</p> <p>Constraints: Must be at least 1 and no more than 35 for automated snapshots. </p> <p>If you specify the <code>manual</code> option, only newly copied manual snapshots will have the new retention period. </p> <p>If you specify the value of -1 newly copied manual snapshots are retained indefinitely.</p> <p>Constraints: The number of days must be either -1 or an integer between 1 and 3,653 for manual snapshots.</p>",
         "NodeConfigurationOption$NumberOfNodes": "<p>The number of nodes.</p>",
         "ReservedNode$Duration": "<p>The duration of the node reservation in seconds.</p>",
         "ReservedNode$NodeCount": "<p>The number of reserved compute nodes.</p>",
@@ -1601,6 +1706,9 @@
         "DescribeClusterTracksMessage$MaxRecords": "<p>An integer value for the maximum number of maintenance tracks to return.</p>",
         "DescribeClusterVersionsMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p> <p>Default: <code>100</code> </p> <p>Constraints: minimum 20, maximum 100.</p>",
         "DescribeClustersMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p> <p>Default: <code>100</code> </p> <p>Constraints: minimum 20, maximum 100.</p>",
+        "DescribeDataSharesForConsumerMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p>",
+        "DescribeDataSharesForProducerMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p>",
+        "DescribeDataSharesMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p>",
         "DescribeDefaultClusterParametersMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p> <p>Default: <code>100</code> </p> <p>Constraints: minimum 20, maximum 100.</p>",
         "DescribeEndpointAccessMessage$MaxRecords": "<p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a <code>Marker</code> is included in the response so that the remaining results can be retrieved.</p>",
         "DescribeEndpointAuthorizationMessage$MaxRecords": "<p>The maximum number of records to include in the response. If more records exist than the specified <code>MaxRecords</code> value, a pagination token called a <code>Marker</code> is included in the response so that the remaining results can be retrieved.</p>",
@@ -1620,7 +1728,7 @@
         "DescribeTagsMessage$MaxRecords": "<p>The maximum number or response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned <code>marker</code> value. </p>",
         "DescribeUsageLimitsMessage$MaxRecords": "<p>The maximum number of response records to return in each call. If the number of remaining response records exceeds the specified <code>MaxRecords</code> value, a value is returned in a <code>marker</code> field of the response. You can retrieve the next set of records by retrying the command with the returned marker value. </p> <p>Default: <code>100</code> </p> <p>Constraints: minimum 20, maximum 100.</p>",
         "EnableSnapshotCopyMessage$RetentionPeriod": "<p>The number of days to retain automated snapshots in the destination region after they are copied from the source region.</p> <p>Default: 7.</p> <p>Constraints: Must be at least 1 and no more than 35.</p>",
-        "EnableSnapshotCopyMessage$ManualSnapshotRetentionPeriod": "<p>The number of days to retain newly copied snapshots in the destination Region after they are copied from the source Region. If the value is -1, the manual snapshot is retained indefinitely. </p> <p>The value must be either -1 or an integer between 1 and 3,653.</p>",
+        "EnableSnapshotCopyMessage$ManualSnapshotRetentionPeriod": "<p>The number of days to retain newly copied snapshots in the destination Amazon Web Services Region after they are copied from the source Amazon Web Services Region. If the value is -1, the manual snapshot is retained indefinitely. </p> <p>The value must be either -1 or an integer between 1 and 3,653.</p>",
         "GetClusterCredentialsMessage$DurationSeconds": "<p>The number of seconds until the returned temporary password expires.</p> <p>Constraint: minimum 900, maximum 3600.</p> <p>Default: 900</p>",
         "GetReservedNodeExchangeOfferingsInputMessage$MaxRecords": "<p>An integer setting the maximum number of ReservedNodeOfferings to retrieve.</p>",
         "ModifyClusterMaintenanceMessage$DeferMaintenanceDuration": "<p>An integer indicating the duration of the maintenance window in days. If you specify a duration, you can't specify an end time. The duration must be 45 days or less.</p>",
@@ -1644,7 +1752,7 @@
       }
     },
     "InvalidAuthenticationProfileRequestFault": {
-      "base": "<p>The authentication profile request is not valid. The profile name can't be null or empty. The authentication profile API operation must be available in the Region.</p>",
+      "base": "<p>The authentication profile request is not valid. The profile name can't be null or empty. The authentication profile API operation must be available in the Amazon Web Services Region.</p>",
       "refs": {
       }
     },
@@ -1693,6 +1801,11 @@
       "refs": {
       }
     },
+    "InvalidDataShareFault": {
+      "base": "<p>There is an error with the datashare.</p>",
+      "refs": {
+      }
+    },
     "InvalidElasticIpFault": {
       "base": "<p>The Elastic IP (EIP) is invalid or cannot be found.</p>",
       "refs": {
@@ -1713,6 +1826,11 @@
       "refs": {
       }
     },
+    "InvalidNamespaceFault": {
+      "base": "<p>The namespace isn't valid because the namespace doesn't exist. Provide a valid namespace.</p>",
+      "refs": {
+      }
+    },
     "InvalidReservedNodeStateFault": {
       "base": "<p>Indicates that the Reserved Node being exchanged is not in an active state.</p>",
       "refs": {
@@ -2076,9 +2194,9 @@
     "PartnerIntegrationAccountId": {
       "base": null,
       "refs": {
-        "DescribePartnersInputMessage$AccountId": "<p>The Region ID that owns the cluster.</p>",
-        "PartnerIntegrationInputMessage$AccountId": "<p>The Region ID that owns the cluster.</p>",
-        "UpdatePartnerStatusInputMessage$AccountId": "<p>The Region ID that owns the cluster.</p>"
+        "DescribePartnersInputMessage$AccountId": "<p>The Amazon Web Services account ID that owns the cluster.</p>",
+        "PartnerIntegrationInputMessage$AccountId": "<p>The Amazon Web Services account ID that owns the cluster.</p>",
+        "UpdatePartnerStatusInputMessage$AccountId": "<p>The Amazon Web Services account ID that owns the cluster.</p>"
       }
     },
     "PartnerIntegrationClusterIdentifier": {
@@ -2206,6 +2324,11 @@
         "ReservedNodeOffering$RecurringCharges": "<p>The charge to your account regardless of whether you are creating any clusters using the node offering. Recurring charges are only in effect for heavy-utilization reserved nodes.</p>"
       }
     },
+    "RejectDataShareMessage": {
+      "base": null,
+      "refs": {
+      }
+    },
     "ReservedNode": {
       "base": "<p>Describes a reserved node. You can call the <a>DescribeReservedNodeOfferings</a> API to obtain the available reserved node offerings. </p>",
       "refs": {
@@ -2592,7 +2715,7 @@
       }
     },
     "SnapshotCopyGrantQuotaExceededFault": {
-      "base": "<p>The account has exceeded the maximum number of snapshot copy grants in this region.</p>",
+      "base": "<p>The Amazon Web Services account has exceeded the maximum number of snapshot copy grants in this region.</p>",
       "refs": {
       }
     },
@@ -2698,20 +2821,24 @@
         "AcceptReservedNodeExchangeInputMessage$ReservedNodeId": "<p>A string representing the node identifier of the DC1 Reserved Node to be exchanged.</p>",
         "AcceptReservedNodeExchangeInputMessage$TargetReservedNodeOfferingId": "<p>The unique identifier of the DC2 Reserved Node offering to be used for the exchange. You can obtain the value for the parameter by calling <a>GetReservedNodeExchangeOfferings</a> </p>",
         "AccountAttribute$AttributeName": "<p>The name of the attribute.</p>",
-        "AccountWithRestoreAccess$AccountId": "<p>The identifier of an account authorized to restore a snapshot.</p>",
+        "AccountWithRestoreAccess$AccountId": "<p>The identifier of an Amazon Web Services account authorized to restore a snapshot.</p>",
         "AccountWithRestoreAccess$AccountAlias": "<p>The identifier of an Amazon Web Services support account authorized to restore a snapshot. For Amazon Web Services Support, the identifier is <code>amazon-redshift-support</code>. </p>",
+        "AssociateDataShareConsumerMessage$DataShareArn": "<p>The Amazon Resource Name (ARN) of the datashare that the consumer is to use with the account or the namespace.</p>",
+        "AssociateDataShareConsumerMessage$ConsumerArn": "<p>The Amazon Resource Name (ARN) of the consumer that is associated with the datashare.</p>",
         "AttributeNameList$member": null,
         "AttributeValueTarget$AttributeValue": "<p>The value of the attribute.</p>",
         "AuthenticationProfile$AuthenticationProfileContent": "<p>The content of the authentication profile in JSON format. The maximum length of the JSON string is determined by a quota for your account.</p>",
         "AuthorizeClusterSecurityGroupIngressMessage$ClusterSecurityGroupName": "<p>The name of the security group to which the ingress rule is added.</p>",
         "AuthorizeClusterSecurityGroupIngressMessage$CIDRIP": "<p>The IP range to be added the Amazon Redshift security group.</p>",
         "AuthorizeClusterSecurityGroupIngressMessage$EC2SecurityGroupName": "<p>The EC2 security group to be added the Amazon Redshift security group.</p>",
-        "AuthorizeClusterSecurityGroupIngressMessage$EC2SecurityGroupOwnerId": "<p>The account number of the owner of the security group specified by the <i>EC2SecurityGroupName</i> parameter. The Amazon Web Services Access Key ID is not an acceptable value. </p> <p>Example: <code>111122223333</code> </p>",
+        "AuthorizeClusterSecurityGroupIngressMessage$EC2SecurityGroupOwnerId": "<p>The Amazon Web Services account number of the owner of the security group specified by the <i>EC2SecurityGroupName</i> parameter. The Amazon Web Services Access Key ID is not an acceptable value. </p> <p>Example: <code>111122223333</code> </p>",
+        "AuthorizeDataShareMessage$DataShareArn": "<p>The Amazon Resource Name (ARN) of the datashare that producers are to authorize sharing for.</p>",
+        "AuthorizeDataShareMessage$ConsumerIdentifier": "<p>The identifier of the data consumer that is authorized to access the datashare. This identifier is an AWS account ID.</p>",
         "AuthorizeEndpointAccessMessage$ClusterIdentifier": "<p>The cluster identifier of the cluster to grant access to.</p>",
-        "AuthorizeEndpointAccessMessage$Account": "<p>The account ID to grant access to.</p>",
+        "AuthorizeEndpointAccessMessage$Account": "<p>The Amazon Web Services account ID to grant access to.</p>",
         "AuthorizeSnapshotAccessMessage$SnapshotIdentifier": "<p>The identifier of the snapshot the account is authorized to restore.</p>",
         "AuthorizeSnapshotAccessMessage$SnapshotClusterIdentifier": "<p>The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>",
-        "AuthorizeSnapshotAccessMessage$AccountWithRestoreAccess": "<p>The identifier of the account authorized to restore the specified snapshot.</p> <p>To share a snapshot with Amazon Web Services Support, specify amazon-redshift-support.</p>",
+        "AuthorizeSnapshotAccessMessage$AccountWithRestoreAccess": "<p>The identifier of the Amazon Web Services account authorized to restore the specified snapshot.</p> <p>To share a snapshot with Amazon Web Services Support, specify amazon-redshift-support.</p>",
         "AvailabilityZone$Name": "<p>The name of the availability zone.</p>",
         "CancelResizeMessage$ClusterIdentifier": "<p>The unique identifier for the cluster that you want to cancel a resize operation for.</p>",
         "Cluster$ClusterIdentifier": "<p>The unique identifier of the cluster.</p>",
@@ -2777,11 +2904,11 @@
         "ClustersMessage$Marker": "<p>A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the <code>Marker</code> parameter and retrying the command. If the <code>Marker</code> field is empty, all response records have been retrieved for the request. </p>",
         "CopyClusterSnapshotMessage$SourceSnapshotIdentifier": "<p>The identifier for the source snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Must be the identifier for a valid automated snapshot whose state is <code>available</code>.</p> </li> </ul>",
         "CopyClusterSnapshotMessage$SourceSnapshotClusterIdentifier": "<p>The identifier of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p> <p>Constraints:</p> <ul> <li> <p>Must be the identifier for a valid cluster.</p> </li> </ul>",
-        "CopyClusterSnapshotMessage$TargetSnapshotIdentifier": "<p>The identifier given to the new manual snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank.</p> </li> <li> <p>Must contain from 1 to 255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for the account that is making the request.</p> </li> </ul>",
+        "CopyClusterSnapshotMessage$TargetSnapshotIdentifier": "<p>The identifier given to the new manual snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank.</p> </li> <li> <p>Must contain from 1 to 255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for the Amazon Web Services account that is making the request.</p> </li> </ul>",
         "CreateAuthenticationProfileMessage$AuthenticationProfileContent": "<p>The content of the authentication profile in JSON format. The maximum length of the JSON string is determined by a quota for your account.</p>",
         "CreateAuthenticationProfileResult$AuthenticationProfileContent": "<p>The content of the authentication profile in JSON format.</p>",
         "CreateClusterMessage$DBName": "<p>The name of the first database to be created when the cluster is created.</p> <p>To create additional databases after the cluster is created, connect to the cluster with a SQL client and use SQL commands to create a database. For more information, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/dg/t_creating_database.html\">Create a Database</a> in the Amazon Redshift Database Developer Guide. </p> <p>Default: <code>dev</code> </p> <p>Constraints:</p> <ul> <li> <p>Must contain 1 to 64 alphanumeric characters.</p> </li> <li> <p>Must contain only lowercase letters.</p> </li> <li> <p>Cannot be a word that is reserved by the service. A list of reserved words can be found in <a href=\"https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html\">Reserved Words</a> in the Amazon Redshift Database Developer Guide. </p> </li> </ul>",
-        "CreateClusterMessage$ClusterIdentifier": "<p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an account.</p> </li> </ul> <p>Example: <code>myexamplecluster</code> </p>",
+        "CreateClusterMessage$ClusterIdentifier": "<p>A unique identifier for the cluster. You use this identifier to refer to the cluster for any subsequent cluster operations such as deleting or modifying. The identifier also appears in the Amazon Redshift console.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an Amazon Web Services account.</p> </li> </ul> <p>Example: <code>myexamplecluster</code> </p>",
         "CreateClusterMessage$ClusterType": "<p>The type of the cluster. When cluster type is specified as</p> <ul> <li> <p> <code>single-node</code>, the <b>NumberOfNodes</b> parameter is not required.</p> </li> <li> <p> <code>multi-node</code>, the <b>NumberOfNodes</b> parameter is required.</p> </li> </ul> <p>Valid Values: <code>multi-node</code> | <code>single-node</code> </p> <p>Default: <code>multi-node</code> </p>",
         "CreateClusterMessage$NodeType": "<p>The node type to be provisioned for the cluster. For information about node types, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#how-many-nodes\"> Working with Clusters</a> in the <i>Amazon Redshift Cluster Management Guide</i>. </p> <p>Valid Values: <code>ds2.xlarge</code> | <code>ds2.8xlarge</code> | <code>dc1.large</code> | <code>dc1.8xlarge</code> | <code>dc2.large</code> | <code>dc2.8xlarge</code> | <code>ra3.xlplus</code> | <code>ra3.4xlarge</code> | <code>ra3.16xlarge</code> </p>",
         "CreateClusterMessage$MasterUsername": "<p>The user name associated with the admin user account for the cluster that is being created.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 - 128 alphanumeric characters. The user name can't be <code>PUBLIC</code>.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot be a reserved word. A list of reserved words can be found in <a href=\"https://docs.aws.amazon.com/redshift/latest/dg/r_pg_keywords.html\">Reserved Words</a> in the Amazon Redshift Database Developer Guide. </p> </li> </ul>",
@@ -2798,22 +2925,22 @@
         "CreateClusterMessage$AdditionalInfo": "<p>Reserved.</p>",
         "CreateClusterMessage$MaintenanceTrackName": "<p>An optional parameter for the name of the maintenance track for the cluster. If you don't provide a maintenance track name, the cluster is assigned to the <code>current</code> track.</p>",
         "CreateClusterMessage$SnapshotScheduleIdentifier": "<p>A unique identifier for the snapshot schedule.</p>",
-        "CreateClusterParameterGroupMessage$ParameterGroupName": "<p>The name of the cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 alphanumeric characters or hyphens</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique withing your account.</p> </li> </ul> <note> <p>This value is stored as a lower-case string.</p> </note>",
-        "CreateClusterParameterGroupMessage$ParameterGroupFamily": "<p>The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters.</p> <p>To get a list of valid parameter group family names, you can call <a>DescribeClusterParameterGroups</a>. By default, Amazon Redshift returns a list of all the parameter groups that are owned by your account, including the default parameter groups for each Amazon Redshift engine version. The parameter group family names associated with the default parameter groups provide you the valid values. For example, a valid family name is \"redshift-1.0\". </p>",
+        "CreateClusterParameterGroupMessage$ParameterGroupName": "<p>The name of the cluster parameter group.</p> <p>Constraints:</p> <ul> <li> <p>Must be 1 to 255 alphanumeric characters or hyphens</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique withing your Amazon Web Services account.</p> </li> </ul> <note> <p>This value is stored as a lower-case string.</p> </note>",
+        "CreateClusterParameterGroupMessage$ParameterGroupFamily": "<p>The Amazon Redshift engine version to which the cluster parameter group applies. The cluster engine version determines the set of parameters.</p> <p>To get a list of valid parameter group family names, you can call <a>DescribeClusterParameterGroups</a>. By default, Amazon Redshift returns a list of all the parameter groups that are owned by your Amazon Web Services account, including the default parameter groups for each Amazon Redshift engine version. The parameter group family names associated with the default parameter groups provide you the valid values. For example, a valid family name is \"redshift-1.0\". </p>",
         "CreateClusterParameterGroupMessage$Description": "<p>A description of the parameter group.</p>",
-        "CreateClusterSecurityGroupMessage$ClusterSecurityGroupName": "<p>The name for the security group. Amazon Redshift stores the value as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain no more than 255 alphanumeric characters or hyphens.</p> </li> <li> <p>Must not be \"Default\".</p> </li> <li> <p>Must be unique for all security groups that are created by your account.</p> </li> </ul> <p>Example: <code>examplesecuritygroup</code> </p>",
+        "CreateClusterSecurityGroupMessage$ClusterSecurityGroupName": "<p>The name for the security group. Amazon Redshift stores the value as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain no more than 255 alphanumeric characters or hyphens.</p> </li> <li> <p>Must not be \"Default\".</p> </li> <li> <p>Must be unique for all security groups that are created by your Amazon Web Services account.</p> </li> </ul> <p>Example: <code>examplesecuritygroup</code> </p>",
         "CreateClusterSecurityGroupMessage$Description": "<p>A description for the security group.</p>",
-        "CreateClusterSnapshotMessage$SnapshotIdentifier": "<p>A unique identifier for the snapshot that you are requesting. This identifier must be unique for all snapshots within the account.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank</p> </li> <li> <p>Must contain from 1 to 255 alphanumeric characters or hyphens</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <p>Example: <code>my-snapshot-id</code> </p>",
+        "CreateClusterSnapshotMessage$SnapshotIdentifier": "<p>A unique identifier for the snapshot that you are requesting. This identifier must be unique for all snapshots within the Amazon Web Services account.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank</p> </li> <li> <p>Must contain from 1 to 255 alphanumeric characters or hyphens</p> </li> <li> <p>First character must be a letter</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens</p> </li> </ul> <p>Example: <code>my-snapshot-id</code> </p>",
         "CreateClusterSnapshotMessage$ClusterIdentifier": "<p>The cluster identifier for which you want a snapshot.</p>",
-        "CreateClusterSubnetGroupMessage$ClusterSubnetGroupName": "<p>The name for the subnet group. Amazon Redshift stores the value as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain no more than 255 alphanumeric characters or hyphens.</p> </li> <li> <p>Must not be \"Default\".</p> </li> <li> <p>Must be unique for all subnet groups that are created by your account.</p> </li> </ul> <p>Example: <code>examplesubnetgroup</code> </p>",
+        "CreateClusterSubnetGroupMessage$ClusterSubnetGroupName": "<p>The name for the subnet group. Amazon Redshift stores the value as a lowercase string.</p> <p>Constraints:</p> <ul> <li> <p>Must contain no more than 255 alphanumeric characters or hyphens.</p> </li> <li> <p>Must not be \"Default\".</p> </li> <li> <p>Must be unique for all subnet groups that are created by your Amazon Web Services account.</p> </li> </ul> <p>Example: <code>examplesubnetgroup</code> </p>",
         "CreateClusterSubnetGroupMessage$Description": "<p>A description for the subnet group.</p>",
         "CreateEndpointAccessMessage$ClusterIdentifier": "<p>The cluster identifier of the cluster to access.</p>",
-        "CreateEndpointAccessMessage$ResourceOwner": "<p>The account ID of the owner of the cluster. This is only required if the cluster is in another account.</p>",
+        "CreateEndpointAccessMessage$ResourceOwner": "<p>The Amazon Web Services account ID of the owner of the cluster. This is only required if the cluster is in another Amazon Web Services account.</p>",
         "CreateEndpointAccessMessage$EndpointName": "<p>The Redshift-managed VPC endpoint name.</p> <p>An endpoint name must contain 1-30 characters. Valid characters are A-Z, a-z, 0-9, and hyphen(-). The first character must be a letter. The name can't contain two consecutive hyphens or end with a hyphen.</p>",
         "CreateEndpointAccessMessage$SubnetGroupName": "<p>The subnet group from which Amazon Redshift chooses the subnet to deploy the endpoint.</p>",
         "CreateEventSubscriptionMessage$SubscriptionName": "<p>The name of the event subscription to be created.</p> <p>Constraints:</p> <ul> <li> <p>Cannot be null, empty, or blank.</p> </li> <li> <p>Must contain from 1 to 255 alphanumeric characters or hyphens.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> </ul>",
         "CreateEventSubscriptionMessage$SnsTopicArn": "<p>The Amazon Resource Name (ARN) of the Amazon SNS topic used to transmit the event notifications. The ARN is created by Amazon SNS when you create a topic and subscribe to it.</p>",
-        "CreateEventSubscriptionMessage$SourceType": "<p>The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your account. You must specify a source type in order to specify source IDs.</p> <p>Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot, and scheduled-action.</p>",
+        "CreateEventSubscriptionMessage$SourceType": "<p>The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your Amazon Web Services account. You must specify a source type in order to specify source IDs.</p> <p>Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot, and scheduled-action.</p>",
         "CreateEventSubscriptionMessage$Severity": "<p>Specifies the Amazon Redshift event severity to be published by the event notification subscription.</p> <p>Values: ERROR, INFO</p>",
         "CreateHsmClientCertificateMessage$HsmClientCertificateIdentifier": "<p>The identifier to be assigned to the new HSM client certificate that the cluster will use to connect to the HSM to use the database encryption keys.</p>",
         "CreateHsmConfigurationMessage$HsmConfigurationIdentifier": "<p>The identifier to be assigned to the new Amazon Redshift HSM configuration.</p>",
@@ -2826,14 +2953,19 @@
         "CreateScheduledActionMessage$Schedule": "<p>The schedule in <code>at( )</code> or <code>cron( )</code> format. For more information about this parameter, see <a>ScheduledAction</a>.</p>",
         "CreateScheduledActionMessage$IamRole": "<p>The IAM role to assume to run the target action. For more information about this parameter, see <a>ScheduledAction</a>. </p>",
         "CreateScheduledActionMessage$ScheduledActionDescription": "<p>The description of the scheduled action. </p>",
-        "CreateSnapshotCopyGrantMessage$SnapshotCopyGrantName": "<p>The name of the snapshot copy grant. This name must be unique in the region for the account.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an account.</p> </li> </ul>",
+        "CreateSnapshotCopyGrantMessage$SnapshotCopyGrantName": "<p>The name of the snapshot copy grant. This name must be unique in the region for the Amazon Web Services account.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an Amazon Web Services account.</p> </li> </ul>",
         "CreateSnapshotCopyGrantMessage$KmsKeyId": "<p>The unique identifier of the customer master key (CMK) to which to grant Amazon Redshift permission. If no key is specified, the default key is used.</p>",
         "CreateSnapshotScheduleMessage$ScheduleIdentifier": "<p>A unique identifier for a snapshot schedule. Only alphanumeric characters are allowed for the identifier.</p>",
         "CreateSnapshotScheduleMessage$ScheduleDescription": "<p>The description of the snapshot schedule.</p>",
         "CreateTagsMessage$ResourceName": "<p>The Amazon Resource Name (ARN) to which you want to add the tag or tags. For example, <code>arn:aws:redshift:us-east-2:123456789:cluster:t1</code>. </p>",
         "CreateUsageLimitMessage$ClusterIdentifier": "<p>The identifier of the cluster that you want to limit usage.</p>",
+        "DataShare$DataShareArn": "<p>An Amazon Resource Name (ARN) that references the datashare that is owned by a specific namespace of the producer cluster. A datashare ARN is in the <code>arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}</code> format.</p>",
+        "DataShare$ProducerArn": "<p>The Amazon Resource Name (ARN) of the producer.</p>",
+        "DataShareAssociation$ConsumerIdentifier": "<p>The name of the consumer accounts that have an association with a producer datashare.</p>",
         "DataTransferProgress$Status": "<p>Describes the status of the cluster. While the transfer is in progress the status is <code>transferringdata</code>.</p>",
         "DbGroupList$member": null,
+        "DeauthorizeDataShareMessage$DataShareArn": "<p>The Amazon Resource Name (ARN) of the datashare to remove authorization from.</p>",
+        "DeauthorizeDataShareMessage$ConsumerIdentifier": "<p>The identifier of the data consumer that is to have authorization removed from the datashare. This identifier is an AWS account ID.</p>",
         "DefaultClusterParameters$ParameterGroupFamily": "<p>The name of the cluster parameter group family to which the engine default parameters apply.</p>",
         "DefaultClusterParameters$Marker": "<p>A value that indicates the starting point for the next set of response records in a subsequent request. If a value is returned in a response, you can retrieve the next set of records by providing this returned marker value in the <code>Marker</code> parameter and retrying the command. If the <code>Marker</code> field is empty, all response records have been retrieved for the request. </p>",
         "DeferredMaintenanceWindow$DeferMaintenanceIdentifier": "<p>A unique identifier for the maintenance window.</p>",
@@ -2866,7 +2998,7 @@
         "DescribeClusterSnapshotsMessage$SnapshotIdentifier": "<p>The snapshot identifier of the snapshot about which to return information.</p>",
         "DescribeClusterSnapshotsMessage$SnapshotType": "<p>The type of snapshots for which you are requesting information. By default, snapshots of all types are returned.</p> <p>Valid Values: <code>automated</code> | <code>manual</code> </p>",
         "DescribeClusterSnapshotsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeClusterSnapshots</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
-        "DescribeClusterSnapshotsMessage$OwnerAccount": "<p>The account used to create or copy the snapshot. Use this field to filter the results to snapshots owned by a particular account. To describe snapshots you own, either specify your account, or do not specify the parameter.</p>",
+        "DescribeClusterSnapshotsMessage$OwnerAccount": "<p>The Amazon Web Services account used to create or copy the snapshot. Use this field to filter the results to snapshots owned by a particular account. To describe snapshots you own, either specify your Amazon Web Services account, or do not specify the parameter.</p>",
         "DescribeClusterSubnetGroupsMessage$ClusterSubnetGroupName": "<p>The name of the cluster subnet group for which information is requested.</p>",
         "DescribeClusterSubnetGroupsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeClusterSubnetGroups</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeClusterTracksMessage$MaintenanceTrackName": "<p>The name of the maintenance track. </p>",
@@ -2876,29 +3008,38 @@
         "DescribeClusterVersionsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeClusterVersions</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeClustersMessage$ClusterIdentifier": "<p>The unique identifier of a cluster whose properties you are requesting. This parameter is case sensitive.</p> <p>The default is that all clusters defined for an account are returned.</p>",
         "DescribeClustersMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeClusters</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p> <p>Constraints: You can specify either the <b>ClusterIdentifier</b> parameter or the <b>Marker</b> parameter, but not both. </p>",
+        "DescribeDataSharesForConsumerMessage$ConsumerArn": "<p>The Amazon Resource Name (ARN) of the consumer that returns in the list of datashares.</p>",
+        "DescribeDataSharesForConsumerMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataSharesForConsumer</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
+        "DescribeDataSharesForConsumerResult$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataSharesForConsumer</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
+        "DescribeDataSharesForProducerMessage$ProducerArn": "<p>The Amazon Resource Name (ARN) of the producer that returns in the list of datashares.</p>",
+        "DescribeDataSharesForProducerMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataSharesForProducer</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
+        "DescribeDataSharesForProducerResult$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataSharesForProducer</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
+        "DescribeDataSharesMessage$DataShareArn": "<p>The identifier of the datashare to describe details of.</p>",
+        "DescribeDataSharesMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataShares</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
+        "DescribeDataSharesResult$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDataShares</a> request exceed the value specified in <code>MaxRecords</code>, AWS returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeDefaultClusterParametersMessage$ParameterGroupFamily": "<p>The name of the cluster parameter group family.</p>",
         "DescribeDefaultClusterParametersMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeDefaultClusterParameters</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeEndpointAccessMessage$ClusterIdentifier": "<p>The cluster identifier associated with the described endpoint.</p>",
-        "DescribeEndpointAccessMessage$ResourceOwner": "<p>The account ID of the owner of the cluster.</p>",
+        "DescribeEndpointAccessMessage$ResourceOwner": "<p>The Amazon Web Services account ID of the owner of the cluster.</p>",
         "DescribeEndpointAccessMessage$EndpointName": "<p>The name of the endpoint to be described.</p>",
         "DescribeEndpointAccessMessage$VpcId": "<p>The virtual private cloud (VPC) identifier with access to the cluster.</p>",
         "DescribeEndpointAccessMessage$Marker": "<p>An optional pagination token provided by a previous <code>DescribeEndpointAccess</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by the <code>MaxRecords</code> parameter.</p>",
         "DescribeEndpointAuthorizationMessage$ClusterIdentifier": "<p>The cluster identifier of the cluster to access.</p>",
-        "DescribeEndpointAuthorizationMessage$Account": "<p>The Aaccount ID of either the cluster owner (grantor) or grantee. If <code>Grantee</code> parameter is true, then the <code>Account</code> value is of the grantor.</p>",
+        "DescribeEndpointAuthorizationMessage$Account": "<p>The AAmazon Web Services account ID of either the cluster owner (grantor) or grantee. If <code>Grantee</code> parameter is true, then the <code>Account</code> value is of the grantor.</p>",
         "DescribeEndpointAuthorizationMessage$Marker": "<p>An optional pagination token provided by a previous <code>DescribeEndpointAuthorization</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by the <code>MaxRecords</code> parameter.</p>",
         "DescribeEventCategoriesMessage$SourceType": "<p>The source type, such as cluster or parameter group, to which the described event categories apply.</p> <p>Valid values: cluster, cluster-snapshot, cluster-parameter-group, cluster-security-group, and scheduled-action.</p>",
         "DescribeEventSubscriptionsMessage$SubscriptionName": "<p>The name of the Amazon Redshift event notification subscription to be described.</p>",
         "DescribeEventSubscriptionsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a DescribeEventSubscriptions request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeEventsMessage$SourceIdentifier": "<p>The identifier of the event source for which events will be returned. If this parameter is not specified, then all sources are included in the response.</p> <p>Constraints:</p> <p>If <i>SourceIdentifier</i> is supplied, <i>SourceType</i> must also be provided.</p> <ul> <li> <p>Specify a cluster identifier when <i>SourceType</i> is <code>cluster</code>.</p> </li> <li> <p>Specify a cluster security group name when <i>SourceType</i> is <code>cluster-security-group</code>.</p> </li> <li> <p>Specify a cluster parameter group name when <i>SourceType</i> is <code>cluster-parameter-group</code>.</p> </li> <li> <p>Specify a cluster snapshot identifier when <i>SourceType</i> is <code>cluster-snapshot</code>.</p> </li> </ul>",
         "DescribeEventsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeEvents</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
-        "DescribeHsmClientCertificatesMessage$HsmClientCertificateIdentifier": "<p>The identifier of a specific HSM client certificate for which you want information. If no identifier is specified, information is returned for all HSM client certificates owned by your account.</p>",
+        "DescribeHsmClientCertificatesMessage$HsmClientCertificateIdentifier": "<p>The identifier of a specific HSM client certificate for which you want information. If no identifier is specified, information is returned for all HSM client certificates owned by your Amazon Web Services account.</p>",
         "DescribeHsmClientCertificatesMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeHsmClientCertificates</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
-        "DescribeHsmConfigurationsMessage$HsmConfigurationIdentifier": "<p>The identifier of a specific Amazon Redshift HSM configuration to be described. If no identifier is specified, information is returned for all HSM configurations owned by your account.</p>",
+        "DescribeHsmConfigurationsMessage$HsmConfigurationIdentifier": "<p>The identifier of a specific Amazon Redshift HSM configuration to be described. If no identifier is specified, information is returned for all HSM configurations owned by your Amazon Web Services account.</p>",
         "DescribeHsmConfigurationsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeHsmConfigurations</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeLoggingStatusMessage$ClusterIdentifier": "<p>The identifier of the cluster from which to get the logging status.</p> <p>Example: <code>examplecluster</code> </p>",
         "DescribeNodeConfigurationOptionsMessage$ClusterIdentifier": "<p>The identifier of the cluster to evaluate for possible node configurations.</p>",
         "DescribeNodeConfigurationOptionsMessage$SnapshotIdentifier": "<p>The identifier of the snapshot to evaluate for possible node configurations.</p>",
-        "DescribeNodeConfigurationOptionsMessage$OwnerAccount": "<p>The account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>",
+        "DescribeNodeConfigurationOptionsMessage$OwnerAccount": "<p>The Amazon Web Services account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>",
         "DescribeNodeConfigurationOptionsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeNodeConfigurationOptions</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeOrderableClusterOptionsMessage$ClusterVersion": "<p>The version filter value. Specify this parameter to show only the available offerings matching the specified version.</p> <p>Default: All versions.</p> <p>Constraints: Must be one of the version returned from <a>DescribeClusterVersions</a>.</p>",
         "DescribeOrderableClusterOptionsMessage$NodeType": "<p>The node type filter value. Specify this parameter to show only the available offerings matching the specified node type.</p>",
@@ -2907,7 +3048,7 @@
         "DescribeReservedNodeOfferingsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeReservedNodeOfferings</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeReservedNodesMessage$ReservedNodeId": "<p>Identifier for the node reservation.</p>",
         "DescribeReservedNodesMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeReservedNodes</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
-        "DescribeResizeMessage$ClusterIdentifier": "<p>The unique identifier of a cluster whose resize progress you are requesting. This parameter is case-sensitive.</p> <p>By default, resize operations for all clusters defined for an account are returned.</p>",
+        "DescribeResizeMessage$ClusterIdentifier": "<p>The unique identifier of a cluster whose resize progress you are requesting. This parameter is case-sensitive.</p> <p>By default, resize operations for all clusters defined for an Amazon Web Services account are returned.</p>",
         "DescribeScheduledActionsMessage$ScheduledActionName": "<p>The name of the scheduled action to retrieve. </p>",
         "DescribeScheduledActionsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeScheduledActions</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DescribeSnapshotCopyGrantsMessage$SnapshotCopyGrantName": "<p>The name of the snapshot copy grant.</p>",
@@ -2927,27 +3068,29 @@
         "DescribeUsageLimitsMessage$Marker": "<p>An optional parameter that specifies the starting point to return a set of response records. When the results of a <a>DescribeUsageLimits</a> request exceed the value specified in <code>MaxRecords</code>, Amazon Web Services returns a value in the <code>Marker</code> field of the response. You can retrieve the next set of response records by providing the returned marker value in the <code>Marker</code> parameter and retrying the request. </p>",
         "DisableLoggingMessage$ClusterIdentifier": "<p>The identifier of the cluster on which logging is to be stopped.</p> <p>Example: <code>examplecluster</code> </p>",
         "DisableSnapshotCopyMessage$ClusterIdentifier": "<p>The unique identifier of the source cluster that you want to disable copying of snapshots to a destination region.</p> <p>Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled.</p>",
+        "DisassociateDataShareConsumerMessage$DataShareArn": "<p>The Amazon Resource Name (ARN) of the datashare to remove association for. </p>",
+        "DisassociateDataShareConsumerMessage$ConsumerArn": "<p>The Amazon Resource Name (ARN) of the consumer that association for the datashare is removed from.</p>",
         "EC2SecurityGroup$Status": "<p>The status of the EC2 security group.</p>",
         "EC2SecurityGroup$EC2SecurityGroupName": "<p>The name of the EC2 Security Group.</p>",
-        "EC2SecurityGroup$EC2SecurityGroupOwnerId": "<p>The account ID of the owner of the EC2 security group specified in the <code>EC2SecurityGroupName</code> field. </p>",
+        "EC2SecurityGroup$EC2SecurityGroupOwnerId": "<p>The Amazon Web Services account ID of the owner of the EC2 security group specified in the <code>EC2SecurityGroupName</code> field. </p>",
         "ElasticIpStatus$ElasticIp": "<p>The elastic IP (EIP) address for the cluster.</p>",
         "ElasticIpStatus$Status": "<p>The status of the elastic IP (EIP) address.</p>",
         "EnableLoggingMessage$ClusterIdentifier": "<p>The identifier of the cluster on which logging is to be started.</p> <p>Example: <code>examplecluster</code> </p>",
         "EnableLoggingMessage$BucketName": "<p>The name of an existing S3 bucket where the log files are to be stored.</p> <p>Constraints:</p> <ul> <li> <p>Must be in the same region as the cluster</p> </li> <li> <p>The cluster must have read bucket and put object permissions</p> </li> </ul>",
         "EnableLoggingMessage$S3KeyPrefix": "<p>The prefix applied to the log file names.</p> <p>Constraints:</p> <ul> <li> <p>Cannot exceed 512 characters</p> </li> <li> <p>Cannot contain spaces( ), double quotes (\"), single quotes ('), a backslash (\\), or control characters. The hexadecimal codes for invalid characters are: </p> <ul> <li> <p>x00 to x20</p> </li> <li> <p>x22</p> </li> <li> <p>x27</p> </li> <li> <p>x5c</p> </li> <li> <p>x7f or larger</p> </li> </ul> </li> </ul>",
         "EnableSnapshotCopyMessage$ClusterIdentifier": "<p>The unique identifier of the source cluster to copy snapshots from.</p> <p>Constraints: Must be the valid name of an existing cluster that does not already have cross-region snapshot copy enabled.</p>",
-        "EnableSnapshotCopyMessage$DestinationRegion": "<p>The destination Region that you want to copy snapshots to.</p> <p>Constraints: Must be the name of a valid Region. For more information, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region\">Regions and Endpoints</a> in the Amazon Web Services General Reference. </p>",
+        "EnableSnapshotCopyMessage$DestinationRegion": "<p>The destination Amazon Web Services Region that you want to copy snapshots to.</p> <p>Constraints: Must be the name of a valid Amazon Web Services Region. For more information, see <a href=\"https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region\">Regions and Endpoints</a> in the Amazon Web Services General Reference. </p>",
         "EnableSnapshotCopyMessage$SnapshotCopyGrantName": "<p>The name of the snapshot copy grant to use when snapshots of an Amazon Web Services KMS-encrypted cluster are copied to the destination region.</p>",
         "Endpoint$Address": "<p>The DNS address of the Cluster.</p>",
         "EndpointAccess$ClusterIdentifier": "<p>The cluster identifier of the cluster associated with the endpoint.</p>",
-        "EndpointAccess$ResourceOwner": "<p>The account ID of the owner of the cluster.</p>",
+        "EndpointAccess$ResourceOwner": "<p>The Amazon Web Services account ID of the owner of the cluster.</p>",
         "EndpointAccess$SubnetGroupName": "<p>The subnet group name where Amazon Redshift chooses to deploy the endpoint.</p>",
         "EndpointAccess$EndpointStatus": "<p>The status of the endpoint.</p>",
         "EndpointAccess$EndpointName": "<p>The name of the endpoint.</p>",
         "EndpointAccess$Address": "<p>The DNS address of the endpoint.</p>",
         "EndpointAccessList$Marker": "<p>An optional pagination token provided by a previous <code>DescribeEndpointAccess</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by the <code>MaxRecords</code> parameter.</p>",
-        "EndpointAuthorization$Grantor": "<p>The account ID of the cluster owner.</p>",
-        "EndpointAuthorization$Grantee": "<p>The account ID of the grantee of the cluster.</p>",
+        "EndpointAuthorization$Grantor": "<p>The Amazon Web Services account ID of the cluster owner.</p>",
+        "EndpointAuthorization$Grantee": "<p>The Amazon Web Services account ID of the grantee of the cluster.</p>",
         "EndpointAuthorization$ClusterIdentifier": "<p>The cluster identifier.</p>",
         "EndpointAuthorization$ClusterStatus": "<p>The status of the cluster.</p>",
         "EndpointAuthorizationList$Marker": "<p>An optional pagination token provided by a previous <code>DescribeEndpointAuthorization</code> request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by the <code>MaxRecords</code> parameter.</p>",
@@ -2960,7 +3103,7 @@
         "EventInfoMap$EventId": "<p>The identifier of an Amazon Redshift event.</p>",
         "EventInfoMap$EventDescription": "<p>The description of an Amazon Redshift event.</p>",
         "EventInfoMap$Severity": "<p>The severity of the event.</p> <p>Values: ERROR, INFO</p>",
-        "EventSubscription$CustomerAwsId": "<p>The account associated with the Amazon Redshift event notification subscription.</p>",
+        "EventSubscription$CustomerAwsId": "<p>The Amazon Web Services account associated with the Amazon Redshift event notification subscription.</p>",
         "EventSubscription$CustSubscriptionId": "<p>The name of the Amazon Redshift event notification subscription.</p>",
         "EventSubscription$SnsTopicArn": "<p>The Amazon Resource Name (ARN) of the Amazon SNS topic used by the event notification subscription.</p>",
         "EventSubscription$Status": "<p>The status of the Amazon Redshift event notification subscription.</p> <p>Constraints:</p> <ul> <li> <p>Can be one of the following: active | no-permission | topic-not-exist</p> </li> <li> <p>The status \"no-permission\" indicates that Amazon Redshift no longer has permission to post to the Amazon SNS topic. The status \"topic-not-exist\" indicates that the topic was deleted after the subscription was created.</p> </li> </ul>",
@@ -3013,7 +3156,7 @@
         "ModifyClusterMessage$ClusterVersion": "<p>The new version number of the Amazon Redshift engine to upgrade to.</p> <p>For major version upgrades, if a non-default cluster parameter group is currently in use, a new cluster parameter group in the cluster parameter group family for the new version must be specified. The new cluster parameter group can be the default for that cluster parameter group family. For more information about parameters and parameter groups, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html\">Amazon Redshift Parameter Groups</a> in the <i>Amazon Redshift Cluster Management Guide</i>.</p> <p>Example: <code>1.0</code> </p>",
         "ModifyClusterMessage$HsmClientCertificateIdentifier": "<p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>",
         "ModifyClusterMessage$HsmConfigurationIdentifier": "<p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>",
-        "ModifyClusterMessage$NewClusterIdentifier": "<p>The new identifier for the cluster.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an account.</p> </li> </ul> <p>Example: <code>examplecluster</code> </p>",
+        "ModifyClusterMessage$NewClusterIdentifier": "<p>The new identifier for the cluster.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an Amazon Web Services account.</p> </li> </ul> <p>Example: <code>examplecluster</code> </p>",
         "ModifyClusterMessage$ElasticIp": "<p>The Elastic IP (EIP) address for the cluster.</p> <p>Constraints: The cluster must be provisioned in EC2-VPC and publicly-accessible through an Internet gateway. For more information about provisioning clusters in EC2-VPC, go to <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html#cluster-platforms\">Supported Platforms to Launch Your Cluster</a> in the Amazon Redshift Cluster Management Guide.</p>",
         "ModifyClusterMessage$MaintenanceTrackName": "<p>The name for the maintenance track that you want to assign for the cluster. This name change is asynchronous. The new track name stays in the <code>PendingModifiedValues</code> for the cluster until the next maintenance window. When the maintenance track changes, the cluster is switched to the latest cluster release available for the maintenance track. At this point, the maintenance track name is applied.</p>",
         "ModifyClusterMessage$KmsKeyId": "<p>The Key Management Service (KMS) key ID of the encryption key that you want to use to encrypt data in the cluster.</p>",
@@ -3027,13 +3170,13 @@
         "ModifyEndpointAccessMessage$EndpointName": "<p>The endpoint to be modified.</p>",
         "ModifyEventSubscriptionMessage$SubscriptionName": "<p>The name of the modified Amazon Redshift event notification subscription.</p>",
         "ModifyEventSubscriptionMessage$SnsTopicArn": "<p>The Amazon Resource Name (ARN) of the SNS topic to be used by the event notification subscription.</p>",
-        "ModifyEventSubscriptionMessage$SourceType": "<p>The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your account. You must specify a source type in order to specify source IDs.</p> <p>Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot, and scheduled-action.</p>",
+        "ModifyEventSubscriptionMessage$SourceType": "<p>The type of source that will be generating the events. For example, if you want to be notified of events generated by a cluster, you would set this parameter to cluster. If this value is not specified, events are returned for all Amazon Redshift objects in your Amazon Web Services account. You must specify a source type in order to specify source IDs.</p> <p>Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot, and scheduled-action.</p>",
         "ModifyEventSubscriptionMessage$Severity": "<p>Specifies the Amazon Redshift event severity to be published by the event notification subscription.</p> <p>Values: ERROR, INFO</p>",
         "ModifyScheduledActionMessage$ScheduledActionName": "<p>The name of the scheduled action to modify. </p>",
         "ModifyScheduledActionMessage$Schedule": "<p>A modified schedule in either <code>at( )</code> or <code>cron( )</code> format. For more information about this parameter, see <a>ScheduledAction</a>.</p>",
         "ModifyScheduledActionMessage$IamRole": "<p>A different IAM role to assume to run the target action. For more information about this parameter, see <a>ScheduledAction</a>.</p>",
         "ModifyScheduledActionMessage$ScheduledActionDescription": "<p>A modified description of the scheduled action. </p>",
-        "ModifySnapshotCopyRetentionPeriodMessage$ClusterIdentifier": "<p>The unique identifier of the cluster for which you want to change the retention period for either automated or manual snapshots that are copied to a destination Region.</p> <p>Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled.</p>",
+        "ModifySnapshotCopyRetentionPeriodMessage$ClusterIdentifier": "<p>The unique identifier of the cluster for which you want to change the retention period for either automated or manual snapshots that are copied to a destination Amazon Web Services Region.</p> <p>Constraints: Must be the valid name of an existing cluster that has cross-region snapshot copy enabled.</p>",
         "ModifySnapshotScheduleMessage$ScheduleIdentifier": "<p>A unique alphanumeric identifier of the schedule to modify.</p>",
         "ModifyUsageLimitMessage$UsageLimitId": "<p>The identifier of the usage limit to modify.</p>",
         "NetworkInterface$NetworkInterfaceId": "<p>The network interface identifier. </p>",
@@ -3065,6 +3208,7 @@
         "PurchaseReservedNodeOfferingMessage$ReservedNodeOfferingId": "<p>The unique identifier of the reserved node offering you want to purchase.</p>",
         "RebootClusterMessage$ClusterIdentifier": "<p>The cluster identifier.</p>",
         "RecurringCharge$RecurringChargeFrequency": "<p>The frequency at which the recurring charge amount is applied.</p>",
+        "RejectDataShareMessage$DataShareArn": "<p>The Amazon Resource Name (ARN) of the datashare to reject.</p>",
         "ReservedNode$ReservedNodeId": "<p>The unique identifier for the reservation.</p>",
         "ReservedNode$ReservedNodeOfferingId": "<p>The identifier for the reserved node offering.</p>",
         "ReservedNode$NodeType": "<p>The node type of the reserved node.</p>",
@@ -3089,12 +3233,12 @@
         "ResizeProgressMessage$Message": "<p>An optional string to provide additional details about the resize action.</p>",
         "ResizeProgressMessage$TargetEncryptionType": "<p>The type of encryption for the cluster after the resize is complete.</p> <p>Possible values are <code>KMS</code> and <code>None</code>. </p>",
         "RestorableNodeTypeList$member": null,
-        "RestoreFromClusterSnapshotMessage$ClusterIdentifier": "<p>The identifier of the cluster that will be created from restoring the snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an account.</p> </li> </ul>",
+        "RestoreFromClusterSnapshotMessage$ClusterIdentifier": "<p>The identifier of the cluster that will be created from restoring the snapshot.</p> <p>Constraints:</p> <ul> <li> <p>Must contain from 1 to 63 alphanumeric characters or hyphens.</p> </li> <li> <p>Alphabetic characters must be lowercase.</p> </li> <li> <p>First character must be a letter.</p> </li> <li> <p>Cannot end with a hyphen or contain two consecutive hyphens.</p> </li> <li> <p>Must be unique for all clusters within an Amazon Web Services account.</p> </li> </ul>",
         "RestoreFromClusterSnapshotMessage$SnapshotIdentifier": "<p>The name of the snapshot from which to create the new cluster. This parameter isn't case sensitive.</p> <p>Example: <code>my-snapshot-id</code> </p>",
         "RestoreFromClusterSnapshotMessage$SnapshotClusterIdentifier": "<p>The name of the cluster the source snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>",
         "RestoreFromClusterSnapshotMessage$AvailabilityZone": "<p>The Amazon EC2 Availability Zone in which to restore the cluster.</p> <p>Default: A random, system-chosen Availability Zone.</p> <p>Example: <code>us-east-2a</code> </p>",
         "RestoreFromClusterSnapshotMessage$ClusterSubnetGroupName": "<p>The name of the subnet group where you want to cluster restored.</p> <p>A snapshot of cluster in VPC can be restored only in VPC. Therefore, you must provide subnet group name where you want the cluster restored.</p>",
-        "RestoreFromClusterSnapshotMessage$OwnerAccount": "<p>The account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>",
+        "RestoreFromClusterSnapshotMessage$OwnerAccount": "<p>The Amazon Web Services account used to create or copy the snapshot. Required if you are restoring a snapshot you do not own, optional if you own the snapshot.</p>",
         "RestoreFromClusterSnapshotMessage$HsmClientCertificateIdentifier": "<p>Specifies the name of the HSM client certificate the Amazon Redshift cluster uses to retrieve the data encryption keys stored in an HSM.</p>",
         "RestoreFromClusterSnapshotMessage$HsmConfigurationIdentifier": "<p>Specifies the name of the HSM configuration that contains the information the Amazon Redshift cluster can use to retrieve and store keys in an HSM.</p>",
         "RestoreFromClusterSnapshotMessage$ElasticIp": "<p>The elastic IP (EIP) address for the cluster.</p>",
@@ -3120,12 +3264,12 @@
         "RevokeClusterSecurityGroupIngressMessage$ClusterSecurityGroupName": "<p>The name of the security Group from which to revoke the ingress rule.</p>",
         "RevokeClusterSecurityGroupIngressMessage$CIDRIP": "<p>The IP range for which to revoke access. This range must be a valid Classless Inter-Domain Routing (CIDR) block of IP addresses. If <code>CIDRIP</code> is specified, <code>EC2SecurityGroupName</code> and <code>EC2SecurityGroupOwnerId</code> cannot be provided. </p>",
         "RevokeClusterSecurityGroupIngressMessage$EC2SecurityGroupName": "<p>The name of the EC2 Security Group whose access is to be revoked. If <code>EC2SecurityGroupName</code> is specified, <code>EC2SecurityGroupOwnerId</code> must also be provided and <code>CIDRIP</code> cannot be provided. </p>",
-        "RevokeClusterSecurityGroupIngressMessage$EC2SecurityGroupOwnerId": "<p>The account number of the owner of the security group specified in the <code>EC2SecurityGroupName</code> parameter. The Amazon Web Services access key ID is not an acceptable value. If <code>EC2SecurityGroupOwnerId</code> is specified, <code>EC2SecurityGroupName</code> must also be provided. and <code>CIDRIP</code> cannot be provided. </p> <p>Example: <code>111122223333</code> </p>",
+        "RevokeClusterSecurityGroupIngressMessage$EC2SecurityGroupOwnerId": "<p>The Amazon Web Services account number of the owner of the security group specified in the <code>EC2SecurityGroupName</code> parameter. The Amazon Web Services access key ID is not an acceptable value. If <code>EC2SecurityGroupOwnerId</code> is specified, <code>EC2SecurityGroupName</code> must also be provided. and <code>CIDRIP</code> cannot be provided. </p> <p>Example: <code>111122223333</code> </p>",
         "RevokeEndpointAccessMessage$ClusterIdentifier": "<p>The cluster to revoke access from.</p>",
-        "RevokeEndpointAccessMessage$Account": "<p>The account ID whose access is to be revoked.</p>",
+        "RevokeEndpointAccessMessage$Account": "<p>The Amazon Web Services account ID whose access is to be revoked.</p>",
         "RevokeSnapshotAccessMessage$SnapshotIdentifier": "<p>The identifier of the snapshot that the account can no longer access.</p>",
         "RevokeSnapshotAccessMessage$SnapshotClusterIdentifier": "<p>The identifier of the cluster the snapshot was created from. This parameter is required if your IAM user has a policy containing a snapshot resource element that specifies anything other than * for the cluster name.</p>",
-        "RevokeSnapshotAccessMessage$AccountWithRestoreAccess": "<p>The identifier of the account that can no longer restore the specified snapshot.</p>",
+        "RevokeSnapshotAccessMessage$AccountWithRestoreAccess": "<p>The identifier of the Amazon Web Services account that can no longer restore the specified snapshot.</p>",
         "RotateEncryptionKeyMessage$ClusterIdentifier": "<p>The unique identifier of the cluster that you want to rotate the encryption keys for.</p> <p>Constraints: Must be the name of valid cluster that has encryption enabled.</p>",
         "ScheduleDefinitionList$member": null,
         "ScheduledAction$ScheduledActionName": "<p>The name of the scheduled action. </p>",
@@ -3145,7 +3289,7 @@
         "Snapshot$DBName": "<p>The name of the database that was created when the cluster was created.</p>",
         "Snapshot$VpcId": "<p>The VPC identifier of the cluster if the snapshot is from a cluster in a VPC. Otherwise, this field is not in the output.</p>",
         "Snapshot$KmsKeyId": "<p>The Key Management Service (KMS) key ID of the encryption key that was used to encrypt data in the cluster from which the snapshot was taken.</p>",
-        "Snapshot$OwnerAccount": "<p>For manual snapshots, the account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>",
+        "Snapshot$OwnerAccount": "<p>For manual snapshots, the Amazon Web Services account used to create or copy the snapshot. For automatic snapshots, the owner of the cluster. The owner can perform all snapshot actions, such as sharing a manual snapshot.</p>",
         "Snapshot$SourceRegion": "<p>The source region from which the snapshot was copied.</p>",
         "Snapshot$MaintenanceTrackName": "<p>The name of the maintenance track for the snapshot.</p>",
         "SnapshotCopyGrant$SnapshotCopyGrantName": "<p>The name of the snapshot copy grant.</p>",
@@ -3281,6 +3425,8 @@
         "ClusterDbRevision$DatabaseRevisionReleaseDate": "<p>The date on which the database revision was released.</p>",
         "CreateScheduledActionMessage$StartTime": "<p>The start time in UTC of the scheduled action. Before this time, the scheduled action does not trigger. For more information about this parameter, see <a>ScheduledAction</a>.</p>",
         "CreateScheduledActionMessage$EndTime": "<p>The end time in UTC of the scheduled action. After this time, the scheduled action does not trigger. For more information about this parameter, see <a>ScheduledAction</a>. </p>",
+        "DataShareAssociation$CreatedDate": "<p>The creation date of the datashare that is associated.</p>",
+        "DataShareAssociation$StatusChangeDate": "<p>The status change data of the datashare that is associated.</p>",
         "DeferredMaintenanceWindow$DeferMaintenanceStartTime": "<p> A timestamp for the beginning of the time period when we defer maintenance.</p>",
         "DeferredMaintenanceWindow$DeferMaintenanceEndTime": "<p> A timestamp for the end of the time period when we defer maintenance.</p>",
         "DescribeClusterSnapshotsMessage$StartTime": "<p>A value that requests only snapshots created at or after the specified time. The time value is specified in ISO 8601 format. For more information about ISO 8601, go to the <a href=\"http://en.wikipedia.org/wiki/ISO_8601\">ISO8601 Wikipedia page.</a> </p> <p>Example: <code>2012-07-16T18:00:00Z</code> </p>",
diff --git a/service/glue/api.go b/service/glue/api.go
index 0211d15ddc8..82e46c4963c 100644
--- a/service/glue/api.go
+++ b/service/glue/api.go
@@ -1694,6 +1694,9 @@ func (c *Glue) CreateDatabaseRequest(input *CreateDatabaseInput) (req *request.R
 //   * EncryptionException
 //   An encryption operation failed.
 //
+//   * ConcurrentModificationException
+//   Two processes are trying to modify a resource simultaneously.
+//
 // See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateDatabase
 func (c *Glue) CreateDatabase(input *CreateDatabaseInput) (*CreateDatabaseOutput, error) {
 	req, out := c.CreateDatabaseRequest(input)
@@ -2670,6 +2673,9 @@ func (c *Glue) CreateTableRequest(input *CreateTableInput) (req *request.Request
 //   * EncryptionException
 //   An encryption operation failed.
 //
+//   * ConcurrentModificationException
+//   Two processes are trying to modify a resource simultaneously.
+//
 // See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/CreateTable
 func (c *Glue) CreateTable(input *CreateTableInput) (*CreateTableOutput, error) {
 	req, out := c.CreateTableRequest(input)
@@ -3507,6 +3513,9 @@ func (c *Glue) DeleteDatabaseRequest(input *DeleteDatabaseInput) (req *request.R
 //   * OperationTimeoutException
 //   The operation timed out.
 //
+//   * ConcurrentModificationException
+//   Two processes are trying to modify a resource simultaneously.
+//
 // See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteDatabase
 func (c *Glue) DeleteDatabase(input *DeleteDatabaseInput) (*DeleteDatabaseOutput, error) {
 	req, out := c.DeleteDatabaseRequest(input)
@@ -4525,6 +4534,9 @@ func (c *Glue) DeleteTableRequest(input *DeleteTableInput) (req *request.Request
 //   * OperationTimeoutException
 //   The operation timed out.
 //
+//   * ConcurrentModificationException
+//   Two processes are trying to modify a resource simultaneously.
+//
 // See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/DeleteTable
 func (c *Glue) DeleteTable(input *DeleteTableInput) (*DeleteTableOutput, error) {
 	req, out := c.DeleteTableRequest(input)
@@ -15068,6 +15080,9 @@ func (c *Glue) UpdateDatabaseRequest(input *UpdateDatabaseInput) (req *request.R
 //   * EncryptionException
 //   An encryption operation failed.
 //
+//   * ConcurrentModificationException
+//   Two processes are trying to modify a resource simultaneously.
+//
 // See also, https://docs.aws.amazon.com/goto/WebAPI/glue-2017-03-31/UpdateDatabase
 func (c *Glue) UpdateDatabase(input *UpdateDatabaseInput) (*UpdateDatabaseOutput, error) {
 	req, out := c.UpdateDatabaseRequest(input)
@@ -19477,8 +19492,8 @@ type ConnectionInput struct {
 	//    Amazon Virtual Private Cloud environment (Amazon VPC).
 	//
 	//    * MARKETPLACE - Uses configuration settings contained in a connector purchased
-	//    from Marketplace to read from and write to data stores that are not natively
-	//    supported by Glue.
+	//    from Amazon Web Services Marketplace to read from and write to data stores
+	//    that are not natively supported by Glue.
 	//
 	//    * CUSTOM - Uses configuration settings contained in a custom connector
 	//    to read from and write to data stores that are not natively supported
@@ -36435,7 +36450,8 @@ type PutResourcePolicyInput struct {
 	//
 	//    * By directly updating the resource policy with PutResourePolicy
 	//
-	//    * By using the Grant permissions command on the Management Console.
+	//    * By using the Grant permissions command on the Amazon Web Services Management
+	//    Console.
 	//
 	// Must be set to 'TRUE' if you have already used the Management Console to
 	// grant cross-account access, otherwise the call fails. Default is 'FALSE'.
diff --git a/service/iotsitewise/api.go b/service/iotsitewise/api.go
index 08c57938953..3b27320b497 100644
--- a/service/iotsitewise/api.go
+++ b/service/iotsitewise/api.go
@@ -3039,10 +3039,6 @@ func (c *IoTSiteWise) DescribeStorageConfigurationRequest(input *DescribeStorage
 //
 // Retrieves information about the storage configuration for IoT SiteWise.
 //
-// Exporting data to Amazon S3 is currently in preview release and is subject
-// to change. We recommend that you use this feature only with test data, and
-// not in production environments.
-//
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
 // the error.
@@ -5721,10 +5717,6 @@ func (c *IoTSiteWise) PutStorageConfigurationRequest(input *PutStorageConfigurat
 //
 // Configures storage settings for IoT SiteWise.
 //
-// Exporting data to Amazon S3 is currently in preview release and is subject
-// to change. We recommend that you use this feature only with test data, and
-// not in production environments.
-//
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
 // the error.
@@ -17463,16 +17455,25 @@ func (s *TransformProcessingConfig) SetForwardingConfig(v *ForwardingConfig) *Tr
 }
 
 // Contains a tumbling window, which is a repeating fixed-sized, non-overlapping,
-// and contiguous time interval. This window is used in metric and aggregation
-// computations.
+// and contiguous time window. You use this window in metrics to aggregate data
+// from properties and other assets.
+//
+// You can use m, h, d, and w when you specify an interval or offset. Note that
+// m represents minutes, and w represents weeks. You can also use s to represent
+// seconds in offset.
+//
+// The interval and offset parameters support the ISO 8601 format (https://en.wikipedia.org/wiki/ISO_8601).
+// For example, PT5S represents five seconds, PT5M represents five minutes,
+// and PT5H represents five hours.
 type TumblingWindow struct {
 	_ struct{} `type:"structure"`
 
-	// The time interval for the tumbling window. Note that w represents weeks,
-	// d represents days, h represents hours, and m represents minutes. IoT SiteWise
-	// computes the 1w interval the end of Sunday at midnight each week (UTC), the
-	// 1d interval at the end of each day at midnight (UTC), the 1h interval at
-	// the end of each hour, and so on.
+	// The time interval for the tumbling window. The interval time must be between
+	// 1 minute and 1 week.
+	//
+	// IoT SiteWise computes the 1w interval the end of Sunday at midnight each
+	// week (UTC), the 1d interval at the end of each day at midnight (UTC), the
+	// 1h interval at the end of each hour, and so on.
 	//
 	// When IoT SiteWise aggregates data points for metric computations, the start
 	// of each interval is exclusive and the end of each interval is inclusive.
@@ -17480,6 +17481,35 @@ type TumblingWindow struct {
 	//
 	// Interval is a required field
 	Interval *string `locationName:"interval" min:"2" type:"string" required:"true"`
+
+	// The offset for the tumbling window. The offset parameter accepts the following:
+	//
+	//    * The offset time. For example, if you specify 18h for offset and 1d for
+	//    interval, IoT SiteWise aggregates data in one of the following ways: If
+	//    you create the metric before or at 6:00 p.m. (UTC), you get the first
+	//    aggregation result at 6 p.m. (UTC) on the day when you create the metric.
+	//    If you create the metric after 6:00 p.m. (UTC), you get the first aggregation
+	//    result at 6 p.m. (UTC) the next day.
+	//
+	//    * The ISO 8601 format. For example, if you specify PT18H for offset and
+	//    1d for interval, IoT SiteWise aggregates data in one of the following
+	//    ways: If you create the metric before or at 6:00 p.m. (UTC), you get the
+	//    first aggregation result at 6 p.m. (UTC) on the day when you create the
+	//    metric. If you create the metric after 6:00 p.m. (UTC), you get the first
+	//    aggregation result at 6 p.m. (UTC) the next day.
+	//
+	//    * The 24-hour clock. For example, if you specify 00:03:00 for offset and
+	//    5m for interval, and you create the metric at 2 p.m. (UTC), you get the
+	//    first aggregation result at 2:03 p.m. (UTC). You get the second aggregation
+	//    result at 2:08 p.m. (UTC).
+	//
+	//    * The offset time zone. For example, if you specify 2021-07-23T18:00-08
+	//    for offset and 1d for interval, IoT SiteWise aggregates data in one of
+	//    the following ways: If you create the metric before or at 6:00 p.m. (PST),
+	//    you get the first aggregation result at 6 p.m. (PST) on the day when you
+	//    create the metric. If you create the metric after 6:00 p.m. (PST), you
+	//    get the first aggregation result at 6 p.m. (PST) the next day.
+	Offset *string `locationName:"offset" min:"2" type:"string"`
 }
 
 // String returns the string representation
@@ -17501,6 +17531,9 @@ func (s *TumblingWindow) Validate() error {
 	if s.Interval != nil && len(*s.Interval) < 2 {
 		invalidParams.Add(request.NewErrParamMinLen("Interval", 2))
 	}
+	if s.Offset != nil && len(*s.Offset) < 2 {
+		invalidParams.Add(request.NewErrParamMinLen("Offset", 2))
+	}
 
 	if invalidParams.Len() > 0 {
 		return invalidParams
@@ -17514,6 +17547,12 @@ func (s *TumblingWindow) SetInterval(v string) *TumblingWindow {
 	return s
 }
 
+// SetOffset sets the Offset field's value.
+func (s *TumblingWindow) SetOffset(v string) *TumblingWindow {
+	s.Offset = &v
+	return s
+}
+
 // You are not authorized.
 type UnauthorizedException struct {
 	_            struct{}                  `type:"structure"`
diff --git a/service/mediaconvert/api.go b/service/mediaconvert/api.go
index d21135722dc..46c6c93bd47 100644
--- a/service/mediaconvert/api.go
+++ b/service/mediaconvert/api.go
@@ -9231,6 +9231,44 @@ func (s *EsamSignalProcessingNotification) SetSccXml(v string) *EsamSignalProces
 	return s
 }
 
+// Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h
+// Content Advisory.
+type ExtendedDataServices struct {
+	_ struct{} `type:"structure"`
+
+	// The action to take on copy and redistribution control XDS packets. If you
+	// select PASSTHROUGH, packets will not be changed. If you select STRIP, any
+	// packets will be removed in output captions.
+	CopyProtectionAction *string `locationName:"copyProtectionAction" type:"string" enum:"CopyProtectionAction"`
+
+	// The action to take on content advisory XDS packets. If you select PASSTHROUGH,
+	// packets will not be changed. If you select STRIP, any packets will be removed
+	// in output captions.
+	VchipAction *string `locationName:"vchipAction" type:"string" enum:"VchipAction"`
+}
+
+// String returns the string representation
+func (s ExtendedDataServices) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s ExtendedDataServices) GoString() string {
+	return s.String()
+}
+
+// SetCopyProtectionAction sets the CopyProtectionAction field's value.
+func (s *ExtendedDataServices) SetCopyProtectionAction(v string) *ExtendedDataServices {
+	s.CopyProtectionAction = &v
+	return s
+}
+
+// SetVchipAction sets the VchipAction field's value.
+func (s *ExtendedDataServices) SetVchipAction(v string) *ExtendedDataServices {
+	s.VchipAction = &v
+	return s
+}
+
 // Settings for F4v container
 type F4vSettings struct {
 	_ struct{} `type:"structure"`
@@ -13558,6 +13596,10 @@ type JobSettings struct {
 	// you can ignore these settings.
 	Esam *EsamSettings `locationName:"esam" type:"structure"`
 
+	// Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h
+	// Content Advisory.
+	ExtendedDataServices *ExtendedDataServices `locationName:"extendedDataServices" type:"structure"`
+
 	// Use Inputs (inputs) to define source file used in the transcode job. There
 	// can be multiple inputs add in a job. These inputs will be concantenated together
 	// to create the output.
@@ -13696,6 +13738,12 @@ func (s *JobSettings) SetEsam(v *EsamSettings) *JobSettings {
 	return s
 }
 
+// SetExtendedDataServices sets the ExtendedDataServices field's value.
+func (s *JobSettings) SetExtendedDataServices(v *ExtendedDataServices) *JobSettings {
+	s.ExtendedDataServices = v
+	return s
+}
+
 // SetInputs sets the Inputs field's value.
 func (s *JobSettings) SetInputs(v []*Input) *JobSettings {
 	s.Inputs = v
@@ -13906,6 +13954,10 @@ type JobTemplateSettings struct {
 	// you can ignore these settings.
 	Esam *EsamSettings `locationName:"esam" type:"structure"`
 
+	// Hexadecimal value as per EIA-608 Line 21 Data Services, section 9.5.1.5 05h
+	// Content Advisory.
+	ExtendedDataServices *ExtendedDataServices `locationName:"extendedDataServices" type:"structure"`
+
 	// Use Inputs (inputs) to define the source file used in the transcode job.
 	// There can only be one input in a job template. Using the API, you can include
 	// multiple inputs when referencing a job template.
@@ -14044,6 +14096,12 @@ func (s *JobTemplateSettings) SetEsam(v *EsamSettings) *JobTemplateSettings {
 	return s
 }
 
+// SetExtendedDataServices sets the ExtendedDataServices field's value.
+func (s *JobTemplateSettings) SetExtendedDataServices(v *ExtendedDataServices) *JobTemplateSettings {
+	s.ExtendedDataServices = v
+	return s
+}
+
 // SetInputs sets the Inputs field's value.
 func (s *JobTemplateSettings) SetInputs(v []*InputTemplate) *JobTemplateSettings {
 	s.Inputs = v
@@ -24822,6 +24880,25 @@ func ContainerType_Values() []string {
 	}
 }
 
+// The action to take on copy and redistribution control XDS packets. If you
+// select PASSTHROUGH, packets will not be changed. If you select STRIP, any
+// packets will be removed in output captions.
+const (
+	// CopyProtectionActionPassthrough is a CopyProtectionAction enum value
+	CopyProtectionActionPassthrough = "PASSTHROUGH"
+
+	// CopyProtectionActionStrip is a CopyProtectionAction enum value
+	CopyProtectionActionStrip = "STRIP"
+)
+
+// CopyProtectionAction_Values returns all elements of the CopyProtectionAction enum
+func CopyProtectionAction_Values() []string {
+	return []string{
+		CopyProtectionActionPassthrough,
+		CopyProtectionActionStrip,
+	}
+}
+
 // Use this setting only when your audio codec is a Dolby one (AC3, EAC3, or
 // Atmos) and your downstream workflow requires that your DASH manifest use
 // the Dolby channel configuration tag, rather than the MPEG one. For example,
@@ -31480,6 +31557,25 @@ func Vc3Telecine_Values() []string {
 	}
 }
 
+// The action to take on content advisory XDS packets. If you select PASSTHROUGH,
+// packets will not be changed. If you select STRIP, any packets will be removed
+// in output captions.
+const (
+	// VchipActionPassthrough is a VchipAction enum value
+	VchipActionPassthrough = "PASSTHROUGH"
+
+	// VchipActionStrip is a VchipAction enum value
+	VchipActionStrip = "STRIP"
+)
+
+// VchipAction_Values returns all elements of the VchipAction enum
+func VchipAction_Values() []string {
+	return []string{
+		VchipActionPassthrough,
+		VchipActionStrip,
+	}
+}
+
 // Type of video codec
 const (
 	// VideoCodecAv1 is a VideoCodec enum value
diff --git a/service/proton/doc.go b/service/proton/doc.go
index 273a0bba58e..f7c6ac03c9e 100644
--- a/service/proton/doc.go
+++ b/service/proton/doc.go
@@ -90,6 +90,29 @@
 //
 //    * CreateEnvironmentAccountConnection
 //
+// Idempotent create APIs
+//
+// Given a request action that has succeeded:
+//
+// If you retry the request with an API from this group, and the original resource
+// hasn't been modified, the retry succeeds without performing any further actions
+// other than returning the original resource detail data in the response.
+//
+// If the original resource has been modified, the retry throws a ConflictException.
+//
+// If you retry with different input parameters, the retry throws a ValidationException
+// with an IdempotentParameterMismatch error.
+//
+// Idempotent create APIs:
+//
+//    * CreateEnvironmentTemplate
+//
+//    * CreateServiceTemplate
+//
+//    * CreateEnvironment
+//
+//    * CreateService
+//
 // Idempotent delete APIs
 //
 // Given a request action that has succeeded:
diff --git a/service/redshift/api.go b/service/redshift/api.go
index 21e7c3a95fe..47abd132c3a 100644
--- a/service/redshift/api.go
+++ b/service/redshift/api.go
@@ -200,6 +200,91 @@ func (c *Redshift) AddPartnerWithContext(ctx aws.Context, input *AddPartnerInput
 	return out, req.Send()
 }
 
+const opAssociateDataShareConsumer = "AssociateDataShareConsumer"
+
+// AssociateDataShareConsumerRequest generates a "aws/request.Request" representing the
+// client's request for the AssociateDataShareConsumer operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AssociateDataShareConsumer for more information on using the AssociateDataShareConsumer
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the AssociateDataShareConsumerRequest method.
+//    req, resp := client.AssociateDataShareConsumerRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AssociateDataShareConsumer
+func (c *Redshift) AssociateDataShareConsumerRequest(input *AssociateDataShareConsumerInput) (req *request.Request, output *AssociateDataShareConsumerOutput) {
+	op := &request.Operation{
+		Name:       opAssociateDataShareConsumer,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &AssociateDataShareConsumerInput{}
+	}
+
+	output = &AssociateDataShareConsumerOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// AssociateDataShareConsumer API operation for Amazon Redshift.
+//
+// From a datashare consumer account, associates a datashare with the account
+// (AssociateEntireAccount) or the specified namespace (ConsumerArn). If you
+// make this association, the consumer can consume the datashare.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation AssociateDataShareConsumer for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
+//
+//   * ErrCodeInvalidNamespaceFault "InvalidNamespaceFault"
+//   The namespace isn't valid because the namespace doesn't exist. Provide a
+//   valid namespace.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AssociateDataShareConsumer
+func (c *Redshift) AssociateDataShareConsumer(input *AssociateDataShareConsumerInput) (*AssociateDataShareConsumerOutput, error) {
+	req, out := c.AssociateDataShareConsumerRequest(input)
+	return out, req.Send()
+}
+
+// AssociateDataShareConsumerWithContext is the same as AssociateDataShareConsumer with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AssociateDataShareConsumer for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) AssociateDataShareConsumerWithContext(ctx aws.Context, input *AssociateDataShareConsumerInput, opts ...request.Option) (*AssociateDataShareConsumerOutput, error) {
+	req, out := c.AssociateDataShareConsumerRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opAuthorizeClusterSecurityGroupIngress = "AuthorizeClusterSecurityGroupIngress"
 
 // AuthorizeClusterSecurityGroupIngressRequest generates a "aws/request.Request" representing the
@@ -253,7 +338,7 @@ func (c *Redshift) AuthorizeClusterSecurityGroupIngressRequest(input *AuthorizeC
 //
 // If you authorize access to an Amazon EC2 security group, specify EC2SecurityGroupName
 // and EC2SecurityGroupOwnerId. The Amazon EC2 security group and Amazon Redshift
-// cluster must be in the same Region.
+// cluster must be in the same Amazon Web Services Region.
 //
 // If you authorize access to a CIDR/IP address range, specify CIDRIP. For an
 // overview of CIDR blocks, see the Wikipedia article on Classless Inter-Domain
@@ -309,6 +394,87 @@ func (c *Redshift) AuthorizeClusterSecurityGroupIngressWithContext(ctx aws.Conte
 	return out, req.Send()
 }
 
+const opAuthorizeDataShare = "AuthorizeDataShare"
+
+// AuthorizeDataShareRequest generates a "aws/request.Request" representing the
+// client's request for the AuthorizeDataShare operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See AuthorizeDataShare for more information on using the AuthorizeDataShare
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the AuthorizeDataShareRequest method.
+//    req, resp := client.AuthorizeDataShareRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AuthorizeDataShare
+func (c *Redshift) AuthorizeDataShareRequest(input *AuthorizeDataShareInput) (req *request.Request, output *AuthorizeDataShareOutput) {
+	op := &request.Operation{
+		Name:       opAuthorizeDataShare,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &AuthorizeDataShareInput{}
+	}
+
+	output = &AuthorizeDataShareOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// AuthorizeDataShare API operation for Amazon Redshift.
+//
+// From a data producer account, authorizes the sharing of a datashare with
+// one or more consumer accounts. To authorize a datashare for a data consumer,
+// the producer account must have the correct access privileges.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation AuthorizeDataShare for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/AuthorizeDataShare
+func (c *Redshift) AuthorizeDataShare(input *AuthorizeDataShareInput) (*AuthorizeDataShareOutput, error) {
+	req, out := c.AuthorizeDataShareRequest(input)
+	return out, req.Send()
+}
+
+// AuthorizeDataShareWithContext is the same as AuthorizeDataShare with the addition of
+// the ability to pass a context and additional request options.
+//
+// See AuthorizeDataShare for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) AuthorizeDataShareWithContext(ctx aws.Context, input *AuthorizeDataShareInput, opts ...request.Option) (*AuthorizeDataShareOutput, error) {
+	req, out := c.AuthorizeDataShareRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opAuthorizeEndpointAccess = "AuthorizeEndpointAccess"
 
 // AuthorizeEndpointAccessRequest generates a "aws/request.Request" representing the
@@ -447,7 +613,8 @@ func (c *Redshift) AuthorizeSnapshotAccessRequest(input *AuthorizeSnapshotAccess
 
 // AuthorizeSnapshotAccess API operation for Amazon Redshift.
 //
-// Authorizes the specified account to restore the specified snapshot.
+// Authorizes the specified Amazon Web Services account to restore the specified
+// snapshot.
 //
 // For more information about working with snapshots, go to Amazon Redshift
 // Snapshots (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html)
@@ -930,7 +1097,7 @@ func (c *Redshift) CreateAuthenticationProfileRequest(input *CreateAuthenticatio
 //   * ErrCodeInvalidAuthenticationProfileRequestFault "InvalidAuthenticationProfileRequestFault"
 //   The authentication profile request is not valid. The profile name can't be
 //   null or empty. The authentication profile API operation must be available
-//   in the Region.
+//   in the Amazon Web Services Region.
 //
 // See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/CreateAuthenticationProfile
 func (c *Redshift) CreateAuthenticationProfile(input *CreateAuthenticationProfileInput) (*CreateAuthenticationProfileOutput, error) {
@@ -1702,10 +1869,11 @@ func (c *Redshift) CreateEventSubscriptionRequest(input *CreateEventSubscription
 // cluster and source identifier = my-cluster-1, notifications will be sent
 // for all the cluster events for my-cluster-1. If you specify a source type
 // but do not specify a source identifier, you will receive notice of the events
-// for the objects of that type in your account. If you do not specify either
-// the SourceType nor the SourceIdentifier, you will be notified of events generated
-// from all Amazon Redshift sources belonging to your account. You must specify
-// a source type if you specify a source ID.
+// for the objects of that type in your Amazon Web Services account. If you
+// do not specify either the SourceType nor the SourceIdentifier, you will be
+// notified of events generated from all Amazon Redshift sources belonging to
+// your Amazon Web Services account. You must specify a source type if you specify
+// a source ID.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -2140,8 +2308,8 @@ func (c *Redshift) CreateSnapshotCopyGrantRequest(input *CreateSnapshotCopyGrant
 //   already exists.
 //
 //   * ErrCodeSnapshotCopyGrantQuotaExceededFault "SnapshotCopyGrantQuotaExceededFault"
-//   The account has exceeded the maximum number of snapshot copy grants in this
-//   region.
+//   The Amazon Web Services account has exceeded the maximum number of snapshot
+//   copy grants in this region.
 //
 //   * ErrCodeLimitExceededFault "LimitExceededFault"
 //   The encryption key has exceeded its grant limit in Amazon Web Services KMS.
@@ -2466,6 +2634,85 @@ func (c *Redshift) CreateUsageLimitWithContext(ctx aws.Context, input *CreateUsa
 	return out, req.Send()
 }
 
+const opDeauthorizeDataShare = "DeauthorizeDataShare"
+
+// DeauthorizeDataShareRequest generates a "aws/request.Request" representing the
+// client's request for the DeauthorizeDataShare operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DeauthorizeDataShare for more information on using the DeauthorizeDataShare
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the DeauthorizeDataShareRequest method.
+//    req, resp := client.DeauthorizeDataShareRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DeauthorizeDataShare
+func (c *Redshift) DeauthorizeDataShareRequest(input *DeauthorizeDataShareInput) (req *request.Request, output *DeauthorizeDataShareOutput) {
+	op := &request.Operation{
+		Name:       opDeauthorizeDataShare,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &DeauthorizeDataShareInput{}
+	}
+
+	output = &DeauthorizeDataShareOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// DeauthorizeDataShare API operation for Amazon Redshift.
+//
+// From the producer account, removes authorization from the specified datashare.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation DeauthorizeDataShare for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DeauthorizeDataShare
+func (c *Redshift) DeauthorizeDataShare(input *DeauthorizeDataShareInput) (*DeauthorizeDataShareOutput, error) {
+	req, out := c.DeauthorizeDataShareRequest(input)
+	return out, req.Send()
+}
+
+// DeauthorizeDataShareWithContext is the same as DeauthorizeDataShare with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DeauthorizeDataShare for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) DeauthorizeDataShareWithContext(ctx aws.Context, input *DeauthorizeDataShareInput, opts ...request.Option) (*DeauthorizeDataShareOutput, error) {
+	req, out := c.DeauthorizeDataShareRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opDeleteAuthenticationProfile = "DeleteAuthenticationProfile"
 
 // DeleteAuthenticationProfileRequest generates a "aws/request.Request" representing the
@@ -2526,7 +2773,7 @@ func (c *Redshift) DeleteAuthenticationProfileRequest(input *DeleteAuthenticatio
 //   * ErrCodeInvalidAuthenticationProfileRequestFault "InvalidAuthenticationProfileRequestFault"
 //   The authentication profile request is not valid. The profile name can't be
 //   null or empty. The authentication profile API operation must be available
-//   in the Region.
+//   in the Amazon Web Services Region.
 //
 // See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DeleteAuthenticationProfile
 func (c *Redshift) DeleteAuthenticationProfile(input *DeleteAuthenticationProfileInput) (*DeleteAuthenticationProfileOutput, error) {
@@ -3999,7 +4246,7 @@ func (c *Redshift) DescribeAuthenticationProfilesRequest(input *DescribeAuthenti
 //   * ErrCodeInvalidAuthenticationProfileRequestFault "InvalidAuthenticationProfileRequestFault"
 //   The authentication profile request is not valid. The profile name can't be
 //   null or empty. The authentication profile API operation must be available
-//   in the Region.
+//   in the Amazon Web Services Region.
 //
 // See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeAuthenticationProfiles
 func (c *Redshift) DescribeAuthenticationProfiles(input *DescribeAuthenticationProfilesInput) (*DescribeAuthenticationProfilesOutput, error) {
@@ -4678,8 +4925,8 @@ func (c *Redshift) DescribeClusterSnapshotsRequest(input *DescribeClusterSnapsho
 //
 // Returns one or more snapshot objects, which contain metadata about your cluster
 // snapshots. By default, this operation returns information about all snapshots
-// of all clusters that are owned by your account. No information is returned
-// for snapshots owned by inactive accounts.
+// of all clusters that are owned by your Amazon Web Services account. No information
+// is returned for snapshots owned by inactive Amazon Web Services accounts.
 //
 // If you specify both tag keys and tag values in the same request, Amazon Redshift
 // returns all snapshots that match any combination of the specified keys and
@@ -4835,7 +5082,8 @@ func (c *Redshift) DescribeClusterSubnetGroupsRequest(input *DescribeClusterSubn
 //
 // Returns one or more cluster subnet group objects, which contain metadata
 // about your cluster subnet groups. By default, this operation returns information
-// about all cluster subnet groups that are defined in your account.
+// about all cluster subnet groups that are defined in your Amazon Web Services
+// account.
 //
 // If you specify both tag keys and tag values in the same request, Amazon Redshift
 // returns all subnet groups that match any combination of the specified keys
@@ -5365,124 +5613,366 @@ func (c *Redshift) DescribeClustersPagesWithContext(ctx aws.Context, input *Desc
 	return p.Err()
 }
 
-const opDescribeDefaultClusterParameters = "DescribeDefaultClusterParameters"
+const opDescribeDataShares = "DescribeDataShares"
 
-// DescribeDefaultClusterParametersRequest generates a "aws/request.Request" representing the
-// client's request for the DescribeDefaultClusterParameters operation. The "output" return
+// DescribeDataSharesRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeDataShares operation. The "output" return
 // value will be populated with the request's response once the request completes
 // successfully.
 //
 // Use "Send" method on the returned Request to send the API call to the service.
 // the "output" return value is not valid until after Send returns without error.
 //
-// See DescribeDefaultClusterParameters for more information on using the DescribeDefaultClusterParameters
+// See DescribeDataShares for more information on using the DescribeDataShares
 // API call, and error handling.
 //
 // This method is useful when you want to inject custom logic or configuration
 // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 //
 //
-//    // Example sending a request using the DescribeDefaultClusterParametersRequest method.
-//    req, resp := client.DescribeDefaultClusterParametersRequest(params)
+//    // Example sending a request using the DescribeDataSharesRequest method.
+//    req, resp := client.DescribeDataSharesRequest(params)
 //
 //    err := req.Send()
 //    if err == nil { // resp is now filled
 //        fmt.Println(resp)
 //    }
 //
-// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDefaultClusterParameters
-func (c *Redshift) DescribeDefaultClusterParametersRequest(input *DescribeDefaultClusterParametersInput) (req *request.Request, output *DescribeDefaultClusterParametersOutput) {
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataShares
+func (c *Redshift) DescribeDataSharesRequest(input *DescribeDataSharesInput) (req *request.Request, output *DescribeDataSharesOutput) {
 	op := &request.Operation{
-		Name:       opDescribeDefaultClusterParameters,
+		Name:       opDescribeDataShares,
 		HTTPMethod: "POST",
 		HTTPPath:   "/",
-		Paginator: &request.Paginator{
-			InputTokens:     []string{"Marker"},
-			OutputTokens:    []string{"DefaultClusterParameters.Marker"},
-			LimitToken:      "MaxRecords",
-			TruncationToken: "",
-		},
 	}
 
 	if input == nil {
-		input = &DescribeDefaultClusterParametersInput{}
+		input = &DescribeDataSharesInput{}
 	}
 
-	output = &DescribeDefaultClusterParametersOutput{}
+	output = &DescribeDataSharesOutput{}
 	req = c.newRequest(op, input, output)
 	return
 }
 
-// DescribeDefaultClusterParameters API operation for Amazon Redshift.
+// DescribeDataShares API operation for Amazon Redshift.
 //
-// Returns a list of parameter settings for the specified parameter group family.
-//
-// For more information about parameters and parameter groups, go to Amazon
-// Redshift Parameter Groups (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html)
-// in the Amazon Redshift Cluster Management Guide.
+// Shows the status of any inbound or outbound datashares available in the specified
+// account.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
 // the error.
 //
 // See the AWS API reference guide for Amazon Redshift's
-// API operation DescribeDefaultClusterParameters for usage and error information.
-// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDefaultClusterParameters
-func (c *Redshift) DescribeDefaultClusterParameters(input *DescribeDefaultClusterParametersInput) (*DescribeDefaultClusterParametersOutput, error) {
-	req, out := c.DescribeDefaultClusterParametersRequest(input)
+// API operation DescribeDataShares for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataShares
+func (c *Redshift) DescribeDataShares(input *DescribeDataSharesInput) (*DescribeDataSharesOutput, error) {
+	req, out := c.DescribeDataSharesRequest(input)
 	return out, req.Send()
 }
 
-// DescribeDefaultClusterParametersWithContext is the same as DescribeDefaultClusterParameters with the addition of
+// DescribeDataSharesWithContext is the same as DescribeDataShares with the addition of
 // the ability to pass a context and additional request options.
 //
-// See DescribeDefaultClusterParameters for details on how to use this API operation.
+// See DescribeDataShares for details on how to use this API operation.
 //
 // The context must be non-nil and will be used for request cancellation. If
 // the context is nil a panic will occur. In the future the SDK may create
 // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 // for more information on using Contexts.
-func (c *Redshift) DescribeDefaultClusterParametersWithContext(ctx aws.Context, input *DescribeDefaultClusterParametersInput, opts ...request.Option) (*DescribeDefaultClusterParametersOutput, error) {
-	req, out := c.DescribeDefaultClusterParametersRequest(input)
+func (c *Redshift) DescribeDataSharesWithContext(ctx aws.Context, input *DescribeDataSharesInput, opts ...request.Option) (*DescribeDataSharesOutput, error) {
+	req, out := c.DescribeDataSharesRequest(input)
 	req.SetContext(ctx)
 	req.ApplyOptions(opts...)
 	return out, req.Send()
 }
 
-// DescribeDefaultClusterParametersPages iterates over the pages of a DescribeDefaultClusterParameters operation,
-// calling the "fn" function with the response data for each page. To stop
-// iterating, return false from the fn function.
+const opDescribeDataSharesForConsumer = "DescribeDataSharesForConsumer"
+
+// DescribeDataSharesForConsumerRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeDataSharesForConsumer operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
 //
-// See DescribeDefaultClusterParameters method for more information on how to use this operation.
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
 //
-// Note: This operation can generate multiple requests to a service.
+// See DescribeDataSharesForConsumer for more information on using the DescribeDataSharesForConsumer
+// API call, and error handling.
 //
-//    // Example iterating over at most 3 pages of a DescribeDefaultClusterParameters operation.
-//    pageNum := 0
-//    err := client.DescribeDefaultClusterParametersPages(params,
-//        func(page *redshift.DescribeDefaultClusterParametersOutput, lastPage bool) bool {
-//            pageNum++
-//            fmt.Println(page)
-//            return pageNum <= 3
-//        })
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
 //
-func (c *Redshift) DescribeDefaultClusterParametersPages(input *DescribeDefaultClusterParametersInput, fn func(*DescribeDefaultClusterParametersOutput, bool) bool) error {
-	return c.DescribeDefaultClusterParametersPagesWithContext(aws.BackgroundContext(), input, fn)
+//
+//    // Example sending a request using the DescribeDataSharesForConsumerRequest method.
+//    req, resp := client.DescribeDataSharesForConsumerRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataSharesForConsumer
+func (c *Redshift) DescribeDataSharesForConsumerRequest(input *DescribeDataSharesForConsumerInput) (req *request.Request, output *DescribeDataSharesForConsumerOutput) {
+	op := &request.Operation{
+		Name:       opDescribeDataSharesForConsumer,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &DescribeDataSharesForConsumerInput{}
+	}
+
+	output = &DescribeDataSharesForConsumerOutput{}
+	req = c.newRequest(op, input, output)
+	return
 }
 
-// DescribeDefaultClusterParametersPagesWithContext same as DescribeDefaultClusterParametersPages except
-// it takes a Context and allows setting request options on the pages.
+// DescribeDataSharesForConsumer API operation for Amazon Redshift.
 //
-// The context must be non-nil and will be used for request cancellation. If
-// the context is nil a panic will occur. In the future the SDK may create
-// sub-contexts for http.Requests. See https://golang.org/pkg/context/
-// for more information on using Contexts.
-func (c *Redshift) DescribeDefaultClusterParametersPagesWithContext(ctx aws.Context, input *DescribeDefaultClusterParametersInput, fn func(*DescribeDefaultClusterParametersOutput, bool) bool, opts ...request.Option) error {
-	p := request.Pagination{
-		NewRequest: func() (*request.Request, error) {
-			var inCpy *DescribeDefaultClusterParametersInput
-			if input != nil {
-				tmp := *input
+// Returns a list of datashares where the account identifier being called is
+// a consumer account identifier.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation DescribeDataSharesForConsumer for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidNamespaceFault "InvalidNamespaceFault"
+//   The namespace isn't valid because the namespace doesn't exist. Provide a
+//   valid namespace.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataSharesForConsumer
+func (c *Redshift) DescribeDataSharesForConsumer(input *DescribeDataSharesForConsumerInput) (*DescribeDataSharesForConsumerOutput, error) {
+	req, out := c.DescribeDataSharesForConsumerRequest(input)
+	return out, req.Send()
+}
+
+// DescribeDataSharesForConsumerWithContext is the same as DescribeDataSharesForConsumer with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeDataSharesForConsumer for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) DescribeDataSharesForConsumerWithContext(ctx aws.Context, input *DescribeDataSharesForConsumerInput, opts ...request.Option) (*DescribeDataSharesForConsumerOutput, error) {
+	req, out := c.DescribeDataSharesForConsumerRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
+const opDescribeDataSharesForProducer = "DescribeDataSharesForProducer"
+
+// DescribeDataSharesForProducerRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeDataSharesForProducer operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeDataSharesForProducer for more information on using the DescribeDataSharesForProducer
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the DescribeDataSharesForProducerRequest method.
+//    req, resp := client.DescribeDataSharesForProducerRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataSharesForProducer
+func (c *Redshift) DescribeDataSharesForProducerRequest(input *DescribeDataSharesForProducerInput) (req *request.Request, output *DescribeDataSharesForProducerOutput) {
+	op := &request.Operation{
+		Name:       opDescribeDataSharesForProducer,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &DescribeDataSharesForProducerInput{}
+	}
+
+	output = &DescribeDataSharesForProducerOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// DescribeDataSharesForProducer API operation for Amazon Redshift.
+//
+// Returns a list of datashares when the account identifier being called is
+// a producer account identifier.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation DescribeDataSharesForProducer for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidNamespaceFault "InvalidNamespaceFault"
+//   The namespace isn't valid because the namespace doesn't exist. Provide a
+//   valid namespace.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDataSharesForProducer
+func (c *Redshift) DescribeDataSharesForProducer(input *DescribeDataSharesForProducerInput) (*DescribeDataSharesForProducerOutput, error) {
+	req, out := c.DescribeDataSharesForProducerRequest(input)
+	return out, req.Send()
+}
+
+// DescribeDataSharesForProducerWithContext is the same as DescribeDataSharesForProducer with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeDataSharesForProducer for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) DescribeDataSharesForProducerWithContext(ctx aws.Context, input *DescribeDataSharesForProducerInput, opts ...request.Option) (*DescribeDataSharesForProducerOutput, error) {
+	req, out := c.DescribeDataSharesForProducerRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
+const opDescribeDefaultClusterParameters = "DescribeDefaultClusterParameters"
+
+// DescribeDefaultClusterParametersRequest generates a "aws/request.Request" representing the
+// client's request for the DescribeDefaultClusterParameters operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See DescribeDefaultClusterParameters for more information on using the DescribeDefaultClusterParameters
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the DescribeDefaultClusterParametersRequest method.
+//    req, resp := client.DescribeDefaultClusterParametersRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDefaultClusterParameters
+func (c *Redshift) DescribeDefaultClusterParametersRequest(input *DescribeDefaultClusterParametersInput) (req *request.Request, output *DescribeDefaultClusterParametersOutput) {
+	op := &request.Operation{
+		Name:       opDescribeDefaultClusterParameters,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+		Paginator: &request.Paginator{
+			InputTokens:     []string{"Marker"},
+			OutputTokens:    []string{"DefaultClusterParameters.Marker"},
+			LimitToken:      "MaxRecords",
+			TruncationToken: "",
+		},
+	}
+
+	if input == nil {
+		input = &DescribeDefaultClusterParametersInput{}
+	}
+
+	output = &DescribeDefaultClusterParametersOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// DescribeDefaultClusterParameters API operation for Amazon Redshift.
+//
+// Returns a list of parameter settings for the specified parameter group family.
+//
+// For more information about parameters and parameter groups, go to Amazon
+// Redshift Parameter Groups (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html)
+// in the Amazon Redshift Cluster Management Guide.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation DescribeDefaultClusterParameters for usage and error information.
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DescribeDefaultClusterParameters
+func (c *Redshift) DescribeDefaultClusterParameters(input *DescribeDefaultClusterParametersInput) (*DescribeDefaultClusterParametersOutput, error) {
+	req, out := c.DescribeDefaultClusterParametersRequest(input)
+	return out, req.Send()
+}
+
+// DescribeDefaultClusterParametersWithContext is the same as DescribeDefaultClusterParameters with the addition of
+// the ability to pass a context and additional request options.
+//
+// See DescribeDefaultClusterParameters for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) DescribeDefaultClusterParametersWithContext(ctx aws.Context, input *DescribeDefaultClusterParametersInput, opts ...request.Option) (*DescribeDefaultClusterParametersOutput, error) {
+	req, out := c.DescribeDefaultClusterParametersRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
+// DescribeDefaultClusterParametersPages iterates over the pages of a DescribeDefaultClusterParameters operation,
+// calling the "fn" function with the response data for each page. To stop
+// iterating, return false from the fn function.
+//
+// See DescribeDefaultClusterParameters method for more information on how to use this operation.
+//
+// Note: This operation can generate multiple requests to a service.
+//
+//    // Example iterating over at most 3 pages of a DescribeDefaultClusterParameters operation.
+//    pageNum := 0
+//    err := client.DescribeDefaultClusterParametersPages(params,
+//        func(page *redshift.DescribeDefaultClusterParametersOutput, lastPage bool) bool {
+//            pageNum++
+//            fmt.Println(page)
+//            return pageNum <= 3
+//        })
+//
+func (c *Redshift) DescribeDefaultClusterParametersPages(input *DescribeDefaultClusterParametersInput, fn func(*DescribeDefaultClusterParametersOutput, bool) bool) error {
+	return c.DescribeDefaultClusterParametersPagesWithContext(aws.BackgroundContext(), input, fn)
+}
+
+// DescribeDefaultClusterParametersPagesWithContext same as DescribeDefaultClusterParametersPages except
+// it takes a Context and allows setting request options on the pages.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) DescribeDefaultClusterParametersPagesWithContext(ctx aws.Context, input *DescribeDefaultClusterParametersInput, fn func(*DescribeDefaultClusterParametersOutput, bool) bool, opts ...request.Option) error {
+	p := request.Pagination{
+		NewRequest: func() (*request.Request, error) {
+			var inCpy *DescribeDefaultClusterParametersInput
+			if input != nil {
+				tmp := *input
 				inCpy = &tmp
 			}
 			req, _ := c.DescribeDefaultClusterParametersRequest(inCpy)
@@ -6200,7 +6690,7 @@ func (c *Redshift) DescribeHsmClientCertificatesRequest(input *DescribeHsmClient
 //
 // Returns information about the specified HSM client certificate. If no certificate
 // ID is specified, returns information about all the HSM certificates owned
-// by your account.
+// by your Amazon Web Services account.
 //
 // If you specify both tag keys and tag values in the same request, Amazon Redshift
 // returns all HSM client certificates that match any combination of the specified
@@ -6352,7 +6842,7 @@ func (c *Redshift) DescribeHsmConfigurationsRequest(input *DescribeHsmConfigurat
 //
 // Returns information about the specified Amazon Redshift HSM configuration.
 // If no configuration ID is specified, returns information about all the HSM
-// configurations owned by your account.
+// configurations owned by your Amazon Web Services account.
 //
 // If you specify both tag keys and tag values in the same request, Amazon Redshift
 // returns all HSM connections that match any combination of the specified keys
@@ -6733,12 +7223,12 @@ func (c *Redshift) DescribeOrderableClusterOptionsRequest(input *DescribeOrderab
 //
 // Returns a list of orderable cluster options. Before you create a new cluster
 // you can use this operation to find what options are available, such as the
-// EC2 Availability Zones (AZ) in the specific Region that you can specify,
-// and the node types you can request. The node types differ by available storage,
-// memory, CPU and price. With the cost involved you might want to obtain a
-// list of cluster options in the specific region and specify values when creating
-// a cluster. For more information about managing clusters, go to Amazon Redshift
-// Clusters (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)
+// EC2 Availability Zones (AZ) in the specific Amazon Web Services Region that
+// you can specify, and the node types you can request. The node types differ
+// by available storage, memory, CPU and price. With the cost involved you might
+// want to obtain a list of cluster options in the specific region and specify
+// values when creating a cluster. For more information about managing clusters,
+// go to Amazon Redshift Clusters (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-clusters.html)
 // in the Amazon Redshift Cluster Management Guide.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
@@ -7475,8 +7965,8 @@ func (c *Redshift) DescribeSnapshotCopyGrantsRequest(input *DescribeSnapshotCopy
 
 // DescribeSnapshotCopyGrants API operation for Amazon Redshift.
 //
-// Returns a list of snapshot copy grants owned by the account in the destination
-// region.
+// Returns a list of snapshot copy grants owned by the Amazon Web Services account
+// in the destination region.
 //
 // For more information about managing snapshot copy grants, go to Amazon Redshift
 // Database Encryption (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-db-encryption.html)
@@ -8414,132 +8904,215 @@ func (c *Redshift) DisableSnapshotCopyWithContext(ctx aws.Context, input *Disabl
 	return out, req.Send()
 }
 
-const opEnableLogging = "EnableLogging"
+const opDisassociateDataShareConsumer = "DisassociateDataShareConsumer"
 
-// EnableLoggingRequest generates a "aws/request.Request" representing the
-// client's request for the EnableLogging operation. The "output" return
+// DisassociateDataShareConsumerRequest generates a "aws/request.Request" representing the
+// client's request for the DisassociateDataShareConsumer operation. The "output" return
 // value will be populated with the request's response once the request completes
 // successfully.
 //
 // Use "Send" method on the returned Request to send the API call to the service.
 // the "output" return value is not valid until after Send returns without error.
 //
-// See EnableLogging for more information on using the EnableLogging
+// See DisassociateDataShareConsumer for more information on using the DisassociateDataShareConsumer
 // API call, and error handling.
 //
 // This method is useful when you want to inject custom logic or configuration
 // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 //
 //
-//    // Example sending a request using the EnableLoggingRequest method.
-//    req, resp := client.EnableLoggingRequest(params)
+//    // Example sending a request using the DisassociateDataShareConsumerRequest method.
+//    req, resp := client.DisassociateDataShareConsumerRequest(params)
 //
 //    err := req.Send()
 //    if err == nil { // resp is now filled
 //        fmt.Println(resp)
 //    }
 //
-// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableLogging
-func (c *Redshift) EnableLoggingRequest(input *EnableLoggingInput) (req *request.Request, output *LoggingStatus) {
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DisassociateDataShareConsumer
+func (c *Redshift) DisassociateDataShareConsumerRequest(input *DisassociateDataShareConsumerInput) (req *request.Request, output *DisassociateDataShareConsumerOutput) {
 	op := &request.Operation{
-		Name:       opEnableLogging,
+		Name:       opDisassociateDataShareConsumer,
 		HTTPMethod: "POST",
 		HTTPPath:   "/",
 	}
 
 	if input == nil {
-		input = &EnableLoggingInput{}
+		input = &DisassociateDataShareConsumerInput{}
 	}
 
-	output = &LoggingStatus{}
+	output = &DisassociateDataShareConsumerOutput{}
 	req = c.newRequest(op, input, output)
 	return
 }
 
-// EnableLogging API operation for Amazon Redshift.
+// DisassociateDataShareConsumer API operation for Amazon Redshift.
 //
-// Starts logging information, such as queries and connection attempts, for
-// the specified Amazon Redshift cluster.
+// From a consumer account, remove association for the specified datashare.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
 // the error.
 //
 // See the AWS API reference guide for Amazon Redshift's
-// API operation EnableLogging for usage and error information.
+// API operation DisassociateDataShareConsumer for usage and error information.
 //
 // Returned Error Codes:
-//   * ErrCodeClusterNotFoundFault "ClusterNotFound"
-//   The ClusterIdentifier parameter does not refer to an existing cluster.
-//
-//   * ErrCodeBucketNotFoundFault "BucketNotFoundFault"
-//   Could not find the specified S3 bucket.
-//
-//   * ErrCodeInsufficientS3BucketPolicyFault "InsufficientS3BucketPolicyFault"
-//   The cluster does not have read bucket or put object permissions on the S3
-//   bucket specified when enabling logging.
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
 //
-//   * ErrCodeInvalidS3KeyPrefixFault "InvalidS3KeyPrefixFault"
-//   The string specified for the logging S3 key prefix does not comply with the
-//   documented constraints.
-//
-//   * ErrCodeInvalidS3BucketNameFault "InvalidS3BucketNameFault"
-//   The S3 bucket name is invalid. For more information about naming rules, go
-//   to Bucket Restrictions and Limitations (https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html)
-//   in the Amazon Simple Storage Service (S3) Developer Guide.
+//   * ErrCodeInvalidNamespaceFault "InvalidNamespaceFault"
+//   The namespace isn't valid because the namespace doesn't exist. Provide a
+//   valid namespace.
 //
-//   * ErrCodeInvalidClusterStateFault "InvalidClusterState"
-//   The specified cluster is not in the available state.
-//
-// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableLogging
-func (c *Redshift) EnableLogging(input *EnableLoggingInput) (*LoggingStatus, error) {
-	req, out := c.EnableLoggingRequest(input)
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/DisassociateDataShareConsumer
+func (c *Redshift) DisassociateDataShareConsumer(input *DisassociateDataShareConsumerInput) (*DisassociateDataShareConsumerOutput, error) {
+	req, out := c.DisassociateDataShareConsumerRequest(input)
 	return out, req.Send()
 }
 
-// EnableLoggingWithContext is the same as EnableLogging with the addition of
+// DisassociateDataShareConsumerWithContext is the same as DisassociateDataShareConsumer with the addition of
 // the ability to pass a context and additional request options.
 //
-// See EnableLogging for details on how to use this API operation.
+// See DisassociateDataShareConsumer for details on how to use this API operation.
 //
 // The context must be non-nil and will be used for request cancellation. If
 // the context is nil a panic will occur. In the future the SDK may create
 // sub-contexts for http.Requests. See https://golang.org/pkg/context/
 // for more information on using Contexts.
-func (c *Redshift) EnableLoggingWithContext(ctx aws.Context, input *EnableLoggingInput, opts ...request.Option) (*LoggingStatus, error) {
-	req, out := c.EnableLoggingRequest(input)
+func (c *Redshift) DisassociateDataShareConsumerWithContext(ctx aws.Context, input *DisassociateDataShareConsumerInput, opts ...request.Option) (*DisassociateDataShareConsumerOutput, error) {
+	req, out := c.DisassociateDataShareConsumerRequest(input)
 	req.SetContext(ctx)
 	req.ApplyOptions(opts...)
 	return out, req.Send()
 }
 
-const opEnableSnapshotCopy = "EnableSnapshotCopy"
+const opEnableLogging = "EnableLogging"
 
-// EnableSnapshotCopyRequest generates a "aws/request.Request" representing the
-// client's request for the EnableSnapshotCopy operation. The "output" return
+// EnableLoggingRequest generates a "aws/request.Request" representing the
+// client's request for the EnableLogging operation. The "output" return
 // value will be populated with the request's response once the request completes
 // successfully.
 //
 // Use "Send" method on the returned Request to send the API call to the service.
 // the "output" return value is not valid until after Send returns without error.
 //
-// See EnableSnapshotCopy for more information on using the EnableSnapshotCopy
+// See EnableLogging for more information on using the EnableLogging
 // API call, and error handling.
 //
 // This method is useful when you want to inject custom logic or configuration
 // into the SDK's request lifecycle. Such as custom headers, or retry logic.
 //
 //
-//    // Example sending a request using the EnableSnapshotCopyRequest method.
-//    req, resp := client.EnableSnapshotCopyRequest(params)
+//    // Example sending a request using the EnableLoggingRequest method.
+//    req, resp := client.EnableLoggingRequest(params)
 //
 //    err := req.Send()
 //    if err == nil { // resp is now filled
 //        fmt.Println(resp)
 //    }
 //
-// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableSnapshotCopy
-func (c *Redshift) EnableSnapshotCopyRequest(input *EnableSnapshotCopyInput) (req *request.Request, output *EnableSnapshotCopyOutput) {
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableLogging
+func (c *Redshift) EnableLoggingRequest(input *EnableLoggingInput) (req *request.Request, output *LoggingStatus) {
+	op := &request.Operation{
+		Name:       opEnableLogging,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &EnableLoggingInput{}
+	}
+
+	output = &LoggingStatus{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// EnableLogging API operation for Amazon Redshift.
+//
+// Starts logging information, such as queries and connection attempts, for
+// the specified Amazon Redshift cluster.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation EnableLogging for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeClusterNotFoundFault "ClusterNotFound"
+//   The ClusterIdentifier parameter does not refer to an existing cluster.
+//
+//   * ErrCodeBucketNotFoundFault "BucketNotFoundFault"
+//   Could not find the specified S3 bucket.
+//
+//   * ErrCodeInsufficientS3BucketPolicyFault "InsufficientS3BucketPolicyFault"
+//   The cluster does not have read bucket or put object permissions on the S3
+//   bucket specified when enabling logging.
+//
+//   * ErrCodeInvalidS3KeyPrefixFault "InvalidS3KeyPrefixFault"
+//   The string specified for the logging S3 key prefix does not comply with the
+//   documented constraints.
+//
+//   * ErrCodeInvalidS3BucketNameFault "InvalidS3BucketNameFault"
+//   The S3 bucket name is invalid. For more information about naming rules, go
+//   to Bucket Restrictions and Limitations (https://docs.aws.amazon.com/AmazonS3/latest/dev/BucketRestrictions.html)
+//   in the Amazon Simple Storage Service (S3) Developer Guide.
+//
+//   * ErrCodeInvalidClusterStateFault "InvalidClusterState"
+//   The specified cluster is not in the available state.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableLogging
+func (c *Redshift) EnableLogging(input *EnableLoggingInput) (*LoggingStatus, error) {
+	req, out := c.EnableLoggingRequest(input)
+	return out, req.Send()
+}
+
+// EnableLoggingWithContext is the same as EnableLogging with the addition of
+// the ability to pass a context and additional request options.
+//
+// See EnableLogging for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) EnableLoggingWithContext(ctx aws.Context, input *EnableLoggingInput, opts ...request.Option) (*LoggingStatus, error) {
+	req, out := c.EnableLoggingRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
+const opEnableSnapshotCopy = "EnableSnapshotCopy"
+
+// EnableSnapshotCopyRequest generates a "aws/request.Request" representing the
+// client's request for the EnableSnapshotCopy operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See EnableSnapshotCopy for more information on using the EnableSnapshotCopy
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the EnableSnapshotCopyRequest method.
+//    req, resp := client.EnableSnapshotCopyRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/EnableSnapshotCopy
+func (c *Redshift) EnableSnapshotCopyRequest(input *EnableSnapshotCopyInput) (req *request.Request, output *EnableSnapshotCopyOutput) {
 	op := &request.Operation{
 		Name:       opEnableSnapshotCopy,
 		HTTPMethod: "POST",
@@ -9036,7 +9609,7 @@ func (c *Redshift) ModifyAuthenticationProfileRequest(input *ModifyAuthenticatio
 //   * ErrCodeInvalidAuthenticationProfileRequestFault "InvalidAuthenticationProfileRequestFault"
 //   The authentication profile request is not valid. The profile name can't be
 //   null or empty. The authentication profile API operation must be available
-//   in the Region.
+//   in the Amazon Web Services Region.
 //
 // See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/ModifyAuthenticationProfile
 func (c *Redshift) ModifyAuthenticationProfile(input *ModifyAuthenticationProfileInput) (*ModifyAuthenticationProfileOutput, error) {
@@ -9509,7 +10082,8 @@ func (c *Redshift) ModifyClusterParameterGroupRequest(input *ModifyClusterParame
 
 // ModifyClusterParameterGroup API operation for Amazon Redshift.
 //
-// Modifies the parameters of a parameter group.
+// Modifies the parameters of a parameter group. For the parameters parameter,
+// it can't contain ASCII characters.
 //
 // For more information about parameters and parameter groups, go to Amazon
 // Redshift Parameter Groups (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-parameter-groups.html)
@@ -10172,13 +10746,14 @@ func (c *Redshift) ModifySnapshotCopyRetentionPeriodRequest(input *ModifySnapsho
 
 // ModifySnapshotCopyRetentionPeriod API operation for Amazon Redshift.
 //
-// Modifies the number of days to retain snapshots in the destination Region
-// after they are copied from the source Region. By default, this operation
-// only changes the retention period of copied automated snapshots. The retention
-// periods for both new and existing copied automated snapshots are updated
-// with the new retention period. You can set the manual option to change only
-// the retention periods of copied manual snapshots. If you set this option,
-// only newly copied manual snapshots have the new retention period.
+// Modifies the number of days to retain snapshots in the destination Amazon
+// Web Services Region after they are copied from the source Amazon Web Services
+// Region. By default, this operation only changes the retention period of copied
+// automated snapshots. The retention periods for both new and existing copied
+// automated snapshots are updated with the new retention period. You can set
+// the manual option to change only the retention periods of copied manual snapshots.
+// If you set this option, only newly copied manual snapshots have the new retention
+// period.
 //
 // Returns awserr.Error for service API and SDK errors. Use runtime type assertions
 // with awserr.Error's Code and Message methods to get detailed information about
@@ -10667,6 +11242,85 @@ func (c *Redshift) RebootClusterWithContext(ctx aws.Context, input *RebootCluste
 	return out, req.Send()
 }
 
+const opRejectDataShare = "RejectDataShare"
+
+// RejectDataShareRequest generates a "aws/request.Request" representing the
+// client's request for the RejectDataShare operation. The "output" return
+// value will be populated with the request's response once the request completes
+// successfully.
+//
+// Use "Send" method on the returned Request to send the API call to the service.
+// the "output" return value is not valid until after Send returns without error.
+//
+// See RejectDataShare for more information on using the RejectDataShare
+// API call, and error handling.
+//
+// This method is useful when you want to inject custom logic or configuration
+// into the SDK's request lifecycle. Such as custom headers, or retry logic.
+//
+//
+//    // Example sending a request using the RejectDataShareRequest method.
+//    req, resp := client.RejectDataShareRequest(params)
+//
+//    err := req.Send()
+//    if err == nil { // resp is now filled
+//        fmt.Println(resp)
+//    }
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/RejectDataShare
+func (c *Redshift) RejectDataShareRequest(input *RejectDataShareInput) (req *request.Request, output *RejectDataShareOutput) {
+	op := &request.Operation{
+		Name:       opRejectDataShare,
+		HTTPMethod: "POST",
+		HTTPPath:   "/",
+	}
+
+	if input == nil {
+		input = &RejectDataShareInput{}
+	}
+
+	output = &RejectDataShareOutput{}
+	req = c.newRequest(op, input, output)
+	return
+}
+
+// RejectDataShare API operation for Amazon Redshift.
+//
+// From the consumer account, rejects the specified datashare.
+//
+// Returns awserr.Error for service API and SDK errors. Use runtime type assertions
+// with awserr.Error's Code and Message methods to get detailed information about
+// the error.
+//
+// See the AWS API reference guide for Amazon Redshift's
+// API operation RejectDataShare for usage and error information.
+//
+// Returned Error Codes:
+//   * ErrCodeInvalidDataShareFault "InvalidDataShareFault"
+//   There is an error with the datashare.
+//
+// See also, https://docs.aws.amazon.com/goto/WebAPI/redshift-2012-12-01/RejectDataShare
+func (c *Redshift) RejectDataShare(input *RejectDataShareInput) (*RejectDataShareOutput, error) {
+	req, out := c.RejectDataShareRequest(input)
+	return out, req.Send()
+}
+
+// RejectDataShareWithContext is the same as RejectDataShare with the addition of
+// the ability to pass a context and additional request options.
+//
+// See RejectDataShare for details on how to use this API operation.
+//
+// The context must be non-nil and will be used for request cancellation. If
+// the context is nil a panic will occur. In the future the SDK may create
+// sub-contexts for http.Requests. See https://golang.org/pkg/context/
+// for more information on using Contexts.
+func (c *Redshift) RejectDataShareWithContext(ctx aws.Context, input *RejectDataShareInput, opts ...request.Option) (*RejectDataShareOutput, error) {
+	req, out := c.RejectDataShareRequest(input)
+	req.SetContext(ctx)
+	req.ApplyOptions(opts...)
+	return out, req.Send()
+}
+
 const opResetClusterParameterGroup = "ResetClusterParameterGroup"
 
 // ResetClusterParameterGroupRequest generates a "aws/request.Request" representing the
@@ -11477,9 +12131,9 @@ func (c *Redshift) RevokeSnapshotAccessRequest(input *RevokeSnapshotAccessInput)
 
 // RevokeSnapshotAccess API operation for Amazon Redshift.
 //
-// Removes the ability of the specified account to restore the specified snapshot.
-// If the account is currently restoring the snapshot, the restore will run
-// to completion.
+// Removes the ability of the specified Amazon Web Services account to restore
+// the specified snapshot. If the account is currently restoring the snapshot,
+// the restore will run to completion.
 //
 // For more information about working with snapshots, go to Amazon Redshift
 // Snapshots (https://docs.aws.amazon.com/redshift/latest/mgmt/working-with-snapshots.html)
@@ -11808,7 +12462,7 @@ func (s *AccountAttribute) SetAttributeValues(v []*AttributeValueTarget) *Accoun
 	return s
 }
 
-// Describes an account authorized to restore a snapshot.
+// Describes an Amazon Web Services account authorized to restore a snapshot.
 type AccountWithRestoreAccess struct {
 	_ struct{} `type:"structure"`
 
@@ -11816,7 +12470,8 @@ type AccountWithRestoreAccess struct {
 	// a snapshot. For Amazon Web Services Support, the identifier is amazon-redshift-support.
 	AccountAlias *string `type:"string"`
 
-	// The identifier of an account authorized to restore a snapshot.
+	// The identifier of an Amazon Web Services account authorized to restore a
+	// snapshot.
 	AccountId *string `type:"string"`
 }
 
@@ -11845,7 +12500,7 @@ func (s *AccountWithRestoreAccess) SetAccountId(v string) *AccountWithRestoreAcc
 type AddPartnerInput struct {
 	_ struct{} `type:"structure"`
 
-	// The Region ID that owns the cluster.
+	// The Amazon Web Services account ID that owns the cluster.
 	//
 	// AccountId is a required field
 	AccountId *string `min:"12" type:"string" required:"true"`
@@ -11964,8 +12619,8 @@ type AquaConfiguration struct {
 	// The value represents how the cluster is configured to use AQUA. Possible
 	// values include the following.
 	//
-	//    * enabled - Use AQUA if it is available for the current Region and Amazon
-	//    Redshift node type.
+	//    * enabled - Use AQUA if it is available for the current Amazon Web Services
+	//    Region and Amazon Redshift node type.
 	//
 	//    * disabled - Don't use AQUA.
 	//
@@ -12005,6 +12660,120 @@ func (s *AquaConfiguration) SetAquaStatus(v string) *AquaConfiguration {
 	return s
 }
 
+type AssociateDataShareConsumerInput struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare is associated with the entire
+	// account.
+	AssociateEntireAccount *bool `type:"boolean"`
+
+	// The Amazon Resource Name (ARN) of the consumer that is associated with the
+	// datashare.
+	ConsumerArn *string `type:"string"`
+
+	// The Amazon Resource Name (ARN) of the datashare that the consumer is to use
+	// with the account or the namespace.
+	//
+	// DataShareArn is a required field
+	DataShareArn *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s AssociateDataShareConsumerInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateDataShareConsumerInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AssociateDataShareConsumerInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "AssociateDataShareConsumerInput"}
+	if s.DataShareArn == nil {
+		invalidParams.Add(request.NewErrParamRequired("DataShareArn"))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAssociateEntireAccount sets the AssociateEntireAccount field's value.
+func (s *AssociateDataShareConsumerInput) SetAssociateEntireAccount(v bool) *AssociateDataShareConsumerInput {
+	s.AssociateEntireAccount = &v
+	return s
+}
+
+// SetConsumerArn sets the ConsumerArn field's value.
+func (s *AssociateDataShareConsumerInput) SetConsumerArn(v string) *AssociateDataShareConsumerInput {
+	s.ConsumerArn = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *AssociateDataShareConsumerInput) SetDataShareArn(v string) *AssociateDataShareConsumerInput {
+	s.DataShareArn = &v
+	return s
+}
+
+type AssociateDataShareConsumerOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
+
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
+
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
+
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s AssociateDataShareConsumerOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AssociateDataShareConsumerOutput) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *AssociateDataShareConsumerOutput) SetAllowPubliclyAccessibleConsumers(v bool) *AssociateDataShareConsumerOutput {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *AssociateDataShareConsumerOutput) SetDataShareArn(v string) *AssociateDataShareConsumerOutput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *AssociateDataShareConsumerOutput) SetDataShareAssociations(v []*DataShareAssociation) *AssociateDataShareConsumerOutput {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *AssociateDataShareConsumerOutput) SetProducerArn(v string) *AssociateDataShareConsumerOutput {
+	s.ProducerArn = &v
+	return s
+}
+
 // Describes an attribute value.
 type AttributeValueTarget struct {
 	_ struct{} `type:"structure"`
@@ -12077,8 +12846,9 @@ type AuthorizeClusterSecurityGroupIngressInput struct {
 	// The EC2 security group to be added the Amazon Redshift security group.
 	EC2SecurityGroupName *string `type:"string"`
 
-	// The account number of the owner of the security group specified by the EC2SecurityGroupName
-	// parameter. The Amazon Web Services Access Key ID is not an acceptable value.
+	// The Amazon Web Services account number of the owner of the security group
+	// specified by the EC2SecurityGroupName parameter. The Amazon Web Services
+	// Access Key ID is not an acceptable value.
 	//
 	// Example: 111122223333
 	EC2SecurityGroupOwnerId *string `type:"string"`
@@ -12154,36 +12924,40 @@ func (s *AuthorizeClusterSecurityGroupIngressOutput) SetClusterSecurityGroup(v *
 	return s
 }
 
-type AuthorizeEndpointAccessInput struct {
+type AuthorizeDataShareInput struct {
 	_ struct{} `type:"structure"`
 
-	// The account ID to grant access to.
+	// The identifier of the data consumer that is authorized to access the datashare.
+	// This identifier is an AWS account ID.
 	//
-	// Account is a required field
-	Account *string `type:"string" required:"true"`
+	// ConsumerIdentifier is a required field
+	ConsumerIdentifier *string `type:"string" required:"true"`
 
-	// The cluster identifier of the cluster to grant access to.
-	ClusterIdentifier *string `type:"string"`
-
-	// The virtual private cloud (VPC) identifiers to grant access to.
-	VpcIds []*string `locationNameList:"VpcIdentifier" type:"list"`
+	// The Amazon Resource Name (ARN) of the datashare that producers are to authorize
+	// sharing for.
+	//
+	// DataShareArn is a required field
+	DataShareArn *string `type:"string" required:"true"`
 }
 
 // String returns the string representation
-func (s AuthorizeEndpointAccessInput) String() string {
+func (s AuthorizeDataShareInput) String() string {
 	return awsutil.Prettify(s)
 }
 
 // GoString returns the string representation
-func (s AuthorizeEndpointAccessInput) GoString() string {
+func (s AuthorizeDataShareInput) GoString() string {
 	return s.String()
 }
 
 // Validate inspects the fields of the type to determine if they are valid.
-func (s *AuthorizeEndpointAccessInput) Validate() error {
-	invalidParams := request.ErrInvalidParams{Context: "AuthorizeEndpointAccessInput"}
-	if s.Account == nil {
-		invalidParams.Add(request.NewErrParamRequired("Account"))
+func (s *AuthorizeDataShareInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "AuthorizeDataShareInput"}
+	if s.ConsumerIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConsumerIdentifier"))
+	}
+	if s.DataShareArn == nil {
+		invalidParams.Add(request.NewErrParamRequired("DataShareArn"))
 	}
 
 	if invalidParams.Len() > 0 {
@@ -12192,41 +12966,146 @@ func (s *AuthorizeEndpointAccessInput) Validate() error {
 	return nil
 }
 
-// SetAccount sets the Account field's value.
-func (s *AuthorizeEndpointAccessInput) SetAccount(v string) *AuthorizeEndpointAccessInput {
-	s.Account = &v
-	return s
-}
-
-// SetClusterIdentifier sets the ClusterIdentifier field's value.
-func (s *AuthorizeEndpointAccessInput) SetClusterIdentifier(v string) *AuthorizeEndpointAccessInput {
-	s.ClusterIdentifier = &v
+// SetConsumerIdentifier sets the ConsumerIdentifier field's value.
+func (s *AuthorizeDataShareInput) SetConsumerIdentifier(v string) *AuthorizeDataShareInput {
+	s.ConsumerIdentifier = &v
 	return s
 }
 
-// SetVpcIds sets the VpcIds field's value.
-func (s *AuthorizeEndpointAccessInput) SetVpcIds(v []*string) *AuthorizeEndpointAccessInput {
-	s.VpcIds = v
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *AuthorizeDataShareInput) SetDataShareArn(v string) *AuthorizeDataShareInput {
+	s.DataShareArn = &v
 	return s
 }
 
-// Describes an endpoint authorization for authorizing Redshift-managed VPC
-// endpoint access to a cluster across accounts.
-type AuthorizeEndpointAccessOutput struct {
+type AuthorizeDataShareOutput struct {
 	_ struct{} `type:"structure"`
 
-	// Indicates whether all VPCs in the grantee account are allowed access to the
-	// cluster.
-	AllowedAllVPCs *bool `type:"boolean"`
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
 
-	// The VPCs allowed access to the cluster.
-	AllowedVPCs []*string `locationNameList:"VpcIdentifier" type:"list"`
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
 
-	// The time (UTC) when the authorization was created.
-	AuthorizeTime *time.Time `type:"timestamp"`
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
 
-	// The cluster identifier.
-	ClusterIdentifier *string `type:"string"`
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s AuthorizeDataShareOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AuthorizeDataShareOutput) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *AuthorizeDataShareOutput) SetAllowPubliclyAccessibleConsumers(v bool) *AuthorizeDataShareOutput {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *AuthorizeDataShareOutput) SetDataShareArn(v string) *AuthorizeDataShareOutput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *AuthorizeDataShareOutput) SetDataShareAssociations(v []*DataShareAssociation) *AuthorizeDataShareOutput {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *AuthorizeDataShareOutput) SetProducerArn(v string) *AuthorizeDataShareOutput {
+	s.ProducerArn = &v
+	return s
+}
+
+type AuthorizeEndpointAccessInput struct {
+	_ struct{} `type:"structure"`
+
+	// The Amazon Web Services account ID to grant access to.
+	//
+	// Account is a required field
+	Account *string `type:"string" required:"true"`
+
+	// The cluster identifier of the cluster to grant access to.
+	ClusterIdentifier *string `type:"string"`
+
+	// The virtual private cloud (VPC) identifiers to grant access to.
+	VpcIds []*string `locationNameList:"VpcIdentifier" type:"list"`
+}
+
+// String returns the string representation
+func (s AuthorizeEndpointAccessInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s AuthorizeEndpointAccessInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *AuthorizeEndpointAccessInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "AuthorizeEndpointAccessInput"}
+	if s.Account == nil {
+		invalidParams.Add(request.NewErrParamRequired("Account"))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetAccount sets the Account field's value.
+func (s *AuthorizeEndpointAccessInput) SetAccount(v string) *AuthorizeEndpointAccessInput {
+	s.Account = &v
+	return s
+}
+
+// SetClusterIdentifier sets the ClusterIdentifier field's value.
+func (s *AuthorizeEndpointAccessInput) SetClusterIdentifier(v string) *AuthorizeEndpointAccessInput {
+	s.ClusterIdentifier = &v
+	return s
+}
+
+// SetVpcIds sets the VpcIds field's value.
+func (s *AuthorizeEndpointAccessInput) SetVpcIds(v []*string) *AuthorizeEndpointAccessInput {
+	s.VpcIds = v
+	return s
+}
+
+// Describes an endpoint authorization for authorizing Redshift-managed VPC
+// endpoint access to a cluster across Amazon Web Services accounts.
+type AuthorizeEndpointAccessOutput struct {
+	_ struct{} `type:"structure"`
+
+	// Indicates whether all VPCs in the grantee account are allowed access to the
+	// cluster.
+	AllowedAllVPCs *bool `type:"boolean"`
+
+	// The VPCs allowed access to the cluster.
+	AllowedVPCs []*string `locationNameList:"VpcIdentifier" type:"list"`
+
+	// The time (UTC) when the authorization was created.
+	AuthorizeTime *time.Time `type:"timestamp"`
+
+	// The cluster identifier.
+	ClusterIdentifier *string `type:"string"`
 
 	// The status of the cluster.
 	ClusterStatus *string `type:"string"`
@@ -12234,10 +13113,10 @@ type AuthorizeEndpointAccessOutput struct {
 	// The number of Redshift-managed VPC endpoints created for the authorization.
 	EndpointCount *int64 `type:"integer"`
 
-	// The account ID of the grantee of the cluster.
+	// The Amazon Web Services account ID of the grantee of the cluster.
 	Grantee *string `type:"string"`
 
-	// The account ID of the cluster owner.
+	// The Amazon Web Services account ID of the cluster owner.
 	Grantor *string `type:"string"`
 
 	// The status of the authorization action.
@@ -12311,7 +13190,8 @@ func (s *AuthorizeEndpointAccessOutput) SetStatus(v string) *AuthorizeEndpointAc
 type AuthorizeSnapshotAccessInput struct {
 	_ struct{} `type:"structure"`
 
-	// The identifier of the account authorized to restore the specified snapshot.
+	// The identifier of the Amazon Web Services account authorized to restore the
+	// specified snapshot.
 	//
 	// To share a snapshot with Amazon Web Services Support, specify amazon-redshift-support.
 	//
@@ -14071,7 +14951,8 @@ type CopyClusterSnapshotInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique for the account that is making the request.
+	//    * Must be unique for the Amazon Web Services account that is making the
+	//    request.
 	//
 	// TargetSnapshotIdentifier is a required field
 	TargetSnapshotIdentifier *string `type:"string" required:"true"`
@@ -14254,8 +15135,8 @@ type CreateClusterInput struct {
 	// The value represents how the cluster is configured to use AQUA (Advanced
 	// Query Accelerator) when it is created. Possible values include the following.
 	//
-	//    * enabled - Use AQUA if it is available for the current Region and Amazon
-	//    Redshift node type.
+	//    * enabled - Use AQUA if it is available for the current Amazon Web Services
+	//    Region and Amazon Redshift node type.
 	//
 	//    * disabled - Don't use AQUA.
 	//
@@ -14306,7 +15187,7 @@ type CreateClusterInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique for all clusters within an account.
+	//    * Must be unique for all clusters within an Amazon Web Services account.
 	//
 	// Example: myexamplecluster
 	//
@@ -14799,10 +15680,10 @@ type CreateClusterParameterGroupInput struct {
 	//
 	// To get a list of valid parameter group family names, you can call DescribeClusterParameterGroups.
 	// By default, Amazon Redshift returns a list of all the parameter groups that
-	// are owned by your account, including the default parameter groups for each
-	// Amazon Redshift engine version. The parameter group family names associated
-	// with the default parameter groups provide you the valid values. For example,
-	// a valid family name is "redshift-1.0".
+	// are owned by your Amazon Web Services account, including the default parameter
+	// groups for each Amazon Redshift engine version. The parameter group family
+	// names associated with the default parameter groups provide you the valid
+	// values. For example, a valid family name is "redshift-1.0".
 	//
 	// ParameterGroupFamily is a required field
 	ParameterGroupFamily *string `type:"string" required:"true"`
@@ -14817,7 +15698,7 @@ type CreateClusterParameterGroupInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique withing your account.
+	//    * Must be unique withing your Amazon Web Services account.
 	//
 	// This value is stored as a lower-case string.
 	//
@@ -14916,7 +15797,8 @@ type CreateClusterSecurityGroupInput struct {
 	//
 	//    * Must not be "Default".
 	//
-	//    * Must be unique for all security groups that are created by your account.
+	//    * Must be unique for all security groups that are created by your Amazon
+	//    Web Services account.
 	//
 	// Example: examplesecuritygroup
 	//
@@ -15016,7 +15898,7 @@ type CreateClusterSnapshotInput struct {
 	ManualSnapshotRetentionPeriod *int64 `type:"integer"`
 
 	// A unique identifier for the snapshot that you are requesting. This identifier
-	// must be unique for all snapshots within the account.
+	// must be unique for all snapshots within the Amazon Web Services account.
 	//
 	// Constraints:
 	//
@@ -15122,7 +16004,8 @@ type CreateClusterSubnetGroupInput struct {
 	//
 	//    * Must not be "Default".
 	//
-	//    * Must be unique for all subnet groups that are created by your account.
+	//    * Must be unique for all subnet groups that are created by your Amazon
+	//    Web Services account.
 	//
 	// Example: examplesubnetgroup
 	//
@@ -15235,8 +16118,8 @@ type CreateEndpointAccessInput struct {
 	// EndpointName is a required field
 	EndpointName *string `type:"string" required:"true"`
 
-	// The account ID of the owner of the cluster. This is only required if the
-	// cluster is in another account.
+	// The Amazon Web Services account ID of the owner of the cluster. This is only
+	// required if the cluster is in another Amazon Web Services account.
 	ResourceOwner *string `type:"string"`
 
 	// The subnet group from which Amazon Redshift chooses the subnet to deploy
@@ -15328,7 +16211,7 @@ type CreateEndpointAccessOutput struct {
 	// The port number on which the cluster accepts incoming connections.
 	Port *int64 `type:"integer"`
 
-	// The account ID of the owner of the cluster.
+	// The Amazon Web Services account ID of the owner of the cluster.
 	ResourceOwner *string `type:"string"`
 
 	// The subnet group name where Amazon Redshift chooses to deploy the endpoint.
@@ -15422,7 +16305,7 @@ type CreateEventSubscriptionInput struct {
 	// Specifies the Amazon Redshift event categories to be published by the event
 	// notification subscription.
 	//
-	// Values: configuration, management, monitoring, security
+	// Values: configuration, management, monitoring, security, pending
 	EventCategories []*string `locationNameList:"EventCategory" type:"list"`
 
 	// Specifies the Amazon Redshift event severity to be published by the event
@@ -15452,8 +16335,8 @@ type CreateEventSubscriptionInput struct {
 	// The type of source that will be generating the events. For example, if you
 	// want to be notified of events generated by a cluster, you would set this
 	// parameter to cluster. If this value is not specified, events are returned
-	// for all Amazon Redshift objects in your account. You must specify a source
-	// type in order to specify source IDs.
+	// for all Amazon Redshift objects in your Amazon Web Services account. You
+	// must specify a source type in order to specify source IDs.
 	//
 	// Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot,
 	// and scheduled-action.
@@ -16045,7 +16928,7 @@ type CreateSnapshotCopyGrantInput struct {
 	KmsKeyId *string `type:"string"`
 
 	// The name of the snapshot copy grant. This name must be unique in the region
-	// for the account.
+	// for the Amazon Web Services account.
 	//
 	// Constraints:
 	//
@@ -16057,7 +16940,7 @@ type CreateSnapshotCopyGrantInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique for all clusters within an account.
+	//    * Must be unique for all clusters within an Amazon Web Services account.
 	//
 	// SnapshotCopyGrantName is a required field
 	SnapshotCopyGrantName *string `type:"string" required:"true"`
@@ -16565,6 +17448,113 @@ func (s *CreateUsageLimitOutput) SetUsageLimitId(v string) *CreateUsageLimitOutp
 	return s
 }
 
+type DataShare struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
+
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
+
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
+
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DataShare) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DataShare) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *DataShare) SetAllowPubliclyAccessibleConsumers(v bool) *DataShare {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DataShare) SetDataShareArn(v string) *DataShare {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *DataShare) SetDataShareAssociations(v []*DataShareAssociation) *DataShare {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *DataShare) SetProducerArn(v string) *DataShare {
+	s.ProducerArn = &v
+	return s
+}
+
+// The association of a datashare from a producer account with a data consumer.
+type DataShareAssociation struct {
+	_ struct{} `type:"structure"`
+
+	// The name of the consumer accounts that have an association with a producer
+	// datashare.
+	ConsumerIdentifier *string `type:"string"`
+
+	// The creation date of the datashare that is associated.
+	CreatedDate *time.Time `type:"timestamp"`
+
+	// The status of the datashare that is associated.
+	Status *string `type:"string" enum:"DataShareStatus"`
+
+	// The status change data of the datashare that is associated.
+	StatusChangeDate *time.Time `type:"timestamp"`
+}
+
+// String returns the string representation
+func (s DataShareAssociation) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DataShareAssociation) GoString() string {
+	return s.String()
+}
+
+// SetConsumerIdentifier sets the ConsumerIdentifier field's value.
+func (s *DataShareAssociation) SetConsumerIdentifier(v string) *DataShareAssociation {
+	s.ConsumerIdentifier = &v
+	return s
+}
+
+// SetCreatedDate sets the CreatedDate field's value.
+func (s *DataShareAssociation) SetCreatedDate(v time.Time) *DataShareAssociation {
+	s.CreatedDate = &v
+	return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *DataShareAssociation) SetStatus(v string) *DataShareAssociation {
+	s.Status = &v
+	return s
+}
+
+// SetStatusChangeDate sets the StatusChangeDate field's value.
+func (s *DataShareAssociation) SetStatusChangeDate(v time.Time) *DataShareAssociation {
+	s.StatusChangeDate = &v
+	return s
+}
+
 // Describes the status of a cluster while it is in the process of resizing
 // with an incremental resize.
 type DataTransferProgress struct {
@@ -16636,6 +17626,114 @@ func (s *DataTransferProgress) SetTotalDataInMegaBytes(v int64) *DataTransferPro
 	return s
 }
 
+type DeauthorizeDataShareInput struct {
+	_ struct{} `type:"structure"`
+
+	// The identifier of the data consumer that is to have authorization removed
+	// from the datashare. This identifier is an AWS account ID.
+	//
+	// ConsumerIdentifier is a required field
+	ConsumerIdentifier *string `type:"string" required:"true"`
+
+	// The Amazon Resource Name (ARN) of the datashare to remove authorization from.
+	//
+	// DataShareArn is a required field
+	DataShareArn *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s DeauthorizeDataShareInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeauthorizeDataShareInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DeauthorizeDataShareInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "DeauthorizeDataShareInput"}
+	if s.ConsumerIdentifier == nil {
+		invalidParams.Add(request.NewErrParamRequired("ConsumerIdentifier"))
+	}
+	if s.DataShareArn == nil {
+		invalidParams.Add(request.NewErrParamRequired("DataShareArn"))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetConsumerIdentifier sets the ConsumerIdentifier field's value.
+func (s *DeauthorizeDataShareInput) SetConsumerIdentifier(v string) *DeauthorizeDataShareInput {
+	s.ConsumerIdentifier = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DeauthorizeDataShareInput) SetDataShareArn(v string) *DeauthorizeDataShareInput {
+	s.DataShareArn = &v
+	return s
+}
+
+type DeauthorizeDataShareOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
+
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
+
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
+
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DeauthorizeDataShareOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DeauthorizeDataShareOutput) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *DeauthorizeDataShareOutput) SetAllowPubliclyAccessibleConsumers(v bool) *DeauthorizeDataShareOutput {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DeauthorizeDataShareOutput) SetDataShareArn(v string) *DeauthorizeDataShareOutput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *DeauthorizeDataShareOutput) SetDataShareAssociations(v []*DataShareAssociation) *DeauthorizeDataShareOutput {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *DeauthorizeDataShareOutput) SetProducerArn(v string) *DeauthorizeDataShareOutput {
+	s.ProducerArn = &v
+	return s
+}
+
 // Describes the default cluster parameters for a parameter group family.
 type DefaultClusterParameters struct {
 	_ struct{} `type:"structure"`
@@ -17259,7 +18357,7 @@ type DeleteEndpointAccessOutput struct {
 	// The port number on which the cluster accepts incoming connections.
 	Port *int64 `type:"integer"`
 
-	// The account ID of the owner of the cluster.
+	// The Amazon Web Services account ID of the owner of the cluster.
 	ResourceOwner *string `type:"string"`
 
 	// The subnet group name where Amazon Redshift chooses to deploy the endpoint.
@@ -17502,7 +18600,7 @@ func (s DeleteHsmConfigurationOutput) GoString() string {
 type DeletePartnerInput struct {
 	_ struct{} `type:"structure"`
 
-	// The Region ID that owns the cluster.
+	// The Amazon Web Services account ID that owns the cluster.
 	//
 	// AccountId is a required field
 	AccountId *string `min:"12" type:"string" required:"true"`
@@ -18492,9 +19590,10 @@ type DescribeClusterSnapshotsInput struct {
 	// Constraints: minimum 20, maximum 100.
 	MaxRecords *int64 `type:"integer"`
 
-	// The account used to create or copy the snapshot. Use this field to filter
-	// the results to snapshots owned by a particular account. To describe snapshots
-	// you own, either specify your account, or do not specify the parameter.
+	// The Amazon Web Services account used to create or copy the snapshot. Use
+	// this field to filter the results to snapshots owned by a particular account.
+	// To describe snapshots you own, either specify your Amazon Web Services account,
+	// or do not specify the parameter.
 	OwnerAccount *string `type:"string"`
 
 	// The snapshot identifier of the snapshot about which to return information.
@@ -18908,196 +20007,476 @@ type DescribeClusterVersionsInput struct {
 }
 
 // String returns the string representation
-func (s DescribeClusterVersionsInput) String() string {
+func (s DescribeClusterVersionsInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClusterVersionsInput) GoString() string {
+	return s.String()
+}
+
+// SetClusterParameterGroupFamily sets the ClusterParameterGroupFamily field's value.
+func (s *DescribeClusterVersionsInput) SetClusterParameterGroupFamily(v string) *DescribeClusterVersionsInput {
+	s.ClusterParameterGroupFamily = &v
+	return s
+}
+
+// SetClusterVersion sets the ClusterVersion field's value.
+func (s *DescribeClusterVersionsInput) SetClusterVersion(v string) *DescribeClusterVersionsInput {
+	s.ClusterVersion = &v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeClusterVersionsInput) SetMarker(v string) *DescribeClusterVersionsInput {
+	s.Marker = &v
+	return s
+}
+
+// SetMaxRecords sets the MaxRecords field's value.
+func (s *DescribeClusterVersionsInput) SetMaxRecords(v int64) *DescribeClusterVersionsInput {
+	s.MaxRecords = &v
+	return s
+}
+
+// Contains the output from the DescribeClusterVersions action.
+type DescribeClusterVersionsOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A list of Version elements.
+	ClusterVersions []*ClusterVersion `locationNameList:"ClusterVersion" type:"list"`
+
+	// A value that indicates the starting point for the next set of response records
+	// in a subsequent request. If a value is returned in a response, you can retrieve
+	// the next set of records by providing this returned marker value in the Marker
+	// parameter and retrying the command. If the Marker field is empty, all response
+	// records have been retrieved for the request.
+	Marker *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClusterVersionsOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClusterVersionsOutput) GoString() string {
+	return s.String()
+}
+
+// SetClusterVersions sets the ClusterVersions field's value.
+func (s *DescribeClusterVersionsOutput) SetClusterVersions(v []*ClusterVersion) *DescribeClusterVersionsOutput {
+	s.ClusterVersions = v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeClusterVersionsOutput) SetMarker(v string) *DescribeClusterVersionsOutput {
+	s.Marker = &v
+	return s
+}
+
+type DescribeClustersInput struct {
+	_ struct{} `type:"structure"`
+
+	// The unique identifier of a cluster whose properties you are requesting. This
+	// parameter is case sensitive.
+	//
+	// The default is that all clusters defined for an account are returned.
+	ClusterIdentifier *string `type:"string"`
+
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeClusters request exceed the
+	// value specified in MaxRecords, Amazon Web Services returns a value in the
+	// Marker field of the response. You can retrieve the next set of response records
+	// by providing the returned marker value in the Marker parameter and retrying
+	// the request.
+	//
+	// Constraints: You can specify either the ClusterIdentifier parameter or the
+	// Marker parameter, but not both.
+	Marker *string `type:"string"`
+
+	// The maximum number of response records to return in each call. If the number
+	// of remaining response records exceeds the specified MaxRecords value, a value
+	// is returned in a marker field of the response. You can retrieve the next
+	// set of records by retrying the command with the returned marker value.
+	//
+	// Default: 100
+	//
+	// Constraints: minimum 20, maximum 100.
+	MaxRecords *int64 `type:"integer"`
+
+	// A tag key or keys for which you want to return all matching clusters that
+	// are associated with the specified key or keys. For example, suppose that
+	// you have clusters that are tagged with keys called owner and environment.
+	// If you specify both of these tag keys in the request, Amazon Redshift returns
+	// a response with the clusters that have either or both of these tag keys associated
+	// with them.
+	TagKeys []*string `locationNameList:"TagKey" type:"list"`
+
+	// A tag value or values for which you want to return all matching clusters
+	// that are associated with the specified tag value or values. For example,
+	// suppose that you have clusters that are tagged with values called admin and
+	// test. If you specify both of these tag values in the request, Amazon Redshift
+	// returns a response with the clusters that have either or both of these tag
+	// values associated with them.
+	TagValues []*string `locationNameList:"TagValue" type:"list"`
+}
+
+// String returns the string representation
+func (s DescribeClustersInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClustersInput) GoString() string {
+	return s.String()
+}
+
+// SetClusterIdentifier sets the ClusterIdentifier field's value.
+func (s *DescribeClustersInput) SetClusterIdentifier(v string) *DescribeClustersInput {
+	s.ClusterIdentifier = &v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeClustersInput) SetMarker(v string) *DescribeClustersInput {
+	s.Marker = &v
+	return s
+}
+
+// SetMaxRecords sets the MaxRecords field's value.
+func (s *DescribeClustersInput) SetMaxRecords(v int64) *DescribeClustersInput {
+	s.MaxRecords = &v
+	return s
+}
+
+// SetTagKeys sets the TagKeys field's value.
+func (s *DescribeClustersInput) SetTagKeys(v []*string) *DescribeClustersInput {
+	s.TagKeys = v
+	return s
+}
+
+// SetTagValues sets the TagValues field's value.
+func (s *DescribeClustersInput) SetTagValues(v []*string) *DescribeClustersInput {
+	s.TagValues = v
+	return s
+}
+
+// Contains the output from the DescribeClusters action.
+type DescribeClustersOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A list of Cluster objects, where each object describes one cluster.
+	Clusters []*Cluster `locationNameList:"Cluster" type:"list"`
+
+	// A value that indicates the starting point for the next set of response records
+	// in a subsequent request. If a value is returned in a response, you can retrieve
+	// the next set of records by providing this returned marker value in the Marker
+	// parameter and retrying the command. If the Marker field is empty, all response
+	// records have been retrieved for the request.
+	Marker *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeClustersOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeClustersOutput) GoString() string {
+	return s.String()
+}
+
+// SetClusters sets the Clusters field's value.
+func (s *DescribeClustersOutput) SetClusters(v []*Cluster) *DescribeClustersOutput {
+	s.Clusters = v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeClustersOutput) SetMarker(v string) *DescribeClustersOutput {
+	s.Marker = &v
+	return s
+}
+
+type DescribeDataSharesForConsumerInput struct {
+	_ struct{} `type:"structure"`
+
+	// The Amazon Resource Name (ARN) of the consumer that returns in the list of
+	// datashares.
+	ConsumerArn *string `type:"string"`
+
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeDataSharesForConsumer request
+	// exceed the value specified in MaxRecords, AWS returns a value in the Marker
+	// field of the response. You can retrieve the next set of response records
+	// by providing the returned marker value in the Marker parameter and retrying
+	// the request.
+	Marker *string `type:"string"`
+
+	// The maximum number of response records to return in each call. If the number
+	// of remaining response records exceeds the specified MaxRecords value, a value
+	// is returned in a marker field of the response. You can retrieve the next
+	// set of records by retrying the command with the returned marker value.
+	MaxRecords *int64 `type:"integer"`
+
+	// An identifier giving the status of a datashare in the consumer cluster. If
+	// this field is specified, Amazon Redshift returns the list of datashares that
+	// have the specified status.
+	Status *string `type:"string" enum:"DataShareStatusForConsumer"`
+}
+
+// String returns the string representation
+func (s DescribeDataSharesForConsumerInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeDataSharesForConsumerInput) GoString() string {
+	return s.String()
+}
+
+// SetConsumerArn sets the ConsumerArn field's value.
+func (s *DescribeDataSharesForConsumerInput) SetConsumerArn(v string) *DescribeDataSharesForConsumerInput {
+	s.ConsumerArn = &v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeDataSharesForConsumerInput) SetMarker(v string) *DescribeDataSharesForConsumerInput {
+	s.Marker = &v
+	return s
+}
+
+// SetMaxRecords sets the MaxRecords field's value.
+func (s *DescribeDataSharesForConsumerInput) SetMaxRecords(v int64) *DescribeDataSharesForConsumerInput {
+	s.MaxRecords = &v
+	return s
+}
+
+// SetStatus sets the Status field's value.
+func (s *DescribeDataSharesForConsumerInput) SetStatus(v string) *DescribeDataSharesForConsumerInput {
+	s.Status = &v
+	return s
+}
+
+type DescribeDataSharesForConsumerOutput struct {
+	_ struct{} `type:"structure"`
+
+	// Shows the results of datashares available for consumers.
+	DataShares []*DataShare `type:"list"`
+
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeDataSharesForConsumer request
+	// exceed the value specified in MaxRecords, AWS returns a value in the Marker
+	// field of the response. You can retrieve the next set of response records
+	// by providing the returned marker value in the Marker parameter and retrying
+	// the request.
+	Marker *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DescribeDataSharesForConsumerOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DescribeDataSharesForConsumerOutput) GoString() string {
+	return s.String()
+}
+
+// SetDataShares sets the DataShares field's value.
+func (s *DescribeDataSharesForConsumerOutput) SetDataShares(v []*DataShare) *DescribeDataSharesForConsumerOutput {
+	s.DataShares = v
+	return s
+}
+
+// SetMarker sets the Marker field's value.
+func (s *DescribeDataSharesForConsumerOutput) SetMarker(v string) *DescribeDataSharesForConsumerOutput {
+	s.Marker = &v
+	return s
+}
+
+type DescribeDataSharesForProducerInput struct {
+	_ struct{} `type:"structure"`
+
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeDataSharesForProducer request
+	// exceed the value specified in MaxRecords, AWS returns a value in the Marker
+	// field of the response. You can retrieve the next set of response records
+	// by providing the returned marker value in the Marker parameter and retrying
+	// the request.
+	Marker *string `type:"string"`
+
+	// The maximum number of response records to return in each call. If the number
+	// of remaining response records exceeds the specified MaxRecords value, a value
+	// is returned in a marker field of the response. You can retrieve the next
+	// set of records by retrying the command with the returned marker value.
+	MaxRecords *int64 `type:"integer"`
+
+	// The Amazon Resource Name (ARN) of the producer that returns in the list of
+	// datashares.
+	ProducerArn *string `type:"string"`
+
+	// An identifier giving the status of a datashare in the producer. If this field
+	// is specified, Amazon Redshift returns the list of datashares that have the
+	// specified status.
+	Status *string `type:"string" enum:"DataShareStatusForProducer"`
+}
+
+// String returns the string representation
+func (s DescribeDataSharesForProducerInput) String() string {
 	return awsutil.Prettify(s)
 }
 
 // GoString returns the string representation
-func (s DescribeClusterVersionsInput) GoString() string {
+func (s DescribeDataSharesForProducerInput) GoString() string {
 	return s.String()
 }
 
-// SetClusterParameterGroupFamily sets the ClusterParameterGroupFamily field's value.
-func (s *DescribeClusterVersionsInput) SetClusterParameterGroupFamily(v string) *DescribeClusterVersionsInput {
-	s.ClusterParameterGroupFamily = &v
+// SetMarker sets the Marker field's value.
+func (s *DescribeDataSharesForProducerInput) SetMarker(v string) *DescribeDataSharesForProducerInput {
+	s.Marker = &v
 	return s
 }
 
-// SetClusterVersion sets the ClusterVersion field's value.
-func (s *DescribeClusterVersionsInput) SetClusterVersion(v string) *DescribeClusterVersionsInput {
-	s.ClusterVersion = &v
+// SetMaxRecords sets the MaxRecords field's value.
+func (s *DescribeDataSharesForProducerInput) SetMaxRecords(v int64) *DescribeDataSharesForProducerInput {
+	s.MaxRecords = &v
 	return s
 }
 
-// SetMarker sets the Marker field's value.
-func (s *DescribeClusterVersionsInput) SetMarker(v string) *DescribeClusterVersionsInput {
-	s.Marker = &v
+// SetProducerArn sets the ProducerArn field's value.
+func (s *DescribeDataSharesForProducerInput) SetProducerArn(v string) *DescribeDataSharesForProducerInput {
+	s.ProducerArn = &v
 	return s
 }
 
-// SetMaxRecords sets the MaxRecords field's value.
-func (s *DescribeClusterVersionsInput) SetMaxRecords(v int64) *DescribeClusterVersionsInput {
-	s.MaxRecords = &v
+// SetStatus sets the Status field's value.
+func (s *DescribeDataSharesForProducerInput) SetStatus(v string) *DescribeDataSharesForProducerInput {
+	s.Status = &v
 	return s
 }
 
-// Contains the output from the DescribeClusterVersions action.
-type DescribeClusterVersionsOutput struct {
+type DescribeDataSharesForProducerOutput struct {
 	_ struct{} `type:"structure"`
 
-	// A list of Version elements.
-	ClusterVersions []*ClusterVersion `locationNameList:"ClusterVersion" type:"list"`
+	// Shows the results of datashares available for producers.
+	DataShares []*DataShare `type:"list"`
 
-	// A value that indicates the starting point for the next set of response records
-	// in a subsequent request. If a value is returned in a response, you can retrieve
-	// the next set of records by providing this returned marker value in the Marker
-	// parameter and retrying the command. If the Marker field is empty, all response
-	// records have been retrieved for the request.
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeDataSharesForProducer request
+	// exceed the value specified in MaxRecords, AWS returns a value in the Marker
+	// field of the response. You can retrieve the next set of response records
+	// by providing the returned marker value in the Marker parameter and retrying
+	// the request.
 	Marker *string `type:"string"`
 }
 
 // String returns the string representation
-func (s DescribeClusterVersionsOutput) String() string {
+func (s DescribeDataSharesForProducerOutput) String() string {
 	return awsutil.Prettify(s)
 }
 
 // GoString returns the string representation
-func (s DescribeClusterVersionsOutput) GoString() string {
+func (s DescribeDataSharesForProducerOutput) GoString() string {
 	return s.String()
 }
 
-// SetClusterVersions sets the ClusterVersions field's value.
-func (s *DescribeClusterVersionsOutput) SetClusterVersions(v []*ClusterVersion) *DescribeClusterVersionsOutput {
-	s.ClusterVersions = v
+// SetDataShares sets the DataShares field's value.
+func (s *DescribeDataSharesForProducerOutput) SetDataShares(v []*DataShare) *DescribeDataSharesForProducerOutput {
+	s.DataShares = v
 	return s
 }
 
 // SetMarker sets the Marker field's value.
-func (s *DescribeClusterVersionsOutput) SetMarker(v string) *DescribeClusterVersionsOutput {
+func (s *DescribeDataSharesForProducerOutput) SetMarker(v string) *DescribeDataSharesForProducerOutput {
 	s.Marker = &v
 	return s
 }
 
-type DescribeClustersInput struct {
+type DescribeDataSharesInput struct {
 	_ struct{} `type:"structure"`
 
-	// The unique identifier of a cluster whose properties you are requesting. This
-	// parameter is case sensitive.
-	//
-	// The default is that all clusters defined for an account are returned.
-	ClusterIdentifier *string `type:"string"`
+	// The identifier of the datashare to describe details of.
+	DataShareArn *string `type:"string"`
 
 	// An optional parameter that specifies the starting point to return a set of
-	// response records. When the results of a DescribeClusters request exceed the
-	// value specified in MaxRecords, Amazon Web Services returns a value in the
-	// Marker field of the response. You can retrieve the next set of response records
-	// by providing the returned marker value in the Marker parameter and retrying
-	// the request.
-	//
-	// Constraints: You can specify either the ClusterIdentifier parameter or the
-	// Marker parameter, but not both.
+	// response records. When the results of a DescribeDataShares request exceed
+	// the value specified in MaxRecords, AWS returns a value in the Marker field
+	// of the response. You can retrieve the next set of response records by providing
+	// the returned marker value in the Marker parameter and retrying the request.
 	Marker *string `type:"string"`
 
 	// The maximum number of response records to return in each call. If the number
 	// of remaining response records exceeds the specified MaxRecords value, a value
 	// is returned in a marker field of the response. You can retrieve the next
 	// set of records by retrying the command with the returned marker value.
-	//
-	// Default: 100
-	//
-	// Constraints: minimum 20, maximum 100.
 	MaxRecords *int64 `type:"integer"`
-
-	// A tag key or keys for which you want to return all matching clusters that
-	// are associated with the specified key or keys. For example, suppose that
-	// you have clusters that are tagged with keys called owner and environment.
-	// If you specify both of these tag keys in the request, Amazon Redshift returns
-	// a response with the clusters that have either or both of these tag keys associated
-	// with them.
-	TagKeys []*string `locationNameList:"TagKey" type:"list"`
-
-	// A tag value or values for which you want to return all matching clusters
-	// that are associated with the specified tag value or values. For example,
-	// suppose that you have clusters that are tagged with values called admin and
-	// test. If you specify both of these tag values in the request, Amazon Redshift
-	// returns a response with the clusters that have either or both of these tag
-	// values associated with them.
-	TagValues []*string `locationNameList:"TagValue" type:"list"`
 }
 
 // String returns the string representation
-func (s DescribeClustersInput) String() string {
+func (s DescribeDataSharesInput) String() string {
 	return awsutil.Prettify(s)
 }
 
 // GoString returns the string representation
-func (s DescribeClustersInput) GoString() string {
+func (s DescribeDataSharesInput) GoString() string {
 	return s.String()
 }
 
-// SetClusterIdentifier sets the ClusterIdentifier field's value.
-func (s *DescribeClustersInput) SetClusterIdentifier(v string) *DescribeClustersInput {
-	s.ClusterIdentifier = &v
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DescribeDataSharesInput) SetDataShareArn(v string) *DescribeDataSharesInput {
+	s.DataShareArn = &v
 	return s
 }
 
 // SetMarker sets the Marker field's value.
-func (s *DescribeClustersInput) SetMarker(v string) *DescribeClustersInput {
+func (s *DescribeDataSharesInput) SetMarker(v string) *DescribeDataSharesInput {
 	s.Marker = &v
 	return s
 }
 
 // SetMaxRecords sets the MaxRecords field's value.
-func (s *DescribeClustersInput) SetMaxRecords(v int64) *DescribeClustersInput {
+func (s *DescribeDataSharesInput) SetMaxRecords(v int64) *DescribeDataSharesInput {
 	s.MaxRecords = &v
 	return s
 }
 
-// SetTagKeys sets the TagKeys field's value.
-func (s *DescribeClustersInput) SetTagKeys(v []*string) *DescribeClustersInput {
-	s.TagKeys = v
-	return s
-}
-
-// SetTagValues sets the TagValues field's value.
-func (s *DescribeClustersInput) SetTagValues(v []*string) *DescribeClustersInput {
-	s.TagValues = v
-	return s
-}
-
-// Contains the output from the DescribeClusters action.
-type DescribeClustersOutput struct {
+type DescribeDataSharesOutput struct {
 	_ struct{} `type:"structure"`
 
-	// A list of Cluster objects, where each object describes one cluster.
-	Clusters []*Cluster `locationNameList:"Cluster" type:"list"`
+	// The results returned from describing datashares.
+	DataShares []*DataShare `type:"list"`
 
-	// A value that indicates the starting point for the next set of response records
-	// in a subsequent request. If a value is returned in a response, you can retrieve
-	// the next set of records by providing this returned marker value in the Marker
-	// parameter and retrying the command. If the Marker field is empty, all response
-	// records have been retrieved for the request.
+	// An optional parameter that specifies the starting point to return a set of
+	// response records. When the results of a DescribeDataShares request exceed
+	// the value specified in MaxRecords, AWS returns a value in the Marker field
+	// of the response. You can retrieve the next set of response records by providing
+	// the returned marker value in the Marker parameter and retrying the request.
 	Marker *string `type:"string"`
 }
 
 // String returns the string representation
-func (s DescribeClustersOutput) String() string {
+func (s DescribeDataSharesOutput) String() string {
 	return awsutil.Prettify(s)
 }
 
 // GoString returns the string representation
-func (s DescribeClustersOutput) GoString() string {
+func (s DescribeDataSharesOutput) GoString() string {
 	return s.String()
 }
 
-// SetClusters sets the Clusters field's value.
-func (s *DescribeClustersOutput) SetClusters(v []*Cluster) *DescribeClustersOutput {
-	s.Clusters = v
+// SetDataShares sets the DataShares field's value.
+func (s *DescribeDataSharesOutput) SetDataShares(v []*DataShare) *DescribeDataSharesOutput {
+	s.DataShares = v
 	return s
 }
 
 // SetMarker sets the Marker field's value.
-func (s *DescribeClustersOutput) SetMarker(v string) *DescribeClustersOutput {
+func (s *DescribeDataSharesOutput) SetMarker(v string) *DescribeDataSharesOutput {
 	s.Marker = &v
 	return s
 }
@@ -19212,7 +20591,7 @@ type DescribeEndpointAccessInput struct {
 	// is included in the response so that the remaining results can be retrieved.
 	MaxRecords *int64 `type:"integer"`
 
-	// The account ID of the owner of the cluster.
+	// The Amazon Web Services account ID of the owner of the cluster.
 	ResourceOwner *string `type:"string"`
 
 	// The virtual private cloud (VPC) identifier with access to the cluster.
@@ -19302,8 +20681,9 @@ func (s *DescribeEndpointAccessOutput) SetMarker(v string) *DescribeEndpointAcce
 type DescribeEndpointAuthorizationInput struct {
 	_ struct{} `type:"structure"`
 
-	// The Aaccount ID of either the cluster owner (grantor) or grantee. If Grantee
-	// parameter is true, then the Account value is of the grantor.
+	// The AAmazon Web Services account ID of either the cluster owner (grantor)
+	// or grantee. If Grantee parameter is true, then the Account value is of the
+	// grantor.
 	Account *string `type:"string"`
 
 	// The cluster identifier of the cluster to access.
@@ -19738,7 +21118,7 @@ type DescribeHsmClientCertificatesInput struct {
 
 	// The identifier of a specific HSM client certificate for which you want information.
 	// If no identifier is specified, information is returned for all HSM client
-	// certificates owned by your account.
+	// certificates owned by your Amazon Web Services account.
 	HsmClientCertificateIdentifier *string `type:"string"`
 
 	// An optional parameter that specifies the starting point to return a set of
@@ -19859,7 +21239,7 @@ type DescribeHsmConfigurationsInput struct {
 
 	// The identifier of a specific Amazon Redshift HSM configuration to be described.
 	// If no identifier is specified, information is returned for all HSM configurations
-	// owned by your account.
+	// owned by your Amazon Web Services account.
 	HsmConfigurationIdentifier *string `type:"string"`
 
 	// An optional parameter that specifies the starting point to return a set of
@@ -20049,8 +21429,8 @@ type DescribeNodeConfigurationOptionsInput struct {
 	// Constraints: minimum 100, maximum 500.
 	MaxRecords *int64 `type:"integer"`
 
-	// The account used to create or copy the snapshot. Required if you are restoring
-	// a snapshot you do not own, optional if you own the snapshot.
+	// The Amazon Web Services account used to create or copy the snapshot. Required
+	// if you are restoring a snapshot you do not own, optional if you own the snapshot.
 	OwnerAccount *string `type:"string"`
 
 	// The identifier of the snapshot to evaluate for possible node configurations.
@@ -20267,7 +21647,7 @@ func (s *DescribeOrderableClusterOptionsOutput) SetOrderableClusterOptions(v []*
 type DescribePartnersInput struct {
 	_ struct{} `type:"structure"`
 
-	// The Region ID that owns the cluster.
+	// The Amazon Web Services account ID that owns the cluster.
 	//
 	// AccountId is a required field
 	AccountId *string `min:"12" type:"string" required:"true"`
@@ -20547,8 +21927,8 @@ type DescribeResizeInput struct {
 	// The unique identifier of a cluster whose resize progress you are requesting.
 	// This parameter is case-sensitive.
 	//
-	// By default, resize operations for all clusters defined for an account are
-	// returned.
+	// By default, resize operations for all clusters defined for an Amazon Web
+	// Services account are returned.
 	//
 	// ClusterIdentifier is a required field
 	ClusterIdentifier *string `type:"string" required:"true"`
@@ -21686,6 +23066,119 @@ func (s *DisableSnapshotCopyOutput) SetCluster(v *Cluster) *DisableSnapshotCopyO
 	return s
 }
 
+type DisassociateDataShareConsumerInput struct {
+	_ struct{} `type:"structure"`
+
+	// The Amazon Resource Name (ARN) of the consumer that association for the datashare
+	// is removed from.
+	ConsumerArn *string `type:"string"`
+
+	// The Amazon Resource Name (ARN) of the datashare to remove association for.
+	//
+	// DataShareArn is a required field
+	DataShareArn *string `type:"string" required:"true"`
+
+	// A value that specifies whether association for the datashare is removed from
+	// the entire account.
+	DisassociateEntireAccount *bool `type:"boolean"`
+}
+
+// String returns the string representation
+func (s DisassociateDataShareConsumerInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateDataShareConsumerInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *DisassociateDataShareConsumerInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "DisassociateDataShareConsumerInput"}
+	if s.DataShareArn == nil {
+		invalidParams.Add(request.NewErrParamRequired("DataShareArn"))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetConsumerArn sets the ConsumerArn field's value.
+func (s *DisassociateDataShareConsumerInput) SetConsumerArn(v string) *DisassociateDataShareConsumerInput {
+	s.ConsumerArn = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DisassociateDataShareConsumerInput) SetDataShareArn(v string) *DisassociateDataShareConsumerInput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDisassociateEntireAccount sets the DisassociateEntireAccount field's value.
+func (s *DisassociateDataShareConsumerInput) SetDisassociateEntireAccount(v bool) *DisassociateDataShareConsumerInput {
+	s.DisassociateEntireAccount = &v
+	return s
+}
+
+type DisassociateDataShareConsumerOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
+
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
+
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
+
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s DisassociateDataShareConsumerOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s DisassociateDataShareConsumerOutput) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *DisassociateDataShareConsumerOutput) SetAllowPubliclyAccessibleConsumers(v bool) *DisassociateDataShareConsumerOutput {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *DisassociateDataShareConsumerOutput) SetDataShareArn(v string) *DisassociateDataShareConsumerOutput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *DisassociateDataShareConsumerOutput) SetDataShareAssociations(v []*DataShareAssociation) *DisassociateDataShareConsumerOutput {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *DisassociateDataShareConsumerOutput) SetProducerArn(v string) *DisassociateDataShareConsumerOutput {
+	s.ProducerArn = &v
+	return s
+}
+
 // Describes an Amazon EC2 security group.
 type EC2SecurityGroup struct {
 	_ struct{} `type:"structure"`
@@ -21693,8 +23186,8 @@ type EC2SecurityGroup struct {
 	// The name of the EC2 Security Group.
 	EC2SecurityGroupName *string `type:"string"`
 
-	// The account ID of the owner of the EC2 security group specified in the EC2SecurityGroupName
-	// field.
+	// The Amazon Web Services account ID of the owner of the EC2 security group
+	// specified in the EC2SecurityGroupName field.
 	EC2SecurityGroupOwnerId *string `type:"string"`
 
 	// The status of the EC2 security group.
@@ -21859,18 +23352,19 @@ type EnableSnapshotCopyInput struct {
 	// ClusterIdentifier is a required field
 	ClusterIdentifier *string `type:"string" required:"true"`
 
-	// The destination Region that you want to copy snapshots to.
+	// The destination Amazon Web Services Region that you want to copy snapshots
+	// to.
 	//
-	// Constraints: Must be the name of a valid Region. For more information, see
-	// Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region)
+	// Constraints: Must be the name of a valid Amazon Web Services Region. For
+	// more information, see Regions and Endpoints (https://docs.aws.amazon.com/general/latest/gr/rande.html#redshift_region)
 	// in the Amazon Web Services General Reference.
 	//
 	// DestinationRegion is a required field
 	DestinationRegion *string `type:"string" required:"true"`
 
-	// The number of days to retain newly copied snapshots in the destination Region
-	// after they are copied from the source Region. If the value is -1, the manual
-	// snapshot is retained indefinitely.
+	// The number of days to retain newly copied snapshots in the destination Amazon
+	// Web Services Region after they are copied from the source Amazon Web Services
+	// Region. If the value is -1, the manual snapshot is retained indefinitely.
 	//
 	// The value must be either -1 or an integer between 1 and 3,653.
 	ManualSnapshotRetentionPeriod *int64 `type:"integer"`
@@ -22031,7 +23525,7 @@ type EndpointAccess struct {
 	// The port number on which the cluster accepts incoming connections.
 	Port *int64 `type:"integer"`
 
-	// The account ID of the owner of the cluster.
+	// The Amazon Web Services account ID of the owner of the cluster.
 	ResourceOwner *string `type:"string"`
 
 	// The subnet group name where Amazon Redshift chooses to deploy the endpoint.
@@ -22116,7 +23610,7 @@ func (s *EndpointAccess) SetVpcSecurityGroups(v []*VpcSecurityGroupMembership) *
 }
 
 // Describes an endpoint authorization for authorizing Redshift-managed VPC
-// endpoint access to a cluster across accounts.
+// endpoint access to a cluster across Amazon Web Services accounts.
 type EndpointAuthorization struct {
 	_ struct{} `type:"structure"`
 
@@ -22139,10 +23633,10 @@ type EndpointAuthorization struct {
 	// The number of Redshift-managed VPC endpoints created for the authorization.
 	EndpointCount *int64 `type:"integer"`
 
-	// The account ID of the grantee of the cluster.
+	// The Amazon Web Services account ID of the grantee of the cluster.
 	Grantee *string `type:"string"`
 
-	// The account ID of the cluster owner.
+	// The Amazon Web Services account ID of the cluster owner.
 	Grantor *string `type:"string"`
 
 	// The status of the authorization action.
@@ -22222,7 +23716,7 @@ type Event struct {
 
 	// A list of the event categories.
 	//
-	// Values: Configuration, Management, Monitoring, Security
+	// Values: Configuration, Management, Monitoring, Security, Pending
 	EventCategories []*string `locationNameList:"EventCategory" type:"list"`
 
 	// The identifier of the event.
@@ -22389,7 +23883,8 @@ type EventSubscription struct {
 	// The name of the Amazon Redshift event notification subscription.
 	CustSubscriptionId *string `type:"string"`
 
-	// The account associated with the Amazon Redshift event notification subscription.
+	// The Amazon Web Services account associated with the Amazon Redshift event
+	// notification subscription.
 	CustomerAwsId *string `type:"string"`
 
 	// A boolean value indicating whether the subscription is enabled; true indicates
@@ -22399,7 +23894,7 @@ type EventSubscription struct {
 	// The list of Amazon Redshift event categories specified in the event notification
 	// subscription.
 	//
-	// Values: Configuration, Management, Monitoring, Security
+	// Values: Configuration, Management, Monitoring, Security, Pending
 	EventCategoriesList []*string `locationNameList:"EventCategory" type:"list"`
 
 	// The event severity specified in the Amazon Redshift event notification subscription.
@@ -23128,8 +24623,8 @@ type ModifyAquaConfigurationInput struct {
 
 	// The new value of AQUA configuration status. Possible values include the following.
 	//
-	//    * enabled - Use AQUA if it is available for the current Region and Amazon
-	//    Redshift node type.
+	//    * enabled - Use AQUA if it is available for the current Amazon Web Services
+	//    Region and Amazon Redshift node type.
 	//
 	//    * disabled - Don't use AQUA.
 	//
@@ -23626,7 +25121,7 @@ type ModifyClusterInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique for all clusters within an account.
+	//    * Must be unique for all clusters within an Amazon Web Services account.
 	//
 	// Example: examplecluster
 	NewClusterIdentifier *string `type:"string"`
@@ -24360,7 +25855,7 @@ type ModifyEndpointAccessOutput struct {
 	// The port number on which the cluster accepts incoming connections.
 	Port *int64 `type:"integer"`
 
-	// The account ID of the owner of the cluster.
+	// The Amazon Web Services account ID of the owner of the cluster.
 	ResourceOwner *string `type:"string"`
 
 	// The subnet group name where Amazon Redshift chooses to deploy the endpoint.
@@ -24454,7 +25949,7 @@ type ModifyEventSubscriptionInput struct {
 	// Specifies the Amazon Redshift event categories to be published by the event
 	// notification subscription.
 	//
-	// Values: configuration, management, monitoring, security
+	// Values: configuration, management, monitoring, security, pending
 	EventCategories []*string `locationNameList:"EventCategory" type:"list"`
 
 	// Specifies the Amazon Redshift event severity to be published by the event
@@ -24481,8 +25976,8 @@ type ModifyEventSubscriptionInput struct {
 	// The type of source that will be generating the events. For example, if you
 	// want to be notified of events generated by a cluster, you would set this
 	// parameter to cluster. If this value is not specified, events are returned
-	// for all Amazon Redshift objects in your account. You must specify a source
-	// type in order to specify source IDs.
+	// for all Amazon Redshift objects in your Amazon Web Services account. You
+	// must specify a source type in order to specify source IDs.
 	//
 	// Valid values: cluster, cluster-parameter-group, cluster-security-group, cluster-snapshot,
 	// and scheduled-action.
@@ -24815,7 +26310,7 @@ type ModifySnapshotCopyRetentionPeriodInput struct {
 
 	// The unique identifier of the cluster for which you want to change the retention
 	// period for either automated or manual snapshots that are copied to a destination
-	// Region.
+	// Amazon Web Services Region.
 	//
 	// Constraints: Must be the valid name of an existing cluster that has cross-region
 	// snapshot copy enabled.
@@ -24827,15 +26322,16 @@ type ModifySnapshotCopyRetentionPeriodInput struct {
 	// manual snapshots instead of automated snapshots.
 	Manual *bool `type:"boolean"`
 
-	// The number of days to retain automated snapshots in the destination Region
-	// after they are copied from the source Region.
+	// The number of days to retain automated snapshots in the destination Amazon
+	// Web Services Region after they are copied from the source Amazon Web Services
+	// Region.
 	//
 	// By default, this only changes the retention period of copied automated snapshots.
 	//
 	// If you decrease the retention period for automated snapshots that are copied
-	// to a destination Region, Amazon Redshift deletes any existing automated snapshots
-	// that were copied to the destination Region and that fall outside of the new
-	// retention period.
+	// to a destination Amazon Web Services Region, Amazon Redshift deletes any
+	// existing automated snapshots that were copied to the destination Amazon Web
+	// Services Region and that fall outside of the new retention period.
 	//
 	// Constraints: Must be at least 1 and no more than 35 for automated snapshots.
 	//
@@ -25975,6 +27471,99 @@ func (s *RecurringCharge) SetRecurringChargeFrequency(v string) *RecurringCharge
 	return s
 }
 
+type RejectDataShareInput struct {
+	_ struct{} `type:"structure"`
+
+	// The Amazon Resource Name (ARN) of the datashare to reject.
+	//
+	// DataShareArn is a required field
+	DataShareArn *string `type:"string" required:"true"`
+}
+
+// String returns the string representation
+func (s RejectDataShareInput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RejectDataShareInput) GoString() string {
+	return s.String()
+}
+
+// Validate inspects the fields of the type to determine if they are valid.
+func (s *RejectDataShareInput) Validate() error {
+	invalidParams := request.ErrInvalidParams{Context: "RejectDataShareInput"}
+	if s.DataShareArn == nil {
+		invalidParams.Add(request.NewErrParamRequired("DataShareArn"))
+	}
+
+	if invalidParams.Len() > 0 {
+		return invalidParams
+	}
+	return nil
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *RejectDataShareInput) SetDataShareArn(v string) *RejectDataShareInput {
+	s.DataShareArn = &v
+	return s
+}
+
+type RejectDataShareOutput struct {
+	_ struct{} `type:"structure"`
+
+	// A value that specifies whether the datashare can be shared to a publicly
+	// accessible cluster.
+	AllowPubliclyAccessibleConsumers *bool `type:"boolean"`
+
+	// An Amazon Resource Name (ARN) that references the datashare that is owned
+	// by a specific namespace of the producer cluster. A datashare ARN is in the
+	// arn:aws:redshift:{region}:{account-id}:{datashare}:{namespace-guid}/{datashare-name}
+	// format.
+	DataShareArn *string `type:"string"`
+
+	// A value that specifies when the datashare has an association between a producer
+	// and data consumers.
+	DataShareAssociations []*DataShareAssociation `type:"list"`
+
+	// The Amazon Resource Name (ARN) of the producer.
+	ProducerArn *string `type:"string"`
+}
+
+// String returns the string representation
+func (s RejectDataShareOutput) String() string {
+	return awsutil.Prettify(s)
+}
+
+// GoString returns the string representation
+func (s RejectDataShareOutput) GoString() string {
+	return s.String()
+}
+
+// SetAllowPubliclyAccessibleConsumers sets the AllowPubliclyAccessibleConsumers field's value.
+func (s *RejectDataShareOutput) SetAllowPubliclyAccessibleConsumers(v bool) *RejectDataShareOutput {
+	s.AllowPubliclyAccessibleConsumers = &v
+	return s
+}
+
+// SetDataShareArn sets the DataShareArn field's value.
+func (s *RejectDataShareOutput) SetDataShareArn(v string) *RejectDataShareOutput {
+	s.DataShareArn = &v
+	return s
+}
+
+// SetDataShareAssociations sets the DataShareAssociations field's value.
+func (s *RejectDataShareOutput) SetDataShareAssociations(v []*DataShareAssociation) *RejectDataShareOutput {
+	s.DataShareAssociations = v
+	return s
+}
+
+// SetProducerArn sets the ProducerArn field's value.
+func (s *RejectDataShareOutput) SetProducerArn(v string) *RejectDataShareOutput {
+	s.ProducerArn = &v
+	return s
+}
+
 // Describes a reserved node. You can call the DescribeReservedNodeOfferings
 // API to obtain the available reserved node offerings.
 type ReservedNode struct {
@@ -26518,8 +28107,8 @@ type RestoreFromClusterSnapshotInput struct {
 	// Query Accelerator) after the cluster is restored. Possible values include
 	// the following.
 	//
-	//    * enabled - Use AQUA if it is available for the current Region and Amazon
-	//    Redshift node type.
+	//    * enabled - Use AQUA if it is available for the current Amazon Web Services
+	//    Region and Amazon Redshift node type.
 	//
 	//    * disabled - Don't use AQUA.
 	//
@@ -26561,7 +28150,7 @@ type RestoreFromClusterSnapshotInput struct {
 	//
 	//    * Cannot end with a hyphen or contain two consecutive hyphens.
 	//
-	//    * Must be unique for all clusters within an account.
+	//    * Must be unique for all clusters within an Amazon Web Services account.
 	//
 	// ClusterIdentifier is a required field
 	ClusterIdentifier *string `type:"string" required:"true"`
@@ -26662,8 +28251,8 @@ type RestoreFromClusterSnapshotInput struct {
 	// The number of nodes specified when provisioning the restored cluster.
 	NumberOfNodes *int64 `type:"integer"`
 
-	// The account used to create or copy the snapshot. Required if you are restoring
-	// a snapshot you do not own, optional if you own the snapshot.
+	// The Amazon Web Services account used to create or copy the snapshot. Required
+	// if you are restoring a snapshot you do not own, optional if you own the snapshot.
 	OwnerAccount *string `type:"string"`
 
 	// The port number on which the cluster accepts connections.
@@ -27335,10 +28924,10 @@ type RevokeClusterSecurityGroupIngressInput struct {
 	// be provided.
 	EC2SecurityGroupName *string `type:"string"`
 
-	// The account number of the owner of the security group specified in the EC2SecurityGroupName
-	// parameter. The Amazon Web Services access key ID is not an acceptable value.
-	// If EC2SecurityGroupOwnerId is specified, EC2SecurityGroupName must also be
-	// provided. and CIDRIP cannot be provided.
+	// The Amazon Web Services account number of the owner of the security group
+	// specified in the EC2SecurityGroupName parameter. The Amazon Web Services
+	// access key ID is not an acceptable value. If EC2SecurityGroupOwnerId is specified,
+	// EC2SecurityGroupName must also be provided. and CIDRIP cannot be provided.
 	//
 	// Example: 111122223333
 	EC2SecurityGroupOwnerId *string `type:"string"`
@@ -27417,7 +29006,7 @@ func (s *RevokeClusterSecurityGroupIngressOutput) SetClusterSecurityGroup(v *Clu
 type RevokeEndpointAccessInput struct {
 	_ struct{} `type:"structure"`
 
-	// The account ID whose access is to be revoked.
+	// The Amazon Web Services account ID whose access is to be revoked.
 	Account *string `type:"string"`
 
 	// The cluster to revoke access from.
@@ -27466,7 +29055,7 @@ func (s *RevokeEndpointAccessInput) SetVpcIds(v []*string) *RevokeEndpointAccess
 }
 
 // Describes an endpoint authorization for authorizing Redshift-managed VPC
-// endpoint access to a cluster across accounts.
+// endpoint access to a cluster across Amazon Web Services accounts.
 type RevokeEndpointAccessOutput struct {
 	_ struct{} `type:"structure"`
 
@@ -27489,10 +29078,10 @@ type RevokeEndpointAccessOutput struct {
 	// The number of Redshift-managed VPC endpoints created for the authorization.
 	EndpointCount *int64 `type:"integer"`
 
-	// The account ID of the grantee of the cluster.
+	// The Amazon Web Services account ID of the grantee of the cluster.
 	Grantee *string `type:"string"`
 
-	// The account ID of the cluster owner.
+	// The Amazon Web Services account ID of the cluster owner.
 	Grantor *string `type:"string"`
 
 	// The status of the authorization action.
@@ -27566,7 +29155,8 @@ func (s *RevokeEndpointAccessOutput) SetStatus(v string) *RevokeEndpointAccessOu
 type RevokeSnapshotAccessInput struct {
 	_ struct{} `type:"structure"`
 
-	// The identifier of the account that can no longer restore the specified snapshot.
+	// The identifier of the Amazon Web Services account that can no longer restore
+	// the specified snapshot.
 	//
 	// AccountWithRestoreAccess is a required field
 	AccountWithRestoreAccess *string `type:"string" required:"true"`
@@ -27955,8 +29545,9 @@ func (s *ScheduledActionType) SetResumeCluster(v *ResumeClusterMessage) *Schedul
 type Snapshot struct {
 	_ struct{} `type:"structure"`
 
-	// A list of the accounts authorized to restore the snapshot. Returns null if
-	// no accounts are authorized. Visible only to the snapshot owner.
+	// A list of the Amazon Web Services accounts authorized to restore the snapshot.
+	// Returns null if no accounts are authorized. Visible only to the snapshot
+	// owner.
 	AccountsWithRestoreAccess []*AccountWithRestoreAccess `locationNameList:"AccountWithRestoreAccess" type:"list"`
 
 	// The size of the incremental backup.
@@ -28040,9 +29631,9 @@ type Snapshot struct {
 	// The number of nodes in the cluster.
 	NumberOfNodes *int64 `type:"integer"`
 
-	// For manual snapshots, the account used to create or copy the snapshot. For
-	// automatic snapshots, the owner of the cluster. The owner can perform all
-	// snapshot actions, such as sharing a manual snapshot.
+	// For manual snapshots, the Amazon Web Services account used to create or copy
+	// the snapshot. For automatic snapshots, the owner of the cluster. The owner
+	// can perform all snapshot actions, such as sharing a manual snapshot.
 	OwnerAccount *string `type:"string"`
 
 	// The port that the cluster is listening on.
@@ -28869,7 +30460,7 @@ func (s *TaggedResource) SetTag(v *Tag) *TaggedResource {
 type UpdatePartnerStatusInput struct {
 	_ struct{} `type:"structure"`
 
-	// The Region ID that owns the cluster.
+	// The Amazon Web Services account ID that owns the cluster.
 	//
 	// AccountId is a required field
 	AccountId *string `min:"12" type:"string" required:"true"`
@@ -29298,6 +30889,82 @@ func AuthorizationStatus_Values() []string {
 	}
 }
 
+const (
+	// DataShareStatusActive is a DataShareStatus enum value
+	DataShareStatusActive = "ACTIVE"
+
+	// DataShareStatusPendingAuthorization is a DataShareStatus enum value
+	DataShareStatusPendingAuthorization = "PENDING_AUTHORIZATION"
+
+	// DataShareStatusAuthorized is a DataShareStatus enum value
+	DataShareStatusAuthorized = "AUTHORIZED"
+
+	// DataShareStatusDeauthorized is a DataShareStatus enum value
+	DataShareStatusDeauthorized = "DEAUTHORIZED"
+
+	// DataShareStatusRejected is a DataShareStatus enum value
+	DataShareStatusRejected = "REJECTED"
+
+	// DataShareStatusAvailable is a DataShareStatus enum value
+	DataShareStatusAvailable = "AVAILABLE"
+)
+
+// DataShareStatus_Values returns all elements of the DataShareStatus enum
+func DataShareStatus_Values() []string {
+	return []string{
+		DataShareStatusActive,
+		DataShareStatusPendingAuthorization,
+		DataShareStatusAuthorized,
+		DataShareStatusDeauthorized,
+		DataShareStatusRejected,
+		DataShareStatusAvailable,
+	}
+}
+
+const (
+	// DataShareStatusForConsumerActive is a DataShareStatusForConsumer enum value
+	DataShareStatusForConsumerActive = "ACTIVE"
+
+	// DataShareStatusForConsumerAvailable is a DataShareStatusForConsumer enum value
+	DataShareStatusForConsumerAvailable = "AVAILABLE"
+)
+
+// DataShareStatusForConsumer_Values returns all elements of the DataShareStatusForConsumer enum
+func DataShareStatusForConsumer_Values() []string {
+	return []string{
+		DataShareStatusForConsumerActive,
+		DataShareStatusForConsumerAvailable,
+	}
+}
+
+const (
+	// DataShareStatusForProducerActive is a DataShareStatusForProducer enum value
+	DataShareStatusForProducerActive = "ACTIVE"
+
+	// DataShareStatusForProducerAuthorized is a DataShareStatusForProducer enum value
+	DataShareStatusForProducerAuthorized = "AUTHORIZED"
+
+	// DataShareStatusForProducerPendingAuthorization is a DataShareStatusForProducer enum value
+	DataShareStatusForProducerPendingAuthorization = "PENDING_AUTHORIZATION"
+
+	// DataShareStatusForProducerDeauthorized is a DataShareStatusForProducer enum value
+	DataShareStatusForProducerDeauthorized = "DEAUTHORIZED"
+
+	// DataShareStatusForProducerRejected is a DataShareStatusForProducer enum value
+	DataShareStatusForProducerRejected = "REJECTED"
+)
+
+// DataShareStatusForProducer_Values returns all elements of the DataShareStatusForProducer enum
+func DataShareStatusForProducer_Values() []string {
+	return []string{
+		DataShareStatusForProducerActive,
+		DataShareStatusForProducerAuthorized,
+		DataShareStatusForProducerPendingAuthorization,
+		DataShareStatusForProducerDeauthorized,
+		DataShareStatusForProducerRejected,
+	}
+}
+
 const (
 	// ModeStandard is a Mode enum value
 	ModeStandard = "standard"
diff --git a/service/redshift/errors.go b/service/redshift/errors.go
index 65e5d87e281..bfb5daac122 100644
--- a/service/redshift/errors.go
+++ b/service/redshift/errors.go
@@ -344,7 +344,7 @@ const (
 	//
 	// The authentication profile request is not valid. The profile name can't be
 	// null or empty. The authentication profile API operation must be available
-	// in the Region.
+	// in the Amazon Web Services Region.
 	ErrCodeInvalidAuthenticationProfileRequestFault = "InvalidAuthenticationProfileRequestFault"
 
 	// ErrCodeInvalidAuthorizationStateFault for service response error code
@@ -404,6 +404,12 @@ const (
 	// The provided cluster track name is not valid.
 	ErrCodeInvalidClusterTrackFault = "InvalidClusterTrack"
 
+	// ErrCodeInvalidDataShareFault for service response error code
+	// "InvalidDataShareFault".
+	//
+	// There is an error with the datashare.
+	ErrCodeInvalidDataShareFault = "InvalidDataShareFault"
+
 	// ErrCodeInvalidElasticIpFault for service response error code
 	// "InvalidElasticIpFault".
 	//
@@ -430,6 +436,13 @@ const (
 	// in use by one or more Amazon Redshift clusters.
 	ErrCodeInvalidHsmConfigurationStateFault = "InvalidHsmConfigurationStateFault"
 
+	// ErrCodeInvalidNamespaceFault for service response error code
+	// "InvalidNamespaceFault".
+	//
+	// The namespace isn't valid because the namespace doesn't exist. Provide a
+	// valid namespace.
+	ErrCodeInvalidNamespaceFault = "InvalidNamespaceFault"
+
 	// ErrCodeInvalidReservedNodeStateFault for service response error code
 	// "InvalidReservedNodeState".
 	//
@@ -679,8 +692,8 @@ const (
 	// ErrCodeSnapshotCopyGrantQuotaExceededFault for service response error code
 	// "SnapshotCopyGrantQuotaExceededFault".
 	//
-	// The account has exceeded the maximum number of snapshot copy grants in this
-	// region.
+	// The Amazon Web Services account has exceeded the maximum number of snapshot
+	// copy grants in this region.
 	ErrCodeSnapshotCopyGrantQuotaExceededFault = "SnapshotCopyGrantQuotaExceededFault"
 
 	// ErrCodeSnapshotScheduleAlreadyExistsFault for service response error code
diff --git a/service/redshift/redshiftiface/interface.go b/service/redshift/redshiftiface/interface.go
index 7ac76e1daf2..1f3c6a1815e 100644
--- a/service/redshift/redshiftiface/interface.go
+++ b/service/redshift/redshiftiface/interface.go
@@ -68,10 +68,18 @@ type RedshiftAPI interface {
 	AddPartnerWithContext(aws.Context, *redshift.AddPartnerInput, ...request.Option) (*redshift.AddPartnerOutput, error)
 	AddPartnerRequest(*redshift.AddPartnerInput) (*request.Request, *redshift.AddPartnerOutput)
 
+	AssociateDataShareConsumer(*redshift.AssociateDataShareConsumerInput) (*redshift.AssociateDataShareConsumerOutput, error)
+	AssociateDataShareConsumerWithContext(aws.Context, *redshift.AssociateDataShareConsumerInput, ...request.Option) (*redshift.AssociateDataShareConsumerOutput, error)
+	AssociateDataShareConsumerRequest(*redshift.AssociateDataShareConsumerInput) (*request.Request, *redshift.AssociateDataShareConsumerOutput)
+
 	AuthorizeClusterSecurityGroupIngress(*redshift.AuthorizeClusterSecurityGroupIngressInput) (*redshift.AuthorizeClusterSecurityGroupIngressOutput, error)
 	AuthorizeClusterSecurityGroupIngressWithContext(aws.Context, *redshift.AuthorizeClusterSecurityGroupIngressInput, ...request.Option) (*redshift.AuthorizeClusterSecurityGroupIngressOutput, error)
 	AuthorizeClusterSecurityGroupIngressRequest(*redshift.AuthorizeClusterSecurityGroupIngressInput) (*request.Request, *redshift.AuthorizeClusterSecurityGroupIngressOutput)
 
+	AuthorizeDataShare(*redshift.AuthorizeDataShareInput) (*redshift.AuthorizeDataShareOutput, error)
+	AuthorizeDataShareWithContext(aws.Context, *redshift.AuthorizeDataShareInput, ...request.Option) (*redshift.AuthorizeDataShareOutput, error)
+	AuthorizeDataShareRequest(*redshift.AuthorizeDataShareInput) (*request.Request, *redshift.AuthorizeDataShareOutput)
+
 	AuthorizeEndpointAccess(*redshift.AuthorizeEndpointAccessInput) (*redshift.AuthorizeEndpointAccessOutput, error)
 	AuthorizeEndpointAccessWithContext(aws.Context, *redshift.AuthorizeEndpointAccessInput, ...request.Option) (*redshift.AuthorizeEndpointAccessOutput, error)
 	AuthorizeEndpointAccessRequest(*redshift.AuthorizeEndpointAccessInput) (*request.Request, *redshift.AuthorizeEndpointAccessOutput)
@@ -156,6 +164,10 @@ type RedshiftAPI interface {
 	CreateUsageLimitWithContext(aws.Context, *redshift.CreateUsageLimitInput, ...request.Option) (*redshift.CreateUsageLimitOutput, error)
 	CreateUsageLimitRequest(*redshift.CreateUsageLimitInput) (*request.Request, *redshift.CreateUsageLimitOutput)
 
+	DeauthorizeDataShare(*redshift.DeauthorizeDataShareInput) (*redshift.DeauthorizeDataShareOutput, error)
+	DeauthorizeDataShareWithContext(aws.Context, *redshift.DeauthorizeDataShareInput, ...request.Option) (*redshift.DeauthorizeDataShareOutput, error)
+	DeauthorizeDataShareRequest(*redshift.DeauthorizeDataShareInput) (*request.Request, *redshift.DeauthorizeDataShareOutput)
+
 	DeleteAuthenticationProfile(*redshift.DeleteAuthenticationProfileInput) (*redshift.DeleteAuthenticationProfileOutput, error)
 	DeleteAuthenticationProfileWithContext(aws.Context, *redshift.DeleteAuthenticationProfileInput, ...request.Option) (*redshift.DeleteAuthenticationProfileOutput, error)
 	DeleteAuthenticationProfileRequest(*redshift.DeleteAuthenticationProfileInput) (*request.Request, *redshift.DeleteAuthenticationProfileOutput)
@@ -291,6 +303,18 @@ type RedshiftAPI interface {
 	DescribeClustersPages(*redshift.DescribeClustersInput, func(*redshift.DescribeClustersOutput, bool) bool) error
 	DescribeClustersPagesWithContext(aws.Context, *redshift.DescribeClustersInput, func(*redshift.DescribeClustersOutput, bool) bool, ...request.Option) error
 
+	DescribeDataShares(*redshift.DescribeDataSharesInput) (*redshift.DescribeDataSharesOutput, error)
+	DescribeDataSharesWithContext(aws.Context, *redshift.DescribeDataSharesInput, ...request.Option) (*redshift.DescribeDataSharesOutput, error)
+	DescribeDataSharesRequest(*redshift.DescribeDataSharesInput) (*request.Request, *redshift.DescribeDataSharesOutput)
+
+	DescribeDataSharesForConsumer(*redshift.DescribeDataSharesForConsumerInput) (*redshift.DescribeDataSharesForConsumerOutput, error)
+	DescribeDataSharesForConsumerWithContext(aws.Context, *redshift.DescribeDataSharesForConsumerInput, ...request.Option) (*redshift.DescribeDataSharesForConsumerOutput, error)
+	DescribeDataSharesForConsumerRequest(*redshift.DescribeDataSharesForConsumerInput) (*request.Request, *redshift.DescribeDataSharesForConsumerOutput)
+
+	DescribeDataSharesForProducer(*redshift.DescribeDataSharesForProducerInput) (*redshift.DescribeDataSharesForProducerOutput, error)
+	DescribeDataSharesForProducerWithContext(aws.Context, *redshift.DescribeDataSharesForProducerInput, ...request.Option) (*redshift.DescribeDataSharesForProducerOutput, error)
+	DescribeDataSharesForProducerRequest(*redshift.DescribeDataSharesForProducerInput) (*request.Request, *redshift.DescribeDataSharesForProducerOutput)
+
 	DescribeDefaultClusterParameters(*redshift.DescribeDefaultClusterParametersInput) (*redshift.DescribeDefaultClusterParametersOutput, error)
 	DescribeDefaultClusterParametersWithContext(aws.Context, *redshift.DescribeDefaultClusterParametersInput, ...request.Option) (*redshift.DescribeDefaultClusterParametersOutput, error)
 	DescribeDefaultClusterParametersRequest(*redshift.DescribeDefaultClusterParametersInput) (*request.Request, *redshift.DescribeDefaultClusterParametersOutput)
@@ -438,6 +462,10 @@ type RedshiftAPI interface {
 	DisableSnapshotCopyWithContext(aws.Context, *redshift.DisableSnapshotCopyInput, ...request.Option) (*redshift.DisableSnapshotCopyOutput, error)
 	DisableSnapshotCopyRequest(*redshift.DisableSnapshotCopyInput) (*request.Request, *redshift.DisableSnapshotCopyOutput)
 
+	DisassociateDataShareConsumer(*redshift.DisassociateDataShareConsumerInput) (*redshift.DisassociateDataShareConsumerOutput, error)
+	DisassociateDataShareConsumerWithContext(aws.Context, *redshift.DisassociateDataShareConsumerInput, ...request.Option) (*redshift.DisassociateDataShareConsumerOutput, error)
+	DisassociateDataShareConsumerRequest(*redshift.DisassociateDataShareConsumerInput) (*request.Request, *redshift.DisassociateDataShareConsumerOutput)
+
 	EnableLogging(*redshift.EnableLoggingInput) (*redshift.LoggingStatus, error)
 	EnableLoggingWithContext(aws.Context, *redshift.EnableLoggingInput, ...request.Option) (*redshift.LoggingStatus, error)
 	EnableLoggingRequest(*redshift.EnableLoggingInput) (*request.Request, *redshift.LoggingStatus)
@@ -533,6 +561,10 @@ type RedshiftAPI interface {
 	RebootClusterWithContext(aws.Context, *redshift.RebootClusterInput, ...request.Option) (*redshift.RebootClusterOutput, error)
 	RebootClusterRequest(*redshift.RebootClusterInput) (*request.Request, *redshift.RebootClusterOutput)
 
+	RejectDataShare(*redshift.RejectDataShareInput) (*redshift.RejectDataShareOutput, error)
+	RejectDataShareWithContext(aws.Context, *redshift.RejectDataShareInput, ...request.Option) (*redshift.RejectDataShareOutput, error)
+	RejectDataShareRequest(*redshift.RejectDataShareInput) (*request.Request, *redshift.RejectDataShareOutput)
+
 	ResetClusterParameterGroup(*redshift.ResetClusterParameterGroupInput) (*redshift.ClusterParameterGroupNameMessage, error)
 	ResetClusterParameterGroupWithContext(aws.Context, *redshift.ResetClusterParameterGroupInput, ...request.Option) (*redshift.ClusterParameterGroupNameMessage, error)
 	ResetClusterParameterGroupRequest(*redshift.ResetClusterParameterGroupInput) (*request.Request, *redshift.ClusterParameterGroupNameMessage)