diff --git a/aws/sdk/aws-models/backup.json b/aws/sdk/aws-models/backup.json
index 78472ee8ec423ac5fe075380aaf6cc0d9bca1f76..0c98c38a3c6a94a6afca2a7c802f55357ef774d7 100644
--- a/aws/sdk/aws-models/backup.json
+++ b/aws/sdk/aws-models/backup.json
@@ -2014,6 +2014,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteBackupSelectionInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2063,6 +2066,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteBackupVaultInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2094,6 +2100,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteBackupVaultAccessPolicyInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2149,6 +2158,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteBackupVaultLockConfigurationInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2194,6 +2206,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteBackupVaultNotificationsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2236,6 +2251,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteFrameworkInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#ConflictException"
@@ -2280,6 +2298,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteRecoveryPointInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -2336,6 +2357,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DeleteReportPlanInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#ConflictException"
@@ -3411,6 +3435,9 @@
             "input": {
                 "target": "com.amazonaws.backup#DisassociateRecoveryPointInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -3585,7 +3612,7 @@
                 "ControlScope": {
                     "target": "com.amazonaws.backup#ControlScope",
                     "traits": {
-                        "smithy.api#documentation": "<p>The scope of a control. The control scope defines what the control will evaluate. Three\n         examples of control scopes are: a specific backup plan, all backup plans with a specific\n         tag, or all backup plans. For more information, see <code>ControlScope</code>.</p>"
+                        "smithy.api#documentation": "<p>The scope of a control. The control scope defines what the control will evaluate. Three\n         examples of control scopes are: a specific backup plan, all backup plans with a specific\n         tag, or all backup plans. For more information, see <a href=\"aws-backup/latest/devguide/API_ControlScope.html\">\n               <code>ControlScope</code>.</a>\n         </p>"
                     }
                 }
             },
@@ -4156,6 +4183,9 @@
         },
         "com.amazonaws.backup#GetSupportedResourceTypes": {
             "type": "operation",
+            "input": {
+                "target": "smithy.api#Unit"
+            },
             "output": {
                 "target": "com.amazonaws.backup#GetSupportedResourceTypesOutput"
             },
@@ -4363,6 +4393,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupJobs",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4432,6 +4463,20 @@
                         "smithy.api#documentation": "<p>The account ID to list the jobs from. Returns only backup jobs associated with the\n         specified account ID.</p>\n         <p>If used from an Organizations management account, passing <code>*</code> returns\n         all jobs across the organization.</p>",
                         "smithy.api#httpQuery": "accountId"
                     }
+                },
+                "ByCompleteAfter": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only backup jobs completed after a date expressed in Unix format and Coordinated\n         Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeAfter"
+                    }
+                },
+                "ByCompleteBefore": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only backup jobs completed before a date expressed in Unix format and\n         Coordinated Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeBefore"
+                    }
                 }
             }
         },
@@ -4484,6 +4529,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupPlanTemplatesList",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4557,6 +4603,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupPlanVersionsList",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4638,6 +4685,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupPlansList",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4718,6 +4766,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupSelectionsList",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4799,6 +4848,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "BackupVaultList",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4865,6 +4915,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "CopyJobs",
                     "pageSize": "MaxResults"
                 }
             }
@@ -4934,6 +4985,20 @@
                         "smithy.api#documentation": "<p>The account ID to list the jobs from. Returns only copy jobs associated with the\n         specified account ID.</p>",
                         "smithy.api#httpQuery": "accountId"
                     }
+                },
+                "ByCompleteBefore": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only copy jobs completed before a date expressed in Unix format and Coordinated\n         Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeBefore"
+                    }
+                },
+                "ByCompleteAfter": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only copy jobs completed after a date expressed in Unix format and Coordinated\n         Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeAfter"
+                    }
                 }
             }
         },
@@ -5053,6 +5118,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "Results",
                     "pageSize": "MaxResults"
                 }
             }
@@ -5126,6 +5192,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "RecoveryPoints",
                     "pageSize": "MaxResults"
                 }
             }
@@ -5242,6 +5309,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "RecoveryPoints",
                     "pageSize": "MaxResults"
                 }
             }
@@ -5483,6 +5551,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "RestoreJobs",
                     "pageSize": "MaxResults"
                 }
             }
@@ -5531,6 +5600,20 @@
                         "smithy.api#documentation": "<p>Returns only restore jobs associated with the specified job status.</p>",
                         "smithy.api#httpQuery": "status"
                     }
+                },
+                "ByCompleteBefore": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only copy jobs completed before a date expressed in Unix format and Coordinated\n         Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeBefore"
+                    }
+                },
+                "ByCompleteAfter": {
+                    "target": "com.amazonaws.backup#timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Returns only copy jobs completed after a date expressed in Unix format and Coordinated\n         Universal Time (UTC).</p>",
+                        "smithy.api#httpQuery": "completeAfter"
+                    }
                 }
             }
         },
@@ -5749,6 +5832,9 @@
             "input": {
                 "target": "com.amazonaws.backup#PutBackupVaultAccessPolicyInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -5797,6 +5883,9 @@
             "input": {
                 "target": "com.amazonaws.backup#PutBackupVaultLockConfigurationInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -5860,6 +5949,9 @@
             "input": {
                 "target": "com.amazonaws.backup#PutBackupVaultNotificationsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -6958,6 +7050,9 @@
             "input": {
                 "target": "com.amazonaws.backup#StopBackupJobInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -7033,6 +7128,9 @@
             "input": {
                 "target": "com.amazonaws.backup#TagResourceInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -7100,6 +7198,9 @@
             "input": {
                 "target": "com.amazonaws.backup#UntagResourceInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -7332,6 +7433,9 @@
             "input": {
                 "target": "com.amazonaws.backup#UpdateGlobalSettingsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
@@ -7462,6 +7566,9 @@
             "input": {
                 "target": "com.amazonaws.backup#UpdateRegionSettingsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.backup#InvalidParameterValueException"
diff --git a/aws/sdk/aws-models/chime-sdk-media-pipelines.json b/aws/sdk/aws-models/chime-sdk-media-pipelines.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d2650ca15c45301c9f08f22f3a8e9984387372d
--- /dev/null
+++ b/aws/sdk/aws-models/chime-sdk-media-pipelines.json
@@ -0,0 +1,1276 @@
+{
+    "smithy": "1.0",
+    "metadata": {
+        "suppressions": [
+            {
+                "id": "HttpMethodSemantics",
+                "namespace": "*"
+            },
+            {
+                "id": "HttpResponseCodeSemantics",
+                "namespace": "*"
+            },
+            {
+                "id": "PaginatedTrait",
+                "namespace": "*"
+            },
+            {
+                "id": "HttpHeaderTrait",
+                "namespace": "*"
+            },
+            {
+                "id": "HttpUriConflict",
+                "namespace": "*"
+            },
+            {
+                "id": "Service",
+                "namespace": "*"
+            }
+        ]
+    },
+    "shapes": {
+        "com.amazonaws.chimesdkmediapipelines#AmazonResourceName": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 1011
+                },
+                "smithy.api#pattern": "^arn[\\/\\:\\-\\_\\.a-zA-Z0-9]+$"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#Arn": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 1024
+                },
+                "smithy.api#pattern": "^arn[\\/\\:\\-\\_\\.a-zA-Z0-9]+$",
+                "smithy.api#sensitive": {}
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ArtifactsConfiguration": {
+            "type": "structure",
+            "members": {
+                "Audio": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AudioArtifactsConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for the audio artifacts.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Video": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#VideoArtifactsConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for the video artifacts.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Content": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ContentArtifactsConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for the content artifacts.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The configuration for the artifacts.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ArtifactsState": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "Enabled",
+                        "name": "Enabled"
+                    },
+                    {
+                        "value": "Disabled",
+                        "name": "Disabled"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#AttendeeIdList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.chimesdkmediapipelines#GuidString"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#AudioArtifactsConfiguration": {
+            "type": "structure",
+            "members": {
+                "MuxType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AudioMuxType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The MUX type of the audio artifact configuration object.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The audio artifact configuration object.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#AudioMuxType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "AudioOnly",
+                        "name": "AudioOnly"
+                    },
+                    {
+                        "value": "AudioWithActiveSpeakerVideo",
+                        "name": "AudioWithActiveSpeakerVideo"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#BadRequestException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The input parameters don't match the service's restrictions.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 400
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ChimeSDKMediaPipelinesService": {
+            "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "Chime SDK Media Pipelines",
+                    "arnNamespace": "chime",
+                    "cloudFormationName": "ChimeSDKMediaPipelines",
+                    "cloudTrailEventSource": "chimesdkmediapipelines.amazonaws.com",
+                    "endpointPrefix": "media-pipelines-chime"
+                },
+                "aws.auth#sigv4": {
+                    "name": "chime"
+                },
+                "aws.protocols#restJson1": {},
+                "smithy.api#documentation": "<p>The Amazon Chime SDK media pipeline APIs in this section allow software developers to create Amazon Chime SDK media pipelines \n         and capture audio, video, events, and data messages from Amazon Chime SDK meetings. For more information about media pipleines, see \n         <a href=\"https://docs.aws.amazon.com/chime/latest/APIReference/API_Operations_Amazon_Chime_SDK_Media_Pipelines.html\">Amzon Chime SDK media pipelines</a>.\n      </p>",
+                "smithy.api#title": "Amazon Chime SDK Media Pipelines"
+            },
+            "version": "2021-07-15",
+            "operations": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipeline"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#DeleteMediaCapturePipeline"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipeline"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelines"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ListTagsForResource"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagResource"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UntagResource"
+                }
+            ]
+        },
+        "com.amazonaws.chimesdkmediapipelines#ChimeSdkMeetingConfiguration": {
+            "type": "structure",
+            "members": {
+                "SourceConfiguration": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#SourceConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The source configuration for a specified media capture pipline.</p>"
+                    }
+                },
+                "ArtifactsConfiguration": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ArtifactsConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for the artifacts in an Amazon Chime SDK meeting.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The configuration object of the Amazon Chime SDK meeting for a specified media capture pipeline. <code>SourceType</code> must be <code>ChimeSdkMeeting</code>.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ClientRequestToken": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 2,
+                    "max": 64
+                },
+                "smithy.api#pattern": "^[-_a-zA-Z0-9]*$",
+                "smithy.api#sensitive": {}
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ContentArtifactsConfiguration": {
+            "type": "structure",
+            "members": {
+                "State": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ArtifactsState",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Indicates whether the content artifact is enabled or disabled.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "MuxType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ContentMuxType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The MUX type of the artifact configuration.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The content artifact object.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ContentMuxType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ContentOnly",
+                        "name": "ContentOnly"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipeline": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipelineRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipelineResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ResourceLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Creates a media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/sdk-media-capture-pipelines",
+                    "code": 201
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipelineRequest": {
+            "type": "structure",
+            "members": {
+                "SourceType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaPipelineSourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Source type from which the media artifacts are captured. A Chime SDK Meeting \n         is the only supported source.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "SourceArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Arn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>ARN of the source from which the media artifacts are captured.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "SinkType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaPipelineSinkType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Destination type to which the media artifacts are saved. You must use an S3 bucket. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "SinkArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Arn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of the sink type.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "ClientRequestToken": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ClientRequestToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The token assigned to the client making the pipeline request.</p>",
+                        "smithy.api#idempotencyToken": {}
+                    }
+                },
+                "ChimeSdkMeetingConfiguration": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ChimeSdkMeetingConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for a specified media capture pipeline. <code>SourceType</code> must be <code>ChimeSdkMeeting</code>.</p>"
+                    }
+                },
+                "Tags": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The list of tags.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#CreateMediaCapturePipelineResponse": {
+            "type": "structure",
+            "members": {
+                "MediaCapturePipeline": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaCapturePipeline",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A media capture pipeline object, the ID, source type, source ARN, sink type, and  sink ARN of a media capture pipeline object.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#DeleteMediaCapturePipeline": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#DeleteMediaCapturePipelineRequest"
+            },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Deletes the media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "DELETE",
+                    "uri": "/sdk-media-capture-pipelines/{MediaPipelineId}",
+                    "code": 204
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#DeleteMediaCapturePipelineRequest": {
+            "type": "structure",
+            "members": {
+                "MediaPipelineId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#GuidString",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ID of the media capture pipeline being deleted. </p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ErrorCode": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "BadRequest",
+                        "name": "BadRequest"
+                    },
+                    {
+                        "value": "Forbidden",
+                        "name": "Forbidden"
+                    },
+                    {
+                        "value": "NotFound",
+                        "name": "NotFound"
+                    },
+                    {
+                        "value": "ResourceLimitExceeded",
+                        "name": "ResourceLimitExceeded"
+                    },
+                    {
+                        "value": "ServiceFailure",
+                        "name": "ServiceFailure"
+                    },
+                    {
+                        "value": "ServiceUnavailable",
+                        "name": "ServiceUnavailable"
+                    },
+                    {
+                        "value": "Throttling",
+                        "name": "Throttling"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ExternalUserIdList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.chimesdkmediapipelines#ExternalUserIdType"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ExternalUserIdType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 2,
+                    "max": 64
+                },
+                "smithy.api#sensitive": {}
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ForbiddenException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The client is permanently forbidden from making the request.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 403
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipeline": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipelineRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipelineResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets an existing media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "GET",
+                    "uri": "/sdk-media-capture-pipelines/{MediaPipelineId}",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipelineRequest": {
+            "type": "structure",
+            "members": {
+                "MediaPipelineId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#GuidString",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ID of the pipeline that you want to get.</p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#GetMediaCapturePipelineResponse": {
+            "type": "structure",
+            "members": {
+                "MediaCapturePipeline": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaCapturePipeline",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The media capture pipeline object.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#GuidString": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 36,
+                    "max": 36
+                },
+                "smithy.api#pattern": "^[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#Iso8601Timestamp": {
+            "type": "timestamp",
+            "traits": {
+                "smithy.api#timestampFormat": "date-time"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelines": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelinesRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelinesResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ResourceLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Returns a list of media capture pipelines.</p>",
+                "smithy.api#http": {
+                    "method": "GET",
+                    "uri": "/sdk-media-capture-pipelines",
+                    "code": 200
+                },
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelinesRequest": {
+            "type": "structure",
+            "members": {
+                "NextToken": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The token used to retrieve the next page of results.</p>",
+                        "smithy.api#httpQuery": "next-token"
+                    }
+                },
+                "MaxResults": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ResultMax",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The maximum number of results to return in a single call. Valid Range: 1 - 99.</p>",
+                        "smithy.api#httpQuery": "max-results"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListMediaCapturePipelinesResponse": {
+            "type": "structure",
+            "members": {
+                "MediaCapturePipelines": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaCapturePipelineSummaryList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The media capture pipeline objects in the list.</p>"
+                    }
+                },
+                "NextToken": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The token used to retrieve the next page of results. </p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListTagsForResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#ListTagsForResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#ListTagsForResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Lists the tags applied to an Amazon Chime SDK media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "GET",
+                    "uri": "/tags",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListTagsForResourceRequest": {
+            "type": "structure",
+            "members": {
+                "ResourceARN": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AmazonResourceName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The resource ARN.</p>",
+                        "smithy.api#httpQuery": "arn",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ListTagsForResourceResponse": {
+            "type": "structure",
+            "members": {
+                "Tags": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The tag key-value pairs.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaCapturePipeline": {
+            "type": "structure",
+            "members": {
+                "MediaPipelineId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#GuidString",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ID of a media capture pipeline.</p>"
+                    }
+                },
+                "MediaPipelineArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AmazonResourceName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of a media capture pipeline.</p>"
+                    }
+                },
+                "SourceType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaPipelineSourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Source type from which media artifacts are saved. You must use <code>ChimeMeeting</code>.</p>"
+                    }
+                },
+                "SourceArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Arn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>ARN of the source from which the media artifacts are saved.</p>"
+                    }
+                },
+                "Status": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaPipelineStatus",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The status of the media capture pipeline.</p>"
+                    }
+                },
+                "SinkType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#MediaPipelineSinkType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Destination type to which the media artifacts are saved. You must use an S3 Bucket.</p>"
+                    }
+                },
+                "SinkArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Arn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>ARN of the destination to which the media artifacts are saved.</p>"
+                    }
+                },
+                "CreatedTimestamp": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Iso8601Timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The time at which the capture pipeline was created, in ISO 8601 format.</p>"
+                    }
+                },
+                "UpdatedTimestamp": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#Iso8601Timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The time at which the capture pipeline was updated, in ISO 8601 format.</p>"
+                    }
+                },
+                "ChimeSdkMeetingConfiguration": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ChimeSdkMeetingConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The configuration for a specified media capture pipeline. <code>SourceType</code> must be <code>ChimeSdkMeeting</code>.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>A media capture pipeline object consisting of an ID, source type, source ARN, a sink type, a sink ARN, and a configuration object.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaCapturePipelineSummary": {
+            "type": "structure",
+            "members": {
+                "MediaPipelineId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#GuidString",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ID of a media capture pipeline.</p>"
+                    }
+                },
+                "MediaPipelineArn": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AmazonResourceName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of a media capture pipeline.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>A summary of a media capture pipeline.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaCapturePipelineSummaryList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.chimesdkmediapipelines#MediaCapturePipelineSummary"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaPipelineSinkType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "S3Bucket",
+                        "name": "S3Bucket"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaPipelineSourceType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ChimeSdkMeeting",
+                        "name": "ChimeSdkMeeting"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#MediaPipelineStatus": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "Initializing",
+                        "name": "Initializing"
+                    },
+                    {
+                        "value": "InProgress",
+                        "name": "InProgress"
+                    },
+                    {
+                        "value": "Failed",
+                        "name": "Failed"
+                    },
+                    {
+                        "value": "Stopping",
+                        "name": "Stopping"
+                    },
+                    {
+                        "value": "Stopped",
+                        "name": "Stopped"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#NotFoundException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>One or more of the resources in the request does not exist in the system.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 404
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ResourceLimitExceededException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The request exceeds the resource limit.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 400
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ResultMax": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 100
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#SelectedVideoStreams": {
+            "type": "structure",
+            "members": {
+                "AttendeeIds": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AttendeeIdList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The attendee IDs of the streams selected for a media capture pipeline. </p>"
+                    }
+                },
+                "ExternalUserIds": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ExternalUserIdList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The external user IDs of the streams selected for a media capture pipeline.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The video streams to capture for a specified media capture pipeline. The total number of video streams can't exceed 25.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ServiceFailureException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The service encountered an unexpected error.</p>",
+                "smithy.api#error": "server",
+                "smithy.api#httpError": 500
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The service is currently unavailable.</p>",
+                "smithy.api#error": "server",
+                "smithy.api#httpError": 503
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#SourceConfiguration": {
+            "type": "structure",
+            "members": {
+                "SelectedVideoStreams": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#SelectedVideoStreams",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The selected video streams to capture for a specified media capture pipeline. The number of video streams can't exceed 25.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Source configuration for a specified media capture pipeline.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#String": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 4096
+                },
+                "smithy.api#pattern": ".*"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#Tag": {
+            "type": "structure",
+            "members": {
+                "Key": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagKey",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The key of the tag.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Value": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagValue",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The value of the tag.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Describes a tag applied to a resource.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagKey": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagKeyList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.chimesdkmediapipelines#TagKey"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 50
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.chimesdkmediapipelines#Tag"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 50
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#TagResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#TagResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Applies the specified tags to the specified Amazon Chime SDK media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/tags?operation=tag-resource",
+                    "code": 204
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagResourceRequest": {
+            "type": "structure",
+            "members": {
+                "ResourceARN": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AmazonResourceName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The resource ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Tags": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The tag key-value pairs.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagResourceResponse": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.chimesdkmediapipelines#TagValue": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 256
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#ThrottledClientException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The client exceeded its request rate limit.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 429
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException": {
+            "type": "structure",
+            "members": {
+                "Code": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ErrorCode"
+                },
+                "Message": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String"
+                },
+                "RequestId": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The request id associated with the call responsible for the exception.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The client is not currently authorized to make the request.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 401
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#UntagResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.chimesdkmediapipelines#UntagResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.chimesdkmediapipelines#UntagResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#BadRequestException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ForbiddenException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceFailureException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ServiceUnavailableException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ThrottledClientException"
+                },
+                {
+                    "target": "com.amazonaws.chimesdkmediapipelines#UnauthorizedClientException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Removes the specified tags from the specified Amazon Chime SDK media capture pipeline.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/tags?operation=untag-resource",
+                    "code": 204
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#UntagResourceRequest": {
+            "type": "structure",
+            "members": {
+                "ResourceARN": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#AmazonResourceName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The resource ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "TagKeys": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#TagKeyList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The tag keys.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#UntagResourceResponse": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.chimesdkmediapipelines#VideoArtifactsConfiguration": {
+            "type": "structure",
+            "members": {
+                "State": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#ArtifactsState",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Indicates whether the video artifact is enabled or disabled.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "MuxType": {
+                    "target": "com.amazonaws.chimesdkmediapipelines#VideoMuxType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The MUX type of the video artifact configuration object.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The video artifact configuration object.</p>"
+            }
+        },
+        "com.amazonaws.chimesdkmediapipelines#VideoMuxType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "VideoOnly",
+                        "name": "VideoOnly"
+                    }
+                ]
+            }
+        }
+    }
+}
diff --git a/aws/sdk/aws-models/cloudcontrol.json b/aws/sdk/aws-models/cloudcontrol.json
index a25406094d5999a33b1ba47e27ceb57615672d6d..682d78b2a3b7fd9456179d8d81a30fa8c9ccfbec 100644
--- a/aws/sdk/aws-models/cloudcontrol.json
+++ b/aws/sdk/aws-models/cloudcontrol.json
@@ -1,33 +1,5 @@
 {
     "smithy": "1.0",
-    "metadata": {
-        "suppressions": [
-            {
-                "id": "HttpMethodSemantics",
-                "namespace": "*"
-            },
-            {
-                "id": "HttpResponseCodeSemantics",
-                "namespace": "*"
-            },
-            {
-                "id": "PaginatedTrait",
-                "namespace": "*"
-            },
-            {
-                "id": "HttpHeaderTrait",
-                "namespace": "*"
-            },
-            {
-                "id": "HttpUriConflict",
-                "namespace": "*"
-            },
-            {
-                "id": "Service",
-                "namespace": "*"
-            }
-        ]
-    },
     "shapes": {
         "com.amazonaws.cloudcontrol#AlreadyExistsException": {
             "type": "structure",
@@ -119,9 +91,7 @@
             "traits": {
                 "aws.api#service": {
                     "sdkId": "CloudControl",
-                    "arnNamespace": "cloudcontrolapi",
-                    "cloudFormationName": "CloudControl",
-                    "cloudTrailEventSource": "cloudcontrol.amazonaws.com",
+                    "cloudTrailEventSource": "cloudcontrolapi.amazonaws.com",
                     "endpointPrefix": "cloudcontrolapi"
                 },
                 "aws.auth#sigv4": {
@@ -439,7 +409,8 @@
                 "smithy.api#length": {
                     "min": 1,
                     "max": 1024
-                }
+                },
+                "smithy.api#pattern": "^.+$"
             }
         },
         "com.amazonaws.cloudcontrol#GeneralServiceException": {
@@ -815,7 +786,8 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
-                    "pageSize": "MaxResults"
+                    "pageSize": "MaxResults",
+                    "items": "ResourceRequestStatusSummaries"
                 }
             }
         },
@@ -857,6 +829,9 @@
                         "smithy.api#documentation": "<p>If the request doesn't return all of the remaining results, <code>NextToken</code> is set to a token. To retrieve the next set of results, call <code>ListResources</code> again and assign that token to the request object's <code>NextToken</code> parameter. If the request returns all results, <code>NextToken</code> is set to null.</p>"
                     }
                 }
+            },
+            "traits": {
+                "smithy.api#output": {}
             }
         },
         "com.amazonaws.cloudcontrol#ListResources": {
@@ -925,7 +900,8 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
-                    "pageSize": "MaxResults"
+                    "pageSize": "MaxResults",
+                    "items": "ResourceDescriptions"
                 }
             }
         },
@@ -992,6 +968,9 @@
                         "smithy.api#documentation": "<p>If the request doesn't return all of the remaining results, <code>NextToken</code> is set to a token. To retrieve the next set of results, call <code>ListResources</code> again and assign that token to the request object's <code>NextToken</code> parameter. If the request returns all results, <code>NextToken</code> is set to null.</p>"
                     }
                 }
+            },
+            "traits": {
+                "smithy.api#output": {}
             }
         },
         "com.amazonaws.cloudcontrol#MaxResults": {
@@ -1134,6 +1113,7 @@
                     "min": 1,
                     "max": 65536
                 },
+                "smithy.api#pattern": "^[\\s\\S]*$",
                 "smithy.api#sensitive": {}
             }
         },
@@ -1227,8 +1207,9 @@
             "traits": {
                 "smithy.api#length": {
                     "min": 1,
-                    "max": 16384
+                    "max": 65536
                 },
+                "smithy.api#pattern": "^[\\s\\S]*$",
                 "smithy.api#sensitive": {}
             }
         },
@@ -1395,7 +1376,8 @@
                 "smithy.api#length": {
                     "min": 0,
                     "max": 1024
-                }
+                },
+                "smithy.api#pattern": "^[\\s\\S]*$"
             }
         },
         "com.amazonaws.cloudcontrol#ThrottlingException": {
diff --git a/aws/sdk/aws-models/codeguru-reviewer.json b/aws/sdk/aws-models/codeguru-reviewer.json
index e139a3f9ac0cd64cc45e14a7180d1acc3f973ec3..985e4ad8b96a226b7b3e4d743048d0fb804e88a9 100644
--- a/aws/sdk/aws-models/codeguru-reviewer.json
+++ b/aws/sdk/aws-models/codeguru-reviewer.json
@@ -414,7 +414,13 @@
                 "AnalysisTypes": {
                     "target": "com.amazonaws.codegurureviewer#AnalysisTypes",
                     "traits": {
-                        "smithy.api#documentation": "<p>They types of analysis performed during a repository analysis or a pull request review. You can specify either \n         <code>Security</code>, <code>CodeQuality</code>, or both.</p>"
+                        "smithy.api#documentation": "<p>The types of analysis performed during a repository analysis or a pull request review. You can specify either \n         <code>Security</code>, <code>CodeQuality</code>, or both.</p>"
+                    }
+                },
+                "ConfigFileState": {
+                    "target": "com.amazonaws.codegurureviewer#ConfigFileState",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The state of the <code>aws-codeguru-reviewer.yml</code> configuration file that allows\n         the configuration of the CodeGuru Reviewer analysis. The file either exists, doesn't exist, or exists\n         with errors at the root directory of your repository.</p>"
                     }
                 }
             },
@@ -571,6 +577,25 @@
                 }
             }
         },
+        "com.amazonaws.codegurureviewer#ConfigFileState": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "Present",
+                        "name": "PRESENT"
+                    },
+                    {
+                        "value": "Absent",
+                        "name": "ABSENT"
+                    },
+                    {
+                        "value": "PresentWithErrors",
+                        "name": "PRESENT_WITH_ERRORS"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.codegurureviewer#ConflictException": {
             "type": "structure",
             "members": {
@@ -1167,6 +1192,12 @@
                 "smithy.api#box": {}
             }
         },
+        "com.amazonaws.codegurureviewer#LinesOfCodeCount": {
+            "type": "long",
+            "traits": {
+                "smithy.api#box": {}
+            }
+        },
         "com.amazonaws.codegurureviewer#ListCodeReviews": {
             "type": "operation",
             "input": {
@@ -1497,6 +1528,7 @@
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
+                    "items": "RepositoryAssociationSummaries",
                     "pageSize": "MaxResults"
                 }
             }
@@ -1637,19 +1669,19 @@
                 }
             }
         },
-        "com.amazonaws.codegurureviewer#MeteredLinesOfCodeCount": {
-            "type": "long",
-            "traits": {
-                "smithy.api#box": {}
-            }
-        },
         "com.amazonaws.codegurureviewer#Metrics": {
             "type": "structure",
             "members": {
                 "MeteredLinesOfCodeCount": {
-                    "target": "com.amazonaws.codegurureviewer#MeteredLinesOfCodeCount",
+                    "target": "com.amazonaws.codegurureviewer#LinesOfCodeCount",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n            <code>MeteredLinesOfCodeCount</code> is the number of lines of code in the repository where the code review happened. \n         This does not include non-code lines such as comments and blank lines.\n      </p>"
+                    }
+                },
+                "SuppressedLinesOfCodeCount": {
+                    "target": "com.amazonaws.codegurureviewer#LinesOfCodeCount",
                     "traits": {
-                        "smithy.api#documentation": "<p>\n            <code>MeteredLinesOfCode</code> is the number of lines of code in the repository where the code review happened. \n         This does not include non-code lines such as comments and blank lines.\n      </p>"
+                        "smithy.api#documentation": "<p>\n            <code>SuppressedLinesOfCodeCount</code> is the number of lines of code in the repository\n         where the code review happened that CodeGuru Reviewer did not analyze. The lines suppressed in the\n         analysis is based on the <code>excludeFiles</code> variable in the\n            <code>aws-codeguru-reviewer.yml</code> file. This number does not include non-code lines\n         such as comments and blank lines. </p>"
                     }
                 },
                 "FindingsCount": {
@@ -1667,11 +1699,17 @@
             "type": "structure",
             "members": {
                 "MeteredLinesOfCodeCount": {
-                    "target": "com.amazonaws.codegurureviewer#MeteredLinesOfCodeCount",
+                    "target": "com.amazonaws.codegurureviewer#LinesOfCodeCount",
                     "traits": {
                         "smithy.api#documentation": "<p>\n         Lines of code metered in the code review. For the initial code review pull request and all subsequent revisions, \n         this includes all lines of code in the files added to the pull request. In subsequent revisions, for files that already \n         existed in the pull request, this includes only the changed lines of code. In both cases, this does not include non-code lines such as comments \n         and import statements. For example, if you submit a pull request containing 5 files, each with 500 lines of code, and in \n         a subsequent revision you added a new file with 200 lines of code, and also modified a total of 25 lines across the initial 5 files, \n         <code>MeteredLinesOfCodeCount</code> includes the first 5 files (5 * 500 = 2,500 lines), the new file (200 lines) and the 25 changed lines of\n         code for a total of 2,725 lines of code.\n      </p>"
                     }
                 },
+                "SuppressedLinesOfCodeCount": {
+                    "target": "com.amazonaws.codegurureviewer#LinesOfCodeCount",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Lines of code suppressed in the code review based on the <code>excludeFiles</code>\n         element in the <code>aws-codeguru-reviewer.yml</code> file. For full repository analyses,\n         this number includes all lines of code in the files that are suppressed. For pull requests,\n         this number only includes the <i>changed</i> lines of code that are\n         suppressed. In both cases, this number does not include non-code lines such as comments and\n         import statements. For example, if you initiate a full repository analysis on a repository\n         containing 5 files, each file with 100 lines of code, and 2 files are listed as excluded in\n         the <code>aws-codeguru-reviewer.yml</code> file, then\n            <code>SuppressedLinesOfCodeCount</code> returns 200 (2 * 100) as the total number of\n         lines of code suppressed. However, if you submit a pull request for the same repository,\n         then  <code>SuppressedLinesOfCodeCount</code> only includes the lines in the 2 files\n         that changed. If only 1 of the 2 files changed in the pull request, then\n            <code>SuppressedLinesOfCodeCount</code>  returns 100 (1 * 100) as the total number of\n         lines of code suppressed.</p>"
+                    }
+                },
                 "FindingsCount": {
                     "target": "com.amazonaws.codegurureviewer#FindingsCount",
                     "traits": {
diff --git a/aws/sdk/aws-models/compute-optimizer.json b/aws/sdk/aws-models/compute-optimizer.json
index f1f2a584fd72b51f34bd99b767313c43511a605f..29b2f0fa737037ecf4a79c4721ce3ca0a906ca08 100644
--- a/aws/sdk/aws-models/compute-optimizer.json
+++ b/aws/sdk/aws-models/compute-optimizer.json
@@ -488,7 +488,7 @@
                 "resourceType": {
                     "target": "com.amazonaws.computeoptimizer#ResourceType",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference to delete.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>",
+                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference to delete.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>\n        <note>\n            <p>The valid values for this parameter are <code>Ec2Instance</code> and\n                    <code>AutoScalingGroup</code>.</p>\n        </note>",
                         "smithy.api#required": {}
                     }
                 },
@@ -2796,7 +2796,7 @@
                 "resourceType": {
                     "target": "com.amazonaws.computeoptimizer#ResourceType",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference for which to return\n            preferences.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>",
+                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference for which to return\n            preferences.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>\n        <note>\n            <p>The valid values for this parameter are <code>Ec2Instance</code> and\n                    <code>AutoScalingGroup</code>.</p>\n        </note>",
                         "smithy.api#required": {}
                     }
                 },
@@ -3984,7 +3984,7 @@
                 "resourceType": {
                     "target": "com.amazonaws.computeoptimizer#ResourceType",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference to create.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>",
+                        "smithy.api#documentation": "<p>The target resource type of the recommendation preference to create.</p>\n        <p>The <code>Ec2Instance</code> option encompasses standalone instances and instances\n            that are part of Auto Scaling groups. The <code>AutoScalingGroup</code> option\n            encompasses only instances that are part of an Auto Scaling group.</p>\n        <note>\n            <p>The valid values for this parameter are <code>Ec2Instance</code> and\n                    <code>AutoScalingGroup</code>.</p>\n        </note>",
                         "smithy.api#required": {}
                     }
                 },
diff --git a/aws/sdk/aws-models/datasync.json b/aws/sdk/aws-models/datasync.json
index ee8d051df14775cbf4cf934d6b34f868ba22de5e..dc4bc0a1a1ffd55d6c7228b904afb499e89cffcf 100644
--- a/aws/sdk/aws-models/datasync.json
+++ b/aws/sdk/aws-models/datasync.json
@@ -2863,6 +2863,9 @@
                 },
                 "errorCode": {
                     "target": "com.amazonaws.datasync#string"
+                },
+                "datasyncErrorCode": {
+                    "target": "com.amazonaws.datasync#string"
                 }
             },
             "traits": {
@@ -3535,6 +3538,21 @@
                 ]
             }
         },
+        "com.amazonaws.datasync#ObjectTags": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "PRESERVE",
+                        "name": "PRESERVE"
+                    },
+                    {
+                        "value": "NONE",
+                        "name": "NONE"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.datasync#OnPremConfig": {
             "type": "structure",
             "members": {
@@ -3603,7 +3621,7 @@
                 "VerifyMode": {
                     "target": "com.amazonaws.datasync#VerifyMode",
                     "traits": {
-                        "smithy.api#documentation": "<p>A value that determines whether a data integrity verification should be performed at\n      the end of a task execution after all data and metadata have been transferred. \n      For more information, see \n      <a href=\"https://docs.aws.amazon.com/datasync/latest/userguide/create-task.html\">Configure task settings</a>.\n    </p>\n         <p>Default value: POINT_IN_TIME_CONSISTENT.</p>\n         <p>ONLY_FILES_TRANSFERRED (recommended): Perform verification only on files that were transferred.\n    </p>\n    \n         <p>POINT_IN_TIME_CONSISTENT: Scan the entire source and entire destination \n      at the end of the transfer \n      to verify that source and destination are fully \n      synchronized. This option isn't supported when transferring to S3 Glacier or S3 Glacier Deep Archive storage classes.</p>\n         <p>NONE: No additional verification is done at the end of the \n      transfer, but all data transmissions are integrity-checked with \n      checksum verification during the transfer.</p>"
+                        "smithy.api#documentation": "<p>A value that determines whether a data integrity verification should be performed at\n      the end of a task execution after all data and metadata have been transferred. \n      For more information, see \n      <a href=\"https://docs.aws.amazon.com/datasync/latest/userguide/create-task.html\">Configure task settings</a>.\n    </p>\n         <p>Default value: POINT_IN_TIME_CONSISTENT.</p>\n         <p>ONLY_FILES_TRANSFERRED (recommended): Perform verification only on files that were transferred.\n    </p>\n    \n         <p>POINT_IN_TIME_CONSISTENT: Scan the entire source and entire destination \n      at the end of the transfer \n      to verify that source and destination are fully \n      synchronized. This option isn't supported when transferring to S3 Glacier Flexible Retrieval or S3 Glacier Deep Archive storage classes.</p>\n         <p>NONE: No additional verification is done at the end of the \n      transfer, but all data transmissions are integrity-checked with \n      checksum verification during the transfer.</p>"
                     }
                 },
                 "OverwriteMode": {
@@ -3621,7 +3639,7 @@
                 "Mtime": {
                     "target": "com.amazonaws.datasync#Mtime",
                     "traits": {
-                        "smithy.api#documentation": "<p>A value that indicates the last time that a file was modified (that is, a file was\n      written to) before the PREPARING phase. This option is required for cases when you need to run\n      the same task more than one time. </p>\n         <p>Default value: PRESERVE. </p>\n         <p>PRESERVE: Preserve original <code>Mtime</code> (recommended)</p>\n         <p> NONE: Ignore <code>Mtime</code>. </p>\n         <note>\n            <p>If <code>Mtime</code> is set to PRESERVE, <code>Atime</code> must be set to\n        BEST_EFFORT.</p>\n            <p>If <code>Mtime</code> is set to NONE, <code>Atime</code> must also be set to NONE.\n      </p>\n         </note>"
+                        "smithy.api#documentation": "<p>A value that indicates the last time that a file was modified (that is, a file was\n      written to) before the PREPARING phase. This option is required for cases when you need to run\n      the same task more than one time. </p>\n         <p>Default Value: <code>PRESERVE</code>\n         </p>\n         <p>PRESERVE: Preserve original <code>Mtime</code> (recommended)</p>\n         <p> NONE: Ignore <code>Mtime</code>. </p>\n         <note>\n            <p>If <code>Mtime</code> is set to PRESERVE, <code>Atime</code> must be set to\n        BEST_EFFORT.</p>\n            <p>If <code>Mtime</code> is set to NONE, <code>Atime</code> must also be set to NONE.\n      </p>\n         </note>"
                     }
                 },
                 "Uid": {
@@ -3683,6 +3701,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>A value that determines which components of the SMB security descriptor are copied from source\n      to destination objects.\n      </p>\n         <p>This value is only used for transfers \n      between SMB and Amazon FSx for Windows File Server locations, or between two Amazon FSx for Windows File\n      Server locations. For more information about how \n      DataSync handles metadata, see\n      <a href=\"https://docs.aws.amazon.com/datasync/latest/userguide/special-files.html\">How DataSync Handles Metadata and Special Files</a>.\n    </p>\n         <p>Default value: OWNER_DACL.</p>\n\n         <p>\n            <b>OWNER_DACL</b>: For each copied object, DataSync copies the following metadata:</p>\n         <ul>\n            <li>\n               <p>Object owner.</p>\n            </li>\n            <li>\n               <p>NTFS discretionary access control lists (DACLs), which determine whether to \n        grant access to an object.</p>\n            </li>\n         </ul>\n         <p>When choosing this option, DataSync does NOT copy the NTFS system access control lists\n      (SACLs), which are used by administrators to log attempts to access a secured object.</p>\n    \n         <p>\n            <b>OWNER_DACL_SACL</b>: For each copied object, DataSync copies the following metadata:</p> \n         <ul>\n            <li>\n               <p>Object owner.</p>\n            </li>\n            <li>\n               <p>NTFS discretionary access control lists (DACLs), which determine whether to\n          grant access to an object.</p>\n            </li>\n            <li>\n               <p>NTFS system access control lists (SACLs), which are used by administrators \n          to log attempts to access a secured object.</p>\n            </li>\n         </ul>\n         <p>Copying SACLs requires granting additional permissions to the Windows user that DataSync\n      uses to access your SMB location. For information about choosing a user that ensures\n      sufficient permissions to files, folders, and metadata, see <a href=\"create-smb-location.html#SMBuser\">user</a>.</p>\n    \n         <p>\n            <b>NONE</b>: None of the SMB security descriptor components\n      are copied. Destination objects are owned by the user that was provided for accessing the \n      destination location. DACLs and SACLs are set based on the destination server’s configuration.\n    </p>"
                     }
+                },
+                "ObjectTags": {
+                    "target": "com.amazonaws.datasync#ObjectTags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Specifies whether object tags are maintained when transferring between object storage systems. If you want your DataSync task to ignore object tags, specify the <code>NONE</code> value.</p>\n         <p>Default Value: <code>PRESERVE</code>\n         </p>"
+                    }
                 }
             },
             "traits": {
diff --git a/aws/sdk/aws-models/ec2.json b/aws/sdk/aws-models/ec2.json
index a2bb01bf7f9fe9c1d358fce70e54c6f016e3a8a6..a3906537105d1611b502189faea17361ad3e202e 100644
--- a/aws/sdk/aws-models/ec2.json
+++ b/aws/sdk/aws-models/ec2.json
@@ -1363,6 +1363,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Indicates whether to enable or disable host recovery for the Dedicated Host. \n\t\t\tHost recovery is disabled by default. For more information, see \n\t\t\t<a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/dedicated-hosts-recovery.html\">\n\t\t\tHost recovery</a> in the <i>Amazon EC2 User Guide</i>.</p>\n\t\t       <p>Default: <code>off</code>\n         </p>"
                     }
+                },
+                "OutpostArn": {
+                    "target": "com.amazonaws.ec2#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Amazon Web Services Outpost on which to allocate the Dedicated Host.</p>"
+                    }
                 }
             }
         },
@@ -2760,6 +2766,9 @@
                 {
                     "target": "com.amazonaws.ec2#GetInstanceTypesFromInstanceRequirements"
                 },
+                {
+                    "target": "com.amazonaws.ec2#GetInstanceUefiData"
+                },
                 {
                     "target": "com.amazonaws.ec2#GetIpamAddressHistory"
                 },
@@ -13614,13 +13623,6 @@
         "com.amazonaws.ec2#CreateSubnetCidrReservationRequest": {
             "type": "structure",
             "members": {
-                "TagSpecifications": {
-                    "target": "com.amazonaws.ec2#TagSpecificationList",
-                    "traits": {
-                        "smithy.api#documentation": "<p>The tags to assign to the subnet CIDR reservation.</p>",
-                        "smithy.api#xmlName": "TagSpecification"
-                    }
-                },
                 "SubnetId": {
                     "target": "com.amazonaws.ec2#SubnetId",
                     "traits": {
@@ -13653,6 +13655,13 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, \n   and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. \n   Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
                     }
+                },
+                "TagSpecifications": {
+                    "target": "com.amazonaws.ec2#TagSpecificationList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The tags to assign to the subnet CIDR reservation.</p>",
+                        "smithy.api#xmlName": "TagSpecification"
+                    }
                 }
             }
         },
@@ -15082,6 +15091,18 @@
                         "smithy.api#xmlName": "SecurityGroupId"
                     }
                 },
+                "IpAddressType": {
+                    "target": "com.amazonaws.ec2#IpAddressType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The IP address type for the endpoint.</p>"
+                    }
+                },
+                "DnsOptions": {
+                    "target": "com.amazonaws.ec2#DnsOptionsSpecification",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The DNS options for the endpoint.</p>"
+                    }
+                },
                 "ClientToken": {
                     "target": "com.amazonaws.ec2#String",
                     "traits": {
@@ -15177,6 +15198,13 @@
                         "smithy.api#xmlName": "GatewayLoadBalancerArn"
                     }
                 },
+                "SupportedIpAddressTypes": {
+                    "target": "com.amazonaws.ec2#ValueStringList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The supported IP address types. The possible values are <code>ipv4</code> and <code>ipv6</code>.</p>",
+                        "smithy.api#xmlName": "SupportedIpAddressType"
+                    }
+                },
                 "ClientToken": {
                     "target": "com.amazonaws.ec2#String",
                     "traits": {
@@ -29805,7 +29833,7 @@
                 "Filters": {
                     "target": "com.amazonaws.ec2#FilterList",
                     "traits": {
-                        "smithy.api#documentation": "<p>One or more filters.</p>\n\t\t       <ul>\n            <li>\n                <p>\n                  <code>service-id</code> - The ID of the service.</p>\n            </li>\n            <li>\n               <p>\n                  <code>vpc-endpoint-owner</code> - The ID of the Amazon Web Services account ID \n\t\t        that owns the endpoint.</p>\n            </li>\n            <li>\n\t\t\t            <p>\n                  <code>vpc-endpoint-state</code> - The state of the endpoint\n\t\t\t        (<code>pendingAcceptance</code> | <code>pending</code> |\n\t\t\t        <code>available</code> | <code>deleting</code> | <code>deleted</code> |\n\t\t\t        <code>rejected</code> | <code>failed</code>).</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>vpc-endpoint-id</code> - The ID of the endpoint.</p>\n\t\t\t         </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>One or more filters.</p>\n\t\t       <ul>\n            <li>\n\t\t             <p>\n                  <code>ip-address-type</code> - The IP address type (<code>ipv4</code> | <code>ipv6</code>).</p>\n\t\t          </li>\n            <li>\n                <p>\n                  <code>service-id</code> - The ID of the service.</p>\n            </li>\n            <li>\n               <p>\n                  <code>vpc-endpoint-owner</code> - The ID of the Amazon Web Services account ID \n\t\t        that owns the endpoint.</p>\n            </li>\n            <li>\n\t\t\t            <p>\n                  <code>vpc-endpoint-state</code> - The state of the endpoint\n\t\t\t        (<code>pendingAcceptance</code> | <code>pending</code> |\n\t\t\t        <code>available</code> | <code>deleting</code> | <code>deleted</code> |\n\t\t\t        <code>rejected</code> | <code>failed</code>).</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>vpc-endpoint-id</code> - The ID of the endpoint.</p>\n\t\t\t         </li>\n         </ul>",
                         "smithy.api#xmlName": "Filter"
                     }
                 },
@@ -29881,7 +29909,7 @@
                 "Filters": {
                     "target": "com.amazonaws.ec2#FilterList",
                     "traits": {
-                        "smithy.api#documentation": "<p>One or more filters.</p>\n\t\t       <ul>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-name</code> - The name of the service.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-id</code> - The ID of the service.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-state</code> - The state of the service (<code>Pending</code> |\n                        <code>Available</code> | <code>Deleting</code> | <code>Deleted</code> |\n                        <code>Failed</code>). </p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n\t\t\t         </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>One or more filters.</p>\n\t\t       <ul>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-name</code> - The name of the service.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-id</code> - The ID of the service.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>service-state</code> - The state of the service (<code>Pending</code> |\n                        <code>Available</code> | <code>Deleting</code> | <code>Deleted</code> |\n                        <code>Failed</code>). </p>\n\t\t\t         </li>\n            <li>\n\t\t             <p>\n                  <code>supported-ip-address-types</code> - The IP address type (<code>ipv4</code> | <code>ipv6</code>).</p>\n\t\t          </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n\t\t\t         </li>\n            <li>\n\t\t\t\t           <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n\t\t\t         </li>\n         </ul>",
                         "smithy.api#xmlName": "Filter"
                     }
                 },
@@ -30027,7 +30055,7 @@
                 "Filters": {
                     "target": "com.amazonaws.ec2#FilterList",
                     "traits": {
-                        "smithy.api#documentation": "<p>One or more filters.</p>\n        <ul>\n            <li>\n                <p>\n                  <code>service-name</code> - The name of the service.</p>\n            </li>\n            <li>\n                <p>\n                  <code>service-type</code> - The type of service (<code>Interface</code> |\n                        <code>Gateway</code>).</p>\n            </li>\n            <li>\n        \t\t     <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n        \t   </li>\n            <li>\n        \t\t     <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n        \t   </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>One or more filters.</p>\n        <ul>\n            <li>\n                <p>\n                  <code>service-name</code> - The name of the service.</p>\n            </li>\n            <li>\n                <p>\n                  <code>service-type</code> - The type of service (<code>Interface</code> |\n                        <code>Gateway</code>).</p>\n            </li>\n            <li>\n                <p>\n                  <code>supported-ip-address-types</code> - The IP address type (<code>ipv4</code> | <code>ipv6</code>).</p>\n            </li>\n            <li>\n        \t\t     <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n        \t   </li>\n            <li>\n        \t\t     <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n        \t   </li>\n         </ul>",
                         "smithy.api#xmlName": "Filter"
                     }
                 },
@@ -30117,7 +30145,7 @@
                 "Filters": {
                     "target": "com.amazonaws.ec2#FilterList",
                     "traits": {
-                        "smithy.api#documentation": "<p>One or more filters.</p>\n        <ul>\n            <li>\n                <p>\n                    <code>service-name</code> - The name of the service.</p>\n            </li>\n            <li>\n                <p>\n                    <code>vpc-id</code> - The ID of the VPC in which the endpoint resides.</p>\n            </li>\n            <li>\n                <p>\n                    <code>vpc-endpoint-id</code> - The ID of the endpoint.</p>\n            </li>\n            <li>\n                <p>\n                  <code>vpc-endpoint-state</code> - The state of the endpoint\n                        (<code>pendingAcceptance</code> | <code>pending</code> |\n                        <code>available</code> | <code>deleting</code> | <code>deleted</code> |\n                        <code>rejected</code> | <code>failed</code>).</p>\n            </li>\n            <li>\n                <p>\n                  <code>vpc-endpoint-type</code> - The type of VPC endpoint (<code>Interface</code> | <code>Gateway</code> | <code>GatewayLoadBalancer</code>).</p>\n            </li>\n            <li>\n        \t\t     <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n        \t   </li>\n            <li>\n        \t\t     <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n        \t   </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>One or more filters.</p>\n        <ul>\n            <li>\n                <p>\n                  <code>ip-address-type</code> - The IP address type (<code>ipv4</code> | <code>ipv6</code>).</p>\n            </li>\n            <li>\n                <p>\n                    <code>service-name</code> - The name of the service.</p>\n            </li>\n            <li>\n                <p>\n                    <code>vpc-id</code> - The ID of the VPC in which the endpoint resides.</p>\n            </li>\n            <li>\n                <p>\n                    <code>vpc-endpoint-id</code> - The ID of the endpoint.</p>\n            </li>\n            <li>\n                <p>\n                  <code>vpc-endpoint-state</code> - The state of the endpoint\n                        (<code>pendingAcceptance</code> | <code>pending</code> |\n                        <code>available</code> | <code>deleting</code> | <code>deleted</code> |\n                        <code>rejected</code> | <code>failed</code>).</p>\n            </li>\n            <li>\n                <p>\n                  <code>vpc-endpoint-type</code> - The type of VPC endpoint (<code>Interface</code> | <code>Gateway</code> | <code>GatewayLoadBalancer</code>).</p>\n            </li>\n            <li>\n        \t\t     <p>\n                  <code>tag</code>:<key> - The key/value combination of a tag assigned to the resource. Use the tag key in the filter name and the tag value as the filter value. For example, to find all resources that have a tag with the key <code>Owner</code> and the value <code>TeamA</code>, specify <code>tag:Owner</code> for the filter name and <code>TeamA</code> for the filter value.</p>\n        \t   </li>\n            <li>\n        \t\t     <p>\n                  <code>tag-key</code> - The key of a tag assigned to the resource. Use this filter to find all resources assigned a tag with a specific key, regardless of the tag value.</p>\n        \t   </li>\n         </ul>",
                         "smithy.api#xmlName": "Filter"
                     }
                 },
@@ -32549,6 +32577,59 @@
                 ]
             }
         },
+        "com.amazonaws.ec2#DnsOptions": {
+            "type": "structure",
+            "members": {
+                "DnsRecordIpType": {
+                    "target": "com.amazonaws.ec2#DnsRecordIpType",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "DnsRecordIpType",
+                        "smithy.api#documentation": "<p>The DNS records created for the endpoint.</p>",
+                        "smithy.api#xmlName": "dnsRecordIpType"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Describes the DNS options for an endpoint.</p>"
+            }
+        },
+        "com.amazonaws.ec2#DnsOptionsSpecification": {
+            "type": "structure",
+            "members": {
+                "DnsRecordIpType": {
+                    "target": "com.amazonaws.ec2#DnsRecordIpType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The DNS records created for the endpoint.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Describes the DNS options for an endpoint.</p>"
+            }
+        },
+        "com.amazonaws.ec2#DnsRecordIpType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ipv4",
+                        "name": "ipv4"
+                    },
+                    {
+                        "value": "dualstack",
+                        "name": "dualstack"
+                    },
+                    {
+                        "value": "ipv6",
+                        "name": "ipv6"
+                    },
+                    {
+                        "value": "service-defined",
+                        "name": "service_defined"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.ec2#DnsServersOptionsModifyStructure": {
             "type": "structure",
             "members": {
@@ -37941,6 +38022,58 @@
                 }
             }
         },
+        "com.amazonaws.ec2#GetInstanceUefiData": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ec2#GetInstanceUefiDataRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ec2#GetInstanceUefiDataResult"
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>A binary representation of the UEFI variable store. Only non-volatile variables are\n            stored. This is a base64 encoded and zlib compressed binary value that must be properly\n            encoded.</p>\n        <p>When you use <a href=\"https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html\">register-image</a>\n            to create an AMI, you can create an exact copy of your variable store by passing the UEFI data in the <code>UefiData</code>\n            parameter. You can modify the UEFI data by using the <a href=\"https://github.com/awslabs/python-uefivars\">python-uefivars tool</a>\n            on GitHub. You can use the tool to convert the UEFI data into a human-readable format (JSON), which you can \n            inspect and modify, and then convert back into the binary format to use with register-image.</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/uefi-secure-boot.html\">UEFI Secure Boot</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>"
+            }
+        },
+        "com.amazonaws.ec2#GetInstanceUefiDataRequest": {
+            "type": "structure",
+            "members": {
+                "InstanceId": {
+                    "target": "com.amazonaws.ec2#InstanceId",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ID of the instance from which to retrieve the UEFI data.</p>",
+                        "smithy.api#required": {},
+                        "smithy.api#xmlName": "InstanceId"
+                    }
+                },
+                "DryRun": {
+                    "target": "com.amazonaws.ec2#Boolean",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Checks whether you have the required permissions for the action, without actually making the request, \n   and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. \n   Otherwise, it is <code>UnauthorizedOperation</code>.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ec2#GetInstanceUefiDataResult": {
+            "type": "structure",
+            "members": {
+                "InstanceId": {
+                    "target": "com.amazonaws.ec2#InstanceId",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "InstanceId",
+                        "smithy.api#documentation": "<p>The ID of the instance from which to retrieve the UEFI data.</p>",
+                        "smithy.api#xmlName": "instanceId"
+                    }
+                },
+                "UefiData": {
+                    "target": "com.amazonaws.ec2#String",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "UefiData",
+                        "smithy.api#documentation": "<p>Base64 representation of the non-volatile UEFI variable store.</p>",
+                        "smithy.api#xmlName": "uefiData"
+                    }
+                }
+            }
+        },
         "com.amazonaws.ec2#GetIpamAddressHistory": {
             "type": "operation",
             "input": {
@@ -39975,6 +40108,14 @@
                         "smithy.api#documentation": "<p>Indicates whether the Dedicated Host is in a host resource group. If \n\t\t\t<b>memberOfServiceLinkedResourceGroup</b> is \n\t\t\t<code>true</code>, the host is in a host resource group; otherwise, it is not.</p>",
                         "smithy.api#xmlName": "memberOfServiceLinkedResourceGroup"
                     }
+                },
+                "OutpostArn": {
+                    "target": "com.amazonaws.ec2#String",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "OutpostArn",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Amazon Web Services Outpost on which the Dedicated Host is allocated.</p>",
+                        "smithy.api#xmlName": "outpostArn"
+                    }
                 }
             },
             "traits": {
@@ -40855,6 +40996,14 @@
                         "smithy.api#xmlName": "bootMode"
                     }
                 },
+                "TpmSupport": {
+                    "target": "com.amazonaws.ec2#TpmSupportValues",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "TpmSupport",
+                        "smithy.api#documentation": "<p>If the image is configured for NitroTPM support, the value is <code>v2.0</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html\">NitroTPM</a> in the\n      <i>Amazon Elastic Compute Cloud User Guide</i>.</p>",
+                        "smithy.api#xmlName": "tpmSupport"
+                    }
+                },
                 "DeprecationTime": {
                     "target": "com.amazonaws.ec2#String",
                     "traits": {
@@ -40943,6 +41092,22 @@
                         "smithy.api#xmlName": "bootMode"
                     }
                 },
+                "TpmSupport": {
+                    "target": "com.amazonaws.ec2#AttributeValue",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "TpmSupport",
+                        "smithy.api#documentation": "<p>If the image is configured for NitroTPM support, the value is <code>v2.0</code>.</p>",
+                        "smithy.api#xmlName": "tpmSupport"
+                    }
+                },
+                "UefiData": {
+                    "target": "com.amazonaws.ec2#AttributeValue",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "UefiData",
+                        "smithy.api#documentation": "<p>Base64 representation of the non-volatile UEFI variable store. To retrieve the UEFI data,\n      use the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceUefiData\">GetInstanceUefiData</a> command. You can inspect and modify the UEFI data by using the\n      <a href=\"https://github.com/awslabs/python-uefivars\">python-uefivars tool</a> on\n      GitHub. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/uefi-secure-boot.html\">UEFI Secure Boot</a> in the\n      <i>Amazon Elastic Compute Cloud User Guide</i>.</p>",
+                        "smithy.api#xmlName": "uefiData"
+                    }
+                },
                 "LastLaunchedTime": {
                     "target": "com.amazonaws.ec2#AttributeValue",
                     "traits": {
@@ -40992,6 +41157,14 @@
                         "value": "bootMode",
                         "name": "bootMode"
                     },
+                    {
+                        "value": "tpmSupport",
+                        "name": "tpmSupport"
+                    },
+                    {
+                        "value": "uefiData",
+                        "name": "uefiData"
+                    },
                     {
                         "value": "lastLaunchedTime",
                         "name": "lastLaunchedTime"
@@ -42873,6 +43046,14 @@
                         "smithy.api#xmlName": "ipv6Address"
                     }
                 },
+                "TpmSupport": {
+                    "target": "com.amazonaws.ec2#String",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "TpmSupport",
+                        "smithy.api#documentation": "<p>If the instance is configured for NitroTPM support, the value is <code>v2.0</code>.\n            For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html\">NitroTPM</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>",
+                        "smithy.api#xmlName": "tpmSupport"
+                    }
+                },
                 "MaintenanceOptions": {
                     "target": "com.amazonaws.ec2#InstanceMaintenanceOptions",
                     "traits": {
@@ -47423,6 +47604,34 @@
                     {
                         "value": "m6a.metal",
                         "name": "m6a_metal"
+                    },
+                    {
+                        "value": "i4i.large",
+                        "name": "i4i_large"
+                    },
+                    {
+                        "value": "i4i.xlarge",
+                        "name": "i4i_xlarge"
+                    },
+                    {
+                        "value": "i4i.2xlarge",
+                        "name": "i4i_2xlarge"
+                    },
+                    {
+                        "value": "i4i.4xlarge",
+                        "name": "i4i_4xlarge"
+                    },
+                    {
+                        "value": "i4i.8xlarge",
+                        "name": "i4i_8xlarge"
+                    },
+                    {
+                        "value": "i4i.16xlarge",
+                        "name": "i4i_16xlarge"
+                    },
+                    {
+                        "value": "i4i.32xlarge",
+                        "name": "i4i_32xlarge"
                     }
                 ]
             }
@@ -47938,6 +48147,25 @@
                 }
             }
         },
+        "com.amazonaws.ec2#IpAddressType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ipv4",
+                        "name": "ipv4"
+                    },
+                    {
+                        "value": "dualstack",
+                        "name": "dualstack"
+                    },
+                    {
+                        "value": "ipv6",
+                        "name": "ipv6"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.ec2#IpPermission": {
             "type": "structure",
             "members": {
@@ -48895,6 +49123,18 @@
                     {
                         "value": "delete-failed",
                         "name": "delete_failed"
+                    },
+                    {
+                        "value": "isolate-in-progress",
+                        "name": "isolate_in_progress"
+                    },
+                    {
+                        "value": "isolate-complete",
+                        "name": "isolate_complete"
+                    },
+                    {
+                        "value": "restore-in-progress",
+                        "name": "restore_in_progress"
                     }
                 ]
             }
@@ -49243,6 +49483,18 @@
                     {
                         "value": "delete-failed",
                         "name": "delete_failed"
+                    },
+                    {
+                        "value": "isolate-in-progress",
+                        "name": "isolate_in_progress"
+                    },
+                    {
+                        "value": "isolate-complete",
+                        "name": "isolate_complete"
+                    },
+                    {
+                        "value": "restore-in-progress",
+                        "name": "restore_in_progress"
                     }
                 ]
             }
@@ -49310,6 +49562,18 @@
                     {
                         "value": "delete-failed",
                         "name": "delete_failed"
+                    },
+                    {
+                        "value": "isolate-in-progress",
+                        "name": "isolate_in_progress"
+                    },
+                    {
+                        "value": "isolate-complete",
+                        "name": "isolate_complete"
+                    },
+                    {
+                        "value": "restore-in-progress",
+                        "name": "restore_in_progress"
                     }
                 ]
             }
@@ -56459,6 +56723,18 @@
                         "smithy.api#xmlName": "RemoveSecurityGroupId"
                     }
                 },
+                "IpAddressType": {
+                    "target": "com.amazonaws.ec2#IpAddressType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The IP address type for the endpoint.</p>"
+                    }
+                },
+                "DnsOptions": {
+                    "target": "com.amazonaws.ec2#DnsOptionsSpecification",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The DNS options for the endpoint.</p>"
+                    }
+                },
                 "PrivateDnsEnabled": {
                     "target": "com.amazonaws.ec2#Boolean",
                     "traits": {
@@ -56556,6 +56832,20 @@
                         "smithy.api#documentation": "<p>The Amazon Resource Names (ARNs) of Gateway Load Balancers to remove from your service\n            configuration.</p>",
                         "smithy.api#xmlName": "RemoveGatewayLoadBalancerArn"
                     }
+                },
+                "AddSupportedIpAddressTypes": {
+                    "target": "com.amazonaws.ec2#ValueStringList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The IP address types to add to your service configuration.</p>",
+                        "smithy.api#xmlName": "AddSupportedIpAddressType"
+                    }
+                },
+                "RemoveSupportedIpAddressTypes": {
+                    "target": "com.amazonaws.ec2#ValueStringList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The IP address types to remove from your service configuration.</p>",
+                        "smithy.api#xmlName": "RemoveSupportedIpAddressType"
+                    }
                 }
             }
         },
@@ -62544,6 +62834,18 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The boot mode of the AMI. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html\">Boot modes</a> in the\n        <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
                     }
+                },
+                "TpmSupport": {
+                    "target": "com.amazonaws.ec2#TpmSupportValues",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Set to <code>v2.0</code> to enable Trusted Platform Module (TPM) support. For more\n      information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html\">NitroTPM</a> in the <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+                    }
+                },
+                "UefiData": {
+                    "target": "com.amazonaws.ec2#StringType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Base64 representation of the non-volatile UEFI variable store. To retrieve the UEFI data,\n      use the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_GetInstanceUefiData\">GetInstanceUefiData</a> command. You can inspect and modify the UEFI data by using the\n        <a href=\"https://github.com/awslabs/python-uefivars\">python-uefivars tool</a> on\n      GitHub. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/uefi-secure-boot.html\">UEFI Secure Boot</a> in the\n        <i>Amazon Elastic Compute Cloud User Guide</i>.</p>"
+                    }
                 }
             },
             "traits": {
@@ -69380,6 +69682,14 @@
                         "smithy.api#xmlName": "gatewayLoadBalancerArnSet"
                     }
                 },
+                "SupportedIpAddressTypes": {
+                    "target": "com.amazonaws.ec2#SupportedIpAddressTypes",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "SupportedIpAddressTypeSet",
+                        "smithy.api#documentation": "<p>The supported IP address types.</p>",
+                        "smithy.api#xmlName": "supportedIpAddressTypeSet"
+                    }
+                },
                 "BaseEndpointDnsNames": {
                     "target": "com.amazonaws.ec2#ValueStringList",
                     "traits": {
@@ -69434,6 +69744,21 @@
                 }
             }
         },
+        "com.amazonaws.ec2#ServiceConnectivityType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ipv4",
+                        "name": "ipv4"
+                    },
+                    {
+                        "value": "ipv6",
+                        "name": "ipv6"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.ec2#ServiceDetail": {
             "type": "structure",
             "members": {
@@ -69548,6 +69873,14 @@
                         "smithy.api#documentation": "<p>The verification state of the VPC endpoint service.</p>\n        <p>Consumers of the endpoint service cannot use the private name when the state is not <code>verified</code>.</p>",
                         "smithy.api#xmlName": "privateDnsNameVerificationState"
                     }
+                },
+                "SupportedIpAddressTypes": {
+                    "target": "com.amazonaws.ec2#SupportedIpAddressTypes",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "SupportedIpAddressTypeSet",
+                        "smithy.api#documentation": "<p>The supported IP address types.</p>",
+                        "smithy.api#xmlName": "supportedIpAddressTypeSet"
+                    }
                 }
             },
             "traits": {
@@ -72105,7 +72438,7 @@
                 "target": "com.amazonaws.ec2#StopInstancesResult"
             },
             "traits": {
-                "smithy.api#documentation": "<p>Stops an Amazon EBS-backed instance.</p>\n        <p>You can use the Stop action to hibernate an instance if the instance is <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation\">enabled for\n                hibernation</a> and it meets the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites\">hibernation\n                prerequisites</a>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html\">Hibernate your instance</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>\n        <p>We don't charge usage for a stopped instance, or data transfer fees; however, your\n            root partition Amazon EBS volume remains and continues to persist your data, and you are\n            charged for Amazon EBS volume usage. Every time you start your instance, Amazon EC2\n            charges a one-minute minimum for instance usage, and thereafter charges per second for\n            instance usage.</p>\n        <p>You can't stop or hibernate instance store-backed instances. You can't use the Stop\n            action to hibernate Spot Instances, but you can specify that Amazon EC2 should hibernate\n            Spot Instances when they are interrupted. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances\">Hibernating interrupted Spot Instances</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>\n        <p>When you stop or hibernate an instance, we shut it down. You can restart your instance\n            at any time. Before stopping or hibernating an instance, make sure it is in a state from\n            which it can be restarted. Stopping an instance does not preserve data stored in RAM,\n            but hibernating an instance does preserve data stored in RAM. If an instance cannot\n            hibernate successfully, a normal shutdown occurs.</p>\n        <p>Stopping and hibernating an instance is different to rebooting or terminating it. For\n            example, when you stop or hibernate an instance, the root device and any other devices\n            attached to the instance persist. When you terminate an instance, the root device and\n            any other devices attached during the instance launch are automatically deleted. For\n            more information about the differences between rebooting, stopping, hibernating, and\n            terminating instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html\">Instance lifecycle</a>\n            in the <i>Amazon EC2 User Guide</i>.</p>\n        <p>When you stop an instance, we attempt to shut it down forcibly after a short while. If\n            your instance appears stuck in the stopping state after a period of time, there may be\n            an issue with the underlying host computer. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html\">Troubleshoot\n                stopping your instance</a> in the <i>Amazon EC2 User Guide</i>.</p>"
+                "smithy.api#documentation": "<p>Stops an Amazon EBS-backed instance. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html\">Stop and start\n                your instance</a> in the <i>Amazon EC2 User Guide</i>.</p>\n        <p>You can use the Stop action to hibernate an instance if the instance is <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#enabling-hibernation\">enabled for\n                hibernation</a> and it meets the <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html#hibernating-prerequisites\">hibernation\n                prerequisites</a>. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html\">Hibernate your instance</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>\n        <p>We don't charge usage for a stopped instance, or data transfer fees; however, your\n            root partition Amazon EBS volume remains and continues to persist your data, and you are\n            charged for Amazon EBS volume usage. Every time you start your instance, Amazon EC2\n            charges a one-minute minimum for instance usage, and thereafter charges per second for\n            instance usage.</p>\n        <p>You can't stop or hibernate instance store-backed instances. You can't use the Stop\n            action to hibernate Spot Instances, but you can specify that Amazon EC2 should hibernate\n            Spot Instances when they are interrupted. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-interruptions.html#hibernate-spot-instances\">Hibernating interrupted Spot Instances</a> in the\n                <i>Amazon EC2 User Guide</i>.</p>\n        <p>When you stop or hibernate an instance, we shut it down. You can restart your instance\n            at any time. Before stopping or hibernating an instance, make sure it is in a state from\n            which it can be restarted. Stopping an instance does not preserve data stored in RAM,\n            but hibernating an instance does preserve data stored in RAM. If an instance cannot\n            hibernate successfully, a normal shutdown occurs.</p>\n        <p>Stopping and hibernating an instance is different to rebooting or terminating it. For\n            example, when you stop or hibernate an instance, the root device and any other devices\n            attached to the instance persist. When you terminate an instance, the root device and\n            any other devices attached during the instance launch are automatically deleted. For\n            more information about the differences between rebooting, stopping, hibernating, and\n            terminating instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-lifecycle.html\">Instance lifecycle</a>\n            in the <i>Amazon EC2 User Guide</i>.</p>\n        <p>When you stop an instance, we attempt to shut it down forcibly after a short while. If\n            your instance appears stuck in the stopping state after a period of time, there may be\n            an issue with the underlying host computer. For more information, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesStopping.html\">Troubleshoot\n                stopping your instance</a> in the <i>Amazon EC2 User Guide</i>.</p>"
             }
         },
         "com.amazonaws.ec2#StopInstancesRequest": {
@@ -72291,6 +72624,15 @@
                 }
             }
         },
+        "com.amazonaws.ec2#StringType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 64000
+                }
+            }
+        },
         "com.amazonaws.ec2#Subnet": {
             "type": "structure",
             "members": {
@@ -72803,6 +73145,21 @@
                 ]
             }
         },
+        "com.amazonaws.ec2#SupportedIpAddressTypes": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.ec2#ServiceConnectivityType",
+                "traits": {
+                    "smithy.api#xmlName": "item"
+                }
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 2
+                }
+            }
+        },
         "com.amazonaws.ec2#Tag": {
             "type": "structure",
             "members": {
@@ -73578,6 +73935,17 @@
                 "smithy.api#documentation": "<p>The minimum and maximum amount of total local storage, in GB.</p>"
             }
         },
+        "com.amazonaws.ec2#TpmSupportValues": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "v2.0",
+                        "name": "v2_0"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.ec2#TrafficDirection": {
             "type": "string",
             "traits": {
@@ -78715,7 +79083,7 @@
                     "target": "com.amazonaws.ec2#String",
                     "traits": {
                         "aws.protocols#ec2QueryName": "VpcEndpointId",
-                        "smithy.api#documentation": "<p>The ID of the VPC endpoint.</p>",
+                        "smithy.api#documentation": "<p>The ID of the endpoint.</p>",
                         "smithy.api#xmlName": "vpcEndpointId"
                     }
                 },
@@ -78747,7 +79115,7 @@
                     "target": "com.amazonaws.ec2#State",
                     "traits": {
                         "aws.protocols#ec2QueryName": "State",
-                        "smithy.api#documentation": "<p>The state of the VPC endpoint.</p>",
+                        "smithy.api#documentation": "<p>The state of the endpoint.</p>",
                         "smithy.api#xmlName": "state"
                     }
                 },
@@ -78771,7 +79139,7 @@
                     "target": "com.amazonaws.ec2#ValueStringList",
                     "traits": {
                         "aws.protocols#ec2QueryName": "SubnetIdSet",
-                        "smithy.api#documentation": "<p>(Interface endpoint) One or more subnets in which the endpoint is located.</p>",
+                        "smithy.api#documentation": "<p>(Interface endpoint) The subnets for the endpoint.</p>",
                         "smithy.api#xmlName": "subnetIdSet"
                     }
                 },
@@ -78783,6 +79151,22 @@
                         "smithy.api#xmlName": "groupSet"
                     }
                 },
+                "IpAddressType": {
+                    "target": "com.amazonaws.ec2#IpAddressType",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "IpAddressType",
+                        "smithy.api#documentation": "<p>The IP address type for the endpoint.</p>",
+                        "smithy.api#xmlName": "ipAddressType"
+                    }
+                },
+                "DnsOptions": {
+                    "target": "com.amazonaws.ec2#DnsOptions",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "DnsOptions",
+                        "smithy.api#documentation": "<p>The DNS options for the endpoint.</p>",
+                        "smithy.api#xmlName": "dnsOptions"
+                    }
+                },
                 "PrivateDnsEnabled": {
                     "target": "com.amazonaws.ec2#Boolean",
                     "traits": {
@@ -78795,7 +79179,7 @@
                     "target": "com.amazonaws.ec2#Boolean",
                     "traits": {
                         "aws.protocols#ec2QueryName": "RequesterManaged",
-                        "smithy.api#documentation": "<p>Indicates whether the VPC endpoint is being managed by its service.</p>",
+                        "smithy.api#documentation": "<p>Indicates whether the endpoint is being managed by its service.</p>",
                         "smithy.api#xmlName": "requesterManaged"
                     }
                 },
@@ -78819,7 +79203,7 @@
                     "target": "com.amazonaws.ec2#MillisecondDateTime",
                     "traits": {
                         "aws.protocols#ec2QueryName": "CreationTimestamp",
-                        "smithy.api#documentation": "<p>The date and time that the VPC endpoint was created.</p>",
+                        "smithy.api#documentation": "<p>The date and time that the endpoint was created.</p>",
                         "smithy.api#xmlName": "creationTimestamp"
                     }
                 },
@@ -78827,7 +79211,7 @@
                     "target": "com.amazonaws.ec2#TagList",
                     "traits": {
                         "aws.protocols#ec2QueryName": "TagSet",
-                        "smithy.api#documentation": "<p>Any tags assigned to the VPC endpoint.</p>",
+                        "smithy.api#documentation": "<p>Any tags assigned to the endpoint.</p>",
                         "smithy.api#xmlName": "tagSet"
                     }
                 },
@@ -78835,7 +79219,7 @@
                     "target": "com.amazonaws.ec2#String",
                     "traits": {
                         "aws.protocols#ec2QueryName": "OwnerId",
-                        "smithy.api#documentation": "<p>The ID of the Amazon Web Services account that owns the VPC endpoint.</p>",
+                        "smithy.api#documentation": "<p>The ID of the Amazon Web Services account that owns the endpoint.</p>",
                         "smithy.api#xmlName": "ownerId"
                     }
                 },
@@ -78843,7 +79227,7 @@
                     "target": "com.amazonaws.ec2#LastError",
                     "traits": {
                         "aws.protocols#ec2QueryName": "LastError",
-                        "smithy.api#documentation": "<p>The last error that occurred for VPC endpoint.</p>",
+                        "smithy.api#documentation": "<p>The last error that occurred for endpoint.</p>",
                         "smithy.api#xmlName": "lastError"
                     }
                 }
@@ -78918,6 +79302,14 @@
                         "smithy.api#documentation": "<p>The Amazon Resource Names (ARNs) of the Gateway Load Balancers for the service.</p>",
                         "smithy.api#xmlName": "gatewayLoadBalancerArnSet"
                     }
+                },
+                "IpAddressType": {
+                    "target": "com.amazonaws.ec2#IpAddressType",
+                    "traits": {
+                        "aws.protocols#ec2QueryName": "IpAddressType",
+                        "smithy.api#documentation": "<p>The IP address type for the endpoint.</p>",
+                        "smithy.api#xmlName": "ipAddressType"
+                    }
                 }
             },
             "traits": {
diff --git a/aws/sdk/aws-models/eks.json b/aws/sdk/aws-models/eks.json
index 552940ff74a133d270c4a4b516f62d5054eb5a4d..4c3a3d4e7de537b0055f0892f0e0d16e11b0283e 100644
--- a/aws/sdk/aws-models/eks.json
+++ b/aws/sdk/aws-models/eks.json
@@ -56,6 +56,14 @@
                     {
                         "value": "BOTTLEROCKET_x86_64",
                         "name": "BOTTLEROCKET_x86_64"
+                    },
+                    {
+                        "value": "BOTTLEROCKET_ARM_64_NVIDIA",
+                        "name": "BOTTLEROCKET_ARM_64_NVIDIA"
+                    },
+                    {
+                        "value": "BOTTLEROCKET_x86_64_NVIDIA",
+                        "name": "BOTTLEROCKET_x86_64_NVIDIA"
                     }
                 ]
             }
@@ -1381,13 +1389,13 @@
                 "diskSize": {
                     "target": "com.amazonaws.eks#BoxedInteger",
                     "traits": {
-                        "smithy.api#documentation": "<p>The root device disk size (in GiB) for your node group instances. The default disk\n            size is 20 GiB. If you specify <code>launchTemplate</code>, then don't specify  <code>diskSize</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The root device disk size (in GiB) for your node group instances. The default disk\n            size is 20 GiB. If you specify <code>launchTemplate</code>, then don't specify  <code>diskSize</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "subnets": {
                     "target": "com.amazonaws.eks#StringList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The subnets to use for the Auto Scaling group that is created for your node group.\n            If you specify <code>launchTemplate</code>, then don't specify  <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html\">\n               <code>SubnetId</code>\n            </a> in your launch template, or the node group \n            deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>",
+                        "smithy.api#documentation": "<p>The subnets to use for the Auto Scaling group that is created for your node group.\n            If you specify <code>launchTemplate</code>, then don't specify  <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html\">\n               <code>SubnetId</code>\n            </a> in your launch template, or the node group \n            deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1400,19 +1408,19 @@
                 "amiType": {
                     "target": "com.amazonaws.eks#AMITypes",
                     "traits": {
-                        "smithy.api#documentation": "<p>The AMI type for your node group. GPU instance types should use the\n                <code>AL2_x86_64_GPU</code> AMI type. Non-GPU instances should use the\n                <code>AL2_x86_64</code> AMI type. Arm instances should use the\n                <code>AL2_ARM_64</code> AMI type. All types use the Amazon EKS optimized\n            Amazon Linux 2 AMI. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI,\n                then don't specify <code>amiType</code>, or the node group  deployment\n            will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The AMI type for your node group. GPU instance types should use the\n                <code>AL2_x86_64_GPU</code> AMI type. Non-GPU instances should use the\n                <code>AL2_x86_64</code> AMI type. Arm instances should use the\n                <code>AL2_ARM_64</code> AMI type. All types use the Amazon EKS optimized\n            Amazon Linux 2 AMI. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI,\n                then don't specify <code>amiType</code>, or the node group  deployment\n            will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "remoteAccess": {
                     "target": "com.amazonaws.eks#RemoteAccessConfig",
                     "traits": {
-                        "smithy.api#documentation": "<p>The remote access (SSH) configuration to use with your node group. If you specify <code>launchTemplate</code>,\n            then don't specify  <code>remoteAccess</code>, or the node group  deployment\n            will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The remote access (SSH) configuration to use with your node group. If you specify <code>launchTemplate</code>,\n            then don't specify  <code>remoteAccess</code>, or the node group  deployment\n            will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "nodeRole": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The\n                Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls\n            through an IAM instance profile and associated policies. Before you can\n            launch nodes and register them into a cluster, you must create an IAM\n            role for those nodes to use when they are launched. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/worker_node_IAM_role.html\">Amazon EKS node IAM role</a> in the\n                <i>\n               <i>Amazon EKS User Guide</i>\n            </i>. If you specify <code>launchTemplate</code>, then don't specify \n                <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html\">\n               <code>IamInstanceProfile</code>\n            </a> in your launch template,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the IAM role to associate with your node group. The\n                Amazon EKS worker node <code>kubelet</code> daemon makes calls to Amazon Web Services APIs on your behalf. Nodes receive permissions for these API calls\n            through an IAM instance profile and associated policies. Before you can\n            launch nodes and register them into a cluster, you must create an IAM\n            role for those nodes to use when they are launched. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html\">Amazon EKS node IAM role</a> in the\n                <i>\n               <i>Amazon EKS User Guide</i>\n            </i>. If you specify <code>launchTemplate</code>, then don't specify \n                <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html\">\n               <code>IamInstanceProfile</code>\n            </a> in your launch template,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1425,7 +1433,7 @@
                 "taints": {
                     "target": "com.amazonaws.eks#taintsList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group.</p>"
+                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html\">Node taints on managed node groups</a>.</p>"
                     }
                 },
                 "tags": {
@@ -1462,13 +1470,13 @@
                 "version": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes\n            version of the cluster is used, and this is the only accepted specified value.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>version</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The Kubernetes version to use for your managed nodes. By default, the Kubernetes\n            version of the cluster is used, and this is the only accepted specified value.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>version</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "releaseVersion": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The AMI version of the Amazon EKS optimized AMI to use with your node group.\n            By default, the latest available AMI version for the node group's current Kubernetes\n            version is used. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html\">Amazon EKS optimized Amazon Linux 2 AMI versions</a> in the <i>Amazon EKS User Guide</i>.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>releaseVersion</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The AMI version of the Amazon EKS optimized AMI to use with your node group.\n            By default, the latest available AMI version for the node group's current Kubernetes\n            version is used. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html\">Amazon EKS optimized Amazon Linux 2 AMI versions</a> in the <i>Amazon EKS User Guide</i>.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>releaseVersion</code>,\n            or the node group  deployment will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 }
             }
@@ -2463,7 +2471,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns descriptive information about an update against your Amazon EKS\n            cluster or associated managed node group.</p>\n        <p>When the status of the update is <code>Succeeded</code>, the update is complete. If an\n            update fails, the status is <code>Failed</code>, and an error detail explains the reason\n            for the failure.</p>",
+                "smithy.api#documentation": "<p>Returns descriptive information about an update against your Amazon EKS\n            cluster or associated managed node group or Amazon EKS add-on.</p>\n        <p>When the status of the update is <code>Succeeded</code>, the update is complete. If an\n            update fails, the status is <code>Failed</code>, and an error detail explains the reason\n            for the failure.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/clusters/{name}/updates/{updateId}",
@@ -2493,14 +2501,14 @@
                 "nodegroupName": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the Amazon EKS node group associated with the update.</p>",
+                        "smithy.api#documentation": "<p>The name of the Amazon EKS node group associated with the update. This\n            parameter is required if the update is a node group update.</p>",
                         "smithy.api#httpQuery": "nodegroupName"
                     }
                 },
                 "addonName": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the add-on. The name must match one of the names returned by <a href=\"https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html\">\n               <code>ListAddons</code>\n            </a>.</p>",
+                        "smithy.api#documentation": "<p>The name of the add-on. The name must match one of the names returned by <a href=\"https://docs.aws.amazon.com/eks/latest/APIReference/API_ListAddons.html\">\n               <code>ListAddons</code>\n            </a>. This parameter is required if the update is an add-on update.</p>",
                         "smithy.api#httpQuery": "addonName"
                     }
                 }
@@ -2882,7 +2890,7 @@
                 "type": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The type of the identity provider configuration.</p>",
+                        "smithy.api#documentation": "<p>The type of the identity provider configuration. The only type available is\n                <code>oidc</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -3007,7 +3015,7 @@
                 "code": {
                     "target": "com.amazonaws.eks#NodegroupIssueCode",
                     "traits": {
-                        "smithy.api#documentation": "<p>A brief description of the error.</p>\n        <ul>\n            <li>\n                <p>\n                  <b>AccessDenied</b>: Amazon EKS or one or\n                    more of your managed nodes is failing to authenticate or authorize with your\n                    Kubernetes cluster API server.</p>\n            </li>\n            <li>\n                <p>\n                  <b>AsgInstanceLaunchFailures</b>: Your Auto Scaling group is experiencing failures while attempting to launch\n                    instances.</p>\n            </li>\n            <li>\n                <p>\n                  <b>AutoScalingGroupNotFound</b>: We couldn't find\n                    the Auto Scaling group associated with the managed node group. You may be\n                    able to recreate an Auto Scaling group with the same settings to\n                    recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>ClusterUnreachable</b>: Amazon EKS or one\n                    or more of your managed nodes is unable to to communicate with your Kubernetes\n                    cluster API server. This can happen if there are network disruptions or if API\n                    servers are timing out processing requests. </p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2LaunchTemplateNotFound</b>: We couldn't find\n                    the Amazon EC2 launch template for your managed node group. You may be\n                    able to recreate a launch template with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2LaunchTemplateVersionMismatch</b>: The Amazon EC2 launch template version for your managed node group does not\n                    match the version that Amazon EKS created. You may be able to revert to\n                    the version that Amazon EKS created to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SecurityGroupDeletionFailure</b>: We could not\n                    delete the remote access security group for your managed node group. Remove any\n                    dependencies from the security group.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SecurityGroupNotFound</b>: We couldn't find\n                    the cluster security group for the cluster. You must recreate your\n                    cluster.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SubnetInvalidConfiguration</b>: One or more\n                        Amazon EC2 subnets specified for a node group do not automatically\n                    assign public IP addresses to instances launched into it. If you want your\n                    instances to be assigned a public IP address, then you need to enable the\n                        <code>auto-assign public IP address</code> setting for the subnet. See\n                        <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip\">Modifying\n                        the public IPv4 addressing attribute for your subnet</a> in the Amazon\n                    VPC User Guide.</p>\n            </li>\n            <li>\n                <p>\n                  <b>IamInstanceProfileNotFound</b>: We couldn't find\n                    the IAM instance profile for your managed node group. You may be\n                    able to recreate an instance profile with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>IamNodeRoleNotFound</b>: We couldn't find the\n                        IAM role for your managed node group. You may be able to\n                    recreate an IAM role with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InstanceLimitExceeded</b>: Your Amazon Web Services account is unable to launch any more instances of the specified instance\n                    type. You may be able to request an Amazon EC2 instance limit increase\n                    to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InsufficientFreeAddresses</b>: One or more of the\n                    subnets associated with your managed node group does not have enough available\n                    IP addresses for new nodes.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InternalFailure</b>: These errors are usually\n                    caused by an Amazon EKS server-side issue.</p>\n            </li>\n            <li>\n                <p>\n                  <b>NodeCreationFailure</b>: Your launched instances\n                    are unable to register with your Amazon EKS cluster. Common causes of this failure\n                    are insufficient <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html\">node IAM role</a>\n                    permissions or lack of outbound internet access for the nodes. </p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>A brief description of the error.</p>\n        <ul>\n            <li>\n                <p>\n                  <b>AccessDenied</b>: Amazon EKS or one or\n                    more of your managed nodes is failing to authenticate or authorize with your\n                    Kubernetes cluster API server.</p>\n            </li>\n            <li>\n                <p>\n                  <b>AsgInstanceLaunchFailures</b>: Your Auto Scaling group is experiencing failures while attempting to launch\n                    instances.</p>\n            </li>\n            <li>\n                <p>\n                  <b>AutoScalingGroupNotFound</b>: We couldn't find\n                    the Auto Scaling group associated with the managed node group. You may be\n                    able to recreate an Auto Scaling group with the same settings to\n                    recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>ClusterUnreachable</b>: Amazon EKS or one\n                    or more of your managed nodes is unable to to communicate with your Kubernetes\n                    cluster API server. This can happen if there are network disruptions or if API\n                    servers are timing out processing requests. </p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2LaunchTemplateNotFound</b>: We couldn't find\n                    the Amazon EC2 launch template for your managed node group. You may be\n                    able to recreate a launch template with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2LaunchTemplateVersionMismatch</b>: The Amazon EC2 launch template version for your managed node group does not\n                    match the version that Amazon EKS created. You may be able to revert to\n                    the version that Amazon EKS created to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SecurityGroupDeletionFailure</b>: We could not\n                    delete the remote access security group for your managed node group. Remove any\n                    dependencies from the security group.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SecurityGroupNotFound</b>: We couldn't find\n                    the cluster security group for the cluster. You must recreate your\n                    cluster.</p>\n            </li>\n            <li>\n                <p>\n                  <b>Ec2SubnetInvalidConfiguration</b>: One or more\n                        Amazon EC2 subnets specified for a node group do not automatically\n                    assign public IP addresses to instances launched into it. If you want your\n                    instances to be assigned a public IP address, then you need to enable the\n                        <code>auto-assign public IP address</code> setting for the subnet. See\n                        <a href=\"https://docs.aws.amazon.com/vpc/latest/userguide/vpc-ip-addressing.html#subnet-public-ip\">Modifying\n                        the public IPv4 addressing attribute for your subnet</a> in the\n                        <i>Amazon VPC User Guide</i>.</p>\n            </li>\n            <li>\n                <p>\n                  <b>IamInstanceProfileNotFound</b>: We couldn't find\n                    the IAM instance profile for your managed node group. You may be\n                    able to recreate an instance profile with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>IamNodeRoleNotFound</b>: We couldn't find the\n                        IAM role for your managed node group. You may be able to\n                    recreate an IAM role with the same settings to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InstanceLimitExceeded</b>: Your Amazon Web Services account is unable to launch any more instances of the specified instance\n                    type. You may be able to request an Amazon EC2 instance limit increase\n                    to recover.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InsufficientFreeAddresses</b>: One or more of the\n                    subnets associated with your managed node group does not have enough available\n                    IP addresses for new nodes.</p>\n            </li>\n            <li>\n                <p>\n                  <b>InternalFailure</b>: These errors are usually\n                    caused by an Amazon EKS server-side issue.</p>\n            </li>\n            <li>\n                <p>\n                  <b>NodeCreationFailure</b>: Your launched instances\n                    are unable to register with your Amazon EKS cluster. Common causes of this failure\n                    are insufficient <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html\">node IAM role</a>\n                    permissions or lack of outbound internet access for the nodes. </p>\n            </li>\n         </ul>"
                     }
                 },
                 "message": {
@@ -3045,7 +3053,7 @@
                 "ipFamily": {
                     "target": "com.amazonaws.eks#IpFamily",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specify which IP version is used to assign Kubernetes Pod and Service IP addresses. If\n            you don't specify a value, <code>ipv4</code> is used by default. You can only specify an\n            IP family when you create a cluster and can't change this value once the cluster is\n            created. If you specify <code>ipv6</code>, the VPC and subnets that you specify for\n            cluster creation must have both IPv4 and IPv6 CIDR blocks assigned to them. </p>\n        <p>You can only specify <code>ipv6</code> for 1.21 and later clusters that use version\n            1.10.0 or later of the Amazon VPC CNI add-on. If you specify <code>ipv6</code>, then ensure\n            that your VPC meets the requirements and that you're familiar with the considerations\n            listed in <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html\">Assigning\n                IPv6 addresses to Pods and Services</a> in the Amazon EKS User Guide. If\n            you specify <code>ipv6</code>, Kubernetes assigns Service and Pod addresses from the\n            unique local address range (fc00::/7). You can't specify a custom IPv6 CIDR\n            block.</p>"
+                        "smithy.api#documentation": "<p>Specify which IP family is used to assign Kubernetes pod and service IP addresses. If\n            you don't specify a value, <code>ipv4</code> is used by default. You can only specify an\n            IP family when you create a cluster and can't change this value once the cluster is\n            created. If you specify <code>ipv6</code>, the VPC and subnets that you specify for\n            cluster creation must have both IPv4 and IPv6 CIDR blocks assigned to them. You can't\n            specify <code>ipv6</code> for clusters in China Regions.</p>\n        <p>You can only specify <code>ipv6</code> for 1.21 and later clusters that use version\n            1.10.1 or later of the Amazon VPC CNI add-on. If you specify <code>ipv6</code>, then ensure\n            that your VPC meets the requirements listed in the considerations listed in <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/cni-ipv6.html\">Assigning IPv6\n                addresses to pods and services</a> in the Amazon EKS User Guide.\n            Kubernetes assigns services IPv6 addresses from the unique local address range\n            (fc00::/7). You can't specify a custom IPv6 CIDR block. Pod addresses are assigned from\n            the subnet's IPv6 CIDR.</p>"
                     }
                 }
             },
@@ -3059,19 +3067,19 @@
                 "serviceIpv4Cidr": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The CIDR block that Kubernetes Pod and Service IP addresses are assigned from.\n            Kubernetes assigns addresses from an IPv4 CIDR block assigned to a subnet that the node\n            is in. If you didn't specify a CIDR block when you created the cluster, then Kubernetes\n            assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. If this\n            was specified, then it was specified when the cluster was created and it can't be\n            changed.</p>"
+                        "smithy.api#documentation": "<p>The CIDR block that Kubernetes pod and service IP addresses are assigned from.\n            Kubernetes assigns addresses from an IPv4 CIDR block assigned to a subnet that the node\n            is in. If you didn't specify a CIDR block when you created the cluster, then Kubernetes\n            assigns addresses from either the 10.100.0.0/16 or 172.20.0.0/16 CIDR blocks. If this\n            was specified, then it was specified when the cluster was created and it can't be\n            changed.</p>"
                     }
                 },
                 "serviceIpv6Cidr": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The CIDR block that Kubernetes Pod and Service IP addresses are assigned from if you\n            created a 1.21 or later cluster with version 1.10.0 or later of the Amazon VPC CNI add-on and\n            specified <code>ipv6</code> for <b>ipFamily</b> when you\n            created the cluster. Kubernetes assigns addresses from the unique local address range\n            (fc00::/7).</p>"
+                        "smithy.api#documentation": "<p>The CIDR block that Kubernetes pod and service IP addresses are assigned from if you\n            created a 1.21 or later cluster with version 1.10.1 or later of the Amazon VPC CNI add-on and\n            specified <code>ipv6</code> for <b>ipFamily</b> when you\n            created the cluster. Kubernetes assigns service addresses from the unique local address\n            range (<code>fc00::/7</code>) because you can't specify a custom IPv6 CIDR block when\n            you create the cluster.</p>"
                     }
                 },
                 "ipFamily": {
                     "target": "com.amazonaws.eks#IpFamily",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IP family used to assign Kubernetes Pod and Service IP addresses. The IP family is\n            always <code>ipv4</code>, unless you have a <code>1.21</code> or later cluster running\n            version 1.10.0 or later of the Amazon VPC CNI add-on and specified <code>ipv6</code> when you\n            created the cluster. </p>"
+                        "smithy.api#documentation": "<p>The IP family used to assign Kubernetes pod and service IP addresses. The IP family is\n            always <code>ipv4</code>, unless you have a <code>1.21</code> or later cluster running\n            version 1.10.1 or later of the Amazon VPC CNI add-on and specified <code>ipv6</code> when you\n            created the cluster. </p>"
                     }
                 }
             },
@@ -3102,7 +3110,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An object representing a node group launch template specification. The launch template\n            cannot include <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html\">\n               <code>SubnetId</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html\">\n               <code>IamInstanceProfile</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html\">\n               <code>RequestSpotInstances</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html\">\n               <code>HibernationOptions</code>\n            </a>, or <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html\">\n               <code>TerminateInstances</code>\n            </a>, or the node group  deployment or\n            update will fail. For more information about launch templates, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html\">\n               <code>CreateLaunchTemplate</code>\n            </a> in the Amazon EC2 API\n            Reference. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>\n        <p>Specify either <code>name</code> or <code>id</code>, but not both.</p>"
+                "smithy.api#documentation": "<p>An object representing a node group launch template specification. The launch template\n            cannot include <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateNetworkInterface.html\">\n               <code>SubnetId</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_IamInstanceProfile.html\">\n               <code>IamInstanceProfile</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotInstances.html\">\n               <code>RequestSpotInstances</code>\n            </a>, <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_HibernationOptionsRequest.html\">\n               <code>HibernationOptions</code>\n            </a>, or <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_TerminateInstances.html\">\n               <code>TerminateInstances</code>\n            </a>, or the node group  deployment or\n            update will fail. For more information about launch templates, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html\">\n               <code>CreateLaunchTemplate</code>\n            </a> in the Amazon EC2 API\n            Reference. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>\n        <p>Specify either <code>name</code> or <code>id</code>, but not both.</p>"
             }
         },
         "com.amazonaws.eks#ListAddons": {
@@ -3887,7 +3895,7 @@
                 "taints": {
                     "target": "com.amazonaws.eks#taintsList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group when they are\n            created. Effect is one of <code>No_Schedule</code>, <code>Prefer_No_Schedule</code>, or\n                <code>No_Execute</code>. Kubernetes taints can be used together with tolerations to\n            control how workloads are scheduled to your nodes.</p>"
+                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group when they are\n            created. Effect is one of <code>No_Schedule</code>, <code>Prefer_No_Schedule</code>, or\n                <code>No_Execute</code>. Kubernetes taints can be used together with tolerations to\n            control how workloads are scheduled to your nodes. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html\">Node taints on managed node groups</a>.</p>"
                     }
                 },
                 "resources": {
@@ -4541,7 +4549,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Required resources (such as Service Linked Roles) were created and are still propagating. Retry later.</p>",
+                "smithy.api#documentation": "<p>Required resources (such as service-linked roles) were created and are still propagating. Retry later.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 428
             }
@@ -4722,7 +4730,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A property that allows a node to repel a set of pods.</p>"
+                "smithy.api#documentation": "<p>A property that allows a node to repel a set of pods. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html\">Node taints on managed node groups</a>.</p>"
             }
         },
         "com.amazonaws.eks#TaintEffect": {
@@ -5197,7 +5205,7 @@
                 "taints": {
                     "target": "com.amazonaws.eks#UpdateTaintsPayload",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group after the\n            update.</p>"
+                        "smithy.api#documentation": "<p>The Kubernetes taints to be applied to the nodes in the node group after the\n            update. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html\">Node taints on managed node groups</a>.</p>"
                     }
                 },
                 "scalingConfig": {
@@ -5288,13 +5296,13 @@
                 "version": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Kubernetes version to update to. If no version is specified, then the Kubernetes\n            version of the node group does not change. You can specify the Kubernetes version of the\n            cluster to update the node group to the latest AMI version of the cluster's Kubernetes\n            version. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify \n                <code>version</code>, or the node group  update will fail.\n            For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The Kubernetes version to update to. If no version is specified, then the Kubernetes\n            version of the node group does not change. You can specify the Kubernetes version of the\n            cluster to update the node group to the latest AMI version of the cluster's Kubernetes\n            version. If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify \n                <code>version</code>, or the node group  update will fail.\n            For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "releaseVersion": {
                     "target": "com.amazonaws.eks#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The AMI version of the Amazon EKS optimized AMI to use for the update. By\n            default, the latest available AMI version for the node group's Kubernetes version is\n            used. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html\">Amazon EKS optimized Amazon Linux 2 AMI versions </a> in the <i>Amazon EKS User Guide</i>.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>releaseVersion</code>,\n            or the node group  update will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the Amazon EKS User Guide.</p>"
+                        "smithy.api#documentation": "<p>The AMI version of the Amazon EKS optimized AMI to use for the update. By\n            default, the latest available AMI version for the node group's Kubernetes version is\n            used. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/eks-linux-ami-versions.html\">Amazon EKS optimized Amazon Linux 2 AMI versions </a> in the <i>Amazon EKS User Guide</i>.\n            If you specify <code>launchTemplate</code>, and your launch template uses a custom AMI, then don't specify  <code>releaseVersion</code>,\n            or the node group  update will fail. For more information about using launch templates with Amazon EKS, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/launch-templates.html\">Launch template support</a> in the <i>Amazon EKS User Guide</i>.</p>"
                     }
                 },
                 "launchTemplate": {
@@ -5491,7 +5499,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An object representing the details of an update to a taints payload.</p>"
+                "smithy.api#documentation": "<p>An object representing the details of an update to a taints payload. For more information, see <a href=\"https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html\">Node taints on managed node groups</a>.</p>"
             }
         },
         "com.amazonaws.eks#UpdateType": {
diff --git a/aws/sdk/aws-models/elasticmapreduce.json b/aws/sdk/aws-models/elasticmapreduce.json
index 4e9c8424622527b0ada21a0a2ca52383bedd756f..7770d7ca073284140fe8908dc361fa634f94f3a9 100644
--- a/aws/sdk/aws-models/elasticmapreduce.json
+++ b/aws/sdk/aws-models/elasticmapreduce.json
@@ -69,7 +69,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds an instance fleet to a running cluster.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Adds an instance fleet to a running cluster.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#AddInstanceFleetInput": {
@@ -193,7 +193,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps are allowed\n         in each job flow.</p>\n         <p>If your cluster is long-running (such as a Hive data warehouse) or complex, you may\n         require more than 256 steps to process your data. You can bypass the 256-step limitation in\n         various ways, including using SSH to connect to the master node and submitting queries\n         directly to the software running on the master node, such as Hive and Hadoop. For more\n         information on how to do this, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html\">Add More than 256 Steps to a\n            Cluster</a> in the <i>Amazon EMR Management Guide</i>.</p>\n         <p>A step specifies the location of a JAR file stored either on the master node of the\n         cluster or in Amazon S3. Each step is performed by the main function of the main class of\n         the JAR file. The main class can be specified either in the manifest of the JAR or by using\n         the MainFunction parameter of the step.</p>\n         <p>Amazon EMR executes each step in the order listed. For a step to be considered complete,\n         the main function must exit with a zero exit code and all Hadoop jobs started while the\n         step was running must have completed and run successfully.</p>\n         <p>You can only add steps to a cluster that is in one of the following states: STARTING,\n         BOOTSTRAPPING, RUNNING, or WAITING.</p>\n         <note>\n            <p>The string values passed into <code>HadoopJarStep</code> object cannot exceed a total of 10240 characters.</p>\n         </note>"
+                "smithy.api#documentation": "<p>AddJobFlowSteps adds new steps to a running cluster. A maximum of 256 steps are allowed\n         in each job flow.</p>\n         <p>If your cluster is long-running (such as a Hive data warehouse) or complex, you may\n         require more than 256 steps to process your data. You can bypass the 256-step limitation in\n         various ways, including using SSH to connect to the master node and submitting queries\n         directly to the software running on the master node, such as Hive and Hadoop. For more\n         information on how to do this, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html\">Add More than 256 Steps to a\n            Cluster</a> in the <i>Amazon EMR Management Guide</i>.</p>\n         <p>A step specifies the location of a JAR file stored either on the master node of the\n         cluster or in Amazon S3. Each step is performed by the main function of the main\n         class of the JAR file. The main class can be specified either in the manifest of the JAR or\n         by using the MainFunction parameter of the step.</p>\n         <p>Amazon EMR executes each step in the order listed. For a step to be considered\n         complete, the main function must exit with a zero exit code and all Hadoop jobs started\n         while the step was running must have completed and run successfully.</p>\n         <p>You can only add steps to a cluster that is in one of the following states: STARTING,\n         BOOTSTRAPPING, RUNNING, or WAITING.</p>\n         <note>\n            <p>The string values passed into <code>HadoopJarStep</code> object cannot exceed a total\n            of 10240 characters.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#AddJobFlowStepsInput": {
@@ -249,7 +249,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds tags to an Amazon EMR resource, such as a cluster or an Amazon EMR Studio. Tags make it easier to associate resources in\n         various ways, such as grouping clusters to track your Amazon EMR resource allocation costs.\n         For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag Clusters</a>. </p>"
+                "smithy.api#documentation": "<p>Adds tags to an Amazon EMR resource, such as a cluster or an Amazon EMR\n         Studio. Tags make it easier to associate resources in various ways, such as grouping\n         clusters to track your Amazon EMR resource allocation costs. For more information,\n         see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag\n            Clusters</a>. </p>"
             }
         },
         "com.amazonaws.emr#AddTagsInput": {
@@ -265,13 +265,13 @@
                 "Tags": {
                     "target": "com.amazonaws.emr#TagList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of tags to associate with a resource. Tags are\n         user-defined key-value pairs that consist of a required key string with a maximum of 128\n         characters, and an optional value string with a maximum of 256 characters.</p>",
+                        "smithy.api#documentation": "<p>A list of tags to associate with a resource. Tags are user-defined key-value pairs that\n         consist of a required key string with a maximum of 128 characters, and an optional value\n         string with a maximum of 256 characters.</p>",
                         "smithy.api#required": {}
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>This input identifies an Amazon EMR resource and a list of tags to attach.</p>"
+                "smithy.api#documentation": "<p>This input identifies an Amazon EMR resource and a list of tags to\n         attach.</p>"
             }
         },
         "com.amazonaws.emr#AddTagsOutput": {
@@ -329,7 +329,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>With Amazon EMR release version 4.0 and later, the only accepted parameter is the\n         application name. To pass arguments to applications, you use configuration classifications\n         specified using configuration JSON objects. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html\">Configuring\n            Applications</a>.</p>\n         <p>With earlier Amazon EMR releases, the application is any Amazon or third-party software\n         that you can add to the cluster. This structure contains a list of strings that indicates\n         the software to use with the cluster and accepts a user argument list. Amazon EMR accepts\n         and forwards the argument list to the corresponding installation script as bootstrap action\n         argument.</p>"
+                "smithy.api#documentation": "<p>With Amazon EMR release version 4.0 and later, the only accepted parameter is\n         the application name. To pass arguments to applications, you use configuration\n         classifications specified using configuration JSON objects. For more information, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html\">Configuring Applications</a>.</p>\n         <p>With earlier Amazon EMR releases, the application is any Amazon or third-party\n         software that you can add to the cluster. This structure contains a list of strings that\n         indicates the software to use with the cluster and accepts a user argument list. Amazon EMR accepts and forwards the argument list to the corresponding installation\n         script as bootstrap action argument.</p>"
             }
         },
         "com.amazonaws.emr#ApplicationList": {
@@ -381,7 +381,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n         Amazon EMR cluster. An automatic scaling policy defines how an instance group dynamically\n         adds and terminates EC2 instances in response to the value of a CloudWatch metric. See\n            <a>PutAutoScalingPolicy</a>.</p>"
+                "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n            Amazon EMR cluster. An automatic scaling policy defines how an instance group\n         dynamically adds and terminates EC2 instances in response to the value of a CloudWatch\n         metric. See <a>PutAutoScalingPolicy</a>.</p>"
             }
         },
         "com.amazonaws.emr#AutoScalingPolicyDescription": {
@@ -407,7 +407,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n         Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically\n         adds and terminates EC2 instances in response to the value of a CloudWatch metric. See\n            <a>PutAutoScalingPolicy</a>.</p>"
+                "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n            Amazon EMR cluster. The automatic scaling policy defines how an instance group\n         dynamically adds and terminates EC2 instances in response to the value of a CloudWatch\n         metric. See <a>PutAutoScalingPolicy</a>.</p>"
             }
         },
         "com.amazonaws.emr#AutoScalingPolicyState": {
@@ -506,12 +506,12 @@
                 "IdleTimeout": {
                     "target": "com.amazonaws.emr#Long",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the amount of idle time in seconds after which the cluster automatically terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven days).</p>"
+                        "smithy.api#documentation": "<p>Specifies the amount of idle time in seconds after which the cluster automatically\n         terminates. You can specify a minimum of 60 seconds and a maximum of 604800 seconds (seven\n         days).</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control cluster termination</a>.</p>"
+                "smithy.api#documentation": "<p>An auto-termination policy for an Amazon EMR cluster. An auto-termination policy\n         defines the amount of idle time in seconds after which a cluster automatically terminates.\n         For alternative cluster termination options, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control cluster\n            termination</a>.</p>"
             }
         },
         "com.amazonaws.emr#BlockPublicAccessConfiguration": {
@@ -520,14 +520,14 @@
                 "BlockPublicSecurityGroupRules": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates whether Amazon EMR block public access is enabled (<code>true</code>) or\n         disabled (<code>false</code>). By default, the value is <code>false</code> for accounts\n         that have created EMR clusters before July 2019. For accounts created after this, the\n         default is <code>true</code>.</p>",
+                        "smithy.api#documentation": "<p>Indicates whether Amazon EMR block public access is enabled (<code>true</code>)\n         or disabled (<code>false</code>). By default, the value is <code>false</code> for accounts\n         that have created EMR clusters before July 2019. For accounts created after this, the\n         default is <code>true</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "PermittedPublicSecurityGroupRuleRanges": {
                     "target": "com.amazonaws.emr#PortRanges",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies ports and port ranges that are permitted to have security group rules that\n         allow inbound traffic from all public sources. For example, if Port 23 (Telnet) is\n         specified for <code>PermittedPublicSecurityGroupRuleRanges</code>, Amazon EMR allows\n         cluster creation if a security group associated with the cluster has a rule that allows\n         inbound traffic on Port 23 from IPv4 0.0.0.0/0 or IPv6 port ::/0 as the source.</p>\n         <p>By default, Port 22, which is used for SSH access to the cluster EC2 instances, is in\n         the list of <code>PermittedPublicSecurityGroupRuleRanges</code>.</p>"
+                        "smithy.api#documentation": "<p>Specifies ports and port ranges that are permitted to have security group rules that\n         allow inbound traffic from all public sources. For example, if Port 23 (Telnet) is\n         specified for <code>PermittedPublicSecurityGroupRuleRanges</code>, Amazon EMR\n         allows cluster creation if a security group associated with the cluster has a rule that\n         allows inbound traffic on Port 23 from IPv4 0.0.0.0/0 or IPv6 port ::/0 as the\n         source.</p>\n         <p>By default, Port 22, which is used for SSH access to the cluster EC2 instances, is in\n         the list of <code>PermittedPublicSecurityGroupRuleRanges</code>.</p>"
                     }
                 },
                 "Classification": {
@@ -550,7 +550,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. When\n            <code>BlockPublicSecurityGroupRules</code> is set to <code>true</code>, Amazon EMR\n         prevents cluster creation if one of the cluster's security groups has a rule that allows\n         inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port is specified as an\n         exception using <code>PermittedPublicSecurityGroupRuleRanges</code>.</p>"
+                "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. When\n            <code>BlockPublicSecurityGroupRules</code> is set to <code>true</code>, Amazon EMR prevents cluster creation if one of the cluster's security groups has a rule that allows\n         inbound traffic from 0.0.0.0/0 or ::/0 on a port, unless the port is specified as an\n         exception using <code>PermittedPublicSecurityGroupRuleRanges</code>.</p>"
             }
         },
         "com.amazonaws.emr#BlockPublicAccessConfigurationMetadata": {
@@ -649,7 +649,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Cancels a pending step or steps in a running cluster. Available only in Amazon EMR\n         versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in\n         each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee\n         that a step will be canceled, even if the request is successfully submitted. When you use Amazon EMR versions 5.28.0 and later, you can cancel steps that are in a <code>PENDING</code> or <code>RUNNING</code> state. In earlier versions of Amazon EMR, you can only cancel steps that are in a <code>PENDING</code> state. </p>"
+                "smithy.api#documentation": "<p>Cancels a pending step or steps in a running cluster. Available only in Amazon EMR versions 4.8.0 and later, excluding version 5.0.0. A maximum of 256 steps are allowed in\n         each CancelSteps request. CancelSteps is idempotent but asynchronous; it does not guarantee\n         that a step will be canceled, even if the request is successfully submitted. When you use\n            Amazon EMR versions 5.28.0 and later, you can cancel steps that are in a\n            <code>PENDING</code> or <code>RUNNING</code> state. In earlier versions of Amazon EMR, you can only cancel steps that are in a <code>PENDING</code> state. </p>"
             }
         },
         "com.amazonaws.emr#CancelStepsInfo": {
@@ -675,7 +675,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Specification of the status of a CancelSteps request. Available only in Amazon EMR\n         version 4.8.0 and later, excluding version 5.0.0.</p>"
+                "smithy.api#documentation": "<p>Specification of the status of a CancelSteps request. Available only in Amazon EMR version 4.8.0 and later, excluding version 5.0.0.</p>"
             }
         },
         "com.amazonaws.emr#CancelStepsInfoList": {
@@ -837,19 +837,19 @@
                 "InstanceCollectionType": {
                     "target": "com.amazonaws.emr#InstanceCollectionType",
                     "traits": {
-                        "smithy.api#documentation": "<note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>\n         <p>The instance group configuration of the cluster. A value of <code>INSTANCE_GROUP</code>\n         indicates a uniform instance group configuration. A value of <code>INSTANCE_FLEET</code>\n         indicates an instance fleets configuration.</p>"
+                        "smithy.api#documentation": "<note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>\n         <p>The instance group configuration of the cluster. A value of <code>INSTANCE_GROUP</code>\n         indicates a uniform instance group configuration. A value of <code>INSTANCE_FLEET</code>\n         indicates an instance fleets configuration.</p>"
                     }
                 },
                 "LogUri": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The path to the Amazon S3 location where logs for this cluster are stored.</p>"
+                        "smithy.api#documentation": "<p>The path to the Amazon S3 location where logs for this cluster are\n         stored.</p>"
                     }
                 },
                 "LogEncryptionKmsKeyId": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p> The KMS key used for encrypting log files. This attribute is\n         only available with EMR version 5.30.0 and later, excluding EMR 6.0.0. </p>"
+                        "smithy.api#documentation": "<p> The KMS key used for encrypting log files. This attribute is only\n         available with EMR version 5.30.0 and later, excluding EMR 6.0.0. </p>"
                     }
                 },
                 "RequestedAmiVersion": {
@@ -867,7 +867,7 @@
                 "ReleaseLabel": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon EMR release label, which determines the version of open-source application\n         packages installed on the cluster. Release labels are in the form <code>emr-x.x.x</code>,\n         where x.x.x is an Amazon EMR release version such as <code>emr-5.14.0</code>. For more\n         information about Amazon EMR release versions and included application versions and\n         features, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">https://docs.aws.amazon.com/emr/latest/ReleaseGuide/</a>. The release\n         label applies only to Amazon EMR releases version 4.0 and later. Earlier versions use\n            <code>AmiVersion</code>.</p>"
+                        "smithy.api#documentation": "<p>The Amazon EMR release label, which determines the version of open-source\n         application packages installed on the cluster. Release labels are in the form\n            <code>emr-x.x.x</code>, where x.x.x is an Amazon EMR release version such as\n            <code>emr-5.14.0</code>. For more information about Amazon EMR release versions\n         and included application versions and features, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">https://docs.aws.amazon.com/emr/latest/ReleaseGuide/</a>. The release label applies only to Amazon EMR\n         releases version 4.0 and later. Earlier versions use <code>AmiVersion</code>.</p>"
                     }
                 },
                 "AutoTerminate": {
@@ -879,13 +879,13 @@
                 "TerminationProtected": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances from\n         being terminated by an API call or user intervention, or in the event of a cluster\n         error.</p>"
+                        "smithy.api#documentation": "<p>Indicates whether Amazon EMR will lock the cluster to prevent the EC2 instances\n         from being terminated by an API call or user intervention, or in the event of a cluster\n         error.</p>"
                     }
                 },
                 "VisibleToAllUsers": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated\n         with the cluster. When <code>true</code>, IAM principals in the\n         Amazon Web Services account can perform EMR cluster actions on the cluster that their IAM policies allow. When <code>false</code>, only the IAM principal that created the cluster and the Amazon Web Services account root user can perform EMR actions, regardless of IAM permissions policies attached to other IAM principals.</p>\n         <p>The default value is <code>true</code> if a value is not provided when creating a\n         cluster using the EMR API <a>RunJobFlow</a> command, the CLI\n         <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command, or the Amazon Web Services Management Console.</p>"
+                        "smithy.api#documentation": "<p>Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated with the cluster. When <code>true</code>, IAM principals\n         in the Amazon Web Services account can perform EMR cluster actions on the cluster that their\n         IAM policies allow. When <code>false</code>, only the IAM principal that created the\n         cluster and the Amazon Web Services account root user can perform EMR actions, regardless of\n         IAM permissions policies attached to other IAM principals.</p>\n         <p>The default value is <code>true</code> if a value is not provided when creating a\n         cluster using the EMR API <a>RunJobFlow</a> command, the CLI\n         <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command, or the Amazon Web Services Management Console.</p>"
                     }
                 },
                 "Applications": {
@@ -903,7 +903,7 @@
                 "ServiceRole": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IAM role that Amazon EMR assumes in order to access Amazon Web Services resources on\n         your behalf.</p>"
+                        "smithy.api#documentation": "<p>The IAM role that Amazon EMR assumes in order to access Amazon Web Services\n         resources on your behalf.</p>"
                     }
                 },
                 "NormalizedInstanceHours": {
@@ -921,7 +921,7 @@
                 "Configurations": {
                     "target": "com.amazonaws.emr#ConfigurationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies only to Amazon EMR releases 4.x and later. The list of Configurations supplied\n         to the EMR cluster.</p>"
+                        "smithy.api#documentation": "<p>Applies only to Amazon EMR releases 4.x and later. The list of Configurations\n         supplied to the EMR cluster.</p>"
                     }
                 },
                 "SecurityConfiguration": {
@@ -939,7 +939,7 @@
                 "ScaleDownBehavior": {
                     "target": "com.amazonaws.emr#ScaleDownBehavior",
                     "traits": {
-                        "smithy.api#documentation": "<p>The way that individual Amazon EC2 instances terminate when an automatic scale-in\n         activity occurs or an instance group is resized. <code>TERMINATE_AT_INSTANCE_HOUR</code>\n         indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of\n         when the request to terminate the instance was submitted. This option is only available\n         with Amazon EMR 5.1.0 and later and is the default for clusters created using that version.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> indicates that Amazon EMR adds nodes to a deny\n         list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of\n         the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes\n         first and blocks instance termination if it could lead to HDFS corruption.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> is available only in Amazon EMR version 4.1.0\n         and later, and is the default for versions of Amazon EMR earlier than 5.1.0.</p>"
+                        "smithy.api#documentation": "<p>The way that individual Amazon EC2 instances terminate when an automatic\n         scale-in activity occurs or an instance group is resized.\n            <code>TERMINATE_AT_INSTANCE_HOUR</code> indicates that Amazon EMR terminates\n         nodes at the instance-hour boundary, regardless of when the request to terminate the\n         instance was submitted. This option is only available with Amazon EMR 5.1.0 and\n         later and is the default for clusters created using that version.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> indicates that Amazon EMR adds nodes\n         to a deny list and drains tasks from nodes before terminating the Amazon EC2\n         instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to\n         HDFS corruption. <code>TERMINATE_AT_TASK_COMPLETION</code> is available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.</p>"
                     }
                 },
                 "CustomAmiId": {
@@ -951,7 +951,7 @@
                 "EbsRootVolumeSize": {
                     "target": "com.amazonaws.emr#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used for\n         each EC2 instance. Available in Amazon EMR version 4.x and later.</p>"
+                        "smithy.api#documentation": "<p>The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is\n         used for each EC2 instance. Available in Amazon EMR version 4.x and later.</p>"
                     }
                 },
                 "RepoUpgradeOnBoot": {
@@ -989,6 +989,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Placement group configured for an Amazon EMR cluster.</p>"
                     }
+                },
+                "OSReleaseLabel": {
+                    "target": "com.amazonaws.emr#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Linux release specified in a cluster launch RunJobFlow request. If no Amazon Linux release was specified, the default Amazon Linux release is shown in the response.</p>"
+                    }
                 }
             },
             "traits": {
@@ -1338,7 +1344,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<note>\n            <p>Amazon EMR releases 4.x or later.</p>\n         </note>\n         <p>An optional configuration specification to be used when provisioning cluster instances,\n         which can include configurations for applications and software bundled with Amazon EMR. A\n         configuration consists of a classification, properties, and optional nested configurations.\n         A classification refers to an application-specific configuration file. Properties are the\n         settings you want to change in that file. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html\">Configuring\n            Applications</a>.</p>"
+                "smithy.api#documentation": "<note>\n            <p>Amazon EMR releases 4.x or later.</p>\n         </note>\n         <p>An optional configuration specification to be used when provisioning cluster instances,\n         which can include configurations for applications and software bundled with Amazon EMR. A configuration consists of a classification, properties, and optional\n         nested configurations. A classification refers to an application-specific configuration\n         file. Properties are the settings you want to change in that file. For more information,\n         see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps.html\">Configuring Applications</a>.</p>"
             }
         },
         "com.amazonaws.emr#ConfigurationList": {
@@ -1380,7 +1386,7 @@
                 "SecurityConfiguration": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The security configuration details in JSON format. For JSON parameters and examples, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html\">Use Security\n            Configurations to Set Up Cluster Security</a> in the <i>Amazon EMR Management\n            Guide</i>.</p>",
+                        "smithy.api#documentation": "<p>The security configuration details in JSON format. For JSON parameters and examples, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-security-configurations.html\">Use Security\n            Configurations to Set Up Cluster Security</a> in the <i>Amazon EMR\n            Management Guide</i>.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -1458,60 +1464,60 @@
                 "SubnetIds": {
                     "target": "com.amazonaws.emr#SubnetIdList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC\n         specified by <code>VpcId</code>. Studio users can create a Workspace in any of the\n         specified subnets.</p>",
+                        "smithy.api#documentation": "<p>A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have\n         a maximum of 5 subnets. The subnets must belong to the VPC specified by <code>VpcId</code>.\n         Studio users can create a Workspace in any of the specified subnets.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "ServiceRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IAM role that the Amazon EMR Studio assumes. The service role provides a\n         way for Amazon EMR Studio to interoperate with other Amazon Web Services services.</p>",
+                        "smithy.api#documentation": "<p>The IAM role that the Amazon EMR Studio assumes. The service role provides a way\n         for Amazon EMR Studio to interoperate with other Amazon Web Services\n         services.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "UserRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a <code>UserRole</code> when you use Amazon Web Services SSO authentication. The\n         permissions attached to the <code>UserRole</code> can be scoped down for each user or group using\n         session policies.</p>"
+                        "smithy.api#documentation": "<p>The IAM user role that users and groups assume when logged in to an Amazon EMR\n         Studio. Only specify a <code>UserRole</code> when you use Amazon Web Services SSO\n         authentication. The permissions attached to the <code>UserRole</code> can be scoped down\n         for each user or group using session policies.</p>"
                     }
                 },
                 "WorkspaceSecurityGroupId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security group\n         allows outbound network traffic to resources in the Engine security group, and it must be\n         in the same VPC specified by <code>VpcId</code>.</p>",
+                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio Workspace security group. The Workspace security\n         group allows outbound network traffic to resources in the Engine security group, and it\n         must be in the same VPC specified by <code>VpcId</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "EngineSecurityGroupId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio Engine security group. The Engine security group allows\n         inbound network traffic from the Workspace security group, and it must be in the same VPC\n         specified by <code>VpcId</code>.</p>",
+                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio Engine security group. The Engine security group\n         allows inbound network traffic from the Workspace security group, and it must be in the\n         same VPC specified by <code>VpcId</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "DefaultS3Location": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.</p>",
+                        "smithy.api#documentation": "<p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and\n         notebook files.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "IdpAuthUrl": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.</p>"
+                        "smithy.api#documentation": "<p>The authentication endpoint of your identity provider (IdP). Specify this value when you\n         use IAM authentication and want to let federated users log in to a Studio\n         with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects\n         users to this endpoint to enter credentials.</p>"
                     }
                 },
                 "IdpRelayStateParameterName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name that your identity provider (IdP) uses for its <code>RelayState</code> parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by IdP.</p>"
+                        "smithy.api#documentation": "<p>The name that your identity provider (IdP) uses for its <code>RelayState</code>\n         parameter. For example, <code>RelayState</code> or <code>TargetSource</code>. Specify this\n         value when you use IAM authentication and want to let federated users log in\n         to a Studio using the Studio URL. The <code>RelayState</code> parameter differs by\n         IdP.</p>"
                     }
                 },
                 "Tags": {
                     "target": "com.amazonaws.emr#TagList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined key-value pairs that\n         consist of a required key string with a maximum of 128 characters, and an optional value\n         string with a maximum of 256 characters.</p>"
+                        "smithy.api#documentation": "<p>A list of tags to associate with the Amazon EMR Studio. Tags are user-defined\n         key-value pairs that consist of a required key string with a maximum of 128 characters, and\n         an optional value string with a maximum of 256 characters.</p>"
                     }
                 }
             }
@@ -1538,6 +1544,9 @@
             "input": {
                 "target": "com.amazonaws.emr#CreateStudioSessionMappingInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
@@ -1547,7 +1556,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Maps a user or group to the Amazon EMR Studio specified by <code>StudioId</code>, and\n         applies a session policy to refine Studio permissions for that user or group. Use <code>CreateStudioSessionMapping</code> to assign users to a Studio when you use Amazon Web Services SSO authentication. For instructions on how to assign users to a Studio when you use IAM authentication, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-manage-users.html#emr-studio-assign-users-groups\">Assign a user or group to your EMR Studio</a>.</p>"
+                "smithy.api#documentation": "<p>Maps a user or group to the Amazon EMR Studio specified by\n         <code>StudioId</code>, and applies a session policy to refine Studio permissions for that\n         user or group. Use <code>CreateStudioSessionMapping</code> to assign users to a Studio when\n         you use Amazon Web Services SSO authentication. For instructions on how to assign users to a\n         Studio when you use IAM authentication, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-manage-users.html#emr-studio-assign-users-groups\">Assign a user or group to your EMR Studio</a>.</p>"
             }
         },
         "com.amazonaws.emr#CreateStudioSessionMappingInput": {
@@ -1556,33 +1565,33 @@
                 "StudioId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio to which the user or group will be mapped.</p>",
+                        "smithy.api#documentation": "<p>The ID of the Amazon EMR Studio to which the user or group will be\n         mapped.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "IdentityId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group from the Amazon Web Services SSO Identity\n         Store. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified, but not both.</p>"
+                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group from the Amazon Web Services SSO\n         Identity Store. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified, but not both.</p>"
                     }
                 },
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified, but not both.</p>"
+                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified, but not both.</p>"
                     }
                 },
                 "IdentityType": {
                     "target": "com.amazonaws.emr#IdentityType",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the identity to map to the Amazon EMR Studio is a user or a group.</p>",
+                        "smithy.api#documentation": "<p>Specifies whether the identity to map to the Amazon EMR Studio is a user or a\n         group.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "SessionPolicyArn": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the session policy that will be applied to the user\n         or group. You should specify the ARN for the session policy that you want to apply, not the ARN of your user role. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-user-role.html\">Create an EMR Studio User Role with Session Policies</a>.</p>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the session policy that will be applied to the user\n         or group. You should specify the ARN for the session policy that you want to apply, not the\n         ARN of your user role. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-studio-user-role.html\">Create an EMR Studio User\n            Role with Session Policies</a>.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -1632,6 +1641,9 @@
             "input": {
                 "target": "com.amazonaws.emr#DeleteStudioInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerException"
@@ -1661,6 +1673,9 @@
             "input": {
                 "target": "com.amazonaws.emr#DeleteStudioSessionMappingInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
@@ -1686,19 +1701,19 @@
                 "IdentityId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group to remove from the Amazon EMR\n         Studio. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group to remove from the Amazon EMR Studio. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified.</p>"
                     }
                 },
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user name or group to remove from the Amazon EMR Studio. For more information, see\n            <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The name of the user name or group to remove from the Amazon EMR Studio. For\n         more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
                     }
                 },
                 "IdentityType": {
                     "target": "com.amazonaws.emr#IdentityType",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the identity to delete from the Amazon EMR Studio is a user or a group.</p>",
+                        "smithy.api#documentation": "<p>Specifies whether the identity to delete from the Amazon EMR Studio is a user or\n         a group.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -1959,7 +1974,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Provides EMR release label details, such as releases available the region where the API request is run, and the available applications for a specific EMR release label. Can also list EMR release versions that support a specified version of Spark.</p>"
+                "smithy.api#documentation": "<p>Provides EMR release label details, such as releases available the region where the API\n         request is run, and the available applications for a specific EMR release label. Can also\n         list EMR release versions that support a specified version of Spark.</p>"
             }
         },
         "com.amazonaws.emr#DescribeReleaseLabelInput": {
@@ -1997,7 +2012,7 @@
                 "Applications": {
                     "target": "com.amazonaws.emr#SimplifiedApplicationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The list of applications available for the target release label. <code>Name</code> is the name of the application. <code>Version</code> is the concise version of the application.</p>"
+                        "smithy.api#documentation": "<p>The list of applications available for the target release label. <code>Name</code> is\n         the name of the application. <code>Version</code> is the concise version of the\n         application.</p>"
                     }
                 },
                 "NextToken": {
@@ -2005,6 +2020,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The pagination token. Reserved for future use. Currently set to null.</p>"
                     }
+                },
+                "AvailableOSReleases": {
+                    "target": "com.amazonaws.emr#OSReleaseList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The list of available Amazon Linux release versions for an Amazon EMR release. \n         Contains a Label field that is formatted as shown in <a href=\"https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-al2.html\">\n               <i>Amazon Linux 2 Release Notes</i>\n            </a>. For example, <a href=\"https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-20220218.html\">2.0.20220218.1</a>.</p>"
+                    }
                 }
             }
         },
@@ -2173,7 +2194,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns details for the specified Amazon EMR Studio including ID, Name, VPC, Studio\n         access URL, and so on.</p>"
+                "smithy.api#documentation": "<p>Returns details for the specified Amazon EMR Studio including ID, Name, VPC,\n         Studio access URL, and so on.</p>"
             }
         },
         "com.amazonaws.emr#DescribeStudioInput": {
@@ -2270,7 +2291,7 @@
                 "EbsBlockDeviceConfigs": {
                     "target": "com.amazonaws.emr#EbsBlockDeviceConfigList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An array of Amazon EBS volume specifications attached to a cluster instance.</p>"
+                        "smithy.api#documentation": "<p>An array of Amazon EBS volume specifications attached to a cluster\n         instance.</p>"
                     }
                 },
                 "EbsOptimized": {
@@ -2316,19 +2337,19 @@
                 "Ec2KeyName": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the Amazon EC2 key pair to use when connecting with SSH into the master node\n         as a user named \"hadoop\".</p>"
+                        "smithy.api#documentation": "<p>The name of the Amazon EC2 key pair to use when connecting with SSH into the\n         master node as a user named \"hadoop\".</p>"
                     }
                 },
                 "Ec2SubnetId": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>Set this parameter to the identifier of the Amazon VPC subnet where you want the cluster\n         to launch. If you do not specify this value, and your account supports EC2-Classic, the\n         cluster launches in EC2-Classic.</p>"
+                        "smithy.api#documentation": "<p>Set this parameter to the identifier of the Amazon VPC subnet where you want the\n         cluster to launch. If you do not specify this value, and your account supports EC2-Classic,\n         the cluster launches in EC2-Classic.</p>"
                     }
                 },
                 "RequestedEc2SubnetIds": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256List",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies to clusters configured with the instance fleets option. Specifies the unique\n         identifier of one or more Amazon EC2 subnets in which to launch EC2 cluster instances.\n         Subnets must exist within the same VPC. Amazon EMR chooses the EC2 subnet with the best fit\n         from among the list of <code>RequestedEc2SubnetIds</code>, and then launches all cluster\n         instances within that Subnet. If this value is not specified, and the account and Region\n         support EC2-Classic networks, the cluster launches instances in the EC2-Classic network and\n         uses <code>RequestedEc2AvailabilityZones</code> instead of this setting. If EC2-Classic is\n         not supported, and no Subnet is specified, Amazon EMR chooses the subnet for you.\n            <code>RequestedEc2SubnetIDs</code> and <code>RequestedEc2AvailabilityZones</code> cannot\n         be specified together.</p>"
+                        "smithy.api#documentation": "<p>Applies to clusters configured with the instance fleets option. Specifies the unique\n         identifier of one or more Amazon EC2 subnets in which to launch EC2 cluster\n         instances. Subnets must exist within the same VPC. Amazon EMR chooses the EC2\n         subnet with the best fit from among the list of <code>RequestedEc2SubnetIds</code>, and\n         then launches all cluster instances within that Subnet. If this value is not specified, and\n         the account and Region support EC2-Classic networks, the cluster launches instances in the\n         EC2-Classic network and uses <code>RequestedEc2AvailabilityZones</code> instead of this\n         setting. If EC2-Classic is not supported, and no Subnet is specified, Amazon EMR\n         chooses the subnet for you. <code>RequestedEc2SubnetIDs</code> and\n            <code>RequestedEc2AvailabilityZones</code> cannot be specified together.</p>"
                     }
                 },
                 "Ec2AvailabilityZone": {
@@ -2340,7 +2361,7 @@
                 "RequestedEc2AvailabilityZones": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256List",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies to clusters configured with the instance fleets option. Specifies one or more\n         Availability Zones in which to launch EC2 cluster instances when the EC2-Classic network\n         configuration is supported. Amazon EMR chooses the Availability Zone with the best fit from\n         among the list of <code>RequestedEc2AvailabilityZones</code>, and then launches all cluster\n         instances within that Availability Zone. If you do not specify this value, Amazon EMR\n         chooses the Availability Zone for you. <code>RequestedEc2SubnetIDs</code> and\n            <code>RequestedEc2AvailabilityZones</code> cannot be specified together.</p>"
+                        "smithy.api#documentation": "<p>Applies to clusters configured with the instance fleets option. Specifies one or more\n         Availability Zones in which to launch EC2 cluster instances when the EC2-Classic network\n         configuration is supported. Amazon EMR chooses the Availability Zone with the best\n         fit from among the list of <code>RequestedEc2AvailabilityZones</code>, and then launches\n         all cluster instances within that Availability Zone. If you do not specify this value,\n            Amazon EMR chooses the Availability Zone for you.\n            <code>RequestedEc2SubnetIDs</code> and <code>RequestedEc2AvailabilityZones</code> cannot\n         be specified together.</p>"
                     }
                 },
                 "IamInstanceProfile": {
@@ -2358,13 +2379,13 @@
                 "EmrManagedSlaveSecurityGroup": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the core and task nodes.</p>"
+                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the core and task\n         nodes.</p>"
                     }
                 },
                 "ServiceAccessSecurityGroup": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the Amazon EMR service to access\n         clusters in VPC private subnets.</p>"
+                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the Amazon EMR\n         service to access clusters in VPC private subnets.</p>"
                     }
                 },
                 "AdditionalMasterSecurityGroups": {
@@ -2376,7 +2397,7 @@
                 "AdditionalSlaveSecurityGroups": {
                     "target": "com.amazonaws.emr#StringList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of additional Amazon EC2 security group IDs for the core and task nodes.</p>"
+                        "smithy.api#documentation": "<p>A list of additional Amazon EC2 security group IDs for the core and task\n         nodes.</p>"
                     }
                 }
             },
@@ -2398,7 +2419,7 @@
                     "name": "elasticmapreduce"
                 },
                 "aws.protocols#awsJson1_1": {},
-                "smithy.api#documentation": "<p>Amazon EMR is a web service that makes it easier to process large amounts of data\n         efficiently. Amazon EMR uses Hadoop processing combined with several Amazon Web Services services to do\n         tasks such as web indexing, data mining, log file analysis, machine learning, scientific\n         simulation, and data warehouse management.</p>",
+                "smithy.api#documentation": "<p>Amazon EMR is a web service that makes it easier to process large amounts of\n         data efficiently. Amazon EMR uses Hadoop processing combined with several Amazon Web Services services to do tasks such as web indexing, data mining, log file analysis,\n         machine learning, scientific simulation, and data warehouse management.</p>",
                 "smithy.api#title": "Amazon EMR",
                 "smithy.api#xmlNamespace": {
                     "uri": "http://elasticmapreduce.amazonaws.com/doc/2009-03-31"
@@ -2626,7 +2647,7 @@
                 "Message": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The descriptive message including the error the Amazon EMR service has identified as the\n         cause of step failure. This is text from an error log that describes the root cause of the\n         failure.</p>"
+                        "smithy.api#documentation": "<p>The descriptive message including the error the Amazon EMR service has\n         identified as the cause of step failure. This is text from an error log that describes the\n         root cause of the failure.</p>"
                     }
                 },
                 "LogFile": {
@@ -2658,7 +2679,7 @@
                 "ClusterId": {
                     "target": "com.amazonaws.emr#ClusterId",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster for which the auto-termination policy will be fetched.</p>",
+                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster for which the auto-termination policy\n         will be fetched.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -2670,7 +2691,7 @@
                 "AutoTerminationPolicy": {
                     "target": "com.amazonaws.emr#AutoTerminationPolicy",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the auto-termination policy that is attached to an Amazon EMR cluster. </p>"
+                        "smithy.api#documentation": "<p>Specifies the auto-termination policy that is attached to an Amazon EMR cluster.\n      </p>"
                     }
                 }
             }
@@ -2692,7 +2713,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns the Amazon EMR block public access configuration for your Amazon Web Services account in the\n         current Region. For more information see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html\">Configure Block\n            Public Access for Amazon EMR</a> in the <i>Amazon EMR Management\n            Guide</i>.</p>"
+                "smithy.api#documentation": "<p>Returns the Amazon EMR block public access configuration for your Amazon Web Services account in the current Region. For more information see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html\">Configure Block\n            Public Access for Amazon EMR</a> in the <i>Amazon EMR\n            Management Guide</i>.</p>"
             }
         },
         "com.amazonaws.emr#GetBlockPublicAccessConfigurationInput": {
@@ -2705,7 +2726,7 @@
                 "BlockPublicAccessConfiguration": {
                     "target": "com.amazonaws.emr#BlockPublicAccessConfiguration",
                     "traits": {
-                        "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. The configuration applies to all\n         clusters created in your account for the current Region. The configuration specifies\n         whether block public access is enabled. If block public access is enabled, security groups\n         associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or\n         ::/0 on a port, unless the port is specified as an exception using\n            <code>PermittedPublicSecurityGroupRuleRanges</code> in the\n            <code>BlockPublicAccessConfiguration</code>. By default, Port 22 (SSH) is an exception,\n         and public access is allowed on this port. You can change this by updating the block public\n         access configuration to remove the exception.</p>\n         <note>\n            <p>For accounts that created clusters in a Region before November 25, 2019, block public\n            access is disabled by default in that Region. To use this feature, you must manually\n            enable and configure it. For accounts that did not create an EMR cluster in a Region\n            before this date, block public access is enabled by default in that Region.</p>\n         </note>",
+                        "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. The configuration applies to\n         all clusters created in your account for the current Region. The configuration specifies\n         whether block public access is enabled. If block public access is enabled, security groups\n         associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or\n         ::/0 on a port, unless the port is specified as an exception using\n            <code>PermittedPublicSecurityGroupRuleRanges</code> in the\n            <code>BlockPublicAccessConfiguration</code>. By default, Port 22 (SSH) is an exception,\n         and public access is allowed on this port. You can change this by updating the block public\n         access configuration to remove the exception.</p>\n         <note>\n            <p>For accounts that created clusters in a Region before November 25, 2019, block public\n            access is disabled by default in that Region. To use this feature, you must manually\n            enable and configure it. For accounts that did not create an EMR cluster in a Region\n            before this date, block public access is enabled by default in that Region.</p>\n         </note>",
                         "smithy.api#required": {}
                     }
                 },
@@ -2748,7 +2769,7 @@
                 "ManagedScalingPolicy": {
                     "target": "com.amazonaws.emr#ManagedScalingPolicy",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the managed scaling policy that is attached to an Amazon EMR cluster. </p>"
+                        "smithy.api#documentation": "<p>Specifies the managed scaling policy that is attached to an Amazon EMR cluster.\n      </p>"
                     }
                 }
             }
@@ -2770,7 +2791,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Fetches mapping details for the specified Amazon EMR Studio and identity (user or\n         group).</p>"
+                "smithy.api#documentation": "<p>Fetches mapping details for the specified Amazon EMR Studio and identity (user\n         or group).</p>"
             }
         },
         "com.amazonaws.emr#GetStudioSessionMappingInput": {
@@ -2786,13 +2807,13 @@
                 "IdentityId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group. For more information, see\n            <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group. For more information, see\n            <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified.</p>"
                     }
                 },
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user or group to fetch. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The name of the user or group to fetch. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified.</p>"
                     }
                 },
                 "IdentityType": {
@@ -2810,7 +2831,7 @@
                 "SessionMapping": {
                     "target": "com.amazonaws.emr#SessionMappingDetail",
                     "traits": {
-                        "smithy.api#documentation": "<p>The session mapping details for the specified Amazon EMR Studio and identity, including\n         session policy ARN and creation time.</p>"
+                        "smithy.api#documentation": "<p>The session mapping details for the specified Amazon EMR Studio and identity,\n         including session policy ARN and creation time.</p>"
                     }
                 }
             }
@@ -3020,13 +3041,13 @@
                 "TargetOnDemandCapacity": {
                     "target": "com.amazonaws.emr#WholeNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target capacity of On-Demand units for the instance fleet, which determines how many\n         On-Demand Instances to provision. When the instance fleet launches, Amazon EMR tries to\n         provision On-Demand Instances as specified by <a>InstanceTypeConfig</a>. Each\n         instance configuration has a specified <code>WeightedCapacity</code>. When an On-Demand\n         Instance is provisioned, the <code>WeightedCapacity</code> units count toward the target\n         capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled,\n         even if this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units. You can use <a>InstanceFleet$ProvisionedOnDemandCapacity</a> to determine the Spot capacity\n         units that have been provisioned for the instance fleet.</p>\n         <note>\n            <p>If not specified or set to 0, only Spot Instances are provisioned for the instance\n            fleet using <code>TargetSpotCapacity</code>. At least one of\n               <code>TargetSpotCapacity</code> and <code>TargetOnDemandCapacity</code> should be\n            greater than 0. For a master instance fleet, only one of <code>TargetSpotCapacity</code>\n            and <code>TargetOnDemandCapacity</code> can be specified, and its value must be\n            1.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>The target capacity of On-Demand units for the instance fleet, which determines how many\n         On-Demand Instances to provision. When the instance fleet launches, Amazon EMR\n         tries to provision On-Demand Instances as specified by <a>InstanceTypeConfig</a>. Each instance configuration has a specified <code>WeightedCapacity</code>. When an\n         On-Demand Instance is provisioned, the <code>WeightedCapacity</code> units count toward the\n         target capacity. Amazon EMR provisions instances until the target capacity is\n         totally fulfilled, even if this results in an overage. For example, if there are 2 units\n         remaining to fulfill capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units. You can use <a>InstanceFleet$ProvisionedOnDemandCapacity</a> to determine the Spot capacity\n         units that have been provisioned for the instance fleet.</p>\n         <note>\n            <p>If not specified or set to 0, only Spot Instances are provisioned for the instance\n            fleet using <code>TargetSpotCapacity</code>. At least one of\n               <code>TargetSpotCapacity</code> and <code>TargetOnDemandCapacity</code> should be\n            greater than 0. For a master instance fleet, only one of <code>TargetSpotCapacity</code>\n            and <code>TargetOnDemandCapacity</code> can be specified, and its value must be\n            1.</p>\n         </note>"
                     }
                 },
                 "TargetSpotCapacity": {
                     "target": "com.amazonaws.emr#WholeNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target capacity of Spot units for the instance fleet, which determines how many Spot\n         Instances to provision. When the instance fleet launches, Amazon EMR tries to provision\n         Spot Instances as specified by <a>InstanceTypeConfig</a>. Each instance\n         configuration has a specified <code>WeightedCapacity</code>. When a Spot instance is\n         provisioned, the <code>WeightedCapacity</code> units count toward the target capacity.\n         Amazon EMR provisions instances until the target capacity is totally fulfilled, even if\n         this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units. You can use <a>InstanceFleet$ProvisionedSpotCapacity</a> to determine the Spot capacity units\n         that have been provisioned for the instance fleet.</p>\n         <note>\n            <p>If not specified or set to 0, only On-Demand Instances are provisioned for the\n            instance fleet. At least one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> should be greater than 0. For a master instance\n            fleet, only one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> can be specified, and its value must be 1.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>The target capacity of Spot units for the instance fleet, which determines how many Spot\n         Instances to provision. When the instance fleet launches, Amazon EMR tries to\n         provision Spot Instances as specified by <a>InstanceTypeConfig</a>. Each\n         instance configuration has a specified <code>WeightedCapacity</code>. When a Spot instance\n         is provisioned, the <code>WeightedCapacity</code> units count toward the target capacity.\n            Amazon EMR provisions instances until the target capacity is totally fulfilled,\n         even if this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units. You can use <a>InstanceFleet$ProvisionedSpotCapacity</a> to determine the Spot capacity units\n         that have been provisioned for the instance fleet.</p>\n         <note>\n            <p>If not specified or set to 0, only On-Demand Instances are provisioned for the\n            instance fleet. At least one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> should be greater than 0. For a master instance\n            fleet, only one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> can be specified, and its value must be 1.</p>\n         </note>"
                     }
                 },
                 "ProvisionedOnDemandCapacity": {
@@ -3044,7 +3065,7 @@
                 "InstanceTypeSpecifications": {
                     "target": "com.amazonaws.emr#InstanceTypeSpecificationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An array of specifications for the instance types that comprise an instance fleet.</p>"
+                        "smithy.api#documentation": "<p>An array of specifications for the instance types that comprise an instance\n         fleet.</p>"
                     }
                 },
                 "LaunchSpecifications": {
@@ -3055,7 +3076,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Describes an instance fleet, which is a group of EC2 instances that host a particular\n         node type (master, core, or task) in an Amazon EMR cluster. Instance fleets can consist of\n         a mix of instance types and On-Demand and Spot Instances, which are provisioned to meet a\n         defined target capacity. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Describes an instance fleet, which is a group of EC2 instances that host a particular\n         node type (master, core, or task) in an Amazon EMR cluster. Instance fleets can\n         consist of a mix of instance types and On-Demand and Spot Instances, which are provisioned\n         to meet a defined target capacity. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetConfig": {
@@ -3077,13 +3098,13 @@
                 "TargetOnDemandCapacity": {
                     "target": "com.amazonaws.emr#WholeNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target capacity of On-Demand units for the instance fleet, which determines how many\n         On-Demand Instances to provision. When the instance fleet launches, Amazon EMR tries to\n         provision On-Demand Instances as specified by <a>InstanceTypeConfig</a>. Each\n         instance configuration has a specified <code>WeightedCapacity</code>. When an On-Demand\n         Instance is provisioned, the <code>WeightedCapacity</code> units count toward the target\n         capacity. Amazon EMR provisions instances until the target capacity is totally fulfilled,\n         even if this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units.</p>\n         <note>\n            <p>If not specified or set to 0, only Spot Instances are provisioned for the instance\n            fleet using <code>TargetSpotCapacity</code>. At least one of\n               <code>TargetSpotCapacity</code> and <code>TargetOnDemandCapacity</code> should be\n            greater than 0. For a master instance fleet, only one of <code>TargetSpotCapacity</code>\n            and <code>TargetOnDemandCapacity</code> can be specified, and its value must be\n            1.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>The target capacity of On-Demand units for the instance fleet, which determines how many\n         On-Demand Instances to provision. When the instance fleet launches, Amazon EMR\n         tries to provision On-Demand Instances as specified by <a>InstanceTypeConfig</a>. Each instance configuration has a specified <code>WeightedCapacity</code>. When an\n         On-Demand Instance is provisioned, the <code>WeightedCapacity</code> units count toward the\n         target capacity. Amazon EMR provisions instances until the target capacity is\n         totally fulfilled, even if this results in an overage. For example, if there are 2 units\n         remaining to fulfill capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units.</p>\n         <note>\n            <p>If not specified or set to 0, only Spot Instances are provisioned for the instance\n            fleet using <code>TargetSpotCapacity</code>. At least one of\n               <code>TargetSpotCapacity</code> and <code>TargetOnDemandCapacity</code> should be\n            greater than 0. For a master instance fleet, only one of <code>TargetSpotCapacity</code>\n            and <code>TargetOnDemandCapacity</code> can be specified, and its value must be\n            1.</p>\n         </note>"
                     }
                 },
                 "TargetSpotCapacity": {
                     "target": "com.amazonaws.emr#WholeNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>The target capacity of Spot units for the instance fleet, which determines how many Spot\n         Instances to provision. When the instance fleet launches, Amazon EMR tries to provision\n         Spot Instances as specified by <a>InstanceTypeConfig</a>. Each instance\n         configuration has a specified <code>WeightedCapacity</code>. When a Spot Instance is\n         provisioned, the <code>WeightedCapacity</code> units count toward the target capacity.\n         Amazon EMR provisions instances until the target capacity is totally fulfilled, even if\n         this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units.</p>\n         <note>\n            <p>If not specified or set to 0, only On-Demand Instances are provisioned for the\n            instance fleet. At least one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> should be greater than 0. For a master instance\n            fleet, only one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> can be specified, and its value must be 1.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>The target capacity of Spot units for the instance fleet, which determines how many Spot\n         Instances to provision. When the instance fleet launches, Amazon EMR tries to\n         provision Spot Instances as specified by <a>InstanceTypeConfig</a>. Each\n         instance configuration has a specified <code>WeightedCapacity</code>. When a Spot Instance\n         is provisioned, the <code>WeightedCapacity</code> units count toward the target capacity.\n            Amazon EMR provisions instances until the target capacity is totally fulfilled,\n         even if this results in an overage. For example, if there are 2 units remaining to fulfill\n         capacity, and Amazon EMR can only provision an instance with a\n            <code>WeightedCapacity</code> of 5 units, the instance is provisioned, and the target\n         capacity is exceeded by 3 units.</p>\n         <note>\n            <p>If not specified or set to 0, only On-Demand Instances are provisioned for the\n            instance fleet. At least one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> should be greater than 0. For a master instance\n            fleet, only one of <code>TargetSpotCapacity</code> and\n               <code>TargetOnDemandCapacity</code> can be specified, and its value must be 1.</p>\n         </note>"
                     }
                 },
                 "InstanceTypeConfigs": {
@@ -3100,7 +3121,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The configuration that defines an instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>The configuration that defines an instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetConfigList": {
@@ -3142,7 +3163,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Configuration parameters for an instance fleet modification request.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Configuration parameters for an instance fleet modification request.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetProvisioningSpecifications": {
@@ -3157,12 +3178,12 @@
                 "OnDemandSpecification": {
                     "target": "com.amazonaws.emr#OnDemandProvisioningSpecification",
                     "traits": {
-                        "smithy.api#documentation": "<p> The launch specification for On-Demand Instances in the instance fleet, which\n         determines the allocation strategy. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in\n            Amazon EMR version 5.12.1 and later.</p>\n         </note>"
+                        "smithy.api#documentation": "<p> The launch specification for On-Demand Instances in the instance fleet, which\n         determines the allocation strategy. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions. On-Demand Instances allocation strategy is\n            available in Amazon EMR version 5.12.1 and later.</p>\n         </note>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The launch specification for Spot Instances in the fleet, which determines the defined\n         duration, provisioning timeout behavior, and allocation strategy.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions. On-Demand and Spot Instance allocation strategies are\n            available in Amazon EMR version 5.12.1 and later.</p>\n         </note>"
+                "smithy.api#documentation": "<p>The launch specification for Spot Instances in the fleet, which determines the defined\n         duration, provisioning timeout behavior, and allocation strategy.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions. On-Demand and Spot Instance allocation\n            strategies are available in Amazon EMR version 5.12.1 and later.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetState": {
@@ -3217,7 +3238,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Provides status change reason details for the instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Provides status change reason details for the instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetStateChangeReasonCode": {
@@ -3266,7 +3287,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The status of the instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>The status of the instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetTimeline": {
@@ -3292,7 +3313,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Provides historical timestamps for the instance fleet, including the time of creation,\n         the time it became ready to run jobs, and the time of termination.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Provides historical timestamps for the instance fleet, including the time of creation,\n         the time it became ready to run jobs, and the time of termination.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceFleetType": {
@@ -3344,7 +3365,7 @@
                 "BidPrice": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set the amount equal to the On-Demand price, or specify an amount in USD.</p>"
+                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum\n         price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set\n         the amount equal to the On-Demand price, or specify an amount in USD.</p>"
                     }
                 },
                 "InstanceType": {
@@ -3374,7 +3395,7 @@
                 "Configurations": {
                     "target": "com.amazonaws.emr#ConfigurationList",
                     "traits": {
-                        "smithy.api#documentation": "<note>\n            <p>Amazon EMR releases 4.x or later.</p>\n         </note>\n         <p>The list of configurations supplied for an Amazon EMR cluster instance group. You can specify a\n         separate configuration for each instance group (master, core, and task).</p>"
+                        "smithy.api#documentation": "<note>\n            <p>Amazon EMR releases 4.x or later.</p>\n         </note>\n         <p>The list of configurations supplied for an Amazon EMR cluster instance group.\n         You can specify a separate configuration for each instance group (master, core, and\n         task).</p>"
                     }
                 },
                 "ConfigurationsVersion": {
@@ -3404,7 +3425,7 @@
                 "EbsOptimized": {
                     "target": "com.amazonaws.emr#BooleanObject",
                     "traits": {
-                        "smithy.api#documentation": "<p>If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an\n         optimized configuration stack and provides additional, dedicated capacity for Amazon EBS\n         I/O.</p>"
+                        "smithy.api#documentation": "<p>If the instance group is EBS-optimized. An Amazon EBS-optimized instance uses an\n         optimized configuration stack and provides additional, dedicated capacity for Amazon EBS I/O.</p>"
                     }
                 },
                 "ShrinkPolicy": {
@@ -3416,7 +3437,7 @@
                 "AutoScalingPolicy": {
                     "target": "com.amazonaws.emr#AutoScalingPolicyDescription",
                     "traits": {
-                        "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n         Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically\n         adds and terminates EC2 instances in response to the value of a CloudWatch metric. See\n         PutAutoScalingPolicy.</p>"
+                        "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n            Amazon EMR cluster. The automatic scaling policy defines how an instance group\n         dynamically adds and terminates EC2 instances in response to the value of a CloudWatch\n         metric. See PutAutoScalingPolicy.</p>"
                     }
                 },
                 "CustomAmiId": {
@@ -3455,7 +3476,7 @@
                 "BidPrice": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set the amount equal to the On-Demand price, or specify an amount in USD.</p>"
+                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum\n         price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set\n         the amount equal to the On-Demand price, or specify an amount in USD.</p>"
                     }
                 },
                 "InstanceType": {
@@ -3487,7 +3508,7 @@
                 "AutoScalingPolicy": {
                     "target": "com.amazonaws.emr#AutoScalingPolicy",
                     "traits": {
-                        "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n         Amazon EMR cluster. The automatic scaling policy defines how an instance group dynamically\n         adds and terminates EC2 instances in response to the value of a CloudWatch metric. See\n            <a>PutAutoScalingPolicy</a>.</p>"
+                        "smithy.api#documentation": "<p>An automatic scaling policy for a core instance group or task instance group in an\n            Amazon EMR cluster. The automatic scaling policy defines how an instance group\n         dynamically adds and terminates EC2 instances in response to the value of a CloudWatch\n         metric. See <a>PutAutoScalingPolicy</a>.</p>"
                     }
                 },
                 "CustomAmiId": {
@@ -3539,7 +3560,7 @@
                 "BidPrice": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set the amount equal to the On-Demand price, or specify an amount in USD.</p>"
+                        "smithy.api#documentation": "<p>If specified, indicates that the instance group uses Spot Instances. This is the maximum\n         price you are willing to pay for Spot Instances. Specify <code>OnDemandPrice</code> to set\n         the amount equal to the On-Demand price, or specify an amount in USD.</p>"
                     }
                 },
                 "InstanceType": {
@@ -3566,7 +3587,7 @@
                 "State": {
                     "target": "com.amazonaws.emr#InstanceGroupState",
                     "traits": {
-                        "smithy.api#documentation": "<p>State of instance group. The following values are no longer supported: STARTING, TERMINATED, and\n         FAILED.</p>",
+                        "smithy.api#documentation": "<p>State of instance group. The following values are no longer supported: STARTING,\n         TERMINATED, and FAILED.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -3661,6 +3682,12 @@
                         "smithy.api#documentation": "<p>Policy for customizing shrink operations.</p>"
                     }
                 },
+                "ReconfigurationType": {
+                    "target": "com.amazonaws.emr#ReconfigurationType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Type of reconfiguration requested. Valid values are MERGE and OVERWRITE.</p>"
+                    }
+                },
                 "Configurations": {
                     "target": "com.amazonaws.emr#ConfigurationList",
                     "traits": {
@@ -4076,7 +4103,7 @@
                 "EbsConfiguration": {
                     "target": "com.amazonaws.emr#EbsConfiguration",
                     "traits": {
-                        "smithy.api#documentation": "<p>The configuration of Amazon Elastic Block Store (Amazon EBS) attached to each instance\n         as defined by <code>InstanceType</code>. </p>"
+                        "smithy.api#documentation": "<p>The configuration of Amazon Elastic Block Store (Amazon EBS) attached to each\n         instance as defined by <code>InstanceType</code>. </p>"
                     }
                 },
                 "Configurations": {
@@ -4093,7 +4120,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An instance type configuration for each instance type in an instance fleet, which\n         determines the EC2 instances Amazon EMR attempts to provision to fulfill On-Demand and Spot\n         target capacities. When you use an allocation strategy, you can include a maximum of 30 instance type configurations for a fleet. For more information about how to use an allocation strategy, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-fleet.html\">Configure Instance Fleets</a>. Without an allocation strategy, you may specify a maximum of five instance type configurations for a fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>An instance type configuration for each instance type in an instance fleet, which\n         determines the EC2 instances Amazon EMR attempts to provision to fulfill On-Demand\n         and Spot target capacities. When you use an allocation strategy, you can include a maximum\n         of 30 instance type configurations for a fleet. For more information about how to use an\n         allocation strategy, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-instance-fleet.html\">Configure Instance\n            Fleets</a>. Without an allocation strategy, you may specify a maximum of five\n         instance type configurations for a fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceTypeConfigList": {
@@ -4138,7 +4165,7 @@
                 "EbsBlockDevices": {
                     "target": "com.amazonaws.emr#EbsBlockDeviceList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The configuration of Amazon Elastic Block Store (Amazon EBS) attached to each instance\n         as defined by <code>InstanceType</code>.</p>"
+                        "smithy.api#documentation": "<p>The configuration of Amazon Elastic Block Store (Amazon EBS) attached to each\n         instance as defined by <code>InstanceType</code>.</p>"
                     }
                 },
                 "EbsOptimized": {
@@ -4155,7 +4182,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The configuration specification for each instance type in an instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>The configuration specification for each instance type in an instance fleet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#InstanceTypeSpecificationList": {
@@ -4245,13 +4272,13 @@
                 "LogEncryptionKmsKeyId": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The KMS key used for encrypting log files. This attribute is\n         only available with EMR version 5.30.0 and later, excluding EMR 6.0.0.</p>"
+                        "smithy.api#documentation": "<p>The KMS key used for encrypting log files. This attribute is only\n         available with EMR version 5.30.0 and later, excluding EMR 6.0.0.</p>"
                     }
                 },
                 "AmiVersion": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and\n         later, <code>ReleaseLabel</code> is used. To specify a custom AMI, use\n            <code>CustomAmiID</code>.</p>"
+                        "smithy.api#documentation": "<p>Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR\n         releases 4.0 and later, <code>ReleaseLabel</code> is used. To specify a custom AMI, use\n            <code>CustomAmiID</code>.</p>"
                     }
                 },
                 "ExecutionStatusDetail": {
@@ -4289,7 +4316,7 @@
                 "VisibleToAllUsers": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated\n         with the cluster. When <code>true</code>, IAM principals in the\n         Amazon Web Services account can perform EMR cluster actions that their IAM policies allow. When <code>false</code>, only the IAM principal that created the cluster and the Amazon Web Services account root user can perform EMR actions, regardless of IAM permissions policies attached to other IAM principals.</p>\n         <p>The default value is <code>true</code> if a value is not provided when creating a\n         cluster using the EMR API <a>RunJobFlow</a> command, the CLI\n         <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command, or the Amazon Web Services Management Console.</p>"
+                        "smithy.api#documentation": "<p>Indicates whether the cluster is visible to IAM principals in the Amazon Web Services account associated with the cluster. When <code>true</code>, IAM principals\n         in the Amazon Web Services account can perform EMR cluster actions that their IAM policies\n         allow. When <code>false</code>, only the IAM principal that created the cluster and the\n            Amazon Web Services account root user can perform EMR actions, regardless of IAM\n         permissions policies attached to other IAM principals.</p>\n         <p>The default value is <code>true</code> if a value is not provided when creating a\n         cluster using the EMR API <a>RunJobFlow</a> command, the CLI\n         <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command, or the Amazon Web Services Management Console.</p>"
                     }
                 },
                 "JobFlowRole": {
@@ -4301,7 +4328,7 @@
                 "ServiceRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IAM role that is assumed by the Amazon EMR service to access Amazon Web Services resources on your\n         behalf.</p>"
+                        "smithy.api#documentation": "<p>The IAM role that is assumed by the Amazon EMR service to access Amazon Web Services resources on your behalf.</p>"
                     }
                 },
                 "AutoScalingRole": {
@@ -4313,7 +4340,7 @@
                 "ScaleDownBehavior": {
                     "target": "com.amazonaws.emr#ScaleDownBehavior",
                     "traits": {
-                        "smithy.api#documentation": "<p>The way that individual Amazon EC2 instances terminate when an automatic scale-in\n         activity occurs or an instance group is resized. <code>TERMINATE_AT_INSTANCE_HOUR</code>\n         indicates that Amazon EMR terminates nodes at the instance-hour boundary, regardless of\n         when the request to terminate the instance was submitted. This option is only available\n         with Amazon EMR 5.1.0 and later and is the default for clusters created using that version.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> indicates that Amazon EMR adds nodes to a deny\n         list and drains tasks from nodes before terminating the Amazon EC2 instances, regardless of\n         the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes\n         first and blocks instance termination if it could lead to HDFS corruption.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> available only in Amazon EMR version 4.1.0 and\n         later, and is the default for versions of Amazon EMR earlier than 5.1.0.</p>"
+                        "smithy.api#documentation": "<p>The way that individual Amazon EC2 instances terminate when an automatic\n         scale-in activity occurs or an instance group is resized.\n            <code>TERMINATE_AT_INSTANCE_HOUR</code> indicates that Amazon EMR terminates\n         nodes at the instance-hour boundary, regardless of when the request to terminate the\n         instance was submitted. This option is only available with Amazon EMR 5.1.0 and\n         later and is the default for clusters created using that version.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> indicates that Amazon EMR adds nodes\n         to a deny list and drains tasks from nodes before terminating the Amazon EC2\n         instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to\n         HDFS corruption. <code>TERMINATE_AT_TASK_COMPLETION</code> available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.</p>"
                     }
                 }
             },
@@ -4449,7 +4476,7 @@
                 "InstanceFleets": {
                     "target": "com.amazonaws.emr#InstanceFleetConfigList",
                     "traits": {
-                        "smithy.api#documentation": "<note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>\n         <p>Describes the EC2 instances and instance configurations for clusters that use the\n         instance fleet configuration.</p>"
+                        "smithy.api#documentation": "<note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>\n         <p>Describes the EC2 instances and instance configurations for clusters that use the\n         instance fleet configuration.</p>"
                     }
                 },
                 "Ec2KeyName": {
@@ -4467,49 +4494,49 @@
                 "KeepJobFlowAliveWhenNoSteps": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the cluster should remain available after completing all steps. Defaults to <code>true</code>. For more information about configuring cluster termination, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control Cluster Termination</a> in the <i>EMR Management Guide</i>.</p>"
+                        "smithy.api#documentation": "<p>Specifies whether the cluster should remain available after completing all steps.\n         Defaults to <code>true</code>. For more information about configuring cluster termination,\n         see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control Cluster Termination</a> in the <i>EMR Management\n         Guide</i>.</p>"
                     }
                 },
                 "TerminationProtected": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances from being\n         terminated by API call, user intervention, or in the event of a job-flow error.</p>"
+                        "smithy.api#documentation": "<p>Specifies whether to lock the cluster to prevent the Amazon EC2 instances from\n         being terminated by API call, user intervention, or in the event of a job-flow\n         error.</p>"
                     }
                 },
                 "HadoopVersion": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop version for the\n         cluster. Valid inputs are \"0.18\" (no longer maintained), \"0.20\" (no longer maintained),\n         \"0.20.205\" (no longer maintained), \"1.0.3\", \"2.2.0\", or \"2.4.0\". If you do not set this\n         value, the default of 0.18 is used, unless the <code>AmiVersion</code> parameter is set in\n         the RunJobFlow call, in which case the default version of Hadoop for that AMI version is\n         used.</p>"
+                        "smithy.api#documentation": "<p>Applies only to Amazon EMR release versions earlier than 4.0. The Hadoop version\n         for the cluster. Valid inputs are \"0.18\" (no longer maintained), \"0.20\" (no longer\n         maintained), \"0.20.205\" (no longer maintained), \"1.0.3\", \"2.2.0\", or \"2.4.0\". If you do not\n         set this value, the default of 0.18 is used, unless the <code>AmiVersion</code> parameter\n         is set in the RunJobFlow call, in which case the default version of Hadoop for that AMI\n         version is used.</p>"
                     }
                 },
                 "Ec2SubnetId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies to clusters that use the uniform instance group configuration. To launch the\n         cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the identifier\n         of the Amazon VPC subnet where you want the cluster to launch. If you do not specify this\n         value and your account supports EC2-Classic, the cluster launches in EC2-Classic.</p>"
+                        "smithy.api#documentation": "<p>Applies to clusters that use the uniform instance group configuration. To launch the\n         cluster in Amazon Virtual Private Cloud (Amazon VPC), set this parameter to the\n         identifier of the Amazon VPC subnet where you want the cluster to launch. If you do\n         not specify this value and your account supports EC2-Classic, the cluster launches in\n         EC2-Classic.</p>"
                     }
                 },
                 "Ec2SubnetIds": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256List",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet\n         IDs are specified, Amazon EMR evaluates them and launches instances in the optimal\n         subnet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>Applies to clusters that use the instance fleet configuration. When multiple EC2 subnet\n         IDs are specified, Amazon EMR evaluates them and launches instances in the optimal\n         subnet.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
                     }
                 },
                 "EmrManagedMasterSecurityGroup": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the master node. If you specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify <code>EmrManagedSlaveSecurityGroup</code>.</p>"
+                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the master node. If you\n         specify <code>EmrManagedMasterSecurityGroup</code>, you must also specify\n            <code>EmrManagedSlaveSecurityGroup</code>.</p>"
                     }
                 },
                 "EmrManagedSlaveSecurityGroup": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the core and task nodes. If you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify <code>EmrManagedMasterSecurityGroup</code>.</p>"
+                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the core and task nodes. If\n         you specify <code>EmrManagedSlaveSecurityGroup</code>, you must also specify\n            <code>EmrManagedMasterSecurityGroup</code>.</p>"
                     }
                 },
                 "ServiceAccessSecurityGroup": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the Amazon EMR service to access\n         clusters in VPC private subnets.</p>"
+                        "smithy.api#documentation": "<p>The identifier of the Amazon EC2 security group for the Amazon EMR\n         service to access clusters in VPC private subnets.</p>"
                     }
                 },
                 "AdditionalMasterSecurityGroups": {
@@ -4521,12 +4548,12 @@
                 "AdditionalSlaveSecurityGroups": {
                     "target": "com.amazonaws.emr#SecurityGroupsList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of additional Amazon EC2 security group IDs for the core and task nodes.</p>"
+                        "smithy.api#documentation": "<p>A list of additional Amazon EC2 security group IDs for the core and task\n         nodes.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A description of the Amazon EC2 instance on which the cluster (job flow) runs. A valid\n         JobFlowInstancesConfig must contain either InstanceGroups or InstanceFleets. They cannot be\n         used together. You may also have MasterInstanceType, SlaveInstanceType, and InstanceCount\n         (all three must be present), but we don't recommend this configuration.</p>"
+                "smithy.api#documentation": "<p>A description of the Amazon EC2 instance on which the cluster (job flow) runs. A\n         valid JobFlowInstancesConfig must contain either InstanceGroups or InstanceFleets. They\n         cannot be used together. You may also have MasterInstanceType, SlaveInstanceType, and\n         InstanceCount (all three must be present), but we don't recommend this\n         configuration.</p>"
             }
         },
         "com.amazonaws.emr#JobFlowInstancesDetail": {
@@ -4561,7 +4588,7 @@
                 "InstanceCount": {
                     "target": "com.amazonaws.emr#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The number of Amazon EC2 instances in the cluster. If the value is 1, the same instance\n         serves as both the master and core and task node. If the value is greater than 1, one\n         instance is the master node and all others are core and task nodes.</p>",
+                        "smithy.api#documentation": "<p>The number of Amazon EC2 instances in the cluster. If the value is 1, the same\n         instance serves as both the master and core and task node. If the value is greater than 1,\n         one instance is the master node and all others are core and task nodes.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -4574,13 +4601,13 @@
                 "NormalizedInstanceHours": {
                     "target": "com.amazonaws.emr#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>An approximation of the cost of the cluster, represented in m1.small/hours. This value\n         is increased one time for every hour that an m1.small instance runs. Larger instances are\n         weighted more heavily, so an Amazon EC2 instance that is roughly four times more expensive\n         would result in the normalized instance hours being increased incrementally four times.\n         This result is only an approximation and does not reflect the actual billing rate.</p>"
+                        "smithy.api#documentation": "<p>An approximation of the cost of the cluster, represented in m1.small/hours. This value\n         is increased one time for every hour that an m1.small instance runs. Larger instances are\n         weighted more heavily, so an Amazon EC2 instance that is roughly four times more\n         expensive would result in the normalized instance hours being increased incrementally four\n         times. This result is only an approximation and does not reflect the actual billing\n         rate.</p>"
                     }
                 },
                 "Ec2KeyName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of an Amazon EC2 key pair that can be used to connect to the master node using\n         SSH.</p>"
+                        "smithy.api#documentation": "<p>The name of an Amazon EC2 key pair that can be used to connect to the master\n         node using SSH.</p>"
                     }
                 },
                 "Ec2SubnetId": {
@@ -4604,7 +4631,7 @@
                 "TerminationProtected": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the Amazon EC2 instances in the cluster are protected from termination\n         by API calls, user intervention, or in the event of a job-flow error.</p>"
+                        "smithy.api#documentation": "<p>Specifies whether the Amazon EC2 instances in the cluster are protected from\n         termination by API calls, user intervention, or in the event of a job-flow error.</p>"
                     }
                 },
                 "HadoopVersion": {
@@ -4615,7 +4642,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Specify the type of Amazon EC2 instances that the cluster (job flow) runs on.</p>"
+                "smithy.api#documentation": "<p>Specify the type of Amazon EC2 instances that the cluster (job flow) runs\n         on.</p>"
             }
         },
         "com.amazonaws.emr#KerberosAttributes": {
@@ -4767,7 +4794,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Provides the status of all clusters visible to this Amazon Web Services account. Allows you to filter\n         the list of clusters based on certain criteria; for example, filtering by cluster creation\n         date and time or by status. This call returns a maximum of 50 clusters in unsorted order per call, but\n         returns a marker to track the paging of the cluster list across multiple ListClusters\n         calls.</p>",
+                "smithy.api#documentation": "<p>Provides the status of all clusters visible to this Amazon Web Services account. Allows\n         you to filter the list of clusters based on certain criteria; for example, filtering by\n         cluster creation date and time or by status. This call returns a maximum of 50 clusters in\n         unsorted order per call, but returns a marker to track the paging of the cluster list\n         across multiple ListClusters calls.</p>",
                 "smithy.api#paginated": {
                     "inputToken": "Marker",
                     "outputToken": "Marker",
@@ -4793,7 +4820,7 @@
                 "ClusterStates": {
                     "target": "com.amazonaws.emr#ClusterStateList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The cluster state filters to apply when listing clusters. Clusters that change state while this action runs may be not be returned as expected in the list of clusters.</p>"
+                        "smithy.api#documentation": "<p>The cluster state filters to apply when listing clusters. Clusters that change state\n         while this action runs may be not be returned as expected in the list of clusters.</p>"
                     }
                 },
                 "Marker": {
@@ -4844,7 +4871,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists all available details about the instance fleets in a cluster.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>",
+                "smithy.api#documentation": "<p>Lists all available details about the instance fleets in a cluster.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>",
                 "smithy.api#paginated": {
                     "inputToken": "Marker",
                     "outputToken": "Marker",
@@ -5157,19 +5184,19 @@
                 "Filters": {
                     "target": "com.amazonaws.emr#ReleaseLabelFilter",
                     "traits": {
-                        "smithy.api#documentation": "<p>Filters the results of the request. <code>Prefix</code> specifies the prefix of release labels to return. <code>Application</code> specifies the application (with/without version) of release labels to return.</p>"
+                        "smithy.api#documentation": "<p>Filters the results of the request. <code>Prefix</code> specifies the prefix of release\n         labels to return. <code>Application</code> specifies the application (with/without version)\n         of release labels to return.</p>"
                     }
                 },
                 "NextToken": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the next page of results. If <code>NextToken</code> is not specified, which is usually the case for the first request of ListReleaseLabels, the first page of results are determined by other filtering parameters or by the latest version. The <code>ListReleaseLabels</code> request fails if the identity (Amazon Web Services account ID) and all filtering parameters are different from the original request, or if the <code>NextToken</code> is expired or tampered with.</p>"
+                        "smithy.api#documentation": "<p>Specifies the next page of results. If <code>NextToken</code> is not specified, which is\n         usually the case for the first request of ListReleaseLabels, the first page of results are\n         determined by other filtering parameters or by the latest version. The\n            <code>ListReleaseLabels</code> request fails if the identity (Amazon Web Services account\n         ID) and all filtering parameters are different from the original request, or if the\n            <code>NextToken</code> is expired or tampered with.</p>"
                     }
                 },
                 "MaxResults": {
                     "target": "com.amazonaws.emr#MaxResultsNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>Defines the maximum number of release labels to return in a single response. The default is <code>100</code>.</p>"
+                        "smithy.api#documentation": "<p>Defines the maximum number of release labels to return in a single response. The default\n         is <code>100</code>.</p>"
                     }
                 }
             }
@@ -5186,7 +5213,7 @@
                 "NextToken": {
                     "target": "com.amazonaws.emr#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>Used to paginate the next page of results if specified in the next <code>ListReleaseLabels</code> request.</p>"
+                        "smithy.api#documentation": "<p>Used to paginate the next page of results if specified in the next\n            <code>ListReleaseLabels</code> request.</p>"
                     }
                 }
             }
@@ -5261,7 +5288,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Provides a list of steps for the cluster in reverse order unless you specify\n            <code>stepIds</code> with the request or filter by <code>StepStates</code>. You can\n         specify a maximum of 10 <code>stepIDs</code>. The CLI automatically paginates results to return a list greater than 50 steps. To return more than 50 steps using the CLI, specify a <code>Marker</code>, which is a pagination token that indicates the next set of steps to retrieve.</p>",
+                "smithy.api#documentation": "<p>Provides a list of steps for the cluster in reverse order unless you specify\n            <code>stepIds</code> with the request or filter by <code>StepStates</code>. You can\n         specify a maximum of 10 <code>stepIDs</code>. The CLI automatically\n         paginates results to return a list greater than 50 steps. To return more than 50 steps\n         using the CLI, specify a <code>Marker</code>, which is a pagination token\n         that indicates the next set of steps to retrieve.</p>",
                 "smithy.api#paginated": {
                     "inputToken": "Marker",
                     "outputToken": "Marker",
@@ -5294,7 +5321,7 @@
                 "Marker": {
                     "target": "com.amazonaws.emr#Marker",
                     "traits": {
-                        "smithy.api#documentation": "<p>The maximum number of steps that a single <code>ListSteps</code> action returns is 50. To return a longer list of steps, use multiple <code>ListSteps</code> actions along with the <code>Marker</code> parameter, which is a pagination token that indicates the next set of results to retrieve.</p>"
+                        "smithy.api#documentation": "<p>The maximum number of steps that a single <code>ListSteps</code> action returns is 50.\n         To return a longer list of steps, use multiple <code>ListSteps</code> actions along with\n         the <code>Marker</code> parameter, which is a pagination token that indicates the next set\n         of results to retrieve.</p>"
                     }
                 }
             },
@@ -5314,7 +5341,7 @@
                 "Marker": {
                     "target": "com.amazonaws.emr#Marker",
                     "traits": {
-                        "smithy.api#documentation": "<p>The maximum number of steps that a single <code>ListSteps</code> action returns is 50. To return a longer list of steps, use multiple <code>ListSteps</code> actions along with the <code>Marker</code> parameter, which is a pagination token that indicates the next set of results to retrieve.</p>"
+                        "smithy.api#documentation": "<p>The maximum number of steps that a single <code>ListSteps</code> action returns is 50.\n         To return a longer list of steps, use multiple <code>ListSteps</code> actions along with\n         the <code>Marker</code> parameter, which is a pagination token that indicates the next set\n         of results to retrieve.</p>"
                     }
                 }
             },
@@ -5339,7 +5366,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns a list of all user or group session mappings for the Amazon EMR Studio specified by\n            <code>StudioId</code>.</p>",
+                "smithy.api#documentation": "<p>Returns a list of all user or group session mappings for the Amazon EMR Studio\n         specified by <code>StudioId</code>.</p>",
                 "smithy.api#paginated": {
                     "inputToken": "Marker",
                     "outputToken": "Marker",
@@ -5376,7 +5403,7 @@
                 "SessionMappings": {
                     "target": "com.amazonaws.emr#SessionMappingSummaryList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of session mapping summary objects. Each object includes session mapping details\n         such as creation time, identity type (user or group), and Amazon EMR Studio ID.</p>"
+                        "smithy.api#documentation": "<p>A list of session mapping summary objects. Each object includes session mapping details\n         such as creation time, identity type (user or group), and Amazon EMR Studio\n         ID.</p>"
                     }
                 },
                 "Marker": {
@@ -5404,7 +5431,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns a list of all Amazon EMR Studios associated with the Amazon Web Services account. The list\n         includes details such as ID, Studio Access URL, and creation time for each Studio.</p>",
+                "smithy.api#documentation": "<p>Returns a list of all Amazon EMR Studios associated with the Amazon Web Services account. The list includes details such as ID, Studio Access URL, and\n         creation time for each Studio.</p>",
                 "smithy.api#paginated": {
                     "inputToken": "Marker",
                     "outputToken": "Marker",
@@ -5454,7 +5481,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p> Managed scaling policy for an Amazon EMR cluster. The policy specifies the limits for\n         resources that can be added or terminated from a cluster. The policy only applies to the\n         core and task nodes. The master node cannot be scaled after initial configuration. </p>"
+                "smithy.api#documentation": "<p> Managed scaling policy for an Amazon EMR cluster. The policy specifies the\n         limits for resources that can be added or terminated from a cluster. The policy only\n         applies to the core and task nodes. The master node cannot be scaled after initial\n         configuration. </p>"
             }
         },
         "com.amazonaws.emr#Marker": {
@@ -5502,7 +5529,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A CloudWatch dimension, which is specified using a <code>Key</code> (known as a\n            <code>Name</code> in CloudWatch), <code>Value</code> pair. By default, Amazon EMR uses\n         one dimension whose <code>Key</code> is <code>JobFlowID</code> and <code>Value</code> is a\n         variable representing the cluster ID, which is <code>${emr.clusterId}</code>. This enables\n         the rule to bootstrap when the cluster ID becomes available.</p>"
+                "smithy.api#documentation": "<p>A CloudWatch dimension, which is specified using a <code>Key</code> (known as a\n            <code>Name</code> in CloudWatch), <code>Value</code> pair. By default, Amazon EMR uses one dimension whose <code>Key</code> is <code>JobFlowID</code> and\n            <code>Value</code> is a variable representing the cluster ID, which is\n            <code>${emr.clusterId}</code>. This enables the rule to bootstrap when the cluster ID\n         becomes available.</p>"
             }
         },
         "com.amazonaws.emr#MetricDimensionList": {
@@ -5544,7 +5571,7 @@
                 "StepConcurrencyLevel": {
                     "target": "com.amazonaws.emr#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The number of steps that can be executed concurrently. You can specify a minimum of 1 step and a maximum of 256 steps. We recommend that you do not change this parameter while steps are running or the <code>ActionOnFailure</code> setting may not behave as expected. For more information see <a>Step$ActionOnFailure</a>.</p>"
+                        "smithy.api#documentation": "<p>The number of steps that can be executed concurrently. You can specify a minimum of 1\n         step and a maximum of 256 steps. We recommend that you do not change this parameter while\n         steps are running or the <code>ActionOnFailure</code> setting may not behave as expected.\n         For more information see <a>Step$ActionOnFailure</a>.</p>"
                     }
                 }
             }
@@ -5565,6 +5592,9 @@
             "input": {
                 "target": "com.amazonaws.emr#ModifyInstanceFleetInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerException"
@@ -5574,7 +5604,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Modifies the target On-Demand and target Spot capacities for the instance fleet with the\n         specified InstanceFleetID within the cluster specified using ClusterID. The call either\n         succeeds or fails atomically.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Modifies the target On-Demand and target Spot capacities for the instance fleet with the\n         specified InstanceFleetID within the cluster specified using ClusterID. The call either\n         succeeds or fails atomically.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#ModifyInstanceFleetInput": {
@@ -5601,6 +5631,9 @@
             "input": {
                 "target": "com.amazonaws.emr#ModifyInstanceGroupsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
@@ -5819,7 +5852,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Details for a notebook execution. The details include information such as the unique ID and status of the notebook execution.</p>"
+                "smithy.api#documentation": "<p>Details for a notebook execution. The details include information such as the unique ID\n         and status of the notebook execution.</p>"
             }
         },
         "com.amazonaws.emr#NotebookExecutionSummaryList": {
@@ -5828,19 +5861,39 @@
                 "target": "com.amazonaws.emr#NotebookExecutionSummary"
             }
         },
+        "com.amazonaws.emr#OSRelease": {
+            "type": "structure",
+            "members": {
+                "Label": {
+                    "target": "com.amazonaws.emr#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Linux release specified for a cluster in the RunJobFlow request. The format is as shown in <a href=\"https://docs.aws.amazon.com/AL2/latest/relnotes/relnotes-20220218.html\">\n               <i>Amazon Linux 2 Release Notes</i>\n            </a>. For example, 2.0.20220218.1.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The Amazon Linux release specified for a cluster in the RunJobFlow request.</p>"
+            }
+        },
+        "com.amazonaws.emr#OSReleaseList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.emr#OSRelease"
+            }
+        },
         "com.amazonaws.emr#OnDemandCapacityReservationOptions": {
             "type": "structure",
             "members": {
                 "UsageStrategy": {
                     "target": "com.amazonaws.emr#OnDemandCapacityReservationUsageStrategy",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates whether to use unused Capacity Reservations for fulfilling On-Demand capacity.</p>\n         <p>If you specify <code>use-capacity-reservations-first</code>, the fleet uses unused Capacity Reservations to fulfill On-Demand capacity up to the target On-Demand capacity. If multiple instance pools have unused Capacity Reservations, the On-Demand allocation strategy (<code>lowest-price</code>) is applied. If the number of unused Capacity Reservations is less than the On-Demand target capacity, the remaining On-Demand target capacity is launched according to the On-Demand allocation strategy (<code>lowest-price</code>).</p>\n         <p>If you do not specify a value, the fleet fulfills the On-Demand capacity according to the chosen On-Demand allocation strategy.</p>"
+                        "smithy.api#documentation": "<p>Indicates whether to use unused Capacity Reservations for fulfilling On-Demand\n         capacity.</p>\n         <p>If you specify <code>use-capacity-reservations-first</code>, the fleet uses unused\n         Capacity Reservations to fulfill On-Demand capacity up to the target On-Demand capacity. If\n         multiple instance pools have unused Capacity Reservations, the On-Demand allocation\n         strategy (<code>lowest-price</code>) is applied. If the number of unused Capacity\n         Reservations is less than the On-Demand target capacity, the remaining On-Demand target\n         capacity is launched according to the On-Demand allocation strategy\n            (<code>lowest-price</code>).</p>\n         <p>If you do not specify a value, the fleet fulfills the On-Demand capacity according to\n         the chosen On-Demand allocation strategy.</p>"
                     }
                 },
                 "CapacityReservationPreference": {
                     "target": "com.amazonaws.emr#OnDemandCapacityReservationPreference",
                     "traits": {
-                        "smithy.api#documentation": "<p>Indicates the instance's Capacity Reservation preferences. Possible preferences include:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>open</code> - The instance can run in any open Capacity Reservation that has matching attributes (instance type, platform, Availability Zone).</p>\n            </li>\n            <li>\n               <p>\n                  <code>none</code> - The instance avoids running in a Capacity Reservation even if one is available. The instance runs as an On-Demand Instance.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>Indicates the instance's Capacity Reservation preferences. Possible preferences\n         include:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>open</code> - The instance can run in any open Capacity Reservation that has\n               matching attributes (instance type, platform, Availability Zone).</p>\n            </li>\n            <li>\n               <p>\n                  <code>none</code> - The instance avoids running in a Capacity Reservation even if\n               one is available. The instance runs as an On-Demand Instance.</p>\n            </li>\n         </ul>"
                     }
                 },
                 "CapacityReservationResourceGroupArn": {
@@ -5851,7 +5904,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Describes the strategy for using unused Capacity Reservations for fulfilling On-Demand capacity.</p>"
+                "smithy.api#documentation": "<p>Describes the strategy for using unused Capacity Reservations for fulfilling On-Demand\n         capacity.</p>"
             }
         },
         "com.amazonaws.emr#OnDemandCapacityReservationPreference": {
@@ -5897,19 +5950,19 @@
                 "AllocationStrategy": {
                     "target": "com.amazonaws.emr#OnDemandProvisioningAllocationStrategy",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the strategy to use in launching On-Demand instance fleets. Currently, the only option is <code>lowest-price</code> (the default), which launches the lowest price first.</p>",
+                        "smithy.api#documentation": "<p>Specifies the strategy to use in launching On-Demand instance fleets. Currently, the\n         only option is <code>lowest-price</code> (the default), which launches the lowest price\n         first.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "CapacityReservationOptions": {
                     "target": "com.amazonaws.emr#OnDemandCapacityReservationOptions",
                     "traits": {
-                        "smithy.api#documentation": "<p>The launch specification for On-Demand instances in the instance fleet, which determines the allocation strategy.</p>"
+                        "smithy.api#documentation": "<p>The launch specification for On-Demand instances in the instance fleet, which determines\n         the allocation strategy.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p> The launch specification for On-Demand Instances in the instance fleet, which\n         determines the allocation strategy. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions. On-Demand Instances allocation strategy is available in\n            Amazon EMR version 5.12.1 and later.</p>\n         </note>"
+                "smithy.api#documentation": "<p> The launch specification for On-Demand Instances in the instance fleet, which\n         determines the allocation strategy. </p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions. On-Demand Instances allocation strategy is\n            available in Amazon EMR version 5.12.1 and later.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#OptionalArnType": {
@@ -5934,12 +5987,12 @@
                 "PlacementStrategy": {
                     "target": "com.amazonaws.emr#PlacementGroupStrategy",
                     "traits": {
-                        "smithy.api#documentation": "<p>EC2 Placement Group strategy associated with instance role.</p>\n         <p>Starting with Amazon EMR version 5.23.0, the only supported placement strategy is\n            <code>SPREAD</code> for the <code>MASTER</code> instance role.</p>"
+                        "smithy.api#documentation": "<p>EC2 Placement Group strategy associated with instance role.</p>\n         <p>Starting with Amazon EMR version 5.23.0, the only supported placement strategy\n         is <code>SPREAD</code> for the <code>MASTER</code> instance role.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Placement group configuration for an Amazon EMR cluster. The configuration specifies the\n         placement strategy that can be applied to instance roles during cluster creation.</p>\n         <p>To use this configuration, consider attaching managed policy\n         AmazonElasticMapReducePlacementGroupPolicy to the EMR role.</p>"
+                "smithy.api#documentation": "<p>Placement group configuration for an Amazon EMR cluster. The configuration\n         specifies the placement strategy that can be applied to instance roles during cluster\n         creation.</p>\n         <p>To use this configuration, consider attaching managed policy\n         AmazonElasticMapReducePlacementGroupPolicy to the EMR role.</p>"
             }
         },
         "com.amazonaws.emr#PlacementGroupConfigList": {
@@ -5977,13 +6030,13 @@
                 "AvailabilityZone": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon EC2 Availability Zone for the cluster. <code>AvailabilityZone</code> is used\n         for uniform instance groups, while <code>AvailabilityZones</code> (plural) is used for\n         instance fleets.</p>"
+                        "smithy.api#documentation": "<p>The Amazon EC2 Availability Zone for the cluster. <code>AvailabilityZone</code>\n         is used for uniform instance groups, while <code>AvailabilityZones</code> (plural) is used\n         for instance fleets.</p>"
                     }
                 },
                 "AvailabilityZones": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256List",
                     "traits": {
-                        "smithy.api#documentation": "<p>When multiple Availability Zones are specified, Amazon EMR evaluates them and launches\n         instances in the optimal Availability Zone. <code>AvailabilityZones</code> is used for\n         instance fleets, while <code>AvailabilityZone</code> (singular) is used for uniform\n         instance groups.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>When multiple Availability Zones are specified, Amazon EMR evaluates them and\n         launches instances in the optimal Availability Zone. <code>AvailabilityZones</code> is used\n         for instance fleets, while <code>AvailabilityZone</code> (singular) is used for uniform\n         instance groups.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions.</p>\n         </note>"
                     }
                 }
             },
@@ -6037,7 +6090,7 @@
                 "target": "com.amazonaws.emr#PutAutoScalingPolicyOutput"
             },
             "traits": {
-                "smithy.api#documentation": "<p>Creates or updates an automatic scaling policy for a core instance group or task\n         instance group in an Amazon EMR cluster. The automatic scaling policy defines how an\n         instance group dynamically adds and terminates EC2 instances in response to the value of a\n         CloudWatch metric.</p>"
+                "smithy.api#documentation": "<p>Creates or updates an automatic scaling policy for a core instance group or task\n         instance group in an Amazon EMR cluster. The automatic scaling policy defines how\n         an instance group dynamically adds and terminates EC2 instances in response to the value of\n         a CloudWatch metric.</p>"
             }
         },
         "com.amazonaws.emr#PutAutoScalingPolicyInput": {
@@ -6104,7 +6157,7 @@
                 "target": "com.amazonaws.emr#PutAutoTerminationPolicyOutput"
             },
             "traits": {
-                "smithy.api#documentation": "<note>\n            <p>Auto-termination is supported in Amazon EMR versions 5.30.0 and 6.1.0 and later. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html\">Using an auto-termination policy</a>.</p>\n         </note>\n         <p>Creates or updates an auto-termination policy for an Amazon EMR cluster. An auto-termination policy defines the amount of idle time in seconds after which a cluster automatically terminates. For alternative cluster termination options, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control cluster termination</a>.</p>"
+                "smithy.api#documentation": "<note>\n            <p>Auto-termination is supported in Amazon EMR versions 5.30.0 and 6.1.0 and\n            later. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-auto-termination-policy.html\">Using an\n               auto-termination policy</a>.</p>\n         </note>\n         <p>Creates or updates an auto-termination policy for an Amazon EMR cluster. An\n         auto-termination policy defines the amount of idle time in seconds after which a cluster\n         automatically terminates. For alternative cluster termination options, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html\">Control\n            cluster termination</a>.</p>"
             }
         },
         "com.amazonaws.emr#PutAutoTerminationPolicyInput": {
@@ -6113,7 +6166,7 @@
                 "ClusterId": {
                     "target": "com.amazonaws.emr#ClusterId",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster to which the auto-termination policy will be attached.</p>",
+                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster to which the auto-termination policy\n         will be attached.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -6146,7 +6199,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Creates or updates an Amazon EMR block public access configuration for your Amazon Web Services account\n         in the current Region. For more information see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html\">Configure Block\n            Public Access for Amazon EMR</a> in the <i>Amazon EMR Management\n            Guide</i>.</p>"
+                "smithy.api#documentation": "<p>Creates or updates an Amazon EMR block public access configuration for your\n            Amazon Web Services account in the current Region. For more information see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/configure-block-public-access.html\">Configure Block\n            Public Access for Amazon EMR</a> in the <i>Amazon EMR\n            Management Guide</i>.</p>"
             }
         },
         "com.amazonaws.emr#PutBlockPublicAccessConfigurationInput": {
@@ -6155,7 +6208,7 @@
                 "BlockPublicAccessConfiguration": {
                     "target": "com.amazonaws.emr#BlockPublicAccessConfiguration",
                     "traits": {
-                        "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. The configuration applies to all\n         clusters created in your account for the current Region. The configuration specifies\n         whether block public access is enabled. If block public access is enabled, security groups\n         associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or\n         ::/0 on a port, unless the port is specified as an exception using\n            <code>PermittedPublicSecurityGroupRuleRanges</code> in the\n            <code>BlockPublicAccessConfiguration</code>. By default, Port 22 (SSH) is an exception,\n         and public access is allowed on this port. You can change this by updating\n            <code>BlockPublicSecurityGroupRules</code> to remove the exception.</p>\n         <note>\n            <p>For accounts that created clusters in a Region before November 25, 2019, block public\n            access is disabled by default in that Region. To use this feature, you must manually\n            enable and configure it. For accounts that did not create an EMR cluster in a Region\n            before this date, block public access is enabled by default in that Region.</p>\n         </note>",
+                        "smithy.api#documentation": "<p>A configuration for Amazon EMR block public access. The configuration applies to\n         all clusters created in your account for the current Region. The configuration specifies\n         whether block public access is enabled. If block public access is enabled, security groups\n         associated with the cluster cannot have rules that allow inbound traffic from 0.0.0.0/0 or\n         ::/0 on a port, unless the port is specified as an exception using\n            <code>PermittedPublicSecurityGroupRuleRanges</code> in the\n            <code>BlockPublicAccessConfiguration</code>. By default, Port 22 (SSH) is an exception,\n         and public access is allowed on this port. You can change this by updating\n            <code>BlockPublicSecurityGroupRules</code> to remove the exception.</p>\n         <note>\n            <p>For accounts that created clusters in a Region before November 25, 2019, block public\n            access is disabled by default in that Region. To use this feature, you must manually\n            enable and configure it. For accounts that did not create an EMR cluster in a Region\n            before this date, block public access is enabled by default in that Region.</p>\n         </note>",
                         "smithy.api#required": {}
                     }
                 }
@@ -6174,7 +6227,7 @@
                 "target": "com.amazonaws.emr#PutManagedScalingPolicyOutput"
             },
             "traits": {
-                "smithy.api#documentation": "<p>Creates or updates a managed scaling policy for an Amazon EMR cluster. The managed\n         scaling policy defines the limits for resources, such as EC2 instances that can be added or\n         terminated from a cluster. The policy only applies to the core and task nodes. The master\n         node cannot be scaled after initial configuration. </p>"
+                "smithy.api#documentation": "<p>Creates or updates a managed scaling policy for an Amazon EMR cluster. The\n         managed scaling policy defines the limits for resources, such as EC2 instances that can be\n         added or terminated from a cluster. The policy only applies to the core and task nodes. The\n         master node cannot be scaled after initial configuration. </p>"
             }
         },
         "com.amazonaws.emr#PutManagedScalingPolicyInput": {
@@ -6200,6 +6253,21 @@
             "type": "structure",
             "members": {}
         },
+        "com.amazonaws.emr#ReconfigurationType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "OVERWRITE",
+                        "name": "OVERWRITE"
+                    },
+                    {
+                        "value": "MERGE",
+                        "name": "MERGE"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.emr#ReleaseLabelFilter": {
             "type": "structure",
             "members": {
@@ -6273,7 +6341,7 @@
                 "ClusterId": {
                     "target": "com.amazonaws.emr#ClusterId",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster from which the auto-termination policy will be removed.</p>",
+                        "smithy.api#documentation": "<p>Specifies the ID of the Amazon EMR cluster from which the auto-termination\n         policy will be removed.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -6328,7 +6396,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Removes tags from an Amazon EMR resource, such as a cluster or Amazon EMR Studio. Tags make it easier to associate resources in\n         various ways, such as grouping clusters to track your Amazon EMR resource allocation costs.\n         For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag Clusters</a>. </p>\n         <p>The following example removes the stack tag with value Prod from a cluster:</p>"
+                "smithy.api#documentation": "<p>Removes tags from an Amazon EMR resource, such as a cluster or Amazon EMR Studio. Tags make it easier to associate resources in various ways, such as grouping\n         clusters to track your Amazon EMR resource allocation costs. For more information,\n         see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag\n            Clusters</a>. </p>\n         <p>The following example removes the stack tag with value Prod from a cluster:</p>"
             }
         },
         "com.amazonaws.emr#RemoveTagsInput": {
@@ -6337,7 +6405,7 @@
                 "ResourceId": {
                     "target": "com.amazonaws.emr#ResourceId",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon EMR resource identifier from which tags will be removed. For example, a\n         cluster identifier or an Amazon EMR Studio ID.</p>",
+                        "smithy.api#documentation": "<p>The Amazon EMR resource identifier from which tags will be removed. For example,\n         a cluster identifier or an Amazon EMR Studio ID.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -6350,7 +6418,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>This input identifies an Amazon EMR resource and a list of tags to remove.</p>"
+                "smithy.api#documentation": "<p>This input identifies an Amazon EMR resource and a list of tags to\n         remove.</p>"
             }
         },
         "com.amazonaws.emr#RemoveTagsOutput": {
@@ -6392,7 +6460,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the\n         steps specified. After the steps complete, the cluster stops and the HDFS partition is\n         lost. To prevent loss of data, configure the last step of the job flow to store results in\n         Amazon S3. If the <a>JobFlowInstancesConfig</a>\n            <code>KeepJobFlowAliveWhenNoSteps</code> parameter is set to <code>TRUE</code>, the cluster\n         transitions to the WAITING state rather than shutting down after the steps have completed. </p>\n         <p>For additional protection, you can set the <a>JobFlowInstancesConfig</a>\n            <code>TerminationProtected</code> parameter to <code>TRUE</code> to lock the cluster and\n         prevent it from being terminated by API call, user intervention, or in the event of a job\n         flow error.</p>\n         <p>A maximum of 256 steps are allowed in each job flow.</p>\n         <p>If your cluster is long-running (such as a Hive data warehouse) or complex, you may\n         require more than 256 steps to process your data. You can bypass the 256-step limitation in\n         various ways, including using the SSH shell to connect to the master node and submitting\n         queries directly to the software running on the master node, such as Hive and Hadoop. For\n         more information on how to do this, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html\">Add More than 256 Steps to a\n            Cluster</a> in the <i>Amazon EMR Management Guide</i>.</p>\n         <p>For long running clusters, we recommend that you periodically store your results.</p>\n         <note>\n            <p>The instance fleets configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions. The RunJobFlow request can contain InstanceFleets\n            parameters or InstanceGroups parameters, but not both.</p>\n         </note>"
+                "smithy.api#documentation": "<p>RunJobFlow creates and starts running a new cluster (job flow). The cluster runs the\n         steps specified. After the steps complete, the cluster stops and the HDFS partition is\n         lost. To prevent loss of data, configure the last step of the job flow to store results in\n            Amazon S3. If the <a>JobFlowInstancesConfig</a>\n            <code>KeepJobFlowAliveWhenNoSteps</code> parameter is set to <code>TRUE</code>, the cluster\n         transitions to the WAITING state rather than shutting down after the steps have completed. </p>\n         <p>For additional protection, you can set the <a>JobFlowInstancesConfig</a>\n            <code>TerminationProtected</code> parameter to <code>TRUE</code> to lock the cluster and\n         prevent it from being terminated by API call, user intervention, or in the event of a job\n         flow error.</p>\n         <p>A maximum of 256 steps are allowed in each job flow.</p>\n         <p>If your cluster is long-running (such as a Hive data warehouse) or complex, you may\n         require more than 256 steps to process your data. You can bypass the 256-step limitation in\n         various ways, including using the SSH shell to connect to the master node and submitting\n         queries directly to the software running on the master node, such as Hive and Hadoop. For\n         more information on how to do this, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/AddMoreThan256Steps.html\">Add More than 256 Steps to a\n            Cluster</a> in the <i>Amazon EMR Management Guide</i>.</p>\n         <p>For long running clusters, we recommend that you periodically store your results.</p>\n         <note>\n            <p>The instance fleets configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions. The RunJobFlow request can contain\n            InstanceFleets parameters or InstanceGroups parameters, but not both.</p>\n         </note>"
             }
         },
         "com.amazonaws.emr#RunJobFlowInput": {
@@ -6408,13 +6476,13 @@
                 "LogUri": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The location in Amazon S3 to write the log files of the job flow. If a value is not\n         provided, logs are not created.</p>"
+                        "smithy.api#documentation": "<p>The location in Amazon S3 to write the log files of the job flow. If a value is\n         not provided, logs are not created.</p>"
                     }
                 },
                 "LogEncryptionKmsKeyId": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The KMS key used for encrypting log files. If a value is not\n         provided, the logs remain encrypted by AES-256. This attribute is only available with\n         Amazon EMR version 5.30.0 and later, excluding Amazon EMR 6.0.0.</p>"
+                        "smithy.api#documentation": "<p>The KMS key used for encrypting log files. If a value is not\n         provided, the logs remain encrypted by AES-256. This attribute is only available with\n            Amazon EMR version 5.30.0 and later, excluding Amazon EMR 6.0.0.</p>"
                     }
                 },
                 "AdditionalInfo": {
@@ -6426,13 +6494,13 @@
                 "AmiVersion": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR releases 4.0 and\n         later, <code>ReleaseLabel</code> is used. To specify a custom AMI, use\n            <code>CustomAmiID</code>.</p>"
+                        "smithy.api#documentation": "<p>Applies only to Amazon EMR AMI versions 3.x and 2.x. For Amazon EMR\n         releases 4.0 and later, <code>ReleaseLabel</code> is used. To specify a custom AMI, use\n            <code>CustomAmiID</code>.</p>"
                     }
                 },
                 "ReleaseLabel": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon EMR release label, which determines the version of open-source application\n         packages installed on the cluster. Release labels are in the form <code>emr-x.x.x</code>,\n         where x.x.x is an Amazon EMR release version such as <code>emr-5.14.0</code>. For more\n         information about Amazon EMR release versions and included application versions and\n         features, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">https://docs.aws.amazon.com/emr/latest/ReleaseGuide/</a>. The release\n         label applies only to Amazon EMR releases version 4.0 and later. Earlier versions use\n            <code>AmiVersion</code>.</p>"
+                        "smithy.api#documentation": "<p>The Amazon EMR release label, which determines the version of open-source\n         application packages installed on the cluster. Release labels are in the form\n            <code>emr-x.x.x</code>, where x.x.x is an Amazon EMR release version such as\n            <code>emr-5.14.0</code>. For more information about Amazon EMR release versions\n         and included application versions and features, see <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">https://docs.aws.amazon.com/emr/latest/ReleaseGuide/</a>. The release label applies only to Amazon EMR\n         releases version 4.0 and later. Earlier versions use <code>AmiVersion</code>.</p>"
                     }
                 },
                 "Instances": {
@@ -6457,31 +6525,31 @@
                 "SupportedProducts": {
                     "target": "com.amazonaws.emr#SupportedProductsList",
                     "traits": {
-                        "smithy.api#documentation": "<note>\n            <p>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use\n            Applications.</p>\n         </note>\n         <p>A list of strings that indicates third-party software to use. For more information, see\n         the <a href=\"https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf\">Amazon EMR\n            Developer Guide</a>. Currently supported values are:</p>\n         <ul>\n            <li>\n               <p>\"mapr-m3\" - launch the job flow using MapR M3 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr-m5\" - launch the job flow using MapR M5 Edition.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<note>\n            <p>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and\n            later, use Applications.</p>\n         </note>\n         <p>A list of strings that indicates third-party software to use. For more information, see\n         the <a href=\"https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf\">Amazon EMR Developer Guide</a>. Currently supported values are:</p>\n         <ul>\n            <li>\n               <p>\"mapr-m3\" - launch the job flow using MapR M3 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr-m5\" - launch the job flow using MapR M5 Edition.</p>\n            </li>\n         </ul>"
                     }
                 },
                 "NewSupportedProducts": {
                     "target": "com.amazonaws.emr#NewSupportedProductsList",
                     "traits": {
-                        "smithy.api#documentation": "<note>\n            <p>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and later, use\n            Applications.</p>\n         </note>\n         <p>A list of strings that indicates third-party software to use with the job flow that\n         accepts a user argument list. EMR accepts and forwards the argument list to the\n         corresponding installation script as bootstrap action arguments. For more information, see\n         \"Launch a Job Flow on the MapR Distribution for Hadoop\" in the <a href=\"https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf\">Amazon EMR Developer Guide</a>. Supported\n         values are:</p>\n         <ul>\n            <li>\n               <p>\"mapr-m3\" - launch the cluster using MapR M3 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr-m5\" - launch the cluster using MapR M5 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr\" with the user arguments specifying \"--edition,m3\" or \"--edition,m5\" -\n               launch the job flow using MapR M3 or M5 Edition respectively.</p>\n            </li>\n            <li>\n               <p>\"mapr-m7\" - launch the cluster using MapR M7 Edition.</p>\n            </li>\n            <li>\n               <p>\"hunk\" - launch the cluster with the Hunk Big Data Analytics Platform.</p>\n            </li>\n            <li>\n               <p>\"hue\"- launch the cluster with Hue installed.</p>\n            </li>\n            <li>\n               <p>\"spark\" - launch the cluster with Apache Spark installed.</p>\n            </li>\n            <li>\n               <p>\"ganglia\" - launch the cluster with the Ganglia Monitoring System\n               installed.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<note>\n            <p>For Amazon EMR releases 3.x and 2.x. For Amazon EMR releases 4.x and\n            later, use Applications.</p>\n         </note>\n         <p>A list of strings that indicates third-party software to use with the job flow that\n         accepts a user argument list. EMR accepts and forwards the argument list to the\n         corresponding installation script as bootstrap action arguments. For more information, see\n         \"Launch a Job Flow on the MapR Distribution for Hadoop\" in the <a href=\"https://docs.aws.amazon.com/emr/latest/DeveloperGuide/emr-dg.pdf\">Amazon EMR Developer Guide</a>.\n         Supported values are:</p>\n         <ul>\n            <li>\n               <p>\"mapr-m3\" - launch the cluster using MapR M3 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr-m5\" - launch the cluster using MapR M5 Edition.</p>\n            </li>\n            <li>\n               <p>\"mapr\" with the user arguments specifying \"--edition,m3\" or \"--edition,m5\" -\n               launch the job flow using MapR M3 or M5 Edition respectively.</p>\n            </li>\n            <li>\n               <p>\"mapr-m7\" - launch the cluster using MapR M7 Edition.</p>\n            </li>\n            <li>\n               <p>\"hunk\" - launch the cluster with the Hunk Big Data Analytics Platform.</p>\n            </li>\n            <li>\n               <p>\"hue\"- launch the cluster with Hue installed.</p>\n            </li>\n            <li>\n               <p>\"spark\" - launch the cluster with Apache Spark installed.</p>\n            </li>\n            <li>\n               <p>\"ganglia\" - launch the cluster with the Ganglia Monitoring System\n               installed.</p>\n            </li>\n         </ul>"
                     }
                 },
                 "Applications": {
                     "target": "com.amazonaws.emr#ApplicationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of applications\n         for Amazon EMR to install and configure when launching the cluster. For a list of\n         applications available for each Amazon EMR release version, see the <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">Amazon EMRRelease\n         Guide</a>.</p>"
+                        "smithy.api#documentation": "<p>Applies to Amazon EMR releases 4.0 and later. A case-insensitive list of\n         applications for Amazon EMR to install and configure when launching the cluster.\n         For a list of applications available for each Amazon EMR release version, see the\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ReleaseGuide/\">Amazon EMRRelease\n            Guide</a>.</p>"
                     }
                 },
                 "Configurations": {
                     "target": "com.amazonaws.emr#ConfigurationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>For Amazon EMR releases 4.0 and later. The list of configurations supplied for the EMR\n         cluster you are creating.</p>"
+                        "smithy.api#documentation": "<p>For Amazon EMR releases 4.0 and later. The list of configurations supplied for\n         the EMR cluster you are creating.</p>"
                     }
                 },
                 "VisibleToAllUsers": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<important>\n            <p>The VisibleToAllUsers parameter is no longer supported. By default, the value is set to <code>true</code>. Setting it to <code>false</code> now has no effect.</p>\n         </important>\n         <p>Set this value to <code>true</code> so that IAM principals in the Amazon Web Services account associated with the cluster can perform EMR actions on the cluster that their IAM policies allow. This value defaults to <code>true</code> for clusters created using the EMR API or the CLI <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command.</p> \n         <p>When set to <code>false</code>, only the IAM principal that created the cluster and the Amazon Web Services account root user can perform EMR actions for the cluster, regardless of the IAM permissions policies attached to other IAM principals. For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users\">Understanding the EMR Cluster VisibleToAllUsers Setting</a> in the <i>Amazon EMRManagement Guide</i>.</p>"
+                        "smithy.api#documentation": "<important>\n            <p>The VisibleToAllUsers parameter is no longer supported. By default, the value is set\n            to <code>true</code>. Setting it to <code>false</code> now has no effect.</p>\n         </important>\n         <p>Set this value to <code>true</code> so that IAM principals in the Amazon Web Services account associated with the cluster can perform EMR actions on the cluster\n         that their IAM policies allow. This value defaults to <code>true</code> for clusters\n         created using the EMR API or the CLI\n         <a href=\"https://docs.aws.amazon.com/cli/latest/reference/emr/create-cluster.html\">create-cluster</a> command.</p>\n         <p>When set to <code>false</code>, only the IAM principal that created the cluster and the\n            Amazon Web Services account root user can perform EMR actions for the cluster, regardless\n         of the IAM permissions policies attached to other IAM principals. For more information, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users\">Understanding the EMR Cluster VisibleToAllUsers Setting</a> in the\n               <i>Amazon EMRManagement Guide</i>.</p>"
                     }
                 },
                 "JobFlowRole": {
@@ -6493,13 +6561,13 @@
                 "ServiceRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The IAM role that Amazon EMR assumes in order to access Amazon Web Services resources on\n         your behalf.</p>"
+                        "smithy.api#documentation": "<p>The IAM role that Amazon EMR assumes in order to access Amazon Web Services\n         resources on your behalf.</p>"
                     }
                 },
                 "Tags": {
                     "target": "com.amazonaws.emr#TagList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of tags to associate with a cluster and propagate to Amazon EC2 instances.</p>"
+                        "smithy.api#documentation": "<p>A list of tags to associate with a cluster and propagate to Amazon EC2\n         instances.</p>"
                     }
                 },
                 "SecurityConfiguration": {
@@ -6517,19 +6585,19 @@
                 "ScaleDownBehavior": {
                     "target": "com.amazonaws.emr#ScaleDownBehavior",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the way that individual Amazon EC2 instances terminate when an automatic\n         scale-in activity occurs or an instance group is resized.\n            <code>TERMINATE_AT_INSTANCE_HOUR</code> indicates that Amazon EMR terminates nodes at\n         the instance-hour boundary, regardless of when the request to terminate the instance was\n         submitted. This option is only available with Amazon EMR 5.1.0 and later and is the default\n         for clusters created using that version. <code>TERMINATE_AT_TASK_COMPLETION</code>\n         indicates that Amazon EMR adds nodes to a deny list and drains tasks from nodes before\n         terminating the Amazon EC2 instances, regardless of the instance-hour boundary. With either\n         behavior, Amazon EMR removes the least active nodes first and blocks instance termination\n         if it could lead to HDFS corruption. <code>TERMINATE_AT_TASK_COMPLETION</code> available\n         only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR\n         earlier than 5.1.0.</p>"
+                        "smithy.api#documentation": "<p>Specifies the way that individual Amazon EC2 instances terminate when an\n         automatic scale-in activity occurs or an instance group is resized.\n            <code>TERMINATE_AT_INSTANCE_HOUR</code> indicates that Amazon EMR terminates\n         nodes at the instance-hour boundary, regardless of when the request to terminate the\n         instance was submitted. This option is only available with Amazon EMR 5.1.0 and\n         later and is the default for clusters created using that version.\n            <code>TERMINATE_AT_TASK_COMPLETION</code> indicates that Amazon EMR adds nodes\n         to a deny list and drains tasks from nodes before terminating the Amazon EC2\n         instances, regardless of the instance-hour boundary. With either behavior, Amazon EMR removes the least active nodes first and blocks instance termination if it could lead to\n         HDFS corruption. <code>TERMINATE_AT_TASK_COMPLETION</code> available only in Amazon EMR version 4.1.0 and later, and is the default for versions of Amazon EMR earlier than 5.1.0.</p>"
                     }
                 },
                 "CustomAmiId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon\n         EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches cluster EC2\n         instances. For more information about custom AMIs in Amazon EMR, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html\">Using a Custom\n            AMI</a> in the <i>Amazon EMR Management Guide</i>. If omitted, the\n         cluster uses the base Linux AMI for the <code>ReleaseLabel</code> specified. For Amazon EMR\n         versions 2.x and 3.x, use <code>AmiVersion</code> instead.</p>\n         <p>For information about creating a custom AMI, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html\">Creating an Amazon EBS-Backed\n            Linux AMI</a> in the <i>Amazon Elastic Compute Cloud User Guide for Linux\n            Instances</i>. For information about finding an AMI ID, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html\">Finding a Linux\n            AMI</a>. </p>"
+                        "smithy.api#documentation": "<p>Available only in Amazon EMR version 5.7.0 and later. The ID of a custom Amazon\n         EBS-backed Linux AMI. If specified, Amazon EMR uses this AMI when it launches\n         cluster EC2 instances. For more information about custom AMIs in Amazon EMR, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-custom-ami.html\">Using a\n            Custom AMI</a> in the <i>Amazon EMR Management Guide</i>. If\n         omitted, the cluster uses the base Linux AMI for the <code>ReleaseLabel</code> specified.\n         For Amazon EMR versions 2.x and 3.x, use <code>AmiVersion</code> instead.</p>\n         <p>For information about creating a custom AMI, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/creating-an-ami-ebs.html\">Creating an Amazon EBS-Backed Linux AMI</a> in the <i>Amazon Elastic Compute Cloud User Guide for Linux\n            Instances</i>. For information about finding an AMI ID, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html\">Finding a Linux\n            AMI</a>. </p>"
                     }
                 },
                 "EbsRootVolumeSize": {
                     "target": "com.amazonaws.emr#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is used for\n         each EC2 instance. Available in Amazon EMR version 4.x and later.</p>"
+                        "smithy.api#documentation": "<p>The size, in GiB, of the Amazon EBS root device volume of the Linux AMI that is\n         used for each EC2 instance. Available in Amazon EMR version 4.x and later.</p>"
                     }
                 },
                 "RepoUpgradeOnBoot": {
@@ -6564,6 +6632,12 @@
                 },
                 "AutoTerminationPolicy": {
                     "target": "com.amazonaws.emr#AutoTerminationPolicy"
+                },
+                "OSReleaseLabel": {
+                    "target": "com.amazonaws.emr#XmlStringMaxLen256",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Specifies a particular Amazon Linux release for all nodes in a cluster launch RunJobFlow request. If a release is not specified, Amazon EMR uses the latest validated Amazon Linux release for cluster launch.</p>"
+                    }
                 }
             },
             "traits": {
@@ -6775,13 +6849,13 @@
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n         Reference</i>.</p>"
+                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>.</p>"
                     }
                 },
                 "IdentityType": {
                     "target": "com.amazonaws.emr#IdentityType",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the identity mapped to the Amazon EMR Studio is a user or a group.</p>"
+                        "smithy.api#documentation": "<p>Specifies whether the identity mapped to the Amazon EMR Studio is a user or a\n         group.</p>"
                     }
                 },
                 "SessionPolicyArn": {
@@ -6804,7 +6878,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio session mapping including creation time, user or group\n         ID, Studio ID, and so on.</p>"
+                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio session mapping including creation time, user\n         or group ID, Studio ID, and so on.</p>"
             }
         },
         "com.amazonaws.emr#SessionMappingSummary": {
@@ -6819,19 +6893,19 @@
                 "IdentityId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group from the Amazon Web Services SSO Identity\n         Store.</p>"
+                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group from the Amazon Web Services SSO\n         Identity Store.</p>"
                     }
                 },
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n         Reference</i>.</p>"
+                        "smithy.api#documentation": "<p>The name of the user or group. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>.</p>"
                     }
                 },
                 "IdentityType": {
                     "target": "com.amazonaws.emr#IdentityType",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies whether the identity mapped to the Amazon EMR Studio is a user or a group.</p>"
+                        "smithy.api#documentation": "<p>Specifies whether the identity mapped to the Amazon EMR Studio is a user or a\n         group.</p>"
                     }
                 },
                 "SessionPolicyArn": {
@@ -6848,7 +6922,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio session mapping. The details do not include the time\n         the session mapping was last modified.</p>"
+                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio session mapping. The details do not include the\n         time the session mapping was last modified.</p>"
             }
         },
         "com.amazonaws.emr#SessionMappingSummaryList": {
@@ -6862,13 +6936,16 @@
             "input": {
                 "target": "com.amazonaws.emr#SetTerminationProtectionInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>SetTerminationProtection locks a cluster (job flow) so the EC2 instances in the cluster\n         cannot be terminated by user intervention, an API call, or in the event of a job-flow\n         error. The cluster still terminates upon successful completion of the job flow. Calling\n         <code>SetTerminationProtection</code> on a cluster is similar to calling the Amazon EC2\n            <code>DisableAPITermination</code> API on all EC2 instances in a cluster.</p>\n         <p>\n            <code>SetTerminationProtection</code> is used to prevent accidental termination of a\n         cluster and to ensure that in the event of an error, the instances persist so that you can\n         recover any data stored in their ephemeral instance storage.</p>\n         <p> To terminate a cluster that has been locked by setting\n            <code>SetTerminationProtection</code> to <code>true</code>, you must first unlock the\n         job flow by a subsequent call to <code>SetTerminationProtection</code> in which you set the\n         value to <code>false</code>. </p>\n         <p> For more information, see<a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html\">Managing Cluster\n            Termination</a> in the <i>Amazon EMR Management Guide</i>. </p>"
+                "smithy.api#documentation": "<p>SetTerminationProtection locks a cluster (job flow) so the EC2 instances in the cluster\n         cannot be terminated by user intervention, an API call, or in the event of a job-flow\n         error. The cluster still terminates upon successful completion of the job flow. Calling\n            <code>SetTerminationProtection</code> on a cluster is similar to calling the Amazon EC2\n         <code>DisableAPITermination</code> API on all EC2 instances in a cluster.</p>\n         <p>\n            <code>SetTerminationProtection</code> is used to prevent accidental termination of a\n         cluster and to ensure that in the event of an error, the instances persist so that you can\n         recover any data stored in their ephemeral instance storage.</p>\n         <p> To terminate a cluster that has been locked by setting\n            <code>SetTerminationProtection</code> to <code>true</code>, you must first unlock the\n         job flow by a subsequent call to <code>SetTerminationProtection</code> in which you set the\n         value to <code>false</code>. </p>\n         <p> For more information, see<a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/UsingEMR_TerminationProtection.html\">Managing Cluster\n            Termination</a> in the <i>Amazon EMR Management Guide</i>. </p>"
             }
         },
         "com.amazonaws.emr#SetTerminationProtectionInput": {
@@ -6884,7 +6961,7 @@
                 "TerminationProtected": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>A Boolean that indicates whether to protect the cluster and prevent the Amazon EC2\n         instances in the cluster from shutting down due to API calls, user intervention, or\n         job-flow error.</p>",
+                        "smithy.api#documentation": "<p>A Boolean that indicates whether to protect the cluster and prevent the Amazon EC2 instances in the cluster from shutting down due to API calls, user intervention, or\n         job-flow error.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -6898,13 +6975,16 @@
             "input": {
                 "target": "com.amazonaws.emr#SetVisibleToAllUsersInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<important>\n            <p>The SetVisibleToAllUsers parameter is no longer supported. Your cluster may be visible to all users in your account.\n            To restrict cluster access using an IAM policy, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-iam.html\">Identity and Access Management for EMR</a>.\n            </p>\n         </important>\n         <p>Sets the <a>Cluster$VisibleToAllUsers</a> value for an EMR cluster. When <code>true</code>, IAM principals in the\n         Amazon Web Services account can perform EMR cluster actions that their IAM policies allow. When <code>false</code>, only the IAM principal that created the cluster and the Amazon Web Services account root user can perform EMR actions on the cluster, regardless of IAM permissions policies attached to other IAM principals.</p>\n         <p>This action works on running clusters. When you create a cluster, use the <a>RunJobFlowInput$VisibleToAllUsers</a> parameter.</p>\n         <p>For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users\">Understanding the EMR Cluster VisibleToAllUsers Setting</a> in the <i>Amazon EMRManagement Guide</i>.</p>"
+                "smithy.api#documentation": "<important>\n            <p>The SetVisibleToAllUsers parameter is no longer supported. Your cluster may be\n            visible to all users in your account. To restrict cluster access using an IAM policy, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-access-iam.html\">Identity and Access\n               Management for EMR</a>. </p>\n         </important>\n         <p>Sets the <a>Cluster$VisibleToAllUsers</a> value for an EMR cluster. When\n            <code>true</code>, IAM principals in the Amazon Web Services account can perform EMR\n         cluster actions that their IAM policies allow. When <code>false</code>, only\n         the IAM principal that created the cluster and the Amazon Web Services account root user can\n         perform EMR actions on the cluster, regardless of IAM permissions policies attached to\n         other IAM principals.</p>\n         <p>This action works on running clusters. When you create a cluster, use the <a>RunJobFlowInput$VisibleToAllUsers</a> parameter.</p>\n         <p>For more information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/security_iam_emr-with-iam.html#security_set_visible_to_all_users\">Understanding the EMR Cluster VisibleToAllUsers Setting</a> in the\n               <i>Amazon EMRManagement Guide</i>.</p>"
             }
         },
         "com.amazonaws.emr#SetVisibleToAllUsersInput": {
@@ -6920,7 +7000,7 @@
                 "VisibleToAllUsers": {
                     "target": "com.amazonaws.emr#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>A value of <code>true</code> indicates that an IAM principal in the Amazon Web Services account can perform\n         EMR actions on the cluster that the IAM policies attached to the principal allow. A\n         value of <code>false</code> indicates that only the IAM principal that created the cluster and the Amazon Web Services root user can perform EMR actions on the cluster.</p>",
+                        "smithy.api#documentation": "<p>A value of <code>true</code> indicates that an IAM principal in the Amazon Web Services account can perform EMR actions on the cluster that the IAM policies attached\n         to the principal allow. A value of <code>false</code> indicates that only the IAM principal\n         that created the cluster and the Amazon Web Services root user can perform EMR actions on\n         the cluster.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -7033,7 +7113,7 @@
                 "BlockDurationMinutes": {
                     "target": "com.amazonaws.emr#WholeNumber",
                     "traits": {
-                        "smithy.api#documentation": "<p>The defined duration for Spot Instances (also known as Spot blocks) in minutes. When\n         specified, the Spot Instance does not terminate before the defined duration expires, and\n         defined duration pricing for Spot Instances applies. Valid values are 60, 120, 180, 240,\n         300, or 360. The duration period starts as soon as a Spot Instance receives its instance\n         ID. At the end of the duration, Amazon EC2 marks the Spot Instance for termination and\n         provides a Spot Instance termination notice, which gives the instance a two-minute warning\n         before it terminates. </p>\n         <note>\n            <p>Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022.\n         </p>  \n         </note>"
+                        "smithy.api#documentation": "<p>The defined duration for Spot Instances (also known as Spot blocks) in minutes. When\n         specified, the Spot Instance does not terminate before the defined duration expires, and\n         defined duration pricing for Spot Instances applies. Valid values are 60, 120, 180, 240,\n         300, or 360. The duration period starts as soon as a Spot Instance receives its instance\n         ID. At the end of the duration, Amazon EC2 marks the Spot Instance for termination\n         and provides a Spot Instance termination notice, which gives the instance a two-minute\n         warning before it terminates. </p>\n         <note>\n            <p>Spot Instances with a defined duration (also known as Spot blocks) are no longer\n            available to new customers from July 1, 2021. For customers who have previously used the\n            feature, we will continue to support Spot Instances with a defined duration until\n            December 31, 2022. </p>\n         </note>"
                     }
                 },
                 "AllocationStrategy": {
@@ -7044,7 +7124,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The launch specification for Spot Instances in the instance fleet, which determines the\n         defined duration, provisioning timeout behavior, and allocation strategy.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions 4.8.0 and\n            later, excluding 5.0.x versions. Spot Instance allocation strategy is available in\n            Amazon EMR version 5.12.1 and later.</p>\n         </note>\n         <note>\n            <p>Spot Instances with a defined duration (also known as Spot blocks) are no longer available to new customers from July 1, 2021. For customers who have previously used the feature, we will continue to support Spot Instances with a defined duration until December 31, 2022.\n         </p>  \n         </note>"
+                "smithy.api#documentation": "<p>The launch specification for Spot Instances in the instance fleet, which determines the\n         defined duration, provisioning timeout behavior, and allocation strategy.</p>\n         <note>\n            <p>The instance fleet configuration is available only in Amazon EMR versions\n            4.8.0 and later, excluding 5.0.x versions. Spot Instance allocation strategy is\n            available in Amazon EMR version 5.12.1 and later.</p>\n         </note>\n         <note>\n            <p>Spot Instances with a defined duration (also known as Spot blocks) are no longer\n            available to new customers from July 1, 2021. For customers who have previously used the\n            feature, we will continue to support Spot Instances with a defined duration until\n            December 31, 2022. </p>\n         </note>"
             }
         },
         "com.amazonaws.emr#SpotProvisioningTimeoutAction": {
@@ -7121,7 +7201,7 @@
                 "ServiceRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name or ARN of the IAM role that is used as the service role for Amazon EMR (the EMR\n         role) for the notebook execution.</p>",
+                        "smithy.api#documentation": "<p>The name or ARN of the IAM role that is used as the service role for Amazon EMR\n         (the EMR role) for the notebook execution.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -7201,7 +7281,7 @@
                 "ActionOnFailure": {
                     "target": "com.amazonaws.emr#ActionOnFailure",
                     "traits": {
-                        "smithy.api#documentation": "<p>The action to take when the cluster step fails. Possible values are <code>TERMINATE_CLUSTER</code>,\n         <code>CANCEL_AND_WAIT</code>, and <code>CONTINUE</code>. <code>TERMINATE_JOB_FLOW</code> is provided for backward compatibility.\n         We recommend using <code>TERMINATE_CLUSTER</code> instead.</p>\n         <p>If a cluster's <code>StepConcurrencyLevel</code> is greater than <code>1</code>, do not use <code>AddJobFlowSteps</code> to submit a step with this parameter set to <code>CANCEL_AND_WAIT</code> or <code>TERMINATE_CLUSTER</code>. The step is not submitted and the action fails with a message that the <code>ActionOnFailure</code> setting is not valid.</p>\n         <p>If you change a cluster's <code>StepConcurrencyLevel</code> to be greater than 1 while a step is running, the <code>ActionOnFailure</code> parameter may not behave as you expect. In this case, for a step that fails with this parameter set to <code>CANCEL_AND_WAIT</code>, pending steps and the running step are not canceled; for a step that fails with this parameter set to <code>TERMINATE_CLUSTER</code>, the cluster does not terminate.</p>"
+                        "smithy.api#documentation": "<p>The action to take when the cluster step fails. Possible values are\n            <code>TERMINATE_CLUSTER</code>, <code>CANCEL_AND_WAIT</code>, and <code>CONTINUE</code>.\n            <code>TERMINATE_JOB_FLOW</code> is provided for backward compatibility. We recommend\n         using <code>TERMINATE_CLUSTER</code> instead.</p>\n         <p>If a cluster's <code>StepConcurrencyLevel</code> is greater than <code>1</code>, do not\n         use <code>AddJobFlowSteps</code> to submit a step with this parameter set to\n            <code>CANCEL_AND_WAIT</code> or <code>TERMINATE_CLUSTER</code>. The step is not\n         submitted and the action fails with a message that the <code>ActionOnFailure</code> setting\n         is not valid.</p>\n         <p>If you change a cluster's <code>StepConcurrencyLevel</code> to be greater than 1 while a\n         step is running, the <code>ActionOnFailure</code> parameter may not behave as you expect.\n         In this case, for a step that fails with this parameter set to\n         <code>CANCEL_AND_WAIT</code>, pending steps and the running step are not canceled; for a\n         step that fails with this parameter set to <code>TERMINATE_CLUSTER</code>, the cluster does\n         not terminate.</p>"
                     }
                 },
                 "Status": {
@@ -7243,7 +7323,7 @@
                 "ActionOnFailure": {
                     "target": "com.amazonaws.emr#ActionOnFailure",
                     "traits": {
-                        "smithy.api#documentation": "<p>The action to take when the step fails. Use one of the following values:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>TERMINATE_CLUSTER</code> - Shuts down the cluster.</p>\n            </li>\n            <li>\n               <p>\n                  <code>CANCEL_AND_WAIT</code> - Cancels any pending steps and returns the cluster to the <code>WAITING</code> state.</p>\n            </li>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Continues to the next step in the queue.</p>\n            </li>\n            <li>\n               <p>\n                  <code>TERMINATE_JOB_FLOW</code> - Shuts down the cluster. <code>TERMINATE_JOB_FLOW</code> is provided for backward compatibility. We recommend using <code>TERMINATE_CLUSTER</code> instead.</p>\n            </li>\n         </ul>\n         <p>If a cluster's <code>StepConcurrencyLevel</code> is greater than <code>1</code>, do not use <code>AddJobFlowSteps</code> to submit a step with this parameter set to <code>CANCEL_AND_WAIT</code> or <code>TERMINATE_CLUSTER</code>. The step is not submitted and the action fails with a message that the <code>ActionOnFailure</code> setting is not valid.</p>\n         <p>If you change a cluster's <code>StepConcurrencyLevel</code> to be greater than 1 while a step is running, the <code>ActionOnFailure</code> parameter may not behave as you expect. In this case, for a step that fails with this parameter set to <code>CANCEL_AND_WAIT</code>, pending steps and the running step are not canceled; for a step that fails with this parameter set to <code>TERMINATE_CLUSTER</code>, the cluster does not terminate.</p>"
+                        "smithy.api#documentation": "<p>The action to take when the step fails. Use one of the following values:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>TERMINATE_CLUSTER</code> - Shuts down the cluster.</p>\n            </li>\n            <li>\n               <p>\n                  <code>CANCEL_AND_WAIT</code> - Cancels any pending steps and returns the cluster\n               to the <code>WAITING</code> state.</p>\n            </li>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Continues to the next step in the queue.</p>\n            </li>\n            <li>\n               <p>\n                  <code>TERMINATE_JOB_FLOW</code> - Shuts down the cluster.\n                  <code>TERMINATE_JOB_FLOW</code> is provided for backward compatibility. We\n               recommend using <code>TERMINATE_CLUSTER</code> instead.</p>\n            </li>\n         </ul>\n         <p>If a cluster's <code>StepConcurrencyLevel</code> is greater than <code>1</code>, do not\n         use <code>AddJobFlowSteps</code> to submit a step with this parameter set to\n            <code>CANCEL_AND_WAIT</code> or <code>TERMINATE_CLUSTER</code>. The step is not\n         submitted and the action fails with a message that the <code>ActionOnFailure</code> setting\n         is not valid.</p>\n         <p>If you change a cluster's <code>StepConcurrencyLevel</code> to be greater than 1 while a\n         step is running, the <code>ActionOnFailure</code> parameter may not behave as you expect.\n         In this case, for a step that fails with this parameter set to\n         <code>CANCEL_AND_WAIT</code>, pending steps and the running step are not canceled; for a\n         step that fails with this parameter set to <code>TERMINATE_CLUSTER</code>, the cluster does\n         not terminate.</p>"
                     }
                 },
                 "HadoopJarStep": {
@@ -7504,7 +7584,7 @@
                 "ActionOnFailure": {
                     "target": "com.amazonaws.emr#ActionOnFailure",
                     "traits": {
-                        "smithy.api#documentation": "<p>The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,\n         CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is available for backward compatibility.</p>"
+                        "smithy.api#documentation": "<p>The action to take when the cluster step fails. Possible values are TERMINATE_CLUSTER,\n         CANCEL_AND_WAIT, and CONTINUE. TERMINATE_JOB_FLOW is available for backward\n         compatibility.</p>"
                     }
                 },
                 "Status": {
@@ -7555,6 +7635,9 @@
             "input": {
                 "target": "com.amazonaws.emr#StopNotebookExecutionInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
@@ -7651,19 +7734,19 @@
                 "UserRole": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the IAM role assumed by users logged in to the Amazon EMR Studio. A Studio only requires a <code>UserRole</code> when you use IAM authentication.</p>"
+                        "smithy.api#documentation": "<p>The name of the IAM role assumed by users logged in to the Amazon EMR Studio. A\n         Studio only requires a <code>UserRole</code> when you use IAM\n         authentication.</p>"
                     }
                 },
                 "WorkspaceSecurityGroupId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Workspace security group associated with the Amazon EMR Studio. The\n         Workspace security group allows outbound network traffic to resources in the Engine\n         security group and to the internet.</p>"
+                        "smithy.api#documentation": "<p>The ID of the Workspace security group associated with the Amazon EMR Studio.\n         The Workspace security group allows outbound network traffic to resources in the Engine\n         security group and to the internet.</p>"
                     }
                 },
                 "EngineSecurityGroupId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Engine security group associated with the Amazon EMR Studio. The Engine\n         security group allows inbound network traffic from resources in the Workspace security\n         group.</p>"
+                        "smithy.api#documentation": "<p>The ID of the Engine security group associated with the Amazon EMR Studio. The\n         Engine security group allows inbound network traffic from resources in the Workspace\n         security group.</p>"
                     }
                 },
                 "Url": {
@@ -7681,13 +7764,13 @@
                 "DefaultS3Location": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook\n         files.</p>"
+                        "smithy.api#documentation": "<p>The Amazon S3 location to back up Amazon EMR Studio Workspaces and\n         notebook files.</p>"
                     }
                 },
                 "IdpAuthUrl": {
                     "target": "com.amazonaws.emr#XmlString",
                     "traits": {
-                        "smithy.api#documentation": "<p>Your identity provider's authentication endpoint. Amazon EMR Studio redirects federated users to this endpoint for authentication when logging in to a Studio with the Studio URL.</p>"
+                        "smithy.api#documentation": "<p>Your identity provider's authentication endpoint. Amazon EMR Studio redirects\n         federated users to this endpoint for authentication when logging in to a Studio with the\n         Studio URL.</p>"
                     }
                 },
                 "IdpRelayStateParameterName": {
@@ -7704,7 +7787,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio including ID, creation time, name, and so on.</p>"
+                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio including ID, creation time, name, and so\n         on.</p>"
             }
         },
         "com.amazonaws.emr#StudioSummary": {
@@ -7725,7 +7808,7 @@
                 "VpcId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the Virtual Private Cloud (Amazon VPC) associated with the Amazon EMR\n         Studio.</p>"
+                        "smithy.api#documentation": "<p>The ID of the Virtual Private Cloud (Amazon VPC) associated with the Amazon EMR Studio.</p>"
                     }
                 },
                 "Description": {
@@ -7754,7 +7837,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio, including ID, Name, VPC, and Description. The details\n         do not include subnets, IAM roles, security groups, or tags associated with the\n         Studio.</p>"
+                "smithy.api#documentation": "<p>Details for an Amazon EMR Studio, including ID, Name, VPC, and Description. The\n         details do not include subnets, IAM roles, security groups, or tags associated with the\n         Studio.</p>"
             }
         },
         "com.amazonaws.emr#StudioSummaryList": {
@@ -7812,7 +7895,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A key-value pair containing user-defined metadata that you can associate with an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as grouping\n         clusters to track your Amazon EMR resource allocation costs. For more information, see\n            <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag\n            Clusters</a>. </p>"
+                "smithy.api#documentation": "<p>A key-value pair containing user-defined metadata that you can associate with an Amazon EMR resource. Tags make it easier to associate clusters in various ways, such as\n         grouping clusters to track your Amazon EMR resource allocation costs. For more\n         information, see <a href=\"https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-tags.html\">Tag Clusters</a>. </p>"
             }
         },
         "com.amazonaws.emr#TagList": {
@@ -7826,13 +7909,16 @@
             "input": {
                 "target": "com.amazonaws.emr#TerminateJobFlowsInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow is shut\n         down, any step not yet completed is canceled and the EC2 instances on which the cluster is\n         running are stopped. Any log files not already saved are uploaded to Amazon S3 if a LogUri\n         was specified when the cluster was created.</p>\n         <p>The maximum number of clusters allowed is 10. The call to <code>TerminateJobFlows</code>\n         is asynchronous. Depending on the configuration of the cluster, it may take up to 1-5\n         minutes for the cluster to completely terminate and release allocated resources, such as\n         Amazon EC2 instances.</p>"
+                "smithy.api#documentation": "<p>TerminateJobFlows shuts a list of clusters (job flows) down. When a job flow is shut\n         down, any step not yet completed is canceled and the EC2 instances on which the cluster is\n         running are stopped. Any log files not already saved are uploaded to Amazon S3 if a\n         LogUri was specified when the cluster was created.</p>\n         <p>The maximum number of clusters allowed is 10. The call to <code>TerminateJobFlows</code>\n         is asynchronous. Depending on the configuration of the cluster, it may take up to 1-5\n         minutes for the cluster to completely terminate and release allocated resources, such as\n            Amazon EC2 instances.</p>"
             }
         },
         "com.amazonaws.emr#TerminateJobFlowsInput": {
@@ -7970,6 +8056,9 @@
             "input": {
                 "target": "com.amazonaws.emr#UpdateStudioInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerException"
@@ -7979,7 +8068,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates an Amazon EMR Studio configuration, including attributes such as name, description, and subnets.</p>"
+                "smithy.api#documentation": "<p>Updates an Amazon EMR Studio configuration, including attributes such as name,\n         description, and subnets.</p>"
             }
         },
         "com.amazonaws.emr#UpdateStudioInput": {
@@ -8007,7 +8096,7 @@
                 "SubnetIds": {
                     "target": "com.amazonaws.emr#SubnetIdList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of subnet IDs to associate with the Amazon EMR Studio. The list can include new subnet IDs, but must also include all of the subnet IDs previously associated with the Studio. The list order does not matter. A Studio can have a maximum of 5 subnets. The subnets must belong to the same VPC as the Studio. </p>"
+                        "smithy.api#documentation": "<p>A list of subnet IDs to associate with the Amazon EMR Studio. The list can\n         include new subnet IDs, but must also include all of the subnet IDs previously associated\n         with the Studio. The list order does not matter. A Studio can have a maximum of 5 subnets.\n         The subnets must belong to the same VPC as the Studio. </p>"
                     }
                 },
                 "DefaultS3Location": {
@@ -8023,6 +8112,9 @@
             "input": {
                 "target": "com.amazonaws.emr#UpdateStudioSessionMappingInput"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.emr#InternalServerError"
@@ -8032,7 +8124,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates the session policy attached to the user or group for the specified Amazon EMR\n         Studio.</p>"
+                "smithy.api#documentation": "<p>Updates the session policy attached to the user or group for the specified Amazon EMR Studio.</p>"
             }
         },
         "com.amazonaws.emr#UpdateStudioSessionMappingInput": {
@@ -8048,13 +8140,13 @@
                 "IdentityId": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group. For more information, see\n            <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The globally unique identifier (GUID) of the user or group. For more information, see\n            <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserId\">UserId</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-GroupId\">GroupId</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified.</p>"
                     }
                 },
                 "IdentityName": {
                     "target": "com.amazonaws.emr#XmlStringMaxLen256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the user or group to update. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API Reference</i>.\n         Either <code>IdentityName</code> or <code>IdentityId</code> must be specified.</p>"
+                        "smithy.api#documentation": "<p>The name of the user or group to update. For more information, see <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_User.html#singlesignon-Type-User-UserName\">UserName</a> and <a href=\"https://docs.aws.amazon.com/singlesignon/latest/IdentityStoreAPIReference/API_Group.html#singlesignon-Type-Group-DisplayName\">DisplayName</a> in the <i>Amazon Web Services SSO Identity Store API\n            Reference</i>. Either <code>IdentityName</code> or <code>IdentityId</code> must\n         be specified.</p>"
                     }
                 },
                 "IdentityType": {
diff --git a/aws/sdk/aws-models/evidently.json b/aws/sdk/aws-models/evidently.json
index 12a1290751eada91b3965df3e3c3530f92d8491e..cb357e5b713f3b4f329b8d6bbfb4e3b436641175 100644
--- a/aws/sdk/aws-models/evidently.json
+++ b/aws/sdk/aws-models/evidently.json
@@ -2000,7 +2000,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Retrieves the results of a running or completed experiment.</p>",
+                "smithy.api#documentation": "<p>Retrieves the results of a running or completed experiment. No results are available until\n       there have been 100 events for each variation and at least 10 minutes have passed since the start of the experiment.</p>\n         <p>Experiment\n       results are available up to 63 days after the start of the experiment. They are not available after that because\n       of CloudWatch data retention policies.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/projects/{project}/experiments/{experiment}/results",
@@ -2036,7 +2036,7 @@
                 "endTime": {
                     "target": "smithy.api#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The date and time that the experiment ended, if it is completed.</p>"
+                        "smithy.api#documentation": "<p>The date and time that the experiment ended, if it is completed. This must be no longer than 30 days \n      after the experiment start time.</p>"
                     }
                 },
                 "metricNames": {
@@ -2099,6 +2099,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The timestamps of each result returned.</p>"
                     }
+                },
+                "details": {
+                    "target": "smithy.api#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>If the experiment doesn't yet have enough events to provide valid results, this \n      field is returned with the message <code>Not enough events to generate results</code>. If there are \n      enough events to provide valid results, this field is not returned.</p>"
+                    }
                 }
             }
         },
@@ -4141,7 +4147,7 @@
                 "analysisCompleteTime": {
                     "target": "smithy.api#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The date and time to end the experiment.</p>",
+                        "smithy.api#documentation": "<p>The date and time to end the experiment. This must be no more than 30 days after\n      the experiment starts.</p>",
                         "smithy.api#required": {}
                     }
                 }
diff --git a/aws/sdk/aws-models/iot.json b/aws/sdk/aws-models/iot.json
index 2c7b94e5896dc7b74c230566c90125c706a787d2..c81d91429770c6c98b25698cbd2e030cf2e014e4 100644
--- a/aws/sdk/aws-models/iot.json
+++ b/aws/sdk/aws-models/iot.json
@@ -3447,6 +3447,12 @@
                 "smithy.api#box": {}
             }
         },
+        "com.amazonaws.iot#BooleanWrapperObject": {
+            "type": "boolean",
+            "traits": {
+                "smithy.api#box": {}
+            }
+        },
         "com.amazonaws.iot#Bucket": {
             "type": "structure",
             "members": {
@@ -3840,6 +3846,9 @@
                 {
                     "target": "com.amazonaws.iot#InvalidRequestException"
                 },
+                {
+                    "target": "com.amazonaws.iot#LimitExceededException"
+                },
                 {
                     "target": "com.amazonaws.iot#ResourceNotFoundException"
                 },
@@ -15914,6 +15923,9 @@
                     "traits": {
                         "smithy.api#documentation": "<p>A key-value map that pairs the patterns that need to be replaced in a managed \n            template job document schema. You can use the description of each key as a guidance \n            to specify the inputs during runtime when creating a job.</p>"
                     }
+                },
+                "isConcurrent": {
+                    "target": "com.amazonaws.iot#BooleanWrapperObject"
                 }
             },
             "traits": {
@@ -16377,6 +16389,9 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The time, in seconds since the epoch, when the job completed.</p>"
                     }
+                },
+                "isConcurrent": {
+                    "target": "com.amazonaws.iot#BooleanWrapperObject"
                 }
             },
             "traits": {
diff --git a/aws/sdk/aws-models/iotsecuretunneling.json b/aws/sdk/aws-models/iotsecuretunneling.json
index 84e99d1d860f5aea213b22e04e7f5d84ad37be58..caa781f309770f5bb87fb9e96d8b3909330c6522 100644
--- a/aws/sdk/aws-models/iotsecuretunneling.json
+++ b/aws/sdk/aws-models/iotsecuretunneling.json
@@ -44,6 +44,25 @@
                 "smithy.api#sensitive": {}
             }
         },
+        "com.amazonaws.iotsecuretunneling#ClientMode": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "SOURCE",
+                        "name": "SOURCE"
+                    },
+                    {
+                        "value": "DESTINATION",
+                        "name": "DESTINATION"
+                    },
+                    {
+                        "value": "ALL",
+                        "name": "ALL"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.iotsecuretunneling#CloseTunnel": {
             "type": "operation",
             "input": {
@@ -58,7 +77,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Closes a tunnel identified by the unique tunnel id. When a <code>CloseTunnel</code>\n\t\t\trequest is received, we close the WebSocket connections between the client and proxy\n\t\t\tserver so no data can be transmitted.</p>",
+                "smithy.api#documentation": "<p>Closes a tunnel identified by the unique tunnel id. When a <code>CloseTunnel</code>\n\t\t\trequest is received, we close the WebSocket connections between the client and proxy\n\t\t\tserver so no data can be transmitted.</p>\n\t\t       <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">CloseTunnel</a> action.</p>",
                 "smithy.api#http": {
                     "method": "DELETE",
                     "uri": "/tunnels/{tunnelId}",
@@ -81,7 +100,7 @@
                     "target": "com.amazonaws.iotsecuretunneling#DeleteFlag",
                     "traits": {
                         "smithy.api#box": {},
-                        "smithy.api#documentation": "<p>When set to true, AWS IoT Secure Tunneling deletes the tunnel data\n\t\t\timmediately.</p>",
+                        "smithy.api#documentation": "<p>When set to true, IoT Secure Tunneling deletes the tunnel data\n\t\t\timmediately.</p>",
                         "smithy.api#httpQuery": "delete"
                     }
                 }
@@ -146,7 +165,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Gets information about a tunnel identified by the unique tunnel id.</p>",
+                "smithy.api#documentation": "<p>Gets information about a tunnel identified by the unique tunnel id.</p>\n\t\t       <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">DescribeTunnel</a> action.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/tunnels/{tunnelId}",
@@ -181,7 +200,7 @@
         "com.amazonaws.iotsecuretunneling#Description": {
             "type": "string",
             "traits": {
-                "smithy.api#pattern": "[^\\p{C}]{1,2048}"
+                "smithy.api#pattern": "^[^\\p{C}]{1,2048}$"
             }
         },
         "com.amazonaws.iotsecuretunneling#DestinationConfig": {
@@ -196,7 +215,7 @@
                 "services": {
                     "target": "com.amazonaws.iotsecuretunneling#ServiceList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of service names that identity the target application. The AWS IoT client running on the destination device reads\n\t\t\tthis value and uses it to look up a port or an IP address and a port. The AWS IoT client\n\t\t\tinstantiates the local proxy which uses this information to connect to the destination\n\t\t\tapplication.</p>",
+                        "smithy.api#documentation": "<p>A list of service names that identify the target application. The IoT client\n\t\t\trunning on the destination device reads this value and uses it to look up a port or an\n\t\t\tIP address and a port. The IoT client instantiates the local proxy, which uses this\n\t\t\tinformation to connect to the destination application.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -210,6 +229,21 @@
         },
         "com.amazonaws.iotsecuretunneling#IoTSecuredTunneling": {
             "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "IoTSecureTunneling",
+                    "arnNamespace": "iotsecuredtunneling",
+                    "cloudFormationName": "IoTSecureTunneling",
+                    "cloudTrailEventSource": "iotsecuretunneling.amazonaws.com",
+                    "endpointPrefix": "api.tunneling.iot"
+                },
+                "aws.auth#sigv4": {
+                    "name": "IoTSecuredTunneling"
+                },
+                "aws.protocols#awsJson1_1": {},
+                "smithy.api#documentation": "<fullname>IoT Secure Tunneling</fullname>\n\t\t       <p>IoT Secure Tunneling creates remote connections to devices deployed in the\n\t\t\tfield.</p>\n\t\t       <p>For more information about how IoT Secure Tunneling works, see <a href=\"https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html\">IoT\n\t\t\t\tSecure Tunneling</a>.</p>",
+                "smithy.api#title": "AWS IoT Secure Tunneling"
+            },
             "version": "2018-10-05",
             "operations": [
                 {
@@ -227,28 +261,16 @@
                 {
                     "target": "com.amazonaws.iotsecuretunneling#OpenTunnel"
                 },
+                {
+                    "target": "com.amazonaws.iotsecuretunneling#RotateTunnelAccessToken"
+                },
                 {
                     "target": "com.amazonaws.iotsecuretunneling#TagResource"
                 },
                 {
                     "target": "com.amazonaws.iotsecuretunneling#UntagResource"
                 }
-            ],
-            "traits": {
-                "aws.api#service": {
-                    "sdkId": "IoTSecureTunneling",
-                    "arnNamespace": "iotsecuredtunneling",
-                    "cloudFormationName": "IoTSecureTunneling",
-                    "cloudTrailEventSource": "iotsecuretunneling.amazonaws.com",
-                    "endpointPrefix": "api.tunneling.iot"
-                },
-                "aws.auth#sigv4": {
-                    "name": "iotsecuredtunneling"
-                },
-                "aws.protocols#awsJson1_1": {},
-                "smithy.api#documentation": "<fullname>AWS IoT Secure Tunneling</fullname>\n\t\t       <p>AWS IoT Secure Tunnling enables you to create remote connections to devices\n\t\t\tdeployed in the field.</p>\n\t\t\n\t\t       <p>For more information about how AWS IoT Secure Tunneling works, see <a href=\"https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html\">AWS IoT Secure Tunneling</a>.</p>",
-                "smithy.api#title": "AWS IoT Secure Tunneling"
-            }
+            ]
         },
         "com.amazonaws.iotsecuretunneling#LimitExceededException": {
             "type": "structure",
@@ -258,6 +280,10 @@
                 }
             },
             "traits": {
+                "aws.protocols#awsQueryError": {
+                    "code": "LimitExceededException",
+                    "httpResponseCode": 403
+                },
                 "smithy.api#documentation": "<p>Thrown when a tunnel limit is exceeded.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 403
@@ -318,7 +344,7 @@
                 "target": "com.amazonaws.iotsecuretunneling#ListTunnelsResponse"
             },
             "traits": {
-                "smithy.api#documentation": "<p>List all tunnels for an AWS account. Tunnels are listed by creation time in\n\t\t\tdescending order, newer tunnels will be listed before older tunnels.</p>",
+                "smithy.api#documentation": "<p>List all tunnels for an Amazon Web Services account. Tunnels are listed by creation time in\n\t\t\tdescending order, newer tunnels will be listed before older tunnels.</p>\n\t\t       <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">ListTunnels</a> action.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/tunnels",
@@ -352,7 +378,7 @@
                 "nextToken": {
                     "target": "com.amazonaws.iotsecuretunneling#NextToken",
                     "traits": {
-                        "smithy.api#documentation": "<p>A token to retrieve the next set of results.</p>",
+                        "smithy.api#documentation": "<p>To retrieve the next set of results, the nextToken value from a previous response;\n\t\t\totherwise null to receive the first set of results.</p>",
                         "smithy.api#httpQuery": "nextToken"
                     }
                 }
@@ -364,13 +390,13 @@
                 "tunnelSummaries": {
                     "target": "com.amazonaws.iotsecuretunneling#TunnelSummaryList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A short description of the tunnels in an AWS account.</p>"
+                        "smithy.api#documentation": "<p>A short description of the tunnels in an Amazon Web Services account.</p>"
                     }
                 },
                 "nextToken": {
                     "target": "com.amazonaws.iotsecuretunneling#NextToken",
                     "traits": {
-                        "smithy.api#documentation": "<p>A token to used to retrieve the next set of results.</p>"
+                        "smithy.api#documentation": "<p>The token to use to get the next set of results, or null if there are no additional\n\t\t\tresults.</p>"
                     }
                 }
             }
@@ -387,7 +413,7 @@
         "com.amazonaws.iotsecuretunneling#NextToken": {
             "type": "string",
             "traits": {
-                "smithy.api#pattern": "[a-zA-Z0-9_=-]{1,4096}"
+                "smithy.api#pattern": "^[a-zA-Z0-9_=-]{1,4096}$"
             }
         },
         "com.amazonaws.iotsecuretunneling#OpenTunnel": {
@@ -404,7 +430,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Creates a new tunnel, and returns two client access tokens for clients to use to\n\t\t\tconnect to the AWS IoT Secure Tunneling proxy server.</p>",
+                "smithy.api#documentation": "<p>Creates a new tunnel, and returns two client access tokens for clients to use to\n\t\t\tconnect to the IoT Secure Tunneling proxy server.</p>\n\t\t       <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">OpenTunnel</a> action.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/tunnels",
@@ -453,19 +479,19 @@
                 "tunnelArn": {
                     "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name for the tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
+                        "smithy.api#documentation": "<p>The Amazon Resource Name for the tunnel.</p>"
                     }
                 },
                 "sourceAccessToken": {
                     "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
                     "traits": {
-                        "smithy.api#documentation": "<p>The access token the source local proxy uses to connect to AWS IoT Secure\n\t\t\tTunneling.</p>"
+                        "smithy.api#documentation": "<p>The access token the source local proxy uses to connect to IoT Secure\n\t\t\tTunneling.</p>"
                     }
                 },
                 "destinationAccessToken": {
                     "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
                     "traits": {
-                        "smithy.api#documentation": "<p>The access token the destination local proxy uses to connect to AWS IoT Secure\n\t\t\tTunneling.</p>"
+                        "smithy.api#documentation": "<p>The access token the destination local proxy uses to connect to IoT Secure\n\t\t\tTunneling.</p>"
                     }
                 }
             }
@@ -478,11 +504,83 @@
                 }
             },
             "traits": {
+                "aws.protocols#awsQueryError": {
+                    "code": "ResourceNotFoundException",
+                    "httpResponseCode": 404
+                },
                 "smithy.api#documentation": "<p>Thrown when an operation is attempted on a resource that does not exist.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 404
             }
         },
+        "com.amazonaws.iotsecuretunneling#RotateTunnelAccessToken": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.iotsecuretunneling#RotateTunnelAccessTokenRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.iotsecuretunneling#RotateTunnelAccessTokenResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.iotsecuretunneling#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Revokes the current client access token (CAT) and returns new CAT for clients to\n\t\t\tuse when reconnecting to secure tunneling to access the same tunnel.</p>\n\t\t       <p>Requires permission to access the <a href=\"https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiot.html#awsiot-actions-as-permissions\">RotateTunnelAccessToken</a> action.</p>\n\t\t       <note>\n\t\t\t         <p>Rotating the CAT doesn't extend the tunnel duration. For example, say the tunnel\n\t\t\t\tduration is 12 hours and the tunnel has already been open for 4 hours. When you\n\t\t\t\trotate the access tokens, the new tokens that are generated can only be used for the\n\t\t\t\tremaining 8 hours.</p>\n\t\t       </note>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/tunnel/{tunnelId}/rotate",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.iotsecuretunneling#RotateTunnelAccessTokenRequest": {
+            "type": "structure",
+            "members": {
+                "tunnelId": {
+                    "target": "com.amazonaws.iotsecuretunneling#TunnelId",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The tunnel for which you want to rotate the access tokens.</p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                },
+                "clientMode": {
+                    "target": "com.amazonaws.iotsecuretunneling#ClientMode",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The mode of the client that will use the client token, which can be either the source\n\t\t\tor destination, or both source and destination.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "destinationConfig": {
+                    "target": "com.amazonaws.iotsecuretunneling#DestinationConfig"
+                }
+            }
+        },
+        "com.amazonaws.iotsecuretunneling#RotateTunnelAccessTokenResponse": {
+            "type": "structure",
+            "members": {
+                "tunnelArn": {
+                    "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name for the tunnel.</p>"
+                    }
+                },
+                "sourceAccessToken": {
+                    "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The client access token that the source local proxy uses to connect to IoT Secure\n\t\t\tTunneling.</p>"
+                    }
+                },
+                "destinationAccessToken": {
+                    "target": "com.amazonaws.iotsecuretunneling#ClientAccessToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The client access token that the destination local proxy uses to connect to IoT\n\t\t\tSecure Tunneling.</p>"
+                    }
+                }
+            }
+        },
         "com.amazonaws.iotsecuretunneling#Service": {
             "type": "string",
             "traits": {
@@ -490,7 +588,7 @@
                     "min": 1,
                     "max": 128
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9:_-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9:_-]+$"
             }
         },
         "com.amazonaws.iotsecuretunneling#ServiceList": {
@@ -622,7 +720,7 @@
                     "min": 1,
                     "max": 128
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9:_-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9:_-]+$"
             }
         },
         "com.amazonaws.iotsecuretunneling#TimeoutConfig": {
@@ -661,7 +759,7 @@
                 "tunnelArn": {
                     "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of a tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of a tunnel.</p>"
                     }
                 },
                 "status": {
@@ -735,7 +833,7 @@
         "com.amazonaws.iotsecuretunneling#TunnelId": {
             "type": "string",
             "traits": {
-                "smithy.api#pattern": "[a-zA-Z0-9_\\-+=:]{1,128}"
+                "smithy.api#pattern": "^[a-zA-Z0-9_\\-+=:]{1,128}$"
             }
         },
         "com.amazonaws.iotsecuretunneling#TunnelStatus": {
@@ -765,7 +863,7 @@
                 "tunnelArn": {
                     "target": "com.amazonaws.iotsecuretunneling#TunnelArn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name of the tunnel. The tunnel ARN format is\n\t\t\t\t<code>arn:aws:tunnel:<region>:<account-id>:tunnel/<tunnel-id></code>\n         </p>"
+                        "smithy.api#documentation": "<p>The Amazon Resource Name of the tunnel. </p>"
                     }
                 },
                 "status": {
diff --git a/aws/sdk/aws-models/ivschat.json b/aws/sdk/aws-models/ivschat.json
new file mode 100644
index 0000000000000000000000000000000000000000..c8938e1a7ab53c4114635bbf7984a777824a4229
--- /dev/null
+++ b/aws/sdk/aws-models/ivschat.json
@@ -0,0 +1,1626 @@
+{
+    "smithy": "1.0",
+    "shapes": {
+        "com.amazonaws.ivschat#AccessDeniedException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 403
+            }
+        },
+        "com.amazonaws.ivschat#AmazonInteractiveVideoServiceChat": {
+            "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "ivschat",
+                    "arnNamespace": "ivschat",
+                    "cloudFormationName": "IVSChat",
+                    "cloudTrailEventSource": "REPLACE_WITH_EVENT_SOURCE",
+                    "endpointPrefix": "ivschat"
+                },
+                "aws.auth#sigv4": {
+                    "name": "ivschat"
+                },
+                "aws.protocols#restJson1": {},
+                "smithy.api#cors": {
+                    "additionalAllowedHeaders": [
+                        "amz-sdk-invocation-id",
+                        "amz-sdk-request",
+                        "X-Api-Key",
+                        "X-Amz-Content-Sha256",
+                        "Content-Type",
+                        "X-Amz-User-Agent"
+                    ],
+                    "additionalExposedHeaders": [
+                        "date",
+                        "x-amz-apigw-id",
+                        "x-amzn-trace-id",
+                        "x-amzn-errortype",
+                        "x-amzn-requestid",
+                        "x-amzn-errormessage"
+                    ]
+                },
+                "smithy.api#documentation": "<p>\n            <b>Introduction</b>\n         </p>\n         <p>The Amazon IVS Chat control-plane API enables you to create and manage Amazon IVS Chat\n      resources. You also need to integrate with the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/chat-messaging-api.html\"> Amazon IVS Chat Messaging\n        API</a>, to enable users to interact with chat rooms in real time.</p>\n         <p>The API is an AWS regional service. For a list of supported regions and Amazon IVS Chat\n      HTTPS service endpoints, see the Amazon IVS Chat information on the <a href=\"https://docs.aws.amazon.com/general/latest/gr/ivs.html\">Amazon IVS page</a> in the\n        <i>AWS General Reference</i>. </p>\n         <p>\n            <b>Notes on terminology:</b>\n         </p>\n         <ul>\n            <li>\n               <p>You create service applications using the Amazon IVS Chat API. We refer to these as\n            <i>applications</i>.</p>\n            </li>\n            <li>\n               <p>You create front-end client applications (browser and Android/iOS apps) using the\n          Amazon IVS Chat Messaging API. We refer to these as <i>clients</i>. </p>\n            </li>\n         </ul>\n\n         <p>\n            <b>Resources</b>\n         </p>\n         <p>The following resource is part of Amazon IVS Chat:</p>\n         <ul>\n            <li>\n               <p>\n                  <b>Room</b> — The central Amazon IVS Chat resource through\n          which clients connect to and exchange chat messages. See the Room endpoints for more\n          information.</p>\n            </li>\n         </ul>\n\n         <p>\n            <b>API Access Security</b>\n         </p>\n         <p>Your Amazon IVS Chat applications (service applications and clients) must be authenticated\n      and authorized to access Amazon IVS Chat resources. Note the differences between these\n      concepts:</p>\n         <ul>\n            <li>\n               <p>\n                  <i>Authentication</i> is about verifying identity. Requests to the\n          Amazon IVS Chat API must be signed to verify your identity.</p>\n            </li>\n            <li>\n               <p>\n                  <i>Authorization</i> is about granting permissions. Your IAM roles need\n          to have permissions for Amazon IVS Chat API requests.</p>\n            </li>\n         </ul>\n         <p>Users (viewers) connect to a room using secure access tokens that you create using the\n        <a>CreateChatToken</a> endpoint through the AWS SDK. You call CreateChatToken for\n      every user’s chat session, passing identity and authorization information about the\n      user.</p>\n         <p>\n            <b>Signing API Requests</b>\n         </p>\n         <p>HTTP API requests must be signed with an AWS SigV4 signature using your AWS security\n      credentials. The AWS Command Line Interface (CLI) and the AWS SDKs take care of signing the\n      underlying API calls for you. However, if your application calls the Amazon IVS Chat HTTP API\n      directly, it’s your responsibility to sign the requests.</p>\n\n\n\n\n         <p>You generate a signature using valid AWS credentials for an IAM role that has permission\n      to perform the requested action. For example, DeleteMessage requests must be made using an IAM\n      role that has the <code>ivschat:DeleteMessage</code> permission.</p>\n         <p>For more information:</p>\n         <ul>\n            <li>\n               <p>Authentication and generating signatures — See <a href=\"https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html\">Authenticating Requests\n              (Amazon Web Services Signature Version 4)</a> in the <i>Amazon Web Services\n            General Reference</i>.</p>\n            </li>\n            <li>\n               <p>Managing Amazon IVS permissions — See <a href=\"https://docs.aws.amazon.com/ivs/latest/userguide/security-iam.html\">Identity and Access Management</a> on\n          the Security page of the <i>Amazon IVS User Guide</i>.</p>\n            </li>\n         </ul>\n\n         <p>\n            <b>Messaging Endpoints</b>\n         </p>\n         <ul>\n            <li>\n               <p>\n                  <a>DeleteMessage</a> — Sends an event to a specific room which\n          directs clients to delete a specific message; that is, unrender it from view and delete it\n          from the client’s chat history. This event’s <code>EventName</code> is\n          <code>aws:DELETE_MESSAGE</code>. This replicates the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/actions-deletemessage-publish.html\"> DeleteMessage</a> WebSocket operation\n          in the Amazon IVS Chat Messaging API.</p>\n            </li>\n            <li>\n               <p>\n                  <a>DisconnectUser</a> — Disconnects all connections using a specified\n          user ID from a room. This replicates the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/actions-disconnectuser-publish.html\"> DisconnectUser</a> WebSocket operation\n          in the Amazon IVS Chat Messaging API.</p>\n            </li>\n            <li>\n               <p>\n                  <a>SendEvent</a> — Sends an event to a room. Use this within your\n          application’s business logic to send events to clients of a room; e.g., to notify clients\n          to change the way the chat UI is rendered.</p>\n            </li>\n         </ul>\n         <p>\n            <b>Chat Token Endpoint</b>\n         </p>\n         <ul>\n            <li>\n               <p>\n                  <a>CreateChatToken</a> — Creates an encrypted token that is used to\n          establish an individual WebSocket connection to a room. The token is valid for one minute,\n          and a connection (session) established with the token is valid for the specified\n          duration.</p>\n            </li>\n         </ul>\n\n\n         <p>\n            <b>Room Endpoints</b>\n         </p>\n         <ul>\n            <li>\n               <p>\n                  <a>CreateRoom</a> — Creates a room that allows clients to connect and\n          pass messages.</p>\n            </li>\n            <li>\n               <p>\n                  <a>DeleteRoom</a> — Deletes the specified room.</p>\n            </li>\n            <li>\n               <p>\n                  <a>GetRoom</a> — Gets the specified room.</p>\n            </li>\n            <li>\n               <p>\n                  <a>ListRooms</a> — Gets summary information about all your rooms in\n          the AWS region where the API request is processed. </p>\n            </li>\n            <li>\n               <p>\n                  <a>UpdateRoom</a> — Updates a room’s configuration.</p>\n            </li>\n         </ul>\n\n         <p>\n            <b>Tags Endpoints</b>\n         </p>\n         <ul>\n            <li>\n               <p>\n                  <a>ListTagsForResource</a> — Gets information about AWS tags for the\n          specified ARN.</p>\n            </li>\n            <li>\n               <p>\n                  <a>TagResource</a> — Adds or updates tags for the AWS resource with\n          the specified ARN.</p>\n            </li>\n            <li>\n               <p>\n                  <a>UntagResource</a> — Removes tags from the resource with the\n          specified ARN.</p>\n            </li>\n         </ul>\n\n\n         <p>All the above are HTTP operations. There is a separate <i>messaging</i> API\n      for managing Chat resources; see the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/chat-messaging-api.html\"> Amazon IVS Chat Messaging API\n        Reference</a>.</p>",
+                "smithy.api#title": "Amazon Interactive Video Service Chat"
+            },
+            "version": "2020-07-14",
+            "operations": [
+                {
+                    "target": "com.amazonaws.ivschat#CreateChatToken"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#CreateRoom"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#DeleteMessage"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#DeleteRoom"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#DisconnectUser"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#GetRoom"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ListRooms"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ListTagsForResource"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#SendEvent"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#TagResource"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#UntagResource"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#UpdateRoom"
+                }
+            ]
+        },
+        "com.amazonaws.ivschat#ChatToken": {
+            "type": "string"
+        },
+        "com.amazonaws.ivschat#ChatTokenAttributes": {
+            "type": "map",
+            "key": {
+                "target": "com.amazonaws.ivschat#String"
+            },
+            "value": {
+                "target": "com.amazonaws.ivschat#String"
+            }
+        },
+        "com.amazonaws.ivschat#ChatTokenCapabilities": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.ivschat#ChatTokenCapability"
+            }
+        },
+        "com.amazonaws.ivschat#ChatTokenCapability": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "SEND_MESSAGE",
+                        "name": "SEND_MESSAGE"
+                    },
+                    {
+                        "value": "DISCONNECT_USER",
+                        "name": "DISCONNECT_USER"
+                    },
+                    {
+                        "value": "DELETE_MESSAGE",
+                        "name": "DELETE_MESSAGE"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.ivschat#ConflictException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceId": {
+                    "target": "com.amazonaws.ivschat#ResourceId",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceType": {
+                    "target": "com.amazonaws.ivschat#ResourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 409
+            }
+        },
+        "com.amazonaws.ivschat#CreateChatToken": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#CreateChatTokenRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#CreateChatTokenResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#PendingVerification"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Creates an encrypted token that is used to establish an individual WebSocket connection\n         to a room. The token is valid for one minute, and a connection (session) established with\n         the token is valid for the specified duration.</p>\n         <p>Encryption keys are owned by Amazon IVS Chat and never used directly by your\n         application.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/CreateChatToken",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#CreateChatTokenRequest": {
+            "type": "structure",
+            "members": {
+                "roomIdentifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room that the client is trying to access. Currently this must be an\n         ARN. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "userId": {
+                    "target": "com.amazonaws.ivschat#UserID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Application-provided ID that uniquely identifies the user associated with this token.\n         This can be any UTF-8 encoded text.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "capabilities": {
+                    "target": "com.amazonaws.ivschat#ChatTokenCapabilities",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Set of capabilities that the user is allowed to perform in the room. Default: None (the\n         capability to view messages is implicitly included in all requests).</p>"
+                    }
+                },
+                "sessionDurationInMinutes": {
+                    "target": "com.amazonaws.ivschat#SessionDurationInMinutes",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Session duration (in minutes), after which the session expires. Default: 60 (1\n         hour).</p>"
+                    }
+                },
+                "attributes": {
+                    "target": "com.amazonaws.ivschat#ChatTokenAttributes",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Application-provided attributes to encode into the token and attach to a chat session.\n         Map keys and values can contain UTF-8 encoded text. The maximum length of this field is 1\n         KB total.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#CreateChatTokenResponse": {
+            "type": "structure",
+            "members": {
+                "token": {
+                    "target": "com.amazonaws.ivschat#ChatToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The issued client token, encrypted.</p>"
+                    }
+                },
+                "tokenExpirationTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time after which the token is no longer valid and cannot be used to connect to a room.\n         This is an ISO 8601 timestamp; <i>note that this is returned as a\n         string</i>.</p>"
+                    }
+                },
+                "sessionExpirationTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time after which an end user's session is no longer valid. This is an ISO 8601\n         timestamp; <i>note that this is returned as a string</i>.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#CreateRoom": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#CreateRoomRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#CreateRoomResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ConflictException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#PendingVerification"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ServiceQuotaExceededException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Creates a room that allows clients to connect and pass messages.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/CreateRoom",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#CreateRoomRequest": {
+            "type": "structure",
+            "members": {
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name. The value does not need to be unique.</p>"
+                    }
+                },
+                "maximumMessageRatePerSecond": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of messages per second that a client can send to the room. Default:\n         10.</p>"
+                    }
+                },
+                "maximumMessageLength": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageLength",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of characters in a single message. Messages are expected to be UTF-8\n         encoded and this limit applies specifically to rune/code-point count, not number of bytes.\n         Default: 500.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages.</p>"
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags to attach to the resource. Array of maps, each of the form <code>string:string\n            (key:value)</code>. </p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#CreateRoomResponse": {
+            "type": "structure",
+            "members": {
+                "arn": {
+                    "target": "com.amazonaws.ivschat#RoomArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ARN, assigned by the system.</p>"
+                    }
+                },
+                "id": {
+                    "target": "com.amazonaws.ivschat#RoomID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ID, generated by the system. This is a relative identifier, the part of the ARN\n         that uniquely identifies the room.</p>"
+                    }
+                },
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name, from the request (if specified).</p>"
+                    }
+                },
+                "createTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time when the room was created. This is an ISO 8601 timestamp; <i>note that this\n            is returned as a string</i>.</p>"
+                    }
+                },
+                "updateTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time of the room’s last update. This is an ISO 8601 timestamp; <i>note that this\n            is returned as a string</i>.</p>"
+                    }
+                },
+                "maximumMessageRatePerSecond": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of messages per second that a client can send to the room, from the\n         request.</p>"
+                    }
+                },
+                "maximumMessageLength": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageLength",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of characters in a single message, from the request.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages.</p>"
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags attached to the resource, from the request.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DeleteMessage": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#DeleteMessageRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#DeleteMessageResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ThrottlingException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Sends an event to a specific room which directs clients to delete a specific message;\n         that is, unrender it from view and delete it from the client’s chat history. This event’s\n         <code>EventName</code> is <code>aws:DELETE_MESSAGE</code>. This replicates the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/actions-deletemessage-publish.html\"> DeleteMessage</a> WebSocket operation\n         in the Amazon IVS Chat Messaging API.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/DeleteMessage",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DeleteMessageRequest": {
+            "type": "structure",
+            "members": {
+                "roomIdentifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room where the message should be deleted. Currently this must be an\n         ARN. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "id": {
+                    "target": "com.amazonaws.ivschat#MessageID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>ID of the message to be deleted. This is the <code>Id</code> field in the received\n         message (see <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/actions-message-subscribe.html\"> Message\n            (Subscribe)</a> in the Chat Messaging API).</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "reason": {
+                    "target": "com.amazonaws.ivschat#Reason",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Reason for deleting the message.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DeleteMessageResponse": {
+            "type": "structure",
+            "members": {
+                "id": {
+                    "target": "com.amazonaws.ivschat#ID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Operation identifier, generated by Amazon IVS Chat.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DeleteRoom": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#DeleteRoomRequest"
+            },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Deletes the specified room.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/DeleteRoom",
+                    "code": 204
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DeleteRoomRequest": {
+            "type": "structure",
+            "members": {
+                "identifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room to be deleted. Currently this must be an ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DisconnectUser": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#DisconnectUserRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#DisconnectUserResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ThrottlingException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Disconnects all connections using a specified user ID from a room. This replicates the <a href=\"https://docs.aws.amazon.com/ivs/latest/chatmsgapireference/actions-disconnectuser-publish.html\"> DisconnectUser</a> WebSocket operation\n         in the Amazon IVS Chat Messaging API.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/DisconnectUser",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DisconnectUserRequest": {
+            "type": "structure",
+            "members": {
+                "roomIdentifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room from which the user's clients should be disconnected. Currently\n         this must be an ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "userId": {
+                    "target": "com.amazonaws.ivschat#UserID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>ID of the user (connection) to disconnect from the room.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "reason": {
+                    "target": "com.amazonaws.ivschat#Reason",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Reason for disconnecting the user.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#DisconnectUserResponse": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.ivschat#ErrorMessage": {
+            "type": "string"
+        },
+        "com.amazonaws.ivschat#EventAttributes": {
+            "type": "map",
+            "key": {
+                "target": "com.amazonaws.ivschat#String"
+            },
+            "value": {
+                "target": "com.amazonaws.ivschat#String"
+            }
+        },
+        "com.amazonaws.ivschat#EventName": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 100
+                }
+            }
+        },
+        "com.amazonaws.ivschat#FallbackResult": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ALLOW",
+                        "name": "ALLOW"
+                    },
+                    {
+                        "value": "DENY",
+                        "name": "DENY"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.ivschat#FieldName": {
+            "type": "string"
+        },
+        "com.amazonaws.ivschat#GetRoom": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#GetRoomRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#GetRoomResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets the specified room.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/GetRoom",
+                    "code": 200
+                },
+                "smithy.api#readonly": {}
+            }
+        },
+        "com.amazonaws.ivschat#GetRoomRequest": {
+            "type": "structure",
+            "members": {
+                "identifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room for which the configuration is to be retrieved. Currently this\n         must be an ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#GetRoomResponse": {
+            "type": "structure",
+            "members": {
+                "arn": {
+                    "target": "com.amazonaws.ivschat#RoomArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ARN, from the request (if <code>identifier</code> was an ARN).</p>"
+                    }
+                },
+                "id": {
+                    "target": "com.amazonaws.ivschat#RoomID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ID, generated by the system. This is a relative identifier, the part of the ARN\n         that uniquely identifies the room.</p>"
+                    }
+                },
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name. The value does not need to be unique.</p>"
+                    }
+                },
+                "createTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time when the room was created. This is an ISO 8601 timestamp; <i>note that this\n            is returned as a string</i>.</p>"
+                    }
+                },
+                "updateTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time of the room’s last update. This is an ISO 8601 timestamp; <i>note that this\n            is returned as a string</i>.</p>"
+                    }
+                },
+                "maximumMessageRatePerSecond": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of messages per second that a client can send to the room. Default:\n         10.</p>"
+                    }
+                },
+                "maximumMessageLength": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageLength",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of characters in a single message. Messages are expected to be UTF-8\n         encoded and this limit applies specifically to rune/code-point count, not number of bytes.\n         Default: 500.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages.</p>"
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags attached to the resource. Array of maps, each of the form <code>string:string\n            (key:value)</code>.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ID": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 12,
+                    "max": 12
+                },
+                "smithy.api#pattern": "^[a-zA-Z0-9]+$"
+            }
+        },
+        "com.amazonaws.ivschat#InternalServerException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "server",
+                "smithy.api#httpError": 500
+            }
+        },
+        "com.amazonaws.ivschat#LambdaArn": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 170
+                },
+                "smithy.api#pattern": "^$|^arn:aws:lambda:[a-z0-9-]+:[0-9]{12}:function:.+"
+            }
+        },
+        "com.amazonaws.ivschat#Limit": {
+            "type": "integer"
+        },
+        "com.amazonaws.ivschat#ListRooms": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#ListRoomsRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#ListRoomsResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets summary information about all your rooms in the AWS region where the API request is\n         processed. Results are sorted in descending order of <code>updateTime</code>.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/ListRooms",
+                    "code": 200
+                },
+                "smithy.api#paginated": {
+                    "inputToken": "nextToken",
+                    "outputToken": "nextToken",
+                    "pageSize": "maxResults"
+                },
+                "smithy.api#readonly": {}
+            }
+        },
+        "com.amazonaws.ivschat#ListRoomsRequest": {
+            "type": "structure",
+            "members": {
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Filters the list to match the specified room name.</p>"
+                    }
+                },
+                "nextToken": {
+                    "target": "com.amazonaws.ivschat#PaginationToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The first room to retrieve. This is used for pagination; see the <code>nextToken</code>\n         response field.</p>"
+                    }
+                },
+                "maxResults": {
+                    "target": "com.amazonaws.ivschat#MaxRoomResults",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of rooms to return. Default: 50.</p>"
+                    }
+                },
+                "messageReviewHandlerUri": {
+                    "target": "com.amazonaws.ivschat#LambdaArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Filters the list to match the specified message review handler URI.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ListRoomsResponse": {
+            "type": "structure",
+            "members": {
+                "rooms": {
+                    "target": "com.amazonaws.ivschat#RoomList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>List of the matching rooms (summary information only).</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "nextToken": {
+                    "target": "com.amazonaws.ivschat#PaginationToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>If there are more rooms than <code>maxResults</code>, use <code>nextToken</code> in the\n         request to get the next set.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ListTagsForResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#ListTagsForResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#ListTagsForResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#InternalServerException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets information about AWS tags for the specified ARN.</p>",
+                "smithy.api#http": {
+                    "method": "GET",
+                    "uri": "/tags/{resourceArn}",
+                    "code": 200
+                },
+                "smithy.api#readonly": {}
+            }
+        },
+        "com.amazonaws.ivschat#ListTagsForResourceRequest": {
+            "type": "structure",
+            "members": {
+                "resourceArn": {
+                    "target": "com.amazonaws.ivschat#ResourceArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of the resource to be retrieved. The ARN must be URL-encoded.</p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ListTagsForResourceResponse": {
+            "type": "structure",
+            "members": {
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags to attach to the resource. Array of maps, each of the form <code>string:string\n            (key:value)</code>.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#MaxRoomResults": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 50
+                }
+            }
+        },
+        "com.amazonaws.ivschat#MessageID": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 12,
+                    "max": 12
+                },
+                "smithy.api#pattern": "^[a-zA-Z0-9]+$"
+            }
+        },
+        "com.amazonaws.ivschat#MessageReviewHandler": {
+            "type": "structure",
+            "members": {
+                "uri": {
+                    "target": "com.amazonaws.ivschat#LambdaArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the message review handler. Currently this must be an ARN of a lambda function.</p>"
+                    }
+                },
+                "fallbackResult": {
+                    "target": "com.amazonaws.ivschat#FallbackResult",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Specifies the fallback behavior (whether the message is allowed or denied) if the handler\n      does not return a valid response, encounters an error or times out. If allowed, the message is\n      delivered with returned content to all users connected to the room. If denied, the message is\n      not delivered to any user. Default: <code>ALLOW</code>.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Configuration information for optional message review.</p>"
+            }
+        },
+        "com.amazonaws.ivschat#PaginationToken": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 1024
+                }
+            }
+        },
+        "com.amazonaws.ivschat#PendingVerification": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 403
+            }
+        },
+        "com.amazonaws.ivschat#Reason": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 256
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ResourceArn": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                },
+                "smithy.api#pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:[a-z-]/[a-zA-Z0-9-]+$"
+            }
+        },
+        "com.amazonaws.ivschat#ResourceId": {
+            "type": "string",
+            "traits": {
+                "smithy.api#pattern": "^[a-zA-Z0-9]+$"
+            }
+        },
+        "com.amazonaws.ivschat#ResourceNotFoundException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceId": {
+                    "target": "com.amazonaws.ivschat#ResourceId",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceType": {
+                    "target": "com.amazonaws.ivschat#ResourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 404
+            }
+        },
+        "com.amazonaws.ivschat#ResourceType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ROOM",
+                        "name": "ROOM"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.ivschat#RoomArn": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                },
+                "smithy.api#pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:room/[a-zA-Z0-9-]+$"
+            }
+        },
+        "com.amazonaws.ivschat#RoomID": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 12,
+                    "max": 12
+                },
+                "smithy.api#pattern": "^[a-zA-Z0-9]+$"
+            }
+        },
+        "com.amazonaws.ivschat#RoomIdentifier": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                },
+                "smithy.api#pattern": "^arn:aws:ivschat:[a-z0-9-]+:[0-9]+:room/[a-zA-Z0-9-]+$"
+            }
+        },
+        "com.amazonaws.ivschat#RoomList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.ivschat#RoomSummary"
+            }
+        },
+        "com.amazonaws.ivschat#RoomMaxMessageLength": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 500
+                }
+            }
+        },
+        "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 10
+                }
+            }
+        },
+        "com.amazonaws.ivschat#RoomName": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "max": 128
+                },
+                "smithy.api#pattern": "^[a-zA-Z0-9-_]*$"
+            }
+        },
+        "com.amazonaws.ivschat#RoomSummary": {
+            "type": "structure",
+            "members": {
+                "arn": {
+                    "target": "com.amazonaws.ivschat#RoomArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ARN.</p>"
+                    }
+                },
+                "id": {
+                    "target": "com.amazonaws.ivschat#RoomID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ID, generated by the system. This is a relative identifier, the part of the ARN that\n      uniquely identifies the room.</p>"
+                    }
+                },
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name. The value does not need to be unique.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages.</p>"
+                    }
+                },
+                "createTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time when the room was created. This is an ISO 8601 timestamp; <i>note that this is\n        returned as a string</i>. </p>"
+                    }
+                },
+                "updateTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time of the room’s last update. This is an ISO 8601 timestamp; <i>note that this is\n        returned as a string</i>. </p>"
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags attached to the resource. </p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Summary information about a room.</p>"
+            }
+        },
+        "com.amazonaws.ivschat#SendEvent": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#SendEventRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#SendEventResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ThrottlingException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Sends an event to a room. Use this within your application’s business logic to send\n         events to clients of a room; e.g., to notify clients to change the way the chat UI is\n         rendered.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/SendEvent",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#SendEventRequest": {
+            "type": "structure",
+            "members": {
+                "roomIdentifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room to which the event will be sent. Currently this must be an\n         ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "eventName": {
+                    "target": "com.amazonaws.ivschat#EventName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Application-defined name of the event to send to clients.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "attributes": {
+                    "target": "com.amazonaws.ivschat#EventAttributes",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Application-defined metadata to attach to the event sent to clients. The maximum length\n         of the metadata is 1 KB total.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#SendEventResponse": {
+            "type": "structure",
+            "members": {
+                "id": {
+                    "target": "com.amazonaws.ivschat#ID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>An identifier generated by Amazon IVS Chat. This identifier must be used in subsequent\n         operations for this message, such as DeleteMessage.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ServiceQuotaExceededException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceId": {
+                    "target": "com.amazonaws.ivschat#ResourceId",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceType": {
+                    "target": "com.amazonaws.ivschat#ResourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "limit": {
+                    "target": "com.amazonaws.ivschat#Limit",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 402
+            }
+        },
+        "com.amazonaws.ivschat#SessionDurationInMinutes": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 180
+                }
+            }
+        },
+        "com.amazonaws.ivschat#String": {
+            "type": "string"
+        },
+        "com.amazonaws.ivschat#TagKey": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                }
+            }
+        },
+        "com.amazonaws.ivschat#TagKeyList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.ivschat#TagKey"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 50
+                }
+            }
+        },
+        "com.amazonaws.ivschat#TagResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#TagResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#TagResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#InternalServerException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Adds or updates tags for the AWS resource with the specified ARN.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/tags/{resourceArn}",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#TagResourceRequest": {
+            "type": "structure",
+            "members": {
+                "resourceArn": {
+                    "target": "com.amazonaws.ivschat#ResourceArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of the resource to be tagged. The ARN must be URL-encoded.</p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Array of tags to be added or updated.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#TagResourceResponse": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.ivschat#TagValue": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 256
+                }
+            }
+        },
+        "com.amazonaws.ivschat#Tags": {
+            "type": "map",
+            "key": {
+                "target": "com.amazonaws.ivschat#TagKey"
+            },
+            "value": {
+                "target": "com.amazonaws.ivschat#TagValue"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 50
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ThrottlingException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceId": {
+                    "target": "com.amazonaws.ivschat#ResourceId",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "resourceType": {
+                    "target": "com.amazonaws.ivschat#ResourceType",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "limit": {
+                    "target": "com.amazonaws.ivschat#Limit",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 429
+            }
+        },
+        "com.amazonaws.ivschat#Time": {
+            "type": "timestamp",
+            "traits": {
+                "smithy.api#timestampFormat": "date-time"
+            }
+        },
+        "com.amazonaws.ivschat#UntagResource": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#UntagResourceRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#UntagResourceResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#InternalServerException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Removes tags from the resource with the specified ARN.</p>",
+                "smithy.api#http": {
+                    "method": "DELETE",
+                    "uri": "/tags/{resourceArn}",
+                    "code": 200
+                },
+                "smithy.api#idempotent": {}
+            }
+        },
+        "com.amazonaws.ivschat#UntagResourceRequest": {
+            "type": "structure",
+            "members": {
+                "resourceArn": {
+                    "target": "com.amazonaws.ivschat#ResourceArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The ARN of the resource to be untagged. The ARN must be URL-encoded.</p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                },
+                "tagKeys": {
+                    "target": "com.amazonaws.ivschat#TagKeyList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Array of tags to be removed.</p>",
+                        "smithy.api#httpQuery": "tagKeys",
+                        "smithy.api#required": {}
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#UntagResourceResponse": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.ivschat#UpdateRoom": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.ivschat#UpdateRoomRequest"
+            },
+            "output": {
+                "target": "com.amazonaws.ivschat#UpdateRoomResponse"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.ivschat#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ResourceNotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.ivschat#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Updates a room’s configuration.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/UpdateRoom",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.ivschat#UpdateRoomRequest": {
+            "type": "structure",
+            "members": {
+                "identifier": {
+                    "target": "com.amazonaws.ivschat#RoomIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Identifier of the room to be updated. Currently this must be an ARN.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name. The value does not need to be unique.</p>"
+                    }
+                },
+                "maximumMessageRatePerSecond": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The maximum number of messages per second that a client can send to the room. Default:\n         10.</p>"
+                    }
+                },
+                "maximumMessageLength": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageLength",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The maximum number of characters in a single message. Messages are expected to be UTF-8\n         encoded and this limit applies specifically to rune/code-point count, not number of bytes.\n         Default: 500.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages. Specify an empty <code>uri</code> string to disassociate a message review handler from the specified room.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#UpdateRoomResponse": {
+            "type": "structure",
+            "members": {
+                "arn": {
+                    "target": "com.amazonaws.ivschat#RoomArn",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ARN, from the request (if <code>identifier</code> was an ARN).</p>"
+                    }
+                },
+                "id": {
+                    "target": "com.amazonaws.ivschat#RoomID",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room ID, generated by the system. This is a relative identifier, the part of the ARN\n         that uniquely identifies the room.</p>"
+                    }
+                },
+                "name": {
+                    "target": "com.amazonaws.ivschat#RoomName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Room name, from the request.</p>"
+                    }
+                },
+                "createTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time when the room was created. This is an ISO 8601 timestamp; <i>note that this\n            is returned as a string</i>.</p>"
+                    }
+                },
+                "updateTime": {
+                    "target": "com.amazonaws.ivschat#Time",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Time of the room’s last update. This is an ISO 8601 timestamp; <i>note\n               that this is returned as a string</i>.</p>"
+                    }
+                },
+                "maximumMessageRatePerSecond": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageRatePerSecond",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of messages per second that a client can send to the room, from the\n         request.</p>"
+                    }
+                },
+                "maximumMessageLength": {
+                    "target": "com.amazonaws.ivschat#RoomMaxMessageLength",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of characters in a single message, from the request.</p>"
+                    }
+                },
+                "messageReviewHandler": {
+                    "target": "com.amazonaws.ivschat#MessageReviewHandler",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Configuration information for optional review of messages.</p>"
+                    }
+                },
+                "tags": {
+                    "target": "com.amazonaws.ivschat#Tags",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Tags attached to the resource.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.ivschat#UserID": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 128
+                }
+            }
+        },
+        "com.amazonaws.ivschat#ValidationException": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#required": {}
+                    }
+                },
+                "reason": {
+                    "target": "com.amazonaws.ivschat#ValidationExceptionReason",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "fieldList": {
+                    "target": "com.amazonaws.ivschat#ValidationExceptionFieldList",
+                    "traits": {
+                        "smithy.api#documentation": "<p/>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p/>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 400
+            }
+        },
+        "com.amazonaws.ivschat#ValidationExceptionField": {
+            "type": "structure",
+            "members": {
+                "name": {
+                    "target": "com.amazonaws.ivschat#FieldName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Name of the field which failed validation.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "message": {
+                    "target": "com.amazonaws.ivschat#ErrorMessage",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Explanation of the reason for the validation error.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>This object is used in the ValidationException error.</p>"
+            }
+        },
+        "com.amazonaws.ivschat#ValidationExceptionFieldList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.ivschat#ValidationExceptionField"
+            }
+        },
+        "com.amazonaws.ivschat#ValidationExceptionReason": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "UNKNOWN_OPERATION",
+                        "name": "UNKNOWN_OPERATION"
+                    },
+                    {
+                        "value": "FIELD_VALIDATION_FAILED",
+                        "name": "FIELD_VALIDATION_FAILED"
+                    },
+                    {
+                        "value": "OTHER",
+                        "name": "OTHER"
+                    }
+                ]
+            }
+        }
+    }
+}
diff --git a/aws/sdk/aws-models/kendra.json b/aws/sdk/aws-models/kendra.json
index 7101e463c5580aa89f0b8e885eb660978a5ddac9..1b629f5081a6e5ccb01cafd4c68385dedfc7a177 100644
--- a/aws/sdk/aws-models/kendra.json
+++ b/aws/sdk/aws-models/kendra.json
@@ -4805,7 +4805,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A custom attribute value assigned to a document.</p>\n        <p>For more information on how to create custom document attributes, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html\">Custom \n                Attributes</a>.</p>"
+                "smithy.api#documentation": "<p>A document attribute or metadata field. To create custom document \n            attributes, see <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html\">Custom attributes</a>.</p>"
             }
         },
         "com.amazonaws.kendra#DocumentAttributeCondition": {
@@ -4934,7 +4934,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The value of a custom document attribute. You can only provide one\n            value for a custom attribute.</p>"
+                "smithy.api#documentation": "<p>The value of a document attribute. You can only provide one\n            value for a document attribute.</p>"
             }
         },
         "com.amazonaws.kendra#DocumentAttributeValueCountPair": {
@@ -4943,7 +4943,7 @@
                 "DocumentAttributeValue": {
                     "target": "com.amazonaws.kendra#DocumentAttributeValue",
                     "traits": {
-                        "smithy.api#documentation": "<p>The value of the attribute. For example, \"HR.\"</p>"
+                        "smithy.api#documentation": "<p>The value of the attribute. For example, \"HR\".</p>"
                     }
                 },
                 "Count": {
@@ -4951,6 +4951,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The number of documents in the response that have the attribute\n            value for the key.</p>"
                     }
+                },
+                "FacetResults": {
+                    "target": "com.amazonaws.kendra#FacetResultList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Contains the results of a document attribute that is a nested facet. \n            A <code>FacetResult</code> contains the counts for each facet nested \n            within a facet.</p>\n        <p>For example, the document attribute or facet \"Department\" includes a \n            value called \"Engineering\". In addition, the document attribute \n            or facet \"SubDepartment\" includes the values \"Frontend\" and \"Backend\" \n            for documents assigned to \"Engineering\". You can display nested facets \n            in the search results so that documents can be searched not only by \n            department but also by a sub department within a department. The counts \n            for documents that belong to \"Frontend\" and \"Backend\" within \"Engineering\" \n            are returned for a query.</p>"
+                    }
                 }
             },
             "traits": {
@@ -5619,10 +5625,22 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The unique key for the document attribute.</p>"
                     }
+                },
+                "Facets": {
+                    "target": "com.amazonaws.kendra#FacetList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>An array of document attributes that are nested facets within a facet.</p>\n         <p>For example, the document attribute or facet \"Department\" includes a \n         value called \"Engineering\". In addition, the document attribute or \n         facet \"SubDepartment\" includes the values \"Frontend\" and \"Backend\" for documents \n         assigned to \"Engineering\". You can display nested facets in the search results \n         so that documents can be searched not only by department but also by a sub \n         department within a department. This helps your users further narrow their \n         search.</p>\n         <p>You can only have one nested facet within a facet. If you want to increase \n         this limit, contact <a href=\"http://aws.amazon.com/contact-us/\">Support</a>.</p>"
+                    }
+                },
+                "MaxResults": {
+                    "target": "com.amazonaws.kendra#TopDocumentAttributeValueCountPairsSize",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Maximum number of facet values per facet. The default is 10. You can use \n         this to limit the number of facet values to less than 10. If you want to \n         increase the default, contact <a href=\"http://aws.amazon.com/contact-us/\">Support</a>.</p>"
+                    }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Information about a document attribute</p>"
+                "smithy.api#documentation": "<p>Information about a document attribute. You can use document \n         attributes as facets.</p>\n         <p>For example, the document attribute or facet \"Department\" includes \n         the values \"HR\", \"Engineering\", and \"Accounting\". You can display these \n         values in the search results so that documents can be searched by department.</p>\n         <p>You can display up to 10 facet values per facet for a query. If you want to \n         increase this limit, contact <a href=\"http://aws.amazon.com/contact-us/\">Support</a>.</p>"
             }
         },
         "com.amazonaws.kendra#FacetList": {
@@ -7283,7 +7301,12 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Gets a list of FAQ lists associated with an index.</p>"
+                "smithy.api#documentation": "<p>Gets a list of FAQ lists associated with an index.</p>",
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
             }
         },
         "com.amazonaws.kendra#ListFaqsRequest": {
@@ -7356,7 +7379,12 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Provides a list of groups that are mapped to users before a \n            given ordering or timestamp identifier.</p>\n        <p>\n            <code>ListGroupsOlderThanOrderingId</code> is currently not supported in the \n            Amazon Web Services GovCloud (US-West) region.</p>"
+                "smithy.api#documentation": "<p>Provides a list of groups that are mapped to users before a \n            given ordering or timestamp identifier.</p>\n        <p>\n            <code>ListGroupsOlderThanOrderingId</code> is currently not supported in the \n            Amazon Web Services GovCloud (US-West) region.</p>",
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
             }
         },
         "com.amazonaws.kendra#ListGroupsOlderThanOrderingIdRequest": {
@@ -7510,7 +7538,12 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists the block lists used for query suggestions for an index.</p>\n        <p>For information on the current quota limits for block lists, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/quotas.html\">Quotas \n                for Amazon Kendra</a>.</p>\n        <p>\n            <code>ListQuerySuggestionsBlockLists</code> is currently not supported in the \n            Amazon Web Services GovCloud (US-West) region.</p>"
+                "smithy.api#documentation": "<p>Lists the block lists used for query suggestions for an index.</p>\n        <p>For information on the current quota limits for block lists, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/quotas.html\">Quotas \n                for Amazon Kendra</a>.</p>\n        <p>\n            <code>ListQuerySuggestionsBlockLists</code> is currently not supported in the \n            Amazon Web Services GovCloud (US-West) region.</p>",
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
             }
         },
         "com.amazonaws.kendra#ListQuerySuggestionsBlockListsRequest": {
@@ -7632,7 +7665,12 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists the Amazon Kendra thesauri associated with an index.</p>"
+                "smithy.api#documentation": "<p>Lists the Amazon Kendra thesauri associated with an index.</p>",
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
             }
         },
         "com.amazonaws.kendra#ListThesauriRequest": {
@@ -8479,13 +8517,13 @@
                 "Facets": {
                     "target": "com.amazonaws.kendra#FacetList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An array of documents attributes. Amazon Kendra returns a count for\n         each attribute key specified. You can use this information to help\n         narrow the search for your user.</p>"
+                        "smithy.api#documentation": "<p>An array of documents attributes. Amazon Kendra returns a count for\n         each attribute key specified. This helps your users narrow their search.</p>"
                     }
                 },
                 "RequestedDocumentAttributes": {
                     "target": "com.amazonaws.kendra#DocumentAttributeKeyList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An array of document attributes to include in the response. No other\n         document attributes are included in the response. By default all\n         document attributes are included in the response. </p>"
+                        "smithy.api#documentation": "<p>An array of document attributes to include in the response. \n         You can limit the response to include certain document attributes. \n         By default all document attributes are included in the response.</p>"
                     }
                 },
                 "QueryResultTypeFilter": {
@@ -8627,7 +8665,7 @@
                 "DocumentAttributes": {
                     "target": "com.amazonaws.kendra#DocumentAttributeList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An array of document attributes for the document that the query\n         result maps to. For example, the document author (Author) or the source\n         URI (SourceUri) of the document.</p>"
+                        "smithy.api#documentation": "<p>An array of document attributes assigned to a document in \n         the search results. For example, the document author (<code>_author</code>) \n         or the source URI (<code>_source_uri</code>) of the document.</p>"
                     }
                 },
                 "ScoreAttributes": {
@@ -8812,33 +8850,33 @@
                 "Domain": {
                     "target": "com.amazonaws.kendra#Domain",
                     "traits": {
-                        "smithy.api#documentation": "<p>The configuration information to connect to your Quip data source domain.</p>",
+                        "smithy.api#documentation": "<p>The Quip site domain.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "SecretArn": {
                     "target": "com.amazonaws.kendra#SecretArn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of an Secrets Manager secret that contains the\n            key-value pairs\n            that are\n            required to connect to your Quip file system. Windows is currently the\n            only supported type. The secret must contain a JSON structure with the following\n            keys:</p>\n        <ul>\n            <li>\n                <p>username—The Active Directory user name, along with the Domain Name\n                    System (DNS) domain\n                    name. For example,\n                    <i>user@corp.example.com</i>.\n                    The Active Directory user account must have read and mounting access to the Quip\n                    file system for Windows.</p>\n            </li>\n            <li>\n                <p>password—The password of the Active Directory user account with \n                    read and mounting access to the Quip Windows file system.</p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of an Secrets Manager secret \n            that contains the key-value pairs that are required to connect to your \n            Quip. The secret must contain a JSON structure with the following keys:</p>\n        <ul>\n            <li>\n                <p>accessToken—The token created in Quip. For more information, \n                    see <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/data-source-slack.html#quip-authentication\">Authentication \n                        for a Quip data source</a>.</p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
                 "CrawlFileComments": {
                     "target": "com.amazonaws.kendra#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specify whether to crawl file comments in your Quip data source. \n            You can specify one or more of these options.</p>"
+                        "smithy.api#documentation": "<p>Specify whether to crawl file comments in Quip. \n            You can specify one or more of these options.</p>"
                     }
                 },
                 "CrawlChatRooms": {
                     "target": "com.amazonaws.kendra#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specify whether to crawl chat rooms in your Quip data source. \n            You can specify one or more of these options.</p>"
+                        "smithy.api#documentation": "<p>Specify whether to crawl chat rooms in Quip. \n            You can specify one or more of these options.</p>"
                     }
                 },
                 "CrawlAttachments": {
                     "target": "com.amazonaws.kendra#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specify whether to crawl attachments in your Quip data source. \n            You can specify one or more of these options.</p>"
+                        "smithy.api#documentation": "<p>Specify whether to crawl attachments in Quip. \n            You can specify one or more of these options.</p>"
                     }
                 },
                 "FolderIds": {
@@ -8850,37 +8888,37 @@
                 "ThreadFieldMappings": {
                     "target": "com.amazonaws.kendra#DataSourceToIndexFieldMappingList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of field mappings to apply when indexing Quip threads.</p>"
+                        "smithy.api#documentation": "<p>A list of <code>DataSourceToIndexFieldMapping</code> objects that map \n            attributes or field names of Quip threads to Amazon Kendra index \n            field names. To create custom fields, use the <code>UpdateIndex</code> \n            API before you map to Quip fields. For more information, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html\">Mapping \n                data source fields</a>. The Quip field names must exist in your \n            Quip custom metadata.</p>"
                     }
                 },
                 "MessageFieldMappings": {
                     "target": "com.amazonaws.kendra#DataSourceToIndexFieldMappingList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of field mappings to apply when indexing Quip messages.</p>"
+                        "smithy.api#documentation": "<p>A list of <code>DataSourceToIndexFieldMapping</code> objects that map \n            attributes or field names of Quip messages to Amazon Kendra index \n            field names. To create custom fields, use the <code>UpdateIndex</code> \n            API before you map to Quip fields. For more information, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html\">Mapping \n                data source fields</a>. The Quip field names must exist in your \n            Quip custom metadata.</p>"
                     }
                 },
                 "AttachmentFieldMappings": {
                     "target": "com.amazonaws.kendra#DataSourceToIndexFieldMappingList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of field mappings to apply when indexing Quip attachments.</p>"
+                        "smithy.api#documentation": "<p>A list of <code>DataSourceToIndexFieldMapping</code> objects that map \n            attributes or field names of Quip attachments to Amazon Kendra index \n            field names. To create custom fields, use the <code>UpdateIndex</code> \n            API before you map to Quip fields. For more information, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html\">Mapping \n                data source fields</a>. The Quip field names must exist in your \n            Quip custom metadata.</p>"
                     }
                 },
                 "InclusionPatterns": {
                     "target": "com.amazonaws.kendra#DataSourceInclusionsExclusionsStrings",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of regular expression patterns to include certain files in your Quip file\n            system. Files that match the patterns are included in the index. Files that don't match\n            the patterns are excluded from the index. If a file matches both an inclusion pattern\n            and an exclusion pattern, the exclusion pattern takes\n            precedence,\n            and the file isn't included in the index.</p>"
+                        "smithy.api#documentation": "<p>A list of regular expression patterns to include certain files in your Quip file\n            system. Files that match the patterns are included in the index. Files that don't match\n            the patterns are excluded from the index. If a file matches both an inclusion pattern\n            and an exclusion pattern, the exclusion pattern takes\n            precedence, and the file isn't included in the index.</p>"
                     }
                 },
                 "ExclusionPatterns": {
                     "target": "com.amazonaws.kendra#DataSourceInclusionsExclusionsStrings",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of regular expression patterns to exclude certain files in your Quip file\n            system. Files that match the patterns are excluded from the index. Files that don’t\n            match the patterns are included in the index. If a file matches both an inclusion\n            pattern and an exclusion pattern, the exclusion pattern takes\n            precedence,\n            and the file isn't included in the index.</p>"
+                        "smithy.api#documentation": "<p>A list of regular expression patterns to exclude certain files in your Quip file\n            system. Files that match the patterns are excluded from the index. Files that don’t\n            match the patterns are included in the index. If a file matches both an inclusion\n            pattern and an exclusion pattern, the exclusion pattern takes\n            precedence, and the file isn't included in the index.</p>"
                     }
                 },
                 "VpcConfiguration": {
                     "target": "com.amazonaws.kendra#DataSourceVpcConfiguration",
                     "traits": {
-                        "smithy.api#documentation": "<p>Configuration information for connecting to an Amazon Virtual Private Cloud\n            (VPC)\n            for your Quip. Your Quip instance must reside inside your VPC.</p>"
+                        "smithy.api#documentation": "<p>Configuration information for an Amazon Virtual Private Cloud\n            (VPC) to connect to your Quip. For more information, see \n            <a href=\"https://docs.aws.amazon.com/kendra/latest/dg/vpc-configuration.html\">Configuring \n                a VPC</a>.</p>"
                     }
                 }
             },
@@ -10993,6 +11031,15 @@
                 "smithy.api#pattern": "^\\P{C}*$"
             }
         },
+        "com.amazonaws.kendra#TopDocumentAttributeValueCountPairsSize": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 0,
+                    "max": 5000
+                }
+            }
+        },
         "com.amazonaws.kendra#UntagResource": {
             "type": "operation",
             "input": {
diff --git a/aws/sdk/aws-models/kinesis-video-archived-media.json b/aws/sdk/aws-models/kinesis-video-archived-media.json
index 246030df8235a74f13e8d1a7883ea546deba98d9..7c144a7b8a9574cd5842ea1fa976c881f95a9f14 100644
--- a/aws/sdk/aws-models/kinesis-video-archived-media.json
+++ b/aws/sdk/aws-models/kinesis-video-archived-media.json
@@ -31,6 +31,21 @@
     "shapes": {
         "com.amazonaws.kinesisvideoarchivedmedia#AWSAcuityReader": {
             "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "Kinesis Video Archived Media",
+                    "arnNamespace": "kinesisvideo",
+                    "cloudFormationName": "KinesisVideoArchivedMedia",
+                    "cloudTrailEventSource": "kinesisvideoarchivedmedia.amazonaws.com",
+                    "endpointPrefix": "kinesisvideo"
+                },
+                "aws.auth#sigv4": {
+                    "name": "kinesisvideo"
+                },
+                "aws.protocols#restJson1": {},
+                "smithy.api#documentation": "<p></p>",
+                "smithy.api#title": "Amazon Kinesis Video Streams Archived Media"
+            },
             "version": "2017-09-30",
             "operations": [
                 {
@@ -42,28 +57,16 @@
                 {
                     "target": "com.amazonaws.kinesisvideoarchivedmedia#GetHLSStreamingSessionURL"
                 },
+                {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#GetImages"
+                },
                 {
                     "target": "com.amazonaws.kinesisvideoarchivedmedia#GetMediaForFragmentList"
                 },
                 {
                     "target": "com.amazonaws.kinesisvideoarchivedmedia#ListFragments"
                 }
-            ],
-            "traits": {
-                "aws.api#service": {
-                    "sdkId": "Kinesis Video Archived Media",
-                    "arnNamespace": "kinesisvideo",
-                    "cloudFormationName": "KinesisVideoArchivedMedia",
-                    "cloudTrailEventSource": "kinesisvideoarchivedmedia.amazonaws.com",
-                    "endpointPrefix": "kinesisvideo"
-                },
-                "aws.auth#sigv4": {
-                    "name": "kinesisvideo"
-                },
-                "aws.protocols#restJson1": {},
-                "smithy.api#documentation": "<p></p>",
-                "smithy.api#title": "Amazon Kinesis Video Streams Archived Media"
-            }
+            ]
         },
         "com.amazonaws.kinesisvideoarchivedmedia#ClientLimitExceededException": {
             "type": "structure",
@@ -292,6 +295,57 @@
                 }
             }
         },
+        "com.amazonaws.kinesisvideoarchivedmedia#Format": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "JPEG",
+                        "name": "JPEG"
+                    },
+                    {
+                        "value": "PNG",
+                        "name": "PNG"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#FormatConfig": {
+            "type": "map",
+            "key": {
+                "target": "com.amazonaws.kinesisvideoarchivedmedia#FormatConfigKey"
+            },
+            "value": {
+                "target": "com.amazonaws.kinesisvideoarchivedmedia#FormatConfigValue"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 1
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#FormatConfigKey": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "JPEGQuality",
+                        "name": "JPEGQuality"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#FormatConfigValue": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 256
+                },
+                "smithy.api#pattern": "^[a-zA-Z_0-9]+$"
+            }
+        },
         "com.amazonaws.kinesisvideoarchivedmedia#Fragment": {
             "type": "structure",
             "members": {
@@ -704,6 +758,146 @@
                 }
             }
         },
+        "com.amazonaws.kinesisvideoarchivedmedia#GetImages": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.kinesisvideoarchivedmedia#GetImagesInput"
+            },
+            "output": {
+                "target": "com.amazonaws.kinesisvideoarchivedmedia#GetImagesOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ClientLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#InvalidArgumentException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#NotAuthorizedException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Retrieves a list of Images corresponding to each timestamp for a given time range, sampling interval, and image format configuration.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/getImages",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#GetImagesInput": {
+            "type": "structure",
+            "members": {
+                "StreamName": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#StreamName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the stream from which to retrieve the images. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "StreamARN": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ResourceARN",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the stream from which to retrieve the images. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "ImageSelectorType": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ImageSelectorType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The origin of the Server or Producer timestamps to use to generate the images.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "StartTimestamp": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#Timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The starting point from which the images should be generated. This <code>StartTimestamp</code> must be within an inclusive range of timestamps for an image to be returned.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "EndTimestamp": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#Timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The end timestamp for the range of images to be generated.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "SamplingInterval": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#SamplingInterval",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The time interval in milliseconds (ms) at which the images need to be generated from the stream. The minimum value that can be provided is 3000 ms. If the timestamp range is less than the sampling interval, the Image from the <code>startTimestamp</code> will be returned if available.\n        </p>    \n        <note>\n            <p>The minimum value of 3000 ms is a soft limit. If needed, a lower sampling frequency can be requested.</p>\n         </note>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Format": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#Format",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The format that will be used to encode the image.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "FormatConfig": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#FormatConfig",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The list of a key-value pair structure that contains extra parameters that can be applied when the image is generated. The <code>FormatConfig</code> key is the <code>JPEGQuality</code>, which indicates the JPEG quality key to be used to generate the image.\n            The <code>FormatConfig</code> value accepts ints from 1 to 100. If the value is 1, the image will be generated with less quality and the best compression. \n            If the value is 100, the image will be generated with the best quality and less compression. If no value is provided, the default value of the <code>JPEGQuality</code> key will be set to 80.</p>"
+                    }
+                },
+                "WidthPixels": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#WidthPixels",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The width of the output image that is used in conjunction with the <code>HeightPixels</code> parameter. When both <code>WidthPixels</code> and <code>HeightPixels</code> parameters are provided, \n            the image will be stretched to fit the specified aspect ratio. If only the <code>WidthPixels</code> parameter is provided or if only the <code>HeightPixels</code> is provided, a <code>ValidationException</code> will be thrown. \n            If neither parameter is provided, the original image size from the stream will be returned.</p>"
+                    }
+                },
+                "HeightPixels": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#HeightPixels",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The height of the output image that is used in conjunction with the <code>WidthPixels</code> parameter. When both <code>HeightPixels</code> and <code>WidthPixels</code> parameters are provided, the image will be stretched to fit the \n            specified aspect ratio. If only the <code>HeightPixels</code> parameter is provided, its original aspect ratio will be used to calculate the <code>WidthPixels</code> ratio. If neither parameter is provided, \n            the original image size will be returned.</p>"
+                    }
+                },
+                "MaxResults": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#GetImagesMaxResults",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The maximum number of images to be returned by the API. </p>\n        <note>\n            <p>The default limit is 100 images per API response. The additional results will be paginated. </p>\n         </note>"
+                    }
+                },
+                "NextToken": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#NextToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A token that specifies where to start paginating the next set of Images. This is the <code>GetImages:NextToken</code> from a previously truncated response.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#GetImagesMaxResults": {
+            "type": "long",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 100
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#GetImagesOutput": {
+            "type": "structure",
+            "members": {
+                "Images": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#Images",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The list of images generated from the video stream. If there is no media available for the given timestamp, the <code>NO_MEDIA</code> error will be listed in the output.  \n            If an error occurs while the image is being generated, the <code>MEDIA_ERROR</code> will be listed in the output as the cause of the missing image. </p>"
+                    }
+                },
+                "NextToken": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#NextToken",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The encrypted token that was  used in the request to get more images.</p>"
+                    }
+                }
+            }
+        },
         "com.amazonaws.kinesisvideoarchivedmedia#GetMediaForFragmentList": {
             "type": "operation",
             "input": {
@@ -899,6 +1093,87 @@
                 "smithy.api#documentation": "<p>The start and end of the timestamp range for the requested media.</p>\n        <p>This value should not be present if <code>PlaybackType</code> is\n            <code>LIVE</code>.</p>"
             }
         },
+        "com.amazonaws.kinesisvideoarchivedmedia#HeightPixels": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 2160
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#Image": {
+            "type": "structure",
+            "members": {
+                "TimeStamp": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#Timestamp",
+                    "traits": {
+                        "smithy.api#documentation": "<p>An attribute of the <code>Image</code> object that is used to extract an image from the video stream. This field is used to manage gaps on images or to better understand the pagination\n        window.</p>"
+                    }
+                },
+                "Error": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ImageError",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The error message shown when the image for the provided timestamp was not extracted due to a non-tryable error. An error will be returned if: </p>\n        <ul>\n            <li>\n               <p>There is no media that exists for the specified <code>Timestamp</code>.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n               <p>The media for the specified time does not allow an image to be extracted. In this case the media is audio only, or the incorrect\n            media has been ingested.</p>\n            </li>\n         </ul>"
+                    }
+                },
+                "ImageContent": {
+                    "target": "com.amazonaws.kinesisvideoarchivedmedia#ImageContent",
+                    "traits": {
+                        "smithy.api#documentation": "<p>An attribute of the <code>Image</code> object that is Base64 encoded.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>A structure that contains the <code>Timestamp</code>, <code>Error</code>, and <code>ImageContent</code>.</p>"
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#ImageContent": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 6291456
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#ImageError": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "NO_MEDIA",
+                        "name": "NO_MEDIA"
+                    },
+                    {
+                        "value": "MEDIA_ERROR",
+                        "name": "MEDIA_ERROR"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#ImageSelectorType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "PRODUCER_TIMESTAMP",
+                        "name": "PRODUCER_TIMESTAMP"
+                    },
+                    {
+                        "value": "SERVER_TIMESTAMP",
+                        "name": "SERVER_TIMESTAMP"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#Images": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.kinesisvideoarchivedmedia#Image"
+            }
+        },
         "com.amazonaws.kinesisvideoarchivedmedia#InvalidArgumentException": {
             "type": "structure",
             "members": {
@@ -1054,7 +1329,7 @@
                     "min": 1,
                     "max": 4096
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9+/]+={0,2}"
+                "smithy.api#pattern": "^[a-zA-Z0-9+/]+={0,2}$"
             }
         },
         "com.amazonaws.kinesisvideoarchivedmedia#NoDataRetentionException": {
@@ -1096,7 +1371,7 @@
                     "min": 1,
                     "max": 1024
                 },
-                "smithy.api#pattern": "arn:[a-z\\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+"
+                "smithy.api#pattern": "^arn:[a-z\\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+$"
             }
         },
         "com.amazonaws.kinesisvideoarchivedmedia#ResourceNotFoundException": {
@@ -1112,6 +1387,16 @@
                 "smithy.api#httpError": 404
             }
         },
+        "com.amazonaws.kinesisvideoarchivedmedia#SamplingInterval": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 3000,
+                    "max": 20000
+                }
+            }
+        },
         "com.amazonaws.kinesisvideoarchivedmedia#StreamName": {
             "type": "string",
             "traits": {
@@ -1119,7 +1404,7 @@
                     "min": 1,
                     "max": 256
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9_.-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$"
             }
         },
         "com.amazonaws.kinesisvideoarchivedmedia#Timestamp": {
@@ -1159,6 +1444,16 @@
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 400
             }
+        },
+        "com.amazonaws.kinesisvideoarchivedmedia#WidthPixels": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 3840
+                }
+            }
         }
     }
 }
diff --git a/aws/sdk/aws-models/kinesisvideo.json b/aws/sdk/aws-models/kinesisvideo.json
index 3a2302f6d9ce93636fbded929938af610468e2ec..2117b4da103a960f20ae3cb396365716fb2156b6 100644
--- a/aws/sdk/aws-models/kinesisvideo.json
+++ b/aws/sdk/aws-models/kinesisvideo.json
@@ -60,6 +60,10 @@
                     {
                         "value": "GET_CLIP",
                         "name": "GET_CLIP"
+                    },
+                    {
+                        "value": "GET_IMAGES",
+                        "name": "GET_IMAGES"
                     }
                 ]
             }
@@ -85,7 +89,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>You have reached the maximum limit of active signaling channels for this AWS account\n            in this region.</p>",
+                "smithy.api#documentation": "<p>You have reached the maximum limit of active signaling channels for this Amazon Web Services account\n            in this region.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 400
             }
@@ -166,7 +170,7 @@
                     "min": 1,
                     "max": 256
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9_.-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$"
             }
         },
         "com.amazonaws.kinesisvideo#ChannelNameCondition": {
@@ -226,6 +230,10 @@
                     {
                         "value": "SINGLE_MASTER",
                         "name": "SINGLE_MASTER"
+                    },
+                    {
+                        "value": "FULL_MESH",
+                        "name": "FULL_MESH"
                     }
                 ]
             }
@@ -254,6 +262,21 @@
                 ]
             }
         },
+        "com.amazonaws.kinesisvideo#ConfigurationStatus": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ENABLED",
+                        "name": "ENABLED"
+                    },
+                    {
+                        "value": "DISABLED",
+                        "name": "DISABLED"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.kinesisvideo#CreateSignalingChannel": {
             "type": "operation",
             "input": {
@@ -297,7 +320,7 @@
                 "ChannelName": {
                     "target": "com.amazonaws.kinesisvideo#ChannelName",
                     "traits": {
-                        "smithy.api#documentation": "<p>A name for the signaling channel that you are creating. It must be unique for each AWS\n            account and AWS Region.</p>",
+                        "smithy.api#documentation": "<p>A name for the signaling channel that you are creating. It must be unique for each Amazon Web Services account and Amazon Web Services Region.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -397,13 +420,13 @@
                 "KmsKeyId": {
                     "target": "com.amazonaws.kinesisvideo#KmsKeyId",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the AWS Key Management Service (AWS KMS) key that you want Kinesis Video\n            Streams to use to encrypt stream data.</p>\n        <p>If no key ID is specified, the default, Kinesis Video-managed key\n                (<code>aws/kinesisvideo</code>) is used.</p>\n        <p> For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters\">DescribeKey</a>. </p>"
+                        "smithy.api#documentation": "<p>The ID of the Key Management Service (KMS) key that you want Kinesis Video\n            Streams to use to encrypt stream data.</p>\n        <p>If no key ID is specified, the default, Kinesis Video-managed key\n                (<code>aws/kinesisvideo</code>) is used.</p>\n        <p> For more information, see <a href=\"https://docs.aws.amazon.com/kms/latest/APIReference/API_DescribeKey.html#API_DescribeKey_RequestParameters\">DescribeKey</a>. </p>"
                     }
                 },
                 "DataRetentionInHours": {
                     "target": "com.amazonaws.kinesisvideo#DataRetentionInHours",
                     "traits": {
-                        "smithy.api#documentation": "<p>The number of hours that you want to retain the data in the stream. Kinesis Video\n            Streams retains the data in a data store that is associated with the stream.</p>\n        <p>The default value is 0, indicating that the stream does not persist data.</p>\n        <p>When the <code>DataRetentionInHours</code> value is 0, consumers can still consume\n            the fragments that remain in the service host buffer, which has a retention time limit\n            of 5 minutes and a retention memory limit of 200 MB. Fragments are removed from the\n            buffer when either limit is reached.</p>"
+                        "smithy.api#documentation": "<p>The number of hours that you want to retain the data in the stream. Kinesis Video Streams retains the data in a data store that is associated with the stream.</p>\n        <p>The default value is 0, indicating that the stream does not persist data.</p>\n        <p>When the <code>DataRetentionInHours</code> value is 0, consumers can still consume\n            the fragments that remain in the service host buffer, which has a retention time limit\n            of 5 minutes and a retention memory limit of 200 MB. Fragments are removed from the\n            buffer when either limit is reached.</p>"
                     }
                 },
                 "Tags": {
@@ -564,6 +587,124 @@
             "type": "structure",
             "members": {}
         },
+        "com.amazonaws.kinesisvideo#DescribeImageGenerationConfiguration": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.kinesisvideo#DescribeImageGenerationConfigurationInput"
+            },
+            "output": {
+                "target": "com.amazonaws.kinesisvideo#DescribeImageGenerationConfigurationOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.kinesisvideo#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#InvalidArgumentException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets the <code>ImageGenerationConfiguration</code> for a given Kinesis video stream.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/describeImageGenerationConfiguration",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#DescribeImageGenerationConfigurationInput": {
+            "type": "structure",
+            "members": {
+                "StreamName": {
+                    "target": "com.amazonaws.kinesisvideo#StreamName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the stream from which to retrieve the image generation configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.  </p>"
+                    }
+                },
+                "StreamARN": {
+                    "target": "com.amazonaws.kinesisvideo#ResourceARN",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Kinesis video stream from which to retrieve the image generation configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#DescribeImageGenerationConfigurationOutput": {
+            "type": "structure",
+            "members": {
+                "ImageGenerationConfiguration": {
+                    "target": "com.amazonaws.kinesisvideo#ImageGenerationConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The structure that contains the information required for the Kinesis video stream (KVS) images delivery. If this structure is null, the configuration will be deleted from the stream.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#DescribeNotificationConfiguration": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.kinesisvideo#DescribeNotificationConfigurationInput"
+            },
+            "output": {
+                "target": "com.amazonaws.kinesisvideo#DescribeNotificationConfigurationOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.kinesisvideo#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#InvalidArgumentException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Gets the <code>NotificationConfiguration</code> for a given Kinesis video stream.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/describeNotificationConfiguration",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#DescribeNotificationConfigurationInput": {
+            "type": "structure",
+            "members": {
+                "StreamName": {
+                    "target": "com.amazonaws.kinesisvideo#StreamName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the stream from which to retrieve the notification configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "StreamARN": {
+                    "target": "com.amazonaws.kinesisvideo#ResourceARN",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to retrieve the notification configuration. You must specify either the <code>StreamName</code> or the StreamARN.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#DescribeNotificationConfigurationOutput": {
+            "type": "structure",
+            "members": {
+                "NotificationConfiguration": {
+                    "target": "com.amazonaws.kinesisvideo#NotificationConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The structure that contains the information required for notifications. If the structure is null, the configuration will be deleted from the stream.</p>"
+                    }
+                }
+            }
+        },
         "com.amazonaws.kinesisvideo#DescribeSignalingChannel": {
             "type": "operation",
             "input": {
@@ -682,6 +823,26 @@
                 }
             }
         },
+        "com.amazonaws.kinesisvideo#DestinationRegion": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 9,
+                    "max": 14
+                },
+                "smithy.api#pattern": "^[a-z]+(-[a-z]+)?-[a-z]+-[0-9]$"
+            }
+        },
+        "com.amazonaws.kinesisvideo#DestinationUri": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 255
+                },
+                "smithy.api#pattern": "^[a-zA-Z_0-9]+:(//)?([^/]+)/?([^*]*)$"
+            }
+        },
         "com.amazonaws.kinesisvideo#DeviceName": {
             "type": "string",
             "traits": {
@@ -689,7 +850,7 @@
                     "min": 1,
                     "max": 128
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9_.-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$"
             }
         },
         "com.amazonaws.kinesisvideo#DeviceStreamLimitExceededException": {
@@ -708,6 +869,57 @@
         "com.amazonaws.kinesisvideo#ErrorMessage": {
             "type": "string"
         },
+        "com.amazonaws.kinesisvideo#Format": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "JPEG",
+                        "name": "JPEG"
+                    },
+                    {
+                        "value": "PNG",
+                        "name": "PNG"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideo#FormatConfig": {
+            "type": "map",
+            "key": {
+                "target": "com.amazonaws.kinesisvideo#FormatConfigKey"
+            },
+            "value": {
+                "target": "com.amazonaws.kinesisvideo#FormatConfigValue"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 1
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#FormatConfigKey": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "JPEGQuality",
+                        "name": "JPEGQuality"
+                    }
+                ]
+            }
+        },
+        "com.amazonaws.kinesisvideo#FormatConfigValue": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 0,
+                    "max": 256
+                },
+                "smithy.api#pattern": "^[a-zA-Z_0-9]+$"
+            }
+        },
         "com.amazonaws.kinesisvideo#GetDataEndpoint": {
             "type": "operation",
             "input": {
@@ -800,7 +1012,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Provides an endpoint for the specified signaling channel to send and receive messages.\n            This API uses the <code>SingleMasterChannelEndpointConfiguration</code> input parameter,\n            which consists of the <code>Protocols</code> and <code>Role</code> properties.</p>\n        <p>\n            <code>Protocols</code> is used to determine the communication mechanism. For example,\n            if you specify <code>WSS</code> as the protocol, this API produces a secure websocket\n            endpoint. If you specify <code>HTTPS</code> as the protocol, this API generates an HTTPS\n            endpoint. </p>\n        <p>\n            <code>Role</code> determines the messaging permissions. A <code>MASTER</code> role\n            results in this API generating an endpoint that a client can use to communicate with any\n            of the viewers on the channel. A <code>VIEWER</code> role results in this API generating\n            an endpoint that a client can use to communicate only with a\n                <code>MASTER</code>. </p>",
+                "smithy.api#documentation": "<p>Provides an endpoint for the specified signaling channel to send and receive messages.\n            This API uses the <code>SingleMasterChannelEndpointConfiguration</code> input parameter,\n            which consists of the <code>Protocols</code> and <code>Role</code> properties.</p>\n        <p>\n            <code>Protocols</code> is used to determine the communication mechanism. For example,\n            if you specify <code>WSS</code> as the protocol, this API produces a secure websocket\n            endpoint. If you specify <code>HTTPS</code> as the protocol, this API generates an HTTPS\n            endpoint. </p>\n        <p>\n            <code>Role</code> determines the messaging permissions. A <code>MASTER</code> role\n            results in this API generating an endpoint that a client can use to communicate with any\n            of the viewers on the channel. A <code>VIEWER</code> role results in this API generating\n            an endpoint that a client can use to communicate only with a <code>MASTER</code>.\n        </p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/getSignalingChannelEndpoint",
@@ -837,6 +1049,114 @@
                 }
             }
         },
+        "com.amazonaws.kinesisvideo#HeightPixels": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 2160
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#ImageGenerationConfiguration": {
+            "type": "structure",
+            "members": {
+                "Status": {
+                    "target": "com.amazonaws.kinesisvideo#ConfigurationStatus",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Indicates whether the <code>ContinuousImageGenerationConfigurations</code> API is enabled or disabled.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "ImageSelectorType": {
+                    "target": "com.amazonaws.kinesisvideo#ImageSelectorType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The origin of the Server or Producer timestamps to use to generate the images.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "DestinationConfig": {
+                    "target": "com.amazonaws.kinesisvideo#ImageGenerationDestinationConfig",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The structure that contains the information required to deliver images to a customer.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "SamplingInterval": {
+                    "target": "com.amazonaws.kinesisvideo#SamplingInterval",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The time interval in milliseconds (ms) at which the images need to be generated from the stream. The minimum value that can be provided is 33 ms, \n            because a camera that generates content at 30 FPS would create a frame every 33.3 ms. If the timestamp range is less than the sampling interval, the \n            Image from the <code>StartTimestamp</code> will be returned if available. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "Format": {
+                    "target": "com.amazonaws.kinesisvideo#Format",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The accepted image format.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "FormatConfig": {
+                    "target": "com.amazonaws.kinesisvideo#FormatConfig",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The list of a key-value pair structure that contains extra parameters that can be applied when the image is generated.\n            The <code>FormatConfig</code> key is the <code>JPEGQuality</code>, which indicates the JPEG quality key to be used to generate the image. \n            The <code>FormatConfig</code> value accepts ints from 1 to 100. If the value is 1, the image will be generated with less quality and the best compression. \n            If the value is 100, the image will be generated with the best quality and less compression. If no value is provided, the default value of the <code>JPEGQuality</code>\n            key will be set to 80.</p>"
+                    }
+                },
+                "WidthPixels": {
+                    "target": "com.amazonaws.kinesisvideo#WidthPixels",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The width of the output image that is used in conjunction with the <code>HeightPixels</code> parameter. When both <code>WidthPixels</code> and \n            <code>HeightPixels</code> parameters are provided, the image will be stretched to fit the specified aspect ratio. If only the <code>WidthPixels</code> parameter is \n            provided, its original aspect ratio will be used to calculate the <code>HeightPixels</code> ratio. If neither parameter is provided, the original image size will be returned.</p>"
+                    }
+                },
+                "HeightPixels": {
+                    "target": "com.amazonaws.kinesisvideo#HeightPixels",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The height of the output image that is used in conjunction with the <code>WidthPixels</code> parameter. When both\n            <code>HeightPixels</code> and <code>WidthPixels</code> parameters are provided, the image will be stretched to fit the specified aspect ratio. \n            If only the <code>HeightPixels</code> parameter is provided, its original aspect ratio will be used to calculate the <code>WidthPixels</code> ratio.\n            If neither parameter is provided, the original image size will be returned.</p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The structure that contains the information required for the KVS images delivery. If null, the configuration will be deleted from the stream.</p>"
+            }
+        },
+        "com.amazonaws.kinesisvideo#ImageGenerationDestinationConfig": {
+            "type": "structure",
+            "members": {
+                "Uri": {
+                    "target": "com.amazonaws.kinesisvideo#DestinationUri",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Uniform Resource Idenifier (URI) that identifies where the images will be delivered.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "DestinationRegion": {
+                    "target": "com.amazonaws.kinesisvideo#DestinationRegion",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The AWS Region of the S3 bucket where images will be delivered. This <code>DestinationRegion</code> must match the Region where the stream is located.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The structure that contains the information required to deliver images to a customer.</p>"
+            }
+        },
+        "com.amazonaws.kinesisvideo#ImageSelectorType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "SERVER_TIMESTAMP",
+                        "name": "SERVER_TIMESTAMP"
+                    },
+                    {
+                        "value": "PRODUCER_TIMESTAMP",
+                        "name": "PRODUCER_TIMESTAMP"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.kinesisvideo#InvalidArgumentException": {
             "type": "structure",
             "members": {
@@ -878,6 +1198,24 @@
         },
         "com.amazonaws.kinesisvideo#KinesisVideo_20170930": {
             "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "Kinesis Video",
+                    "arnNamespace": "kinesisvideo",
+                    "cloudFormationName": "KinesisVideo",
+                    "cloudTrailEventSource": "kinesisvideo.amazonaws.com",
+                    "endpointPrefix": "kinesisvideo"
+                },
+                "aws.auth#sigv4": {
+                    "name": "kinesisvideo"
+                },
+                "aws.protocols#restJson1": {},
+                "smithy.api#documentation": "<p></p>",
+                "smithy.api#title": "Amazon Kinesis Video Streams",
+                "smithy.api#xmlNamespace": {
+                    "uri": "https://kinesisvideo.amazonaws.com/doc/2017-09-30/"
+                }
+            },
             "version": "2017-09-30",
             "operations": [
                 {
@@ -892,6 +1230,12 @@
                 {
                     "target": "com.amazonaws.kinesisvideo#DeleteStream"
                 },
+                {
+                    "target": "com.amazonaws.kinesisvideo#DescribeImageGenerationConfiguration"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#DescribeNotificationConfiguration"
+                },
                 {
                     "target": "com.amazonaws.kinesisvideo#DescribeSignalingChannel"
                 },
@@ -932,30 +1276,18 @@
                     "target": "com.amazonaws.kinesisvideo#UpdateDataRetention"
                 },
                 {
-                    "target": "com.amazonaws.kinesisvideo#UpdateSignalingChannel"
+                    "target": "com.amazonaws.kinesisvideo#UpdateImageGenerationConfiguration"
                 },
                 {
-                    "target": "com.amazonaws.kinesisvideo#UpdateStream"
-                }
-            ],
-            "traits": {
-                "aws.api#service": {
-                    "sdkId": "Kinesis Video",
-                    "arnNamespace": "kinesisvideo",
-                    "cloudFormationName": "KinesisVideo",
-                    "cloudTrailEventSource": "kinesisvideo.amazonaws.com",
-                    "endpointPrefix": "kinesisvideo"
+                    "target": "com.amazonaws.kinesisvideo#UpdateNotificationConfiguration"
                 },
-                "aws.auth#sigv4": {
-                    "name": "kinesisvideo"
+                {
+                    "target": "com.amazonaws.kinesisvideo#UpdateSignalingChannel"
                 },
-                "aws.protocols#restJson1": {},
-                "smithy.api#documentation": "<p></p>",
-                "smithy.api#title": "Amazon Kinesis Video Streams",
-                "smithy.api#xmlNamespace": {
-                    "uri": "https://kinesisvideo.amazonaws.com/doc/2017-09-30/"
+                {
+                    "target": "com.amazonaws.kinesisvideo#UpdateStream"
                 }
-            }
+            ]
         },
         "com.amazonaws.kinesisvideo#KmsKeyId": {
             "type": "string",
@@ -964,7 +1296,7 @@
                     "min": 1,
                     "max": 2048
                 },
-                "smithy.api#pattern": ".+"
+                "smithy.api#pattern": "^.+$"
             }
         },
         "com.amazonaws.kinesisvideo#ListOfProtocols": {
@@ -999,7 +1331,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns an array of <code>ChannelInfo</code> objects. Each object describes a\n            signaling channel. To retrieve only those channels that satisfy a specific condition, you can\n            specify a <code>ChannelNameCondition</code>.</p>",
+                "smithy.api#documentation": "<p>Returns an array of <code>ChannelInfo</code> objects. Each object describes a\n            signaling channel. To retrieve only those channels that satisfy a specific condition,\n            you can specify a <code>ChannelNameCondition</code>.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/listSignalingChannels",
@@ -1281,7 +1613,7 @@
                     "min": 1,
                     "max": 128
                 },
-                "smithy.api#pattern": "[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*"
+                "smithy.api#pattern": "^[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+(,[\\w\\-\\.\\+]+/[\\w\\-\\.\\+]+)*$"
             }
         },
         "com.amazonaws.kinesisvideo#MessageTtlSeconds": {
@@ -1301,7 +1633,20 @@
                     "min": 0,
                     "max": 512
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9+/=]*"
+                "smithy.api#pattern": "^[a-zA-Z0-9+/=]*$"
+            }
+        },
+        "com.amazonaws.kinesisvideo#NoDataRetentionException": {
+            "type": "structure",
+            "members": {
+                "Message": {
+                    "target": "com.amazonaws.kinesisvideo#ErrorMessage"
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The Stream data retention in hours is equal to zero.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 400
             }
         },
         "com.amazonaws.kinesisvideo#NotAuthorizedException": {
@@ -1317,6 +1662,43 @@
                 "smithy.api#httpError": 401
             }
         },
+        "com.amazonaws.kinesisvideo#NotificationConfiguration": {
+            "type": "structure",
+            "members": {
+                "Status": {
+                    "target": "com.amazonaws.kinesisvideo#ConfigurationStatus",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Indicates if a notification configuration is enabled or disabled.</p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "DestinationConfig": {
+                    "target": "com.amazonaws.kinesisvideo#NotificationDestinationConfig",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The destination information required to deliver a notification to a customer.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The structure that contains the notification information for the KVS images delivery. If this parameter is null, the configuration will be deleted from the stream.</p>"
+            }
+        },
+        "com.amazonaws.kinesisvideo#NotificationDestinationConfig": {
+            "type": "structure",
+            "members": {
+                "Uri": {
+                    "target": "com.amazonaws.kinesisvideo#DestinationUri",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Uniform Resource Idenifier (URI) that identifies where the images will be delivered.</p>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The structure that contains the information required to deliver a notification to a customer.</p>"
+            }
+        },
         "com.amazonaws.kinesisvideo#ResourceARN": {
             "type": "string",
             "traits": {
@@ -1324,7 +1706,7 @@
                     "min": 1,
                     "max": 1024
                 },
-                "smithy.api#pattern": "arn:aws:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+"
+                "smithy.api#pattern": "^arn:[a-z\\d-]+:kinesisvideo:[a-z0-9-]+:[0-9]+:[a-z]+/[a-zA-Z0-9_.-]+/[0-9]+$"
             }
         },
         "com.amazonaws.kinesisvideo#ResourceEndpoint": {
@@ -1364,7 +1746,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The signaling channel is currently not available for this operation.</p>",
+                "smithy.api#documentation": "<p>The resource is currently not available for this operation. New resources cannot be\n            created with the same name as existing resources. Also, resources cannot be updated or\n            deleted unless they are in an <code>ACTIVE</code> state.</p>\n        <p>If this exception is returned, do not use it to determine whether the requested\n            resource already exists. Instead, it is recommended you use the resource-specific\n            describe API, for example, <code>DescribeStream</code> for video streams.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 400
             }
@@ -1397,6 +1779,16 @@
                 }
             }
         },
+        "com.amazonaws.kinesisvideo#SamplingInterval": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 3000,
+                    "max": 20000
+                }
+            }
+        },
         "com.amazonaws.kinesisvideo#SingleMasterChannelEndpointConfiguration": {
             "type": "structure",
             "members": {
@@ -1423,7 +1815,7 @@
                 "MessageTtlSeconds": {
                     "target": "com.amazonaws.kinesisvideo#MessageTtlSeconds",
                     "traits": {
-                        "smithy.api#documentation": "<p>The period of time a signaling channel retains underlivered messages before they are\n            discarded.</p>"
+                        "smithy.api#documentation": "<p>The period of time a signaling channel retains undelivered messages before they are\n            discarded.</p>"
                     }
                 }
             },
@@ -1484,7 +1876,7 @@
                 "KmsKeyId": {
                     "target": "com.amazonaws.kinesisvideo#KmsKeyId",
                     "traits": {
-                        "smithy.api#documentation": "<p>The ID of the AWS Key Management Service (AWS KMS) key that Kinesis Video Streams\n            uses to encrypt data on the stream.</p>"
+                        "smithy.api#documentation": "<p>The ID of the Key Management Service (KMS) key that Kinesis Video Streams\n            uses to encrypt data on the stream.</p>"
                     }
                 },
                 "Version": {
@@ -1529,7 +1921,7 @@
                     "min": 1,
                     "max": 256
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9_.-]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9_.-]+$"
             }
         },
         "com.amazonaws.kinesisvideo#StreamNameCondition": {
@@ -1646,7 +2038,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds one or more tags to a signaling channel. A <i>tag</i> is a\n            key-value pair (the value is optional) that you can define and assign to AWS resources.\n            If you specify a tag that already exists, the tag value is replaced with the value that\n            you specify in the request. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html\">Using Cost Allocation\n                Tags</a> in the <i>AWS Billing and Cost Management User\n            Guide</i>.</p>",
+                "smithy.api#documentation": "<p>Adds one or more tags to a signaling channel. A <i>tag</i> is a\n            key-value pair (the value is optional) that you can define and assign to Amazon Web Services resources.\n            If you specify a tag that already exists, the tag value is replaced with the value that\n            you specify in the request. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html\">Using Cost Allocation\n                Tags</a> in the <i>Billing and Cost Management and Cost Management User\n            Guide</i>.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/TagResource",
@@ -1706,7 +2098,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds one or more tags to a stream. A <i>tag</i> is a key-value pair\n            (the value is optional) that you can define and assign to AWS resources. If you specify\n            a tag that already exists, the tag value is replaced with the value that you specify in\n            the request. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html\">Using Cost Allocation\n                Tags</a> in the <i>AWS Billing and Cost Management User Guide</i>. </p>\n        <p>You must provide either the <code>StreamName</code> or the\n            <code>StreamARN</code>.</p>\n        <p>This operation requires permission for the <code>KinesisVideo:TagStream</code>\n            action.</p>\n        <p>Kinesis video streams support up to 50 tags.</p>",
+                "smithy.api#documentation": "<p>Adds one or more tags to a stream. A <i>tag</i> is a key-value pair\n            (the value is optional) that you can define and assign to Amazon Web Services resources. If you specify\n            a tag that already exists, the tag value is replaced with the value that you specify in\n            the request. For more information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html\">Using Cost Allocation\n                Tags</a> in the <i>Billing and Cost Management and Cost Management User Guide</i>. </p>\n        <p>You must provide either the <code>StreamName</code> or the\n            <code>StreamARN</code>.</p>\n        <p>This operation requires permission for the <code>KinesisVideo:TagStream</code>\n            action.</p>\n        <p>A Kinesis video stream can support up to 50 tags.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/tagStream",
@@ -1749,7 +2141,7 @@
                     "min": 0,
                     "max": 256
                 },
-                "smithy.api#pattern": "[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*"
+                "smithy.api#pattern": "^[\\p{L}\\p{Z}\\p{N}_.:/=+\\-@]*$"
             }
         },
         "com.amazonaws.kinesisvideo#TagsPerResourceExceededLimitException": {
@@ -1760,7 +2152,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>You have exceeded the limit of tags that you can associate with the resource.\n            Kinesis video streams support up to 50 tags. </p>",
+                "smithy.api#documentation": "<p>You have exceeded the limit of tags that you can associate with the resource.\n            A Kinesis video stream can support up to 50 tags. </p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 400
             }
@@ -1978,6 +2370,134 @@
             "type": "structure",
             "members": {}
         },
+        "com.amazonaws.kinesisvideo#UpdateImageGenerationConfiguration": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.kinesisvideo#UpdateImageGenerationConfigurationInput"
+            },
+            "output": {
+                "target": "com.amazonaws.kinesisvideo#UpdateImageGenerationConfigurationOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.kinesisvideo#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#InvalidArgumentException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#NoDataRetentionException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceInUseException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Updates the <code>StreamInfo</code> and <code>ImageProcessingConfiguration</code> fields.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/updateImageGenerationConfiguration",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#UpdateImageGenerationConfigurationInput": {
+            "type": "structure",
+            "members": {
+                "StreamName": {
+                    "target": "com.amazonaws.kinesisvideo#StreamName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the stream from which to update the image generation configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "StreamARN": {
+                    "target": "com.amazonaws.kinesisvideo#ResourceARN",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to update the image generation configuration. You must specify either the <code>StreamName</code> \n            or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "ImageGenerationConfiguration": {
+                    "target": "com.amazonaws.kinesisvideo#ImageGenerationConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The structure that contains the information required for the KVS images delivery. If the structure is null, the configuration will be deleted from the stream.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#UpdateImageGenerationConfigurationOutput": {
+            "type": "structure",
+            "members": {}
+        },
+        "com.amazonaws.kinesisvideo#UpdateNotificationConfiguration": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.kinesisvideo#UpdateNotificationConfigurationInput"
+            },
+            "output": {
+                "target": "com.amazonaws.kinesisvideo#UpdateNotificationConfigurationOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.kinesisvideo#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ClientLimitExceededException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#InvalidArgumentException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#NoDataRetentionException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceInUseException"
+                },
+                {
+                    "target": "com.amazonaws.kinesisvideo#ResourceNotFoundException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>Updates the notification information for a stream.</p>",
+                "smithy.api#http": {
+                    "method": "POST",
+                    "uri": "/updateNotificationConfiguration",
+                    "code": 200
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#UpdateNotificationConfigurationInput": {
+            "type": "structure",
+            "members": {
+                "StreamName": {
+                    "target": "com.amazonaws.kinesisvideo#StreamName",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the stream from which to update the notification configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "StreamARN": {
+                    "target": "com.amazonaws.kinesisvideo#ResourceARN",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the Kinesis video stream from where you want to update the notification configuration. You must specify either the <code>StreamName</code> or the <code>StreamARN</code>.</p>"
+                    }
+                },
+                "NotificationConfiguration": {
+                    "target": "com.amazonaws.kinesisvideo#NotificationConfiguration",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The structure containing the information required for notifications. If the structure is null, the configuration will be deleted from the stream.</p>"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.kinesisvideo#UpdateNotificationConfigurationOutput": {
+            "type": "structure",
+            "members": {}
+        },
         "com.amazonaws.kinesisvideo#UpdateSignalingChannel": {
             "type": "operation",
             "input": {
@@ -2128,7 +2648,7 @@
                     "min": 1,
                     "max": 64
                 },
-                "smithy.api#pattern": "[a-zA-Z0-9]+"
+                "smithy.api#pattern": "^[a-zA-Z0-9]+$"
             }
         },
         "com.amazonaws.kinesisvideo#VersionMismatchException": {
@@ -2143,6 +2663,16 @@
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 400
             }
+        },
+        "com.amazonaws.kinesisvideo#WidthPixels": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#box": {},
+                "smithy.api#range": {
+                    "min": 1,
+                    "max": 3840
+                }
+            }
         }
     }
 }
diff --git a/aws/sdk/aws-models/lightsail.json b/aws/sdk/aws-models/lightsail.json
index 3e888844b1fd0b59a9427e9b69bc8b8142287bd2..595901aa36edcadf4be72c9e59a152d83fbe915e 100644
--- a/aws/sdk/aws-models/lightsail.json
+++ b/aws/sdk/aws-models/lightsail.json
@@ -4575,7 +4575,7 @@
                 "tlsPolicyName": {
                     "target": "com.amazonaws.lightsail#string",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the TLS policy to apply to the load balancer.</p>\n\n         <p>Use the <a href=\"https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetLoadBalancerTlsPolicies.html\">GetLoadBalancerTlsPolicies</a> action to get a list of TLS policy names that you can\n      specify.</p>\n\n         <p>For more information about load balancer TLS policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Load balancer TLS security policies</a> in the <i>Amazon Lightsail Developer\n        Guide</i>.</p>"
+                        "smithy.api#documentation": "<p>The name of the TLS policy to apply to the load balancer.</p>\n\n         <p>Use the <a href=\"https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetLoadBalancerTlsPolicies.html\">GetLoadBalancerTlsPolicies</a> action to get a list of TLS policy names that you can\n      specify.</p>\n\n         <p>For more information about load balancer TLS policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Configuring TLS security policies on your Amazon Lightsail load\n        balancers</a> in the <i>Amazon Lightsail Developer Guide</i>.</p>"
                     }
                 }
             }
@@ -10704,7 +10704,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns a list of TLS security policies that you can apply to Lightsail load\n      balancers.</p>\n\n         <p>For more information about load balancer TLS security policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Load balancer TLS security policies</a> in the <i>Amazon Lightsail Developer\n        Guide</i>.</p>",
+                "smithy.api#documentation": "<p>Returns a list of TLS security policies that you can apply to Lightsail load\n      balancers.</p>\n\n         <p>For more information about load balancer TLS security policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Configuring TLS security policies on your Amazon Lightsail load\n        balancers</a> in the <i>Amazon Lightsail Developer Guide</i>.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/ls/api/2016-11-28/GetLoadBalancerTlsPolicies",
@@ -14093,7 +14093,7 @@
                 "tlsPolicyName": {
                     "target": "com.amazonaws.lightsail#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the TLS security policy for the load balancer.</p>\n\n         <p>The following TLS security policy names are possible:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>TLS-2016-08</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>TLS-FS-Res-1-2-2019-08</code>\n               </p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>The name of the TLS security policy for the load balancer.</p>"
                     }
                 }
             },
@@ -14681,7 +14681,7 @@
                 "name": {
                     "target": "com.amazonaws.lightsail#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the TLS security policy.</p>\n\n         <p>The following TLS security policy names are possible:</p>\n\n         <ul>\n            <li>\n               <p>\n                  <code>TLS-2016-08</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>TLS-FS-Res-1-2-2019-08</code>\n               </p>\n            </li>\n         </ul>\n\n         <p>You can specify either of these values for the <code>tlsSecurityPolicyName</code> request\n      parameter in the <a href=\"https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_CreateLoadBalancer.html\">CreateLoadBalancer</a> action, and the <code>attributeValue</code> request parameter in\n      the <a href=\"https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_UpdateLoadBalancerAttribute.html\">UpdateLoadBalancerAttribute</a> action.</p>"
+                        "smithy.api#documentation": "<p>The name of the TLS security policy.</p>"
                     }
                 },
                 "isDefault": {
@@ -14699,7 +14699,7 @@
                 "protocols": {
                     "target": "com.amazonaws.lightsail#StringList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The protocols used in a given TLS security policy.</p>\n\n         <p>The following protocols are possible:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Protocol-TLSv1</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Protocol-TLSv1.1</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Protocol-TLSv1.2</code>\n               </p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>The protocols used in a given TLS security policy.</p>"
                     }
                 },
                 "ciphers": {
@@ -14710,7 +14710,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Describes the TLS security policies that are available for Lightsail load\n      balancers.</p>\n\n         <p>For more information about load balancer TLS security policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Load balancer TLS security policies</a> in the <i>Amazon Lightsail\n        Developer Guide</i>.</p>"
+                "smithy.api#documentation": "<p>Describes the TLS security policies that are available for Lightsail load\n      balancers.</p>\n\n         <p>For more information about load balancer TLS security policies, see <a href=\"https://lightsail.aws.amazon.com/ls/docs/en_us/articles/amazon-lightsail-configure-load-balancer-tls-security-policy\">Configuring TLS security policies on your Amazon Lightsail load\n        balancers</a> in the <i>Amazon Lightsail Developer\n      Guide</i>.</p>"
             }
         },
         "com.amazonaws.lightsail#LoadBalancerTlsPolicyList": {
@@ -19029,7 +19029,7 @@
                 "attributeValue": {
                     "target": "com.amazonaws.lightsail#StringMax256",
                     "traits": {
-                        "smithy.api#documentation": "<p>The value that you want to specify for the attribute name.</p>\n         <p>The following values are supported depending on what you specify for the\n        <code>attributeName</code> request parameter:</p>\n         <ul>\n            <li>\n               <p>If you specify <code>HealthCheckPath</code> for the <code>attributeName</code> request\n          parameter, then the <code>attributeValue</code> request parameter must be the path to ping\n          on the target (for example, <code>/weather/us/wa/seattle</code>).</p>\n            </li>\n            <li>\n               <p>If you specify <code>SessionStickinessEnabled</code> for the\n            <code>attributeName</code> request parameter, then the <code>attributeValue</code>\n          request parameter must be <code>true</code> or <code>false</code>.</p>\n            </li>\n            <li>\n               <p>If you specify <code>SessionStickiness_LB_CookieDurationSeconds</code> for the\n            <code>attributeName</code> request parameter, then the <code>attributeValue</code>\n          request parameter must be an interger that represents the cookie duration in\n          seconds.</p>\n            </li>\n            <li>\n               <p>If you specify <code>HttpsRedirectionEnabled</code> for the <code>attributeName</code>\n          request parameter, then the <code>attributeValue</code> request parameter must be\n            <code>true</code> or <code>false</code>.</p>\n            </li>\n            <li>\n               <p>If you specify <code>TlsPolicyName</code> for the <code>attributeName</code> request\n          parameter, then the <code>attributeValue</code> request parameter must be <code>TLS\n            version 1.0, 1.1, and 1.2</code> or <code>TLS version 1.2</code>.</p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The value that you want to specify for the attribute name.</p>\n         <p>The following values are supported depending on what you specify for the\n        <code>attributeName</code> request parameter:</p>\n         <ul>\n            <li>\n               <p>If you specify <code>HealthCheckPath</code> for the <code>attributeName</code> request\n          parameter, then the <code>attributeValue</code> request parameter must be the path to ping\n          on the target (for example, <code>/weather/us/wa/seattle</code>).</p>\n            </li>\n            <li>\n               <p>If you specify <code>SessionStickinessEnabled</code> for the\n            <code>attributeName</code> request parameter, then the <code>attributeValue</code>\n          request parameter must be <code>true</code> to activate session stickiness or\n            <code>false</code> to deactivate session stickiness.</p>\n            </li>\n            <li>\n               <p>If you specify <code>SessionStickiness_LB_CookieDurationSeconds</code> for the\n            <code>attributeName</code> request parameter, then the <code>attributeValue</code>\n          request parameter must be an interger that represents the cookie duration in\n          seconds.</p>\n            </li>\n            <li>\n               <p>If you specify <code>HttpsRedirectionEnabled</code> for the <code>attributeName</code>\n          request parameter, then the <code>attributeValue</code> request parameter must be\n            <code>true</code> to activate HTTP to HTTPS redirection or <code>false</code> to\n          deactivate HTTP to HTTPS redirection.</p>\n            </li>\n            <li>\n               <p>If you specify <code>TlsPolicyName</code> for the <code>attributeName</code> request\n          parameter, then the <code>attributeValue</code> request parameter must be the name of the\n          TLS policy.</p>\n               <p>Use the <a href=\"https://docs.aws.amazon.com/lightsail/2016-11-28/api-reference/API_GetLoadBalancerTlsPolicies.html\">GetLoadBalancerTlsPolicies</a> action to get a list of TLS policy names that you\n          can specify.</p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 }
diff --git a/aws/sdk/aws-models/location.json b/aws/sdk/aws-models/location.json
index 2ba744cd71d2c49cc03fa3c30f9444fbd648bf71..527b78f71c10164d77975748e81eeb39fa7329c6 100644
--- a/aws/sdk/aws-models/location.json
+++ b/aws/sdk/aws-models/location.json
@@ -325,7 +325,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Evaluates device positions against the geofence geometries from a given geofence\n            collection.</p>\n        <p>This operation always returns an empty response because geofences are asynchronously\n            evaluated. The evaluation determines if the device has entered or exited a geofenced\n            area, and then publishes one of the following events to Amazon EventBridge:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>ENTER</code> if Amazon Location determines that the tracked device has entered\n                    a geofenced area.</p>\n            </li>\n            <li>\n                <p>\n                  <code>EXIT</code> if Amazon Location determines that the tracked device has exited a\n                    geofenced area.</p>\n            </li>\n         </ul>\n        <note>\n            <p>The last geofence that a device was observed within is tracked for 30 days after\n                the most recent device position update.</p>\n        </note>\n        <note>\n            <p>Geofence evaluation uses the given device position. It does not account for the \n                optional <code>Accuracy</code> of a <code>DevicePositionUpdate</code>.</p>\n        </note>",
+                "smithy.api#documentation": "<p>Evaluates device positions against the geofence geometries from a given geofence\n            collection.</p>\n        <p>This operation always returns an empty response because geofences are asynchronously\n            evaluated. The evaluation determines if the device has entered or exited a geofenced\n            area, and then publishes one of the following events to Amazon EventBridge:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>ENTER</code> if Amazon Location determines that the tracked device has entered\n                    a geofenced area.</p>\n            </li>\n            <li>\n                <p>\n                  <code>EXIT</code> if Amazon Location determines that the tracked device has exited a\n                    geofenced area.</p>\n            </li>\n         </ul>\n        <note>\n            <p>The last geofence that a device was observed within is tracked for 30 days after\n                the most recent device position update.</p>\n        </note>\n        <note>\n            <p>Geofence evaluation uses the given device position. It does not account for the\n                optional <code>Accuracy</code> of a <code>DevicePositionUpdate</code>.</p>\n        </note>\n        <note>\n            <p>The <code>DeviceID</code> is used as a string to represent the device. You do not\n                need to have a <code>Tracker</code> associated with the <code>DeviceID</code>.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "geofencing."
                 },
@@ -887,7 +887,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>\n            <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route.html\">Calculates a route</a> given the following required parameters:\n                <code>DeparturePosition</code> and <code>DestinationPosition</code>. Requires that\n            you first <a href=\"https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html\">create a\n                route calculator resource</a>.</p>\n        <p>By default, a request that doesn't specify a departure time uses the best time of day\n            to travel with the best traffic conditions when calculating the route.</p>\n        <p>Additional options include:</p>\n        <ul>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html\">Specifying a departure time</a> using either <code>DepartureTime</code>\n                    or <code>DepartNow</code>. This calculates a route based on predictive traffic\n                    data at the given time. </p>\n                <note>\n                    <p>You can't specify both <code>DepartureTime</code> and\n                            <code>DepartNow</code> in a single request. Specifying both parameters\n                        returns a validation error.</p>\n                </note>\n            </li>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html\">Specifying a travel mode</a> using TravelMode sets the transportation\n                    mode used to calculate the routes. This also lets you specify additional route\n                    preferences in <code>CarModeOptions</code> if traveling by <code>Car</code>, or\n                        <code>TruckModeOptions</code> if traveling by <code>Truck</code>.</p>\n            </li>\n         </ul>",
+                "smithy.api#documentation": "<p>\n            <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route.html\">Calculates a route</a> given the following required parameters:\n                <code>DeparturePosition</code> and <code>DestinationPosition</code>. Requires that\n            you first <a href=\"https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html\">create a\n                route calculator resource</a>.</p>\n        <p>By default, a request that doesn't specify a departure time uses the best time of day\n            to travel with the best traffic conditions when calculating the route.</p>\n        <p>Additional options include:</p>\n        <ul>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html\">Specifying a\n                        departure time</a> using either <code>DepartureTime</code> or\n                        <code>DepartNow</code>. This calculates a route based on predictive traffic\n                    data at the given time. </p>\n                <note>\n                    <p>You can't specify both <code>DepartureTime</code> and\n                            <code>DepartNow</code> in a single request. Specifying both parameters\n                        returns a validation error.</p>\n                </note>\n            </li>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html\">Specifying a travel\n                        mode</a> using TravelMode sets the transportation mode used to calculate\n                    the routes. This also lets you specify additional route preferences in\n                        <code>CarModeOptions</code> if traveling by <code>Car</code>, or\n                        <code>TruckModeOptions</code> if traveling by <code>Truck</code>.</p>\n            </li>\n         </ul>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "routes."
                 },
@@ -944,7 +944,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>\n            <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html\"> Calculates a\n            route matrix</a> given the following required parameters:\n            <code>DeparturePositions</code> and <code>DestinationPositions</code>.\n            <code>CalculateRouteMatrix</code> calculates routes and returns the travel time and \n            travel distance from each departure position to each destination position in the \n            request. For example, given departure positions A and B, and destination positions \n            X and Y, <code>CalculateRouteMatrix</code> will return time and distance for routes \n            from A to X, A to Y, B to X, and B to Y (in that order). The number of results returned \n            (and routes calculated) will be the number of <code>DeparturePositions</code> \n            times the number of <code>DestinationPositions</code>.</p>\n        <note>\n            <p>Your account is charged for each route calculated, not the number of requests.</p>\n        </note>\n        <p>Requires that you first <a href=\"https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html\">create a\n            route calculator resource</a>.</p>\n        <p>By default, a request that doesn't specify a departure time uses the best time of day\n            to travel with the best traffic conditions when calculating routes.</p>\n        <p>Additional options include:</p>\n        <ul>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html\">\n                        Specifying a departure time</a> using either <code>DepartureTime</code>\n                    or <code>DepartNow</code>. This calculates routes based on predictive traffic\n                    data at the given time. </p>\n                <note>\n                    <p>You can't specify both <code>DepartureTime</code> and\n                            <code>DepartNow</code> in a single request. Specifying both parameters\n                        returns a validation error.</p>\n                </note>\n            </li>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html\">Specifying a travel mode</a> using TravelMode sets the transportation\n                    mode used to calculate the routes. This also lets you specify additional route\n                    preferences in <code>CarModeOptions</code> if traveling by <code>Car</code>, or\n                        <code>TruckModeOptions</code> if traveling by <code>Truck</code>.</p>\n            </li>\n         </ul>",
+                "smithy.api#documentation": "<p>\n            <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html\"> Calculates a route\n                matrix</a> given the following required parameters:\n                <code>DeparturePositions</code> and <code>DestinationPositions</code>.\n                <code>CalculateRouteMatrix</code> calculates routes and returns the travel time and\n            travel distance from each departure position to each destination position in the\n            request. For example, given departure positions A and B, and destination positions X and\n            Y, <code>CalculateRouteMatrix</code> will return time and distance for routes from A to\n            X, A to Y, B to X, and B to Y (in that order). The number of results returned (and\n            routes calculated) will be the number of <code>DeparturePositions</code> times the\n            number of <code>DestinationPositions</code>.</p>\n        <note>\n            <p>Your account is charged for each route calculated, not the number of\n                requests.</p>\n        </note>\n        <p>Requires that you first <a href=\"https://docs.aws.amazon.com/location-routes/latest/APIReference/API_CreateRouteCalculator.html\">create a\n                route calculator resource</a>.</p>\n        <p>By default, a request that doesn't specify a departure time uses the best time of day\n            to travel with the best traffic conditions when calculating routes.</p>\n        <p>Additional options include:</p>\n        <ul>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/departure-time.html\"> Specifying a\n                        departure time</a> using either <code>DepartureTime</code> or\n                        <code>DepartNow</code>. This calculates routes based on predictive traffic\n                    data at the given time. </p>\n                <note>\n                    <p>You can't specify both <code>DepartureTime</code> and\n                            <code>DepartNow</code> in a single request. Specifying both parameters\n                        returns a validation error.</p>\n                </note>\n            </li>\n            <li>\n                <p>\n                  <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/travel-mode.html\">Specifying a travel\n                        mode</a> using TravelMode sets the transportation mode used to calculate\n                    the routes. This also lets you specify additional route preferences in\n                        <code>CarModeOptions</code> if traveling by <code>Car</code>, or\n                        <code>TruckModeOptions</code> if traveling by <code>Truck</code>.</p>\n            </li>\n         </ul>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "routes."
                 },
@@ -961,7 +961,7 @@
                 "CalculatorName": {
                     "target": "com.amazonaws.location#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the route calculator resource that you want to use to calculate the route matrix. </p>",
+                        "smithy.api#documentation": "<p>The name of the route calculator resource that you want to use to calculate the route\n            matrix. </p>",
                         "smithy.api#httpLabel": {},
                         "smithy.api#required": {}
                     }
@@ -969,7 +969,7 @@
                 "DeparturePositions": {
                     "target": "com.amazonaws.location#PositionList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The list of departure (origin) positions for the route matrix. An array of points,\n            each of which is itself a 2-value array defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n            <code>[longitude, latitude]</code>. For example, <code>[-123.115,\n            49.285]</code>.</p>\n        <important>\n            <p>Depending on the data provider selected in the route calculator resource there may be additional\n                restrictions on the inputs you can choose. See <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits\">\n                    Position restrictions</a> in the <i>Amazon Location Service Developer Guide</i>.</p>\n        </important>\n        <note>\n            <p>For route calculators that use Esri as the data provider, if you specify a \n                departure that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\"> moves the position \n                to the nearest road</a>. The snapped value is available in the result in \n                <code>SnappedDeparturePositions</code>.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
+                        "smithy.api#documentation": "<p>The list of departure (origin) positions for the route matrix. An array of points,\n            each of which is itself a 2-value array defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n                <code>[longitude, latitude]</code>. For example, <code>[-123.115,\n            49.285]</code>.</p>\n        <important>\n            <p>Depending on the data provider selected in the route calculator resource there may\n                be additional restrictions on the inputs you can choose. See <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits\"> Position restrictions</a> in the <i>Amazon Location Service Developer\n                    Guide</i>.</p>\n        </important>\n        <note>\n            <p>For route calculators that use Esri as the data provider, if you specify a\n                departure that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\"> moves the\n                    position to the nearest road</a>. The snapped value is available in the\n                result in <code>SnappedDeparturePositions</code>.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 350
@@ -980,7 +980,7 @@
                 "DestinationPositions": {
                     "target": "com.amazonaws.location#PositionList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The list of destination positions for the route matrix. An array of points, each of\n            which is itself a 2-value array defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n            <code>[longitude, latitude]</code>. For example, <code>[-122.339,\n            47.615]</code>\n         </p>\n        <important>\n            <p>Depending on the data provider selected in the route calculator resource there may be additional\n                restrictions on the inputs you can choose. See <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits\">\n                    Position restrictions</a> in the <i>Amazon Location Service Developer Guide</i>.</p>\n        </important>\n        <note>\n            <p>For route calculators that use Esri as the data provider, if you specify a \n                destination that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\"> moves the position \n                to the nearest road</a>. The snapped value is available in the result in \n                <code>SnappedDestinationPositions</code>.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
+                        "smithy.api#documentation": "<p>The list of destination positions for the route matrix. An array of points, each of\n            which is itself a 2-value array defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n                <code>[longitude, latitude]</code>. For example, <code>[-122.339,\n            47.615]</code>\n         </p>\n        <important>\n            <p>Depending on the data provider selected in the route calculator resource there may\n                be additional restrictions on the inputs you can choose. See <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/calculate-route-matrix.html#matrix-routing-position-limits\"> Position restrictions</a> in the <i>Amazon Location Service Developer\n                    Guide</i>.</p>\n        </important>\n        <note>\n            <p>For route calculators that use Esri as the data provider, if you specify a\n                destination that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\"> moves the\n                    position to the nearest road</a>. The snapped value is available in the\n                result in <code>SnappedDestinationPositions</code>.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 350
@@ -1032,14 +1032,14 @@
                 "RouteMatrix": {
                     "target": "com.amazonaws.location#RouteMatrix",
                     "traits": {
-                        "smithy.api#documentation": "<p>The calculated route matrix containing the results for all pairs of \n        <code>DeparturePositions</code> to <code>DestinationPositions</code>. \n            Each row corresponds to one entry in <code>DeparturePositions</code>. Each\n            entry in the row corresponds to the route from that entry in\n            <code>DeparturePositions</code> to an entry in <code>DestinationPositions</code>. \n        </p>",
+                        "smithy.api#documentation": "<p>The calculated route matrix containing the results for all pairs of\n                <code>DeparturePositions</code> to <code>DestinationPositions</code>. Each row\n            corresponds to one entry in <code>DeparturePositions</code>. Each entry in the row\n            corresponds to the route from that entry in <code>DeparturePositions</code> to an entry\n            in <code>DestinationPositions</code>. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "SnappedDeparturePositions": {
                     "target": "com.amazonaws.location#PositionList",
                     "traits": {
-                        "smithy.api#documentation": "<p>For routes calculated using an Esri route calculator resource, departure positions \n            are snapped to the closest road. For Esri route calculator resources, this returns \n            the list of departure/origin positions used for calculation of the \n            <code>RouteMatrix</code>.</p>",
+                        "smithy.api#documentation": "<p>For routes calculated using an Esri route calculator resource, departure positions are\n            snapped to the closest road. For Esri route calculator resources, this returns the list\n            of departure/origin positions used for calculation of the\n            <code>RouteMatrix</code>.</p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 350
@@ -1049,7 +1049,7 @@
                 "SnappedDestinationPositions": {
                     "target": "com.amazonaws.location#PositionList",
                     "traits": {
-                        "smithy.api#documentation": "<p>The list of destination positions for the route matrix used for calculation of the <code>RouteMatrix</code>.</p>",
+                        "smithy.api#documentation": "<p>The list of destination positions for the route matrix used for calculation of the\n                <code>RouteMatrix</code>.</p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 350
@@ -1059,7 +1059,7 @@
                 "Summary": {
                     "target": "com.amazonaws.location#CalculateRouteMatrixSummary",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains information about the route matrix, <code>DataSource</code>,\n        <code>DistanceUnit</code>, <code>RouteCount</code> and <code>ErrorCount</code>.</p>",
+                        "smithy.api#documentation": "<p>Contains information about the route matrix, <code>DataSource</code>,\n                <code>DistanceUnit</code>, <code>RouteCount</code> and\n            <code>ErrorCount</code>.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -1074,14 +1074,14 @@
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The data provider of traffic and road network data used to calculate the routes.\n            Indicates one of the available providers:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The data provider of traffic and road network data used to calculate the routes.\n            Indicates one of the available providers:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data\n                providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "RouteCount": {
                     "target": "smithy.api#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The count of cells in the route matrix. Equal to the number of <code>DeparturePositions</code>\n         multiplied by the number of <code>DestinationPositions</code>.</p>",
+                        "smithy.api#documentation": "<p>The count of cells in the route matrix. Equal to the number of\n                <code>DeparturePositions</code> multiplied by the number of\n                <code>DestinationPositions</code>.</p>",
                         "smithy.api#range": {
                             "min": 1,
                             "max": 160000
@@ -1092,7 +1092,7 @@
                 "ErrorCount": {
                     "target": "smithy.api#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>The count of error results in the route matrix. If this number is 0, all routes were calculated successfully.</p>",
+                        "smithy.api#documentation": "<p>The count of error results in the route matrix. If this number is 0, all routes were\n            calculated successfully.</p>",
                         "smithy.api#range": {
                             "min": 1,
                             "max": 160000
@@ -1118,7 +1118,7 @@
                 "CalculatorName": {
                     "target": "com.amazonaws.location#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the route calculator resource that you want to use to calculate the route. </p>",
+                        "smithy.api#documentation": "<p>The name of the route calculator resource that you want to use to calculate the route.\n        </p>",
                         "smithy.api#httpLabel": {},
                         "smithy.api#required": {}
                     }
@@ -1126,21 +1126,21 @@
                 "DeparturePosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>The start position for the route. Defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n                <code>[longitude, latitude]</code>.</p>\n        <ul>\n            <li>\n                <p>For example, <code>[-123.115, 49.285]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a departure that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the\n                position to the nearest road</a>. If Esri is the provider for your route calculator, \n                specifying a route that is longer than 400 km returns a <code>400 RoutesValidationException</code> error.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
+                        "smithy.api#documentation": "<p>The start position for the route. Defined in <a href=\"https://earth-info.nga.mil/index.php?dir=wgs84&amp;action=wgs84\">World Geodetic\n            System (WGS 84)</a> format:\n                <code>[longitude, latitude]</code>.</p>\n        <ul>\n            <li>\n                <p>For example, <code>[-123.115, 49.285]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a departure that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the position\n                    to the nearest road</a>. If Esri is the provider for your route calculator,\n                specifying a route that is longer than 400 km returns a <code>400\n                    RoutesValidationException</code> error.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "DestinationPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>The finish position for the route. Defined in <a href=\"https://earth-info.nga.mil/GandG/wgs84/index.html\">WGS 84</a> format:\n                <code>[longitude, latitude]</code>.</p>\n        <ul>\n            <li>\n                <p> For example, <code>[-122.339, 47.615]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a destination that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the position to the nearest road</a>. </p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
+                        "smithy.api#documentation": "<p>The finish position for the route. Defined in <a href=\"https://earth-info.nga.mil/index.php?dir=wgs84&amp;action=wgs84\">World Geodetic\n            System (WGS 84)</a> format:\n                <code>[longitude, latitude]</code>.</p>\n        <ul>\n            <li>\n                <p> For example, <code>[-122.339, 47.615]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a destination that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the position\n                    to the nearest road</a>. </p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "WaypointPositions": {
                     "target": "com.amazonaws.location#WaypointPositionList",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies an ordered list of up to 23 intermediate positions to include along a route\n            between the departure position and destination position. </p>\n        <ul>\n            <li>\n                <p>For example, from the <code>DeparturePosition</code>\n                    <code>[-123.115, 49.285]</code>, the route follows the order that the waypoint\n                    positions are given <code>[[-122.757, 49.0021],[-122.349, 47.620]]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a waypoint position that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the position to the nearest road</a>. </p>\n            <p>Specifying more than 23 waypoints returns a <code>400 ValidationException</code>\n                error.</p>\n            <p>If Esri is the provider for your route calculator, specifying a \n                route that is longer than 400 km returns a <code>400 RoutesValidationException</code> error.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
+                        "smithy.api#documentation": "<p>Specifies an ordered list of up to 23 intermediate positions to include along a route\n            between the departure position and destination position. </p>\n        <ul>\n            <li>\n                <p>For example, from the <code>DeparturePosition</code>\n                    <code>[-123.115, 49.285]</code>, the route follows the order that the waypoint\n                    positions are given <code>[[-122.757, 49.0021],[-122.349, 47.620]]</code>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <p>If you specify a waypoint position that's not located on a road, Amazon Location <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">moves the position\n                    to the nearest road</a>. </p>\n            <p>Specifying more than 23 waypoints returns a <code>400 ValidationException</code>\n                error.</p>\n            <p>If Esri is the provider for your route calculator, specifying a route that is\n                longer than 400 km returns a <code>400 RoutesValidationException</code>\n                error.</p>\n        </note>\n        <p>Valid Values: <code>[-180 to 180,-90 to 90]</code>\n         </p>",
                         "smithy.api#length": {
                             "max": 23
                         }
@@ -1196,7 +1196,7 @@
                 "Legs": {
                     "target": "com.amazonaws.location#LegList",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains details about each path between a pair of positions included along a route\n            such as: <code>StartPosition</code>, <code>EndPosition</code>, <code>Distance</code>,\n                <code>DurationSeconds</code>, <code>Geometry</code>, and <code>Steps</code>. The\n            number of legs returned corresponds to one fewer than the total number of positions in\n            the request. </p>\n        <p>For example, a route with a departure position and destination position returns one\n            leg with the positions <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a nearby road</a>:</p>\n        <ul>\n            <li>\n                <p>The <code>StartPosition</code> is the departure position.</p>\n            </li>\n            <li>\n                <p>The <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>\n        <p>A route with a waypoint between the departure and destination position returns two\n            legs with the positions snapped to a nearby road:</p>\n        <ul>\n            <li>\n                <p>Leg 1: The <code>StartPosition</code> is the departure position . The\n                        <code>EndPosition</code> is the waypoint positon.</p>\n            </li>\n            <li>\n                <p>Leg 2: The <code>StartPosition</code> is the waypoint position. The\n                        <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>Contains details about each path between a pair of positions included along a route\n            such as: <code>StartPosition</code>, <code>EndPosition</code>, <code>Distance</code>,\n                <code>DurationSeconds</code>, <code>Geometry</code>, and <code>Steps</code>. The\n            number of legs returned corresponds to one fewer than the total number of positions in\n            the request. </p>\n        <p>For example, a route with a departure position and destination position returns one\n            leg with the positions <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a nearby\n                road</a>:</p>\n        <ul>\n            <li>\n                <p>The <code>StartPosition</code> is the departure position.</p>\n            </li>\n            <li>\n                <p>The <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>\n        <p>A route with a waypoint between the departure and destination position returns two\n            legs with the positions snapped to a nearby road:</p>\n        <ul>\n            <li>\n                <p>Leg 1: The <code>StartPosition</code> is the departure position . The\n                        <code>EndPosition</code> is the waypoint positon.</p>\n            </li>\n            <li>\n                <p>Leg 2: The <code>StartPosition</code> is the waypoint position. The\n                        <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1232,7 +1232,7 @@
                 "Distance": {
                     "target": "smithy.api#Double",
                     "traits": {
-                        "smithy.api#documentation": "<p>The total distance covered by the route. The sum of the distance travelled between\n            every stop on the route.</p>\n        <note>\n            <p>If Esri is the data source for the route calculator, the route distance can’t \n                be greater than 400 km. If the route exceeds 400 km, the response is a \n                <code>400 RoutesValidationException</code> error.</p>\n        </note>",
+                        "smithy.api#documentation": "<p>The total distance covered by the route. The sum of the distance travelled between\n            every stop on the route.</p>\n        <note>\n            <p>If Esri is the data source for the route calculator, the route distance can’t be\n                greater than 400 km. If the route exceeds 400 km, the response is a <code>400\n                    RoutesValidationException</code> error.</p>\n        </note>",
                         "smithy.api#range": {
                             "min": 0
                         },
@@ -1382,7 +1382,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n            <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "PricingPlanDataSource": {
@@ -1571,7 +1571,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Creates a place index resource in your AWS account. Use a place index resource to\n            geocode addresses and other text queries by using the <code>SearchPlaceIndexForText</code> operation,\n            and reverse geocode coordinates by using the <code>SearchPlaceIndexForPosition</code> operation, and\n            enable autosuggestions by using the <code>SearchPlaceIndexForSuggestions</code> operation.</p>\n         <note>\n            <p>If your application is tracking or routing assets you use in your business, such \n            as delivery vehicles or employees, you may only use HERE as your geolocation \n            provider. See section 82 of the <a href=\"http://aws.amazon.com/service-terms\">AWS\n               service terms</a> for more details.</p>\n         </note>",
+                "smithy.api#documentation": "<p>Creates a place index resource in your AWS account. Use a place index resource to\n            geocode addresses and other text queries by using the\n                <code>SearchPlaceIndexForText</code> operation, and reverse geocode coordinates by\n            using the <code>SearchPlaceIndexForPosition</code> operation, and enable autosuggestions\n            by using the <code>SearchPlaceIndexForSuggestions</code> operation.</p>\n        <note>\n            <p>If your application is tracking or routing assets you use in your business, such\n                as delivery vehicles or employees, you may only use HERE as your geolocation\n                provider. See section 82 of the <a href=\"http://aws.amazon.com/service-terms\">AWS\n                    service terms</a> for more details.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "places."
                 },
@@ -1588,14 +1588,14 @@
                 "IndexName": {
                     "target": "com.amazonaws.location#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the place index resource. </p>\n         <p>Requirements:</p>\n         <ul>\n            <li>\n               <p>Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-), periods (.), and\n               underscores (_).</p>\n            </li>\n            <li>\n               <p>Must be a unique place index resource name.</p>\n            </li>\n            <li>\n               <p>No spaces allowed. For example, <code>ExamplePlaceIndex</code>.</p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The name of the place index resource. </p>\n        <p>Requirements:</p>\n        <ul>\n            <li>\n                <p>Contain only alphanumeric characters (A–Z, a–z, 0–9), hyphens (-), periods\n                    (.), and underscores (_).</p>\n            </li>\n            <li>\n                <p>Must be a unique place index resource name.</p>\n            </li>\n            <li>\n                <p>No spaces allowed. For example, <code>ExamplePlaceIndex</code>.</p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the geospatial data provider for the new place index.</p>\n         <note>\n            <p>This field is case-sensitive. Enter the valid values as shown. For example, entering\n               <code>HERE</code> returns an error.</p>\n         </note>\n         <p>Valid values include:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Esri</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/esri.html\">Esri</a>'s coverage in your\n               region of interest, see <a href=\"https://developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm\">Esri details on geocoding coverage</a>.</p>\n            </li>\n            <li>\n               <p>\n                  <code>Here</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/HERE.html\">HERE Technologies</a>'\n               coverage in your region of interest, see <a href=\"https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html\">HERE details on goecoding coverage</a>.</p>\n               <important>\n                  <p>If you specify HERE Technologies (<code>Here</code>) as the data provider,\n                  you may not <a href=\"https://docs.aws.amazon.com/location-places/latest/APIReference/API_DataSourceConfiguration.html\">store results</a> for locations in Japan. For more information, see the\n                     <a href=\"https://aws.amazon.com/service-terms/\">AWS Service Terms</a>\n                  for Amazon Location Service.</p>\n               </important>\n            </li>\n         </ul>\n         <p>For additional information , see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Data providers</a>\n         on the <i>Amazon Location Service Developer Guide</i>.</p>",
+                        "smithy.api#documentation": "<p>Specifies the geospatial data provider for the new place index.</p>\n        <note>\n            <p>This field is case-sensitive. Enter the valid values as shown. For example,\n                entering <code>HERE</code> returns an error.</p>\n        </note>\n        <p>Valid values include:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/esri.html\">Esri</a>'s coverage in your region of interest, see <a href=\"https://developers.arcgis.com/rest/geocode/api-reference/geocode-coverage.htm\">Esri details on geocoding coverage</a>.</p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/HERE.html\">HERE\n                        Technologies</a>' coverage in your region of interest, see <a href=\"https://developer.here.com/documentation/geocoder/dev_guide/topics/coverage-geocoder.html\">HERE details on goecoding coverage</a>.</p>\n                <important>\n                    <p>If you specify HERE Technologies (<code>Here</code>) as the data provider,\n                        you may not <a href=\"https://docs.aws.amazon.com/location-places/latest/APIReference/API_DataSourceConfiguration.html\">store results</a> for locations in Japan. For more information, see\n                        the <a href=\"https://aws.amazon.com/service-terms/\">AWS Service\n                            Terms</a> for Amazon Location Service.</p>\n                </important>\n            </li>\n         </ul>\n        <p>For additional information , see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Data\n                providers</a> on the <i>Amazon Location Service Developer Guide</i>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1606,7 +1606,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n         <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "Description": {
@@ -1624,7 +1624,7 @@
                 "Tags": {
                     "target": "com.amazonaws.location#TagMap",
                     "traits": {
-                        "smithy.api#documentation": "<p>Applies one or more tags to the place index resource. A tag is a key-value pair that helps you\n         manage, identify, search, and filter your resources.</p>\n         <p>Format: <code>\"key\" : \"value\"</code>\n         </p>\n         <p>Restrictions:</p>\n         <ul>\n            <li>\n               <p>Maximum 50 tags per resource.</p>\n            </li>\n            <li>\n               <p>Each tag key must be unique and must have exactly one associated value.</p>\n            </li>\n            <li>\n               <p>Maximum key length: 128 Unicode characters in UTF-8.</p>\n            </li>\n            <li>\n               <p>Maximum value length: 256 Unicode characters in UTF-8.</p>\n            </li>\n            <li>\n               <p>Can use alphanumeric characters (A–Z, a–z, 0–9), and the following characters: + -\n               = . _ : / @</p>\n            </li>\n            <li>\n               <p>Cannot use \"aws:\" as a prefix for a key.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>Applies one or more tags to the place index resource. A tag is a key-value pair that\n            helps you manage, identify, search, and filter your resources.</p>\n        <p>Format: <code>\"key\" : \"value\"</code>\n         </p>\n        <p>Restrictions:</p>\n        <ul>\n            <li>\n                <p>Maximum 50 tags per resource.</p>\n            </li>\n            <li>\n                <p>Each tag key must be unique and must have exactly one associated value.</p>\n            </li>\n            <li>\n                <p>Maximum key length: 128 Unicode characters in UTF-8.</p>\n            </li>\n            <li>\n                <p>Maximum value length: 256 Unicode characters in UTF-8.</p>\n            </li>\n            <li>\n                <p>Can use alphanumeric characters (A–Z, a–z, 0–9), and the following characters:\n                    + - = . _ : / @</p>\n            </li>\n            <li>\n                <p>Cannot use \"aws:\" as a prefix for a key.</p>\n            </li>\n         </ul>"
                     }
                 }
             }
@@ -1642,14 +1642,14 @@
                 "IndexArn": {
                     "target": "com.amazonaws.location#Arn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the place index resource. Used to specify a resource\n         across AWS. </p>\n         <ul>\n            <li>\n               <p>Format example:\n                  <code>arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the place index resource. Used to specify a\n            resource across AWS. </p>\n        <ul>\n            <li>\n                <p>Format example:\n                        <code>arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
                 "CreateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -1681,7 +1681,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Creates a route calculator resource in your AWS account.</p>\n        <p>You can send requests to a route calculator resource to estimate travel time,\n            distance, and get directions. A route calculator sources traffic and road network data\n            from your chosen data provider.</p>\n        <note>\n            <p>If your application is tracking or routing assets you use in your business, such \n                as delivery vehicles or employees, you may only use HERE as your geolocation \n                provider. See section 82 of the <a href=\"http://aws.amazon.com/service-terms\">AWS\n                service terms</a> for more details.</p>\n        </note>",
+                "smithy.api#documentation": "<p>Creates a route calculator resource in your AWS account.</p>\n        <p>You can send requests to a route calculator resource to estimate travel time,\n            distance, and get directions. A route calculator sources traffic and road network data\n            from your chosen data provider.</p>\n        <note>\n            <p>If your application is tracking or routing assets you use in your business, such\n                as delivery vehicles or employees, you may only use HERE as your geolocation\n                provider. See section 82 of the <a href=\"http://aws.amazon.com/service-terms\">AWS\n                    service terms</a> for more details.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "routes."
                 },
@@ -1698,14 +1698,14 @@
                 "CalculatorName": {
                     "target": "com.amazonaws.location#ResourceName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the route calculator resource. </p>\n        <p>Requirements:</p>\n        <ul>\n            <li>\n               <p>Can use alphanumeric characters (A–Z, a–z, 0–9) , hyphens (-), periods (.), and underscores\n                    (_).</p>\n            </li>\n            <li>\n               <p>Must be a unique Route calculator resource name.</p>\n            </li>\n            <li>\n                <p>No spaces allowed. For example, <code>ExampleRouteCalculator</code>.</p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The name of the route calculator resource. </p>\n        <p>Requirements:</p>\n        <ul>\n            <li>\n                <p>Can use alphanumeric characters (A–Z, a–z, 0–9) , hyphens (-), periods (.),\n                    and underscores (_).</p>\n            </li>\n            <li>\n                <p>Must be a unique Route calculator resource name.</p>\n            </li>\n            <li>\n                <p>No spaces allowed. For example, <code>ExampleRouteCalculator</code>.</p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the data provider of traffic and road network data.</p>\n        <note>\n            <p>This field is case-sensitive. Enter the valid values as shown. For example,\n                entering <code>HERE</code> returns an error. Route calculators that use Esri as a data source \n               only calculate routes that are shorter than 400 km.</p>\n        </note>\n        <p>Valid values include:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/esri.html\">Esri</a>'s coverage in your region of interest, see <a href=\"https://doc.arcgis.com/en/arcgis-online/reference/network-coverage.htm\">Esri details on street networks and traffic coverage</a>.</p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/HERE.html\">HERE\n                        Technologies</a>' coverage in your region of interest, see <a href=\"https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/car-routing.html\">HERE car routing coverage</a> and <a href=\"https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/truck-routing.html\">HERE truck routing coverage</a>.</p>\n            </li>\n         </ul>\n        <p>For additional information , see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Data\n                providers</a> on the <i>Amazon Location Service Developer Guide</i>.</p>",
+                        "smithy.api#documentation": "<p>Specifies the data provider of traffic and road network data.</p>\n        <note>\n            <p>This field is case-sensitive. Enter the valid values as shown. For example,\n                entering <code>HERE</code> returns an error. Route calculators that use Esri as a\n                data source only calculate routes that are shorter than 400 km.</p>\n        </note>\n        <p>Valid values include:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/esri.html\">Esri</a>'s coverage in your region of interest, see <a href=\"https://doc.arcgis.com/en/arcgis-online/reference/network-coverage.htm\">Esri details on street networks and traffic coverage</a>.</p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code> – For additional information about <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/HERE.html\">HERE\n                        Technologies</a>' coverage in your region of interest, see <a href=\"https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/car-routing.html\">HERE car routing coverage</a> and <a href=\"https://developer.here.com/documentation/routing-api/dev_guide/topics/coverage/truck-routing.html\">HERE truck routing coverage</a>.</p>\n            </li>\n         </ul>\n        <p>For additional information , see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Data\n                providers</a> on the <i>Amazon Location Service Developer Guide</i>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1716,7 +1716,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n            <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "Description": {
@@ -1884,12 +1884,12 @@
                 "IntendedUse": {
                     "target": "com.amazonaws.location#IntendedUse",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies how the results of an operation will be stored by the caller. </p>\n         <p>Valid values include:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>SingleUse</code> specifies that the results won't be stored. </p>\n            </li>\n            <li>\n               <p>\n                  <code>Storage</code> specifies that the result can be cached or stored in a database.</p>\n            </li>\n         </ul>\n         <p>Default value: <code>SingleUse</code>\n         </p>"
+                        "smithy.api#documentation": "<p>Specifies how the results of an operation will be stored by the caller. </p>\n        <p>Valid values include:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>SingleUse</code> specifies that the results won't be stored. </p>\n            </li>\n            <li>\n                <p>\n                  <code>Storage</code> specifies that the result can be cached or stored in a\n                    database.</p>\n            </li>\n         </ul>\n        <p>Default value: <code>SingleUse</code>\n         </p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Specifies the data storage option chosen for requesting Places.</p>\n         <important>\n            <p>When using Amazon Location Places:</p>\n            <ul>\n               <li>\n                  <p>If using HERE Technologies as a data provider, you can't store results for\n                  locations in Japan by setting <code>IntendedUse</code> to <code>Storage</code>.\n                  parameter.</p>\n               </li>\n               <li>\n                  <p>Under the <code>MobileAssetTracking</code> or <code>MobilAssetManagement</code>\n                  pricing plan, you can't store results from your place index resources by setting <code>IntendedUse</code> to <code>Storage</code>. This\n                  returns a validation exception error.</p>\n               </li>\n            </ul>\n            <p>For more information, see the <a href=\"https://aws.amazon.com/service-terms/\">AWS Service Terms</a> for\n            Amazon Location Service.</p>\n         </important>"
+                "smithy.api#documentation": "<p>Specifies the data storage option chosen for requesting Places.</p>\n        <important>\n            <p>When using Amazon Location Places:</p>\n            <ul>\n               <li>\n                    <p>If using HERE Technologies as a data provider, you can't store results for\n                        locations in Japan by setting <code>IntendedUse</code> to\n                            <code>Storage</code>. parameter.</p>\n                </li>\n               <li>\n                    <p>Under the <code>MobileAssetTracking</code> or\n                            <code>MobilAssetManagement</code> pricing plan, you can't store results\n                        from your place index resources by setting <code>IntendedUse</code> to\n                            <code>Storage</code>. This returns a validation exception error.</p>\n                </li>\n            </ul>\n            <p>For more information, see the <a href=\"https://aws.amazon.com/service-terms/\">AWS Service Terms</a> for Amazon Location Service.</p>\n        </important>"
             }
         },
         "com.amazonaws.location#DeleteGeofenceCollection": {
@@ -2027,7 +2027,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Deletes a place index resource from your AWS account.</p>\n         <note>\n            <p>This operation deletes the resource permanently.</p>\n         </note>",
+                "smithy.api#documentation": "<p>Deletes a place index resource from your AWS account.</p>\n        <note>\n            <p>This operation deletes the resource permanently.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "places."
                 },
@@ -2082,7 +2082,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Deletes a route calculator resource from your AWS account.</p>\n        <note>\n            <p>This operation deletes the resource permanently.</p>\n         </note>",
+                "smithy.api#documentation": "<p>Deletes a route calculator resource from your AWS account.</p>\n        <note>\n            <p>This operation deletes the resource permanently.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "routes."
                 },
@@ -2470,7 +2470,7 @@
                 "IndexArn": {
                     "target": "com.amazonaws.location#Arn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the place index resource. Used to specify a resource\n         across AWS. </p>\n         <ul>\n            <li>\n               <p>Format example:\n                  <code>arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the place index resource. Used to specify a\n            resource across AWS. </p>\n        <ul>\n            <li>\n                <p>Format example:\n                        <code>arn:aws:geo:region:account-id:place-index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
@@ -2494,21 +2494,21 @@
                 "CreateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "UpdateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The data provider of geospatial data. Values can be one of the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n         <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The data provider of geospatial data. Values can be one of the following:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -3766,14 +3766,14 @@
                 "StartPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>The starting position of the leg. Follows the format\n            <code>[longitude,latitude]</code>.</p>\n        <note>\n            <p>If the <code>StartPosition</code> isn't located on a road, it's <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a nearby road</a>. </p>\n        </note>",
+                        "smithy.api#documentation": "<p>The starting position of the leg. Follows the format\n            <code>[longitude,latitude]</code>.</p>\n        <note>\n            <p>If the <code>StartPosition</code> isn't located on a road, it's <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a\n                    nearby road</a>. </p>\n        </note>",
                         "smithy.api#required": {}
                     }
                 },
                 "EndPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>The terminating position of the leg. Follows the format\n                <code>[longitude,latitude]</code>.</p>\n        <note>\n            <p>If the <code>EndPosition</code> isn't located on a road, it's <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/nap-to-nearby-road.html\">snapped to a nearby road</a>. </p>\n        </note>",
+                        "smithy.api#documentation": "<p>The terminating position of the leg. Follows the format\n                <code>[longitude,latitude]</code>.</p>\n        <note>\n            <p>If the <code>EndPosition</code> isn't located on a road, it's <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/nap-to-nearby-road.html\">snapped to a nearby\n                    road</a>. </p>\n        </note>",
                         "smithy.api#required": {}
                     }
                 },
@@ -3812,7 +3812,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Contains the calculated route's details for each path between a pair of positions. The\n            number of legs returned corresponds to one fewer than the total number of positions in\n            the request. </p>\n        <p>For example, a route with a departure position and destination position returns one\n            leg with the positions <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a nearby road</a>:</p>\n        <ul>\n            <li>\n                <p>The <code>StartPosition</code> is the departure position.</p>\n            </li>\n            <li>\n                <p>The <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>\n        <p>A route with a waypoint between the departure and destination position returns two\n            legs with the positions snapped to a nearby road:</p>\n        <ul>\n            <li>\n                <p>Leg 1: The <code>StartPosition</code> is the departure position . The\n                        <code>EndPosition</code> is the waypoint positon.</p>\n            </li>\n            <li>\n                <p>Leg 2: The <code>StartPosition</code> is the waypoint position. The\n                        <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>"
+                "smithy.api#documentation": "<p>Contains the calculated route's details for each path between a pair of positions. The\n            number of legs returned corresponds to one fewer than the total number of positions in\n            the request. </p>\n        <p>For example, a route with a departure position and destination position returns one\n            leg with the positions <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/snap-to-nearby-road.html\">snapped to a nearby\n                road</a>:</p>\n        <ul>\n            <li>\n                <p>The <code>StartPosition</code> is the departure position.</p>\n            </li>\n            <li>\n                <p>The <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>\n        <p>A route with a waypoint between the departure and destination position returns two\n            legs with the positions snapped to a nearby road:</p>\n        <ul>\n            <li>\n                <p>Leg 1: The <code>StartPosition</code> is the departure position . The\n                        <code>EndPosition</code> is the waypoint positon.</p>\n            </li>\n            <li>\n                <p>Leg 2: The <code>StartPosition</code> is the waypoint position. The\n                        <code>EndPosition</code> is the destination position.</p>\n            </li>\n         </ul>"
             }
         },
         "com.amazonaws.location#LegGeometry": {
@@ -4233,6 +4233,7 @@
                     "method": "POST"
                 },
                 "smithy.api#paginated": {
+                    "pageSize": "MaxResults",
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
                     "items": "Entries"
@@ -4256,6 +4257,16 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The pagination token specifying which page of results to return in the response. If no\n            token is provided, the default page is the first page. </p>\n        <p>Default value: <code>null</code>\n         </p>"
                     }
+                },
+                "MaxResults": {
+                    "target": "smithy.api#Integer",
+                    "traits": {
+                        "smithy.api#documentation": "<p>An optional limit for the number of geofences returned in a single call. </p>\n        <p>Default value: <code>100</code>\n         </p>",
+                        "smithy.api#range": {
+                            "min": 1,
+                            "max": 100
+                        }
+                    }
                 }
             }
         },
@@ -4461,7 +4472,7 @@
                 "MaxResults": {
                     "target": "smithy.api#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional limit for the maximum number of results returned in a single call.</p>\n         <p>Default value: <code>100</code>\n         </p>",
+                        "smithy.api#documentation": "<p>An optional limit for the maximum number of results returned in a single call.</p>\n        <p>Default value: <code>100</code>\n         </p>",
                         "smithy.api#range": {
                             "min": 1,
                             "max": 100
@@ -4471,7 +4482,7 @@
                 "NextToken": {
                     "target": "com.amazonaws.location#Token",
                     "traits": {
-                        "smithy.api#documentation": "<p>The pagination token specifying which page of results to return in the response. If no\n         token is provided, the default page is the first page.</p>\n         <p>Default value: <code>null</code>\n         </p>"
+                        "smithy.api#documentation": "<p>The pagination token specifying which page of results to return in the response. If no\n            token is provided, the default page is the first page.</p>\n        <p>Default value: <code>null</code>\n         </p>"
                     }
                 }
             }
@@ -4489,7 +4500,7 @@
                 "NextToken": {
                     "target": "com.amazonaws.location#Token",
                     "traits": {
-                        "smithy.api#documentation": "<p>A pagination token indicating that there are additional pages available. You can use the\n         token in a new request to fetch the next page of results.</p>"
+                        "smithy.api#documentation": "<p>A pagination token indicating that there are additional pages available. You can use\n            the token in a new request to fetch the next page of results.</p>"
                     }
                 }
             }
@@ -4514,7 +4525,7 @@
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The data provider of geospatial data. Values can be one of the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n         <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The data provider of geospatial data. Values can be one of the following:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>Esri</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>Here</code>\n               </p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -4531,14 +4542,14 @@
                 "CreateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was created in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "UpdateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\">ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -5093,7 +5104,7 @@
                 "Label": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The full name and address of the point of interest such as a city,\n         region, or country. For example, <code>123 Any Street, Any Town, USA</code>.</p>"
+                        "smithy.api#documentation": "<p>The full name and address of the point of interest such as a city, region, or country.\n            For example, <code>123 Any Street, Any Town, USA</code>.</p>"
                     }
                 },
                 "Geometry": {
@@ -5111,7 +5122,7 @@
                 "Street": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name for a street or a road to identify a location. For example, <code>Main\n         Street</code>.</p>"
+                        "smithy.api#documentation": "<p>The name for a street or a road to identify a location. For example, <code>Main\n                Street</code>.</p>"
                     }
                 },
                 "Neighborhood": {
@@ -5123,48 +5134,48 @@
                 "Municipality": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A name for a local area, such as a city or town name. For example,\n         <code>Toronto</code>.</p>"
+                        "smithy.api#documentation": "<p>A name for a local area, such as a city or town name. For example,\n                <code>Toronto</code>.</p>"
                     }
                 },
                 "SubRegion": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A country, or an area that's part of a larger region.  For example, <code>Metro\n            Vancouver</code>.</p>"
+                        "smithy.api#documentation": "<p>A country, or an area that's part of a larger region. For example, <code>Metro\n                Vancouver</code>.</p>"
                     }
                 },
                 "Region": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A name for an area or geographical division, such as a province or state name. For\n         example, <code>British Columbia</code>.</p>"
+                        "smithy.api#documentation": "<p>A name for an area or geographical division, such as a province or state name. For\n            example, <code>British Columbia</code>.</p>"
                     }
                 },
                 "Country": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A country/region specified using <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> 3-digit\n         country/region code. For example, <code>CAN</code>.</p>"
+                        "smithy.api#documentation": "<p>A country/region specified using <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> 3-digit\n            country/region code. For example, <code>CAN</code>.</p>"
                     }
                 },
                 "PostalCode": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A group of numbers and letters in a country-specific format, which accompanies the\n         address for the purpose of identifying a location. </p>"
+                        "smithy.api#documentation": "<p>A group of numbers and letters in a country-specific format, which accompanies the\n            address for the purpose of identifying a location. </p>"
                     }
                 },
                 "Interpolated": {
                     "target": "smithy.api#Boolean",
                     "traits": {
-                        "smithy.api#documentation": "<p>\n            <code>True</code> if the result is interpolated from other known places.</p>\n         <p>\n            <code>False</code> if the Place is a known place.</p>\n         <p>Not returned when the partner does not provide the information.</p>\n         <p>For example, returns <code>False</code> for an address location that is found in the \n         partner data, but returns <code>True</code> if an address does not exist in the partner\n         data and its location is calculated by interpolating between other known addresses.\n      </p>"
+                        "smithy.api#documentation": "<p>\n            <code>True</code> if the result is interpolated from other known places.</p>\n        <p>\n            <code>False</code> if the Place is a known place.</p>\n        <p>Not returned when the partner does not provide the information.</p>\n        <p>For example, returns <code>False</code> for an address location that is found in the\n            partner data, but returns <code>True</code> if an address does not exist in the partner\n            data and its location is calculated by interpolating between other known addresses.\n        </p>"
                     }
                 },
                 "TimeZone": {
                     "target": "com.amazonaws.location#TimeZone",
                     "traits": {
-                        "smithy.api#documentation": "<p>The time zone in which the <code>Place</code> is located. Returned only when using \n         Here as the selected partner.</p>"
+                        "smithy.api#documentation": "<p>The time zone in which the <code>Place</code> is located. Returned only when using\n            Here as the selected partner.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Contains details about addresses or points of interest that match the search\n         criteria.</p>"
+                "smithy.api#documentation": "<p>Contains details about addresses or points of interest that match the search\n            criteria.</p>\n        <p>Not all details are included with all responses. Some details may only be returned \n            by specific data partners.</p>"
             }
         },
         "com.amazonaws.location#PlaceGeometry": {
@@ -5173,7 +5184,7 @@
                 "Point": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>A single point geometry specifies a location for a Place using <a href=\"https://gisgeography.com/wgs84-world-geodetic-system/\">WGS 84</a>\n         coordinates:</p>\n         <ul>\n            <li>\n               <p>\n                  <i>x</i> — Specifies the x coordinate or longitude. </p>\n            </li>\n            <li>\n               <p>\n                  <i>y</i> — Specifies the y coordinate or latitude. </p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>A single point geometry specifies a location for a Place using <a href=\"https://gisgeography.com/wgs84-world-geodetic-system/\">WGS 84</a>\n            coordinates:</p>\n        <ul>\n            <li>\n                <p>\n                  <i>x</i> — Specifies the x coordinate or longitude. </p>\n            </li>\n            <li>\n                <p>\n                  <i>y</i> — Specifies the y coordinate or latitude. </p>\n            </li>\n         </ul>"
                     }
                 }
             },
@@ -5533,12 +5544,12 @@
                 "Error": {
                     "target": "com.amazonaws.location#RouteMatrixEntryError",
                     "traits": {
-                        "smithy.api#documentation": "<p>An error corresponding to the calculation of a route between the \n            <code>DeparturePosition</code> and <code>DestinationPosition</code>.</p>"
+                        "smithy.api#documentation": "<p>An error corresponding to the calculation of a route between the\n                <code>DeparturePosition</code> and <code>DestinationPosition</code>.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The result for the calculated route of one <code>DeparturePosition</code> \n            <code>DestinationPosition</code> pair.</p>"
+                "smithy.api#documentation": "<p>The result for the calculated route of one <code>DeparturePosition</code>\n            <code>DestinationPosition</code> pair.</p>"
             }
         },
         "com.amazonaws.location#RouteMatrixEntryError": {
@@ -5559,7 +5570,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>An error corresponding to the calculation of a route between the\n        <code>DeparturePosition</code> and <code>DestinationPosition</code>.</p>\n        <p>The error code can be one of the following:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>RouteNotFound</code> - Unable to find a \n                    valid route with the given parameters.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>RouteTooLong</code> - Route calculation went \n                    beyond the maximum size of a route and was terminated before completion.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>PositionsNotFound</code> - One or more of the \n                    input positions were not found on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>DestinationPositionNotFound</code> - The \n                    destination position was not found on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>DeparturePositionNotFound</code> - The \n                    departure position was not found on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>OtherValidationError</code> - The given inputs were not valid or a \n                    route was not found. More information is given in the error \n                    <code>Message</code>\n               </p>\n            </li>\n         </ul>"
+                "smithy.api#documentation": "<p>An error corresponding to the calculation of a route between the\n                <code>DeparturePosition</code> and <code>DestinationPosition</code>.</p>\n        <p>The error code can be one of the following:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>RouteNotFound</code> - Unable to find a valid route with the given\n                    parameters.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>RouteTooLong</code> - Route calculation went beyond the maximum size of\n                    a route and was terminated before completion.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>PositionsNotFound</code> - One or more of the input positions were not\n                    found on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>DestinationPositionNotFound</code> - The destination position was not\n                    found on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>DeparturePositionNotFound</code> - The departure position was not found\n                    on the route network.</p>\n            </li>\n         </ul>\n        <ul>\n            <li>\n                <p>\n                  <code>OtherValidationError</code> - The given inputs were not valid or a route\n                    was not found. More information is given in the error\n                    <code>Message</code>\n               </p>\n            </li>\n         </ul>"
             }
         },
         "com.amazonaws.location#RouteMatrixErrorCode": {
@@ -5606,7 +5617,7 @@
                 "Distance": {
                     "target": "smithy.api#Double",
                     "traits": {
-                        "smithy.api#documentation": "<p>The distance in meters of a great-circle arc between the query position and the \n         result.</p>\n         <note>\n            <p>A great-circle arc is the shortest path on a sphere, in this case the \n            Earth. This returns the shortest distance between two locations.</p>\n         </note>",
+                        "smithy.api#documentation": "<p>The distance in meters of a great-circle arc between the query position and the\n            result.</p>\n        <note>\n            <p>A great-circle arc is the shortest path on a sphere, in this case the Earth. This\n                returns the shortest distance between two locations.</p>\n        </note>",
                         "smithy.api#range": {
                             "min": 0
                         },
@@ -5615,7 +5626,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Contains a search result from a position search query that is run on a place index resource.</p>"
+                "smithy.api#documentation": "<p>Contains a search result from a position search query that is run on a place index\n            resource.</p>"
             }
         },
         "com.amazonaws.location#SearchForPositionResultList": {
@@ -5636,7 +5647,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Contains a place suggestion resulting from a place suggestion query that is run on a place index resource.</p>"
+                "smithy.api#documentation": "<p>Contains a place suggestion resulting from a place suggestion query that is run on a\n            place index resource.</p>"
             }
         },
         "com.amazonaws.location#SearchForSuggestionsResultList": {
@@ -5658,7 +5669,7 @@
                 "Distance": {
                     "target": "smithy.api#Double",
                     "traits": {
-                        "smithy.api#documentation": "<p>The distance in meters of a great-circle arc between the bias position specified \n         and the result. <code>Distance</code> will be returned only if a bias position was \n         specified in the query.</p>\n         <note>\n            <p>A great-circle arc is the shortest path on a sphere, in this case the \n            Earth. This returns the shortest distance between two locations.</p>\n         </note>",
+                        "smithy.api#documentation": "<p>The distance in meters of a great-circle arc between the bias position specified and\n            the result. <code>Distance</code> will be returned only if a bias position was specified\n            in the query.</p>\n        <note>\n            <p>A great-circle arc is the shortest path on a sphere, in this case the Earth. This\n                returns the shortest distance between two locations.</p>\n        </note>",
                         "smithy.api#range": {
                             "min": 0
                         }
@@ -5667,7 +5678,7 @@
                 "Relevance": {
                     "target": "smithy.api#Double",
                     "traits": {
-                        "smithy.api#documentation": "<p>The relative confidence in the match for a result among the results returned. For \n         example, if more fields for an address match (including house number, street, city, \n         country/region, and postal code), the relevance score is closer to 1.</p>\n         <p>Returned only when the partner selected is Esri.</p>",
+                        "smithy.api#documentation": "<p>The relative confidence in the match for a result among the results returned. For\n            example, if more fields for an address match (including house number, street, city,\n            country/region, and postal code), the relevance score is closer to 1.</p>\n        <p>Returned only when the partner selected is Esri.</p>",
                         "smithy.api#range": {
                             "min": 0,
                             "max": 1
@@ -5676,7 +5687,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Contains a search result from a text search query that is run on a place index resource.</p>"
+                "smithy.api#documentation": "<p>Contains a search result from a text search query that is run on a place index\n            resource.</p>"
             }
         },
         "com.amazonaws.location#SearchForTextResultList": {
@@ -5711,7 +5722,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Reverse geocodes a given coordinate and returns a legible address. Allows you to search\n         for Places or points of interest near a given position.</p>",
+                "smithy.api#documentation": "<p>Reverse geocodes a given coordinate and returns a legible address. Allows you to\n            search for Places or points of interest near a given position.</p>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "places."
                 },
@@ -5736,20 +5747,20 @@
                 "Position": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>Specifies the longitude and latitude of the position to query.</p>\n         <p>\n         This parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; \n            the second number represents the Y coordinate, or latitude.</p>\n         <p>For example, <code>[-123.1174, 49.2847]</code> represents a position with\n         longitude <code>-123.1174</code> and\n         latitude <code>49.2847</code>.</p>",
+                        "smithy.api#documentation": "<p>Specifies the longitude and latitude of the position to query.</p>\n        <p> This parameter must contain a pair of numbers. The first number represents the X\n            coordinate, or longitude; the second number represents the Y coordinate, or\n            latitude.</p>\n        <p>For example, <code>[-123.1174, 49.2847]</code> represents a position with longitude\n                <code>-123.1174</code> and latitude <code>49.2847</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "MaxResults": {
                     "target": "com.amazonaws.location#PlaceIndexSearchResultLimit",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request.</p>\n         <p>Default value: <code>50</code>\n         </p>"
+                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request.</p>\n        <p>Default value: <code>50</code>\n         </p>"
                     }
                 },
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p> \n         <p>This setting affects the languages used in the results. It does not change which \n         results are returned. If the language is not specified, or not supported for a \n         particular result, the partner automatically chooses a language for the result.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n                <code>en</code> for English.</p>\n        <p>This setting affects the languages used in the results, but not the results\n            themselves. If no language is specified, or not supported for a particular result, the\n            partner automatically chooses a language for the result.</p>\n        <p>For an example, we'll use the Greek language. You search for a location around Athens,\n            Greece, with the <code>language</code> parameter set to <code>en</code>. The\n                <code>city</code> in the results will most likely be returned as\n            <code>Athens</code>.</p>\n        <p>If you set the <code>language</code> parameter to <code>el</code>, for Greek, then the\n                <code>city</code> in the results will more likely be returned as\n            <code>Αθήνα</code>.</p>\n        <p>If the data provider does not have a value for Greek, the result will be in a language\n            that the provider does support.</p>"
                     }
                 }
             }
@@ -5760,14 +5771,14 @@
                 "Summary": {
                     "target": "com.amazonaws.location#SearchPlaceIndexForPositionSummary",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for <code>Position</code>,\n         <code>Language</code>, <code>MaxResults</code>, and the <code>DataSource</code> of the place index.\n      </p>",
+                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for <code>Position</code>,\n                <code>Language</code>, <code>MaxResults</code>, and the <code>DataSource</code> of\n            the place index. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "Results": {
                     "target": "com.amazonaws.location#SearchForPositionResultList",
                     "traits": {
-                        "smithy.api#documentation": "<p>Returns a list of Places closest to the specified position. Each result contains\n         additional information about the Places returned.</p>",
+                        "smithy.api#documentation": "<p>Returns a list of Places closest to the specified position. Each result contains\n            additional information about the Places returned.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -5786,25 +5797,25 @@
                 "MaxResults": {
                     "target": "com.amazonaws.location#PlaceIndexSearchResultLimit",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains the optional result count limit that is specified in the request.</p>\n         <p>Default value: <code>50</code>\n         </p>"
+                        "smithy.api#documentation": "<p>Contains the optional result count limit that is specified in the request.</p>\n        <p>Default value: <code>50</code>\n         </p>"
                     }
                 },
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the request.\n         Values can be one of the following:</p>\n         <ul>\n            <li>\n               <p>Esri</p>\n            </li>\n            <li>\n               <p>Here</p>\n            </li>\n         </ul>\n         <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the\n            request. Values can be one of the following:</p>\n        <ul>\n            <li>\n                <p>Esri</p>\n            </li>\n            <li>\n                <p>Here</p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request. \n         The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request.\n            The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a>\n            language tag, for example, <code>en</code> for English.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A summary of the request sent by using <code>SearchPlaceIndexForPosition</code>.</p>"
+                "smithy.api#documentation": "<p>A summary of the request sent by using\n            <code>SearchPlaceIndexForPosition</code>.</p>"
             }
         },
         "com.amazonaws.location#SearchPlaceIndexForSuggestions": {
@@ -5833,7 +5844,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Generates suggestions for addresses and points of interest based on partial or\n         misspelled free-form text. This operation is also known as autocomplete, autosuggest,\n         or fuzzy matching.</p>\n         <p>Optional parameters let you narrow your search results by bounding box or\n         country, or bias your search toward a specific position on the globe.</p>\n         <note>\n            <p>You can search for suggested place names near a specified position by using <code>BiasPosition</code>, or\n            filter results within a bounding box by using <code>FilterBBox</code>. These parameters are mutually exclusive; \n            using both <code>BiasPosition</code> and <code>FilterBBox</code> in the same command returns an error.</p>\n         </note>",
+                "smithy.api#documentation": "<p>Generates suggestions for addresses and points of interest based on partial or\n            misspelled free-form text. This operation is also known as autocomplete, autosuggest, or\n            fuzzy matching.</p>\n        <p>Optional parameters let you narrow your search results by bounding box or country, or\n            bias your search toward a specific position on the globe.</p>\n        <note>\n            <p>You can search for suggested place names near a specified position by using\n                    <code>BiasPosition</code>, or filter results within a bounding box by using\n                    <code>FilterBBox</code>. These parameters are mutually exclusive; using both\n                    <code>BiasPosition</code> and <code>FilterBBox</code> in the same command\n                returns an error.</p>\n        </note>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "places."
                 },
@@ -5856,39 +5867,38 @@
                     }
                 },
                 "Text": {
-                    "target": "smithy.api#String",
+                    "target": "com.amazonaws.location#SensitiveString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The free-form partial text to use to generate place suggestions. For example,\n         <code>eiffel tow</code>.</p>",
+                        "smithy.api#documentation": "<p>The free-form partial text to use to generate place suggestions. For example,\n                <code>eiffel tow</code>.</p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 200
                         },
-                        "smithy.api#required": {},
-                        "smithy.api#sensitive": {}
+                        "smithy.api#required": {}
                     }
                 },
                 "BiasPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that indicates a preference for place suggestions that are closer to a specified position.</p>\n         <p>\n         If provided, this parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; \n           the second number represents the Y coordinate, or latitude.</p>\n         <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with\n            longitude <code>-123.1174</code> and\n            latitude <code>49.2847</code>.</p>\n         <note>\n            <p>\n               <code>BiasPosition</code> and <code>FilterBBox</code> are mutually exclusive. Specifying both options results in an error.\n         </p>\n         </note>"
+                        "smithy.api#documentation": "<p>An optional parameter that indicates a preference for place suggestions that are\n            closer to a specified position.</p>\n        <p> If provided, this parameter must contain a pair of numbers. The first number\n            represents the X coordinate, or longitude; the second number represents the Y\n            coordinate, or latitude.</p>\n        <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with longitude\n                <code>-123.1174</code> and latitude <code>49.2847</code>.</p>\n        <note>\n            <p>\n               <code>BiasPosition</code> and <code>FilterBBox</code> are mutually exclusive.\n                Specifying both options results in an error. </p>\n        </note>"
                     }
                 },
                 "FilterBBox": {
                     "target": "com.amazonaws.location#BoundingBox",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only suggestions within a specified bounding box.</p>\n         <p>\n         If provided, this parameter must contain a total of four consecutive numbers in two pairs.\n         The first pair of numbers represents the X and Y coordinates (longitude and latitude, respectively)\n         of the southwest corner of the bounding box; the second pair of numbers represents the X and Y coordinates (longitude and latitude, respectively)\n         of the northeast corner of the bounding box.</p>\n         <p>For example, <code>[-12.7935, -37.4835, -12.0684, -36.9542]</code> represents\n         a bounding box where the southwest corner has longitude <code>-12.7935</code> and latitude <code>-37.4835</code>, \n         and the northeast corner has longitude <code>-12.0684</code> and latitude <code>-36.9542</code>.</p>\n         <note>\n            <p>\n               <code>FilterBBox</code> and <code>BiasPosition</code> are mutually exclusive. Specifying both options results in an error.\n         </p>\n         </note>"
+                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only suggestions\n            within a specified bounding box.</p>\n        <p> If provided, this parameter must contain a total of four consecutive numbers in two\n            pairs. The first pair of numbers represents the X and Y coordinates (longitude and\n            latitude, respectively) of the southwest corner of the bounding box; the second pair of\n            numbers represents the X and Y coordinates (longitude and latitude, respectively) of the\n            northeast corner of the bounding box.</p>\n        <p>For example, <code>[-12.7935, -37.4835, -12.0684, -36.9542]</code> represents a\n            bounding box where the southwest corner has longitude <code>-12.7935</code> and latitude\n                <code>-37.4835</code>, and the northeast corner has longitude <code>-12.0684</code>\n            and latitude <code>-36.9542</code>.</p>\n        <note>\n            <p>\n               <code>FilterBBox</code> and <code>BiasPosition</code> are mutually exclusive.\n                Specifying both options results in an error. </p>\n        </note>"
                     }
                 },
                 "FilterCountries": {
                     "target": "com.amazonaws.location#CountryCodeList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only suggestions within the provided list of countries.</p>\n         <ul>\n            <li>\n               <p>Use the <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> 3-digit\n            country code. For example, Australia uses three upper-case characters:\n            <code>AUS</code>.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only suggestions\n            within the provided list of countries.</p>\n        <ul>\n            <li>\n                <p>Use the <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO\n                        3166</a> 3-digit country code. For example, Australia uses three\n                    upper-case characters: <code>AUS</code>.</p>\n            </li>\n         </ul>"
                     }
                 },
                 "MaxResults": {
                     "target": "smithy.api#Integer",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request. </p>\n         <p>The default: <code>5</code>\n         </p>",
+                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request. </p>\n        <p>The default: <code>5</code>\n         </p>",
                         "smithy.api#range": {
                             "min": 1,
                             "max": 15
@@ -5898,7 +5908,7 @@
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p> \n         <p>This setting affects the languages used in the results. It does not change which \n         results are returned. If the language is not specified, or not supported for a \n         particular result, the partner automatically chooses a language for the result.</p>\n         <p>Used only when the partner selected is Here.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n                <code>en</code> for English.</p>\n        <p>This setting affects the languages used in the results. If no language is specified,\n            or not supported for a particular result, the partner automatically chooses a language\n            for the result.</p>\n        <p>For an example, we'll use the Greek language. You search for <code>Athens, Gr</code>\n            to get suggestions with the <code>language</code> parameter set to <code>en</code>. The\n            results found will most likely be returned as <code>Athens, Greece</code>.</p>\n        <p>If you set the <code>language</code> parameter to <code>el</code>, for Greek, then the\n            result found will more likely be returned as <code>Αθήνα, Ελλάδα</code>.</p>\n        <p>If the data provider does not have a value for Greek, the result will be in a language\n            that the provider does support.</p>"
                     }
                 }
             }
@@ -5909,7 +5919,7 @@
                 "Summary": {
                     "target": "com.amazonaws.location#SearchPlaceIndexForSuggestionsSummary",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for <code>BiasPosition</code>,\n         <code>FilterBBox</code>, <code>FilterCountries</code>, <code>Language</code>, <code>MaxResults</code>,\n         and <code>Text</code>. Also includes the <code>DataSource</code> of the place index.\n      </p>",
+                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for\n                <code>BiasPosition</code>, <code>FilterBBox</code>, <code>FilterCountries</code>,\n                <code>Language</code>, <code>MaxResults</code>, and <code>Text</code>. Also includes\n            the <code>DataSource</code> of the place index. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -5926,23 +5936,22 @@
             "type": "structure",
             "members": {
                 "Text": {
-                    "target": "smithy.api#String",
+                    "target": "com.amazonaws.location#SensitiveString",
                     "traits": {
                         "smithy.api#documentation": "<p>The free-form partial text input specified in the request.</p>",
-                        "smithy.api#required": {},
-                        "smithy.api#sensitive": {}
+                        "smithy.api#required": {}
                     }
                 },
                 "BiasPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bias position specified in the request.</p>\n         <p>This parameter contains a pair of numbers. The first number represents the X \n         coordinate, or longitude; the second number represents the Y coordinate, or latitude.</p>\n         <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with\n         longitude <code>-123.1174</code> and latitude <code>49.2847</code>.</p>"
+                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bias position specified in the\n            request.</p>\n        <p>This parameter contains a pair of numbers. The first number represents the X\n            coordinate, or longitude; the second number represents the Y coordinate, or\n            latitude.</p>\n        <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with longitude\n                <code>-123.1174</code> and latitude <code>49.2847</code>.</p>"
                     }
                 },
                 "FilterBBox": {
                     "target": "com.amazonaws.location#BoundingBox",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bounding box specified in the request.</p>"
+                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bounding box specified in the\n            request.</p>"
                     }
                 },
                 "FilterCountries": {
@@ -5960,19 +5969,19 @@
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the request.\n         Values can be one of the following:</p>\n         <ul>\n            <li>\n               <p>Esri</p>\n            </li>\n            <li>\n               <p>Here</p>\n            </li>\n         </ul>\n         <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the\n            request. Values can be one of the following:</p>\n        <ul>\n            <li>\n                <p>Esri</p>\n            </li>\n            <li>\n                <p>Here</p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request. \n         The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request.\n            The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a>\n            language tag, for example, <code>en</code> for English.</p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>A summary of the request sent by using <code>SearchPlaceIndexForSuggestions</code>.</p>"
+                "smithy.api#documentation": "<p>A summary of the request sent by using\n            <code>SearchPlaceIndexForSuggestions</code>.</p>"
             }
         },
         "com.amazonaws.location#SearchPlaceIndexForText": {
@@ -6001,7 +6010,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Geocodes free-form text, such as an address, name, city, or region to allow you to\n         search for Places or points of interest. </p>\n         <p>Optional parameters let you narrow your search results by bounding box or\n         country, or bias your search toward a specific position on the globe.</p>\n         <note>\n            <p>You can search for places near a given position using <code>BiasPosition</code>, or\n            filter results within a bounding box using <code>FilterBBox</code>. Providing both\n            parameters simultaneously returns an error.</p>\n         </note>\n         <p>Search results are returned in order of highest to lowest relevance.</p>",
+                "smithy.api#documentation": "<p>Geocodes free-form text, such as an address, name, city, or region to allow you to\n            search for Places or points of interest. </p>\n        <p>Optional parameters let you narrow your search results by bounding box or country, or\n            bias your search toward a specific position on the globe.</p>\n        <note>\n            <p>You can search for places near a given position using <code>BiasPosition</code>,\n                or filter results within a bounding box using <code>FilterBBox</code>. Providing\n                both parameters simultaneously returns an error.</p>\n        </note>\n        <p>Search results are returned in order of highest to lowest relevance.</p>",
                 "smithy.api#endpoint": {
                     "hostPrefix": "places."
                 },
@@ -6024,45 +6033,44 @@
                     }
                 },
                 "Text": {
-                    "target": "smithy.api#String",
+                    "target": "com.amazonaws.location#SensitiveString",
                     "traits": {
-                        "smithy.api#documentation": "<p>The address, name,\n         city, or region to be used in the search in free-form text format. For example, <code>123 Any\n            Street</code>.</p>",
+                        "smithy.api#documentation": "<p>The address, name, city, or region to be used in the search in free-form text format.\n            For example, <code>123 Any Street</code>.</p>",
                         "smithy.api#length": {
                             "min": 1,
                             "max": 200
                         },
-                        "smithy.api#required": {},
-                        "smithy.api#sensitive": {}
+                        "smithy.api#required": {}
                     }
                 },
                 "BiasPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that indicates a preference for places that are closer to a specified position.</p>\n         <p>\n         If provided, this parameter must contain a pair of numbers. The first number represents the X coordinate, or longitude; the \n         second number represents the Y coordinate, or latitude.</p>\n         <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with\n         longitude <code>-123.1174</code> and\n         latitude <code>49.2847</code>.</p>\n         <note>\n            <p>\n               <code>BiasPosition</code> and <code>FilterBBox</code> are mutually exclusive. Specifying both options \n            results in an error.\n         </p>\n         </note>"
+                        "smithy.api#documentation": "<p>An optional parameter that indicates a preference for places that are closer to a\n            specified position.</p>\n        <p> If provided, this parameter must contain a pair of numbers. The first number\n            represents the X coordinate, or longitude; the second number represents the Y\n            coordinate, or latitude.</p>\n        <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with longitude\n                <code>-123.1174</code> and latitude <code>49.2847</code>.</p>\n        <note>\n            <p>\n               <code>BiasPosition</code> and <code>FilterBBox</code> are mutually exclusive.\n                Specifying both options results in an error. </p>\n        </note>"
                     }
                 },
                 "FilterBBox": {
                     "target": "com.amazonaws.location#BoundingBox",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only places that are within the provided bounding box.</p>\n         <p>\n         If provided, this parameter must contain a total of four consecutive numbers in two pairs.\n         The first pair of numbers represents the X and Y coordinates (longitude and latitude, respectively)\n         of the southwest corner of the bounding box; the second pair of numbers represents the X and Y coordinates (longitude and latitude, respectively)\n         of the northeast corner of the bounding box.</p>\n         <p>For example, <code>[-12.7935, -37.4835, -12.0684, -36.9542]</code> represents\n         a bounding box where the southwest corner has longitude <code>-12.7935</code> and latitude <code>-37.4835</code>, \n         and the northeast corner has longitude <code>-12.0684</code> and latitude <code>-36.9542</code>.</p>\n         <note>\n            <p>\n               <code>FilterBBox</code> and <code>BiasPosition</code> are mutually exclusive. Specifying both options results in an error.\n         </p>\n         </note>"
+                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only places that are\n            within the provided bounding box.</p>\n        <p> If provided, this parameter must contain a total of four consecutive numbers in two\n            pairs. The first pair of numbers represents the X and Y coordinates (longitude and\n            latitude, respectively) of the southwest corner of the bounding box; the second pair of\n            numbers represents the X and Y coordinates (longitude and latitude, respectively) of the\n            northeast corner of the bounding box.</p>\n        <p>For example, <code>[-12.7935, -37.4835, -12.0684, -36.9542]</code> represents a\n            bounding box where the southwest corner has longitude <code>-12.7935</code> and latitude\n                <code>-37.4835</code>, and the northeast corner has longitude <code>-12.0684</code>\n            and latitude <code>-36.9542</code>.</p>\n        <note>\n            <p>\n               <code>FilterBBox</code> and <code>BiasPosition</code> are mutually exclusive.\n                Specifying both options results in an error. </p>\n        </note>"
                     }
                 },
                 "FilterCountries": {
                     "target": "com.amazonaws.location#CountryCodeList",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only places that are in a specified list of countries.</p>\n         <ul>\n            <li>\n               <p>Valid values include <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a> 3-digit\n            country codes. For example, Australia uses three upper-case characters:\n            <code>AUS</code>.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>An optional parameter that limits the search results by returning only places that are\n            in a specified list of countries.</p>\n        <ul>\n            <li>\n                <p>Valid values include <a href=\"https://www.iso.org/iso-3166-country-codes.html\">ISO 3166</a>\n                    3-digit country codes. For example, Australia uses three upper-case characters:\n                        <code>AUS</code>.</p>\n            </li>\n         </ul>"
                     }
                 },
                 "MaxResults": {
                     "target": "com.amazonaws.location#PlaceIndexSearchResultLimit",
                     "traits": {
-                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request. </p>\n         <p>The default: <code>50</code>\n         </p>"
+                        "smithy.api#documentation": "<p>An optional parameter. The maximum number of results returned per request. </p>\n        <p>The default: <code>50</code>\n         </p>"
                     }
                 },
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p> \n         <p>This setting affects the languages used in the results. It does not change which \n         results are returned. If the language is not specified, or not supported for a \n         particular result, the partner automatically chooses a language for the result.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. The value must be a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n                <code>en</code> for English.</p>\n        <p>This setting affects the languages used in the results, but not the results\n            themselves. If no language is specified, or not supported for a particular result, the\n            partner automatically chooses a language for the result.</p>\n        <p>For an example, we'll use the Greek language. You search for <code>Athens,\n                Greece</code>, with the <code>language</code> parameter set to <code>en</code>. The\n            result found will most likely be returned as <code>Athens</code>.</p>\n        <p>If you set the <code>language</code> parameter to <code>el</code>, for Greek, then the\n            result found will more likely be returned as <code>Αθήνα</code>.</p>\n        <p>If the data provider does not have a value for Greek, the result will be in a language\n            that the provider does support.</p>"
                     }
                 }
             }
@@ -6073,14 +6081,14 @@
                 "Summary": {
                     "target": "com.amazonaws.location#SearchPlaceIndexForTextSummary",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for <code>BiasPosition</code>,\n         <code>FilterBBox</code>, <code>FilterCountries</code>, <code>Language</code>, <code>MaxResults</code>,\n         and <code>Text</code>. Also includes the <code>DataSource</code> of the place index and\n         the bounding box, <code>ResultBBox</code>, which surrounds the search results.\n      </p>",
+                        "smithy.api#documentation": "<p>Contains a summary of the request. Echoes the input values for\n                <code>BiasPosition</code>, <code>FilterBBox</code>, <code>FilterCountries</code>,\n                <code>Language</code>, <code>MaxResults</code>, and <code>Text</code>. Also includes\n            the <code>DataSource</code> of the place index and the bounding box,\n                <code>ResultBBox</code>, which surrounds the search results. </p>",
                         "smithy.api#required": {}
                     }
                 },
                 "Results": {
                     "target": "com.amazonaws.location#SearchForTextResultList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A list of Places matching the input text. Each result contains additional\n         information about the specific point of interest. </p>",
+                        "smithy.api#documentation": "<p>A list of Places matching the input text. Each result contains additional information\n            about the specific point of interest. </p>\n        <p>Not all response properties are included with all responses. Some properties may \n            only be returned by specific data partners.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -6090,23 +6098,22 @@
             "type": "structure",
             "members": {
                 "Text": {
-                    "target": "smithy.api#String",
+                    "target": "com.amazonaws.location#SensitiveString",
                     "traits": {
                         "smithy.api#documentation": "<p>The search text specified in the request.</p>",
-                        "smithy.api#required": {},
-                        "smithy.api#sensitive": {}
+                        "smithy.api#required": {}
                     }
                 },
                 "BiasPosition": {
                     "target": "com.amazonaws.location#Position",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bias position specified in the request.</p>\n         <p>This parameter contains a pair of numbers. The first number represents the X \n         coordinate, or longitude; the second number represents the Y coordinate, or latitude.</p>\n         <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with\n         longitude <code>-123.1174</code> and latitude <code>49.2847</code>.</p>"
+                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bias position specified in the\n            request.</p>\n        <p>This parameter contains a pair of numbers. The first number represents the X\n            coordinate, or longitude; the second number represents the Y coordinate, or\n            latitude.</p>\n        <p>For example, <code>[-123.1174, 49.2847]</code> represents the position with longitude\n                <code>-123.1174</code> and latitude <code>49.2847</code>.</p>"
                     }
                 },
                 "FilterBBox": {
                     "target": "com.amazonaws.location#BoundingBox",
                     "traits": {
-                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bounding box specified in the request.</p>"
+                        "smithy.api#documentation": "<p>Contains the coordinates for the optional bounding box specified in the\n            request.</p>"
                     }
                 },
                 "FilterCountries": {
@@ -6124,20 +6131,20 @@
                 "ResultBBox": {
                     "target": "com.amazonaws.location#BoundingBox",
                     "traits": {
-                        "smithy.api#documentation": "<p>The bounding box that fully contains all search results.</p>\n         <note>\n            <p>If you specified the optional <code>FilterBBox</code> parameter in the request, <code>ResultBBox</code> \n            is contained within <code>FilterBBox</code>.</p>\n         </note>"
+                        "smithy.api#documentation": "<p>The bounding box that fully contains all search results.</p>\n        <note>\n            <p>If you specified the optional <code>FilterBBox</code> parameter in the request,\n                    <code>ResultBBox</code> is contained within <code>FilterBBox</code>.</p>\n        </note>"
                     }
                 },
                 "DataSource": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the request.\n         Values can be one of the following:</p>\n         <ul>\n            <li>\n               <p>Esri</p>\n            </li>\n            <li>\n               <p>Here</p>\n            </li>\n         </ul>\n         <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
+                        "smithy.api#documentation": "<p>The geospatial data provider attached to the place index resource specified in the\n            request. Values can be one of the following:</p>\n        <ul>\n            <li>\n                <p>Esri</p>\n            </li>\n            <li>\n                <p>Here</p>\n            </li>\n         </ul>\n        <p>For more information about data providers, see <a href=\"https://docs.aws.amazon.com/location/latest/developerguide/what-is-data-provider.html\">Amazon Location Service data providers</a>.</p>",
                         "smithy.api#required": {}
                     }
                 },
                 "Language": {
                     "target": "com.amazonaws.location#LanguageTag",
                     "traits": {
-                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request. \n         The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a> language tag, for example,\n         <code>en</code> for English.</p>"
+                        "smithy.api#documentation": "<p>The preferred language used to return results. Matches the language in the request.\n            The value is a valid <a href=\"https://tools.ietf.org/search/bcp47\">BCP 47</a>\n            language tag, for example, <code>en</code> for English.</p>"
                     }
                 }
             },
@@ -6145,6 +6152,12 @@
                 "smithy.api#documentation": "<p>A summary of the request sent by using <code>SearchPlaceIndexForText</code>.</p>"
             }
         },
+        "com.amazonaws.location#SensitiveString": {
+            "type": "string",
+            "traits": {
+                "smithy.api#sensitive": {}
+            }
+        },
         "com.amazonaws.location#ServiceQuotaExceededException": {
             "type": "structure",
             "members": {
@@ -6350,7 +6363,7 @@
                 "Name": {
                     "target": "smithy.api#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the time zone, following the <a href=\"https://www.iana.org/time-zones\">\n         IANA time zone standard</a>. For example, <code>America/Los_Angeles</code>.</p>",
+                        "smithy.api#documentation": "<p>The name of the time zone, following the <a href=\"https://www.iana.org/time-zones\">\n                IANA time zone standard</a>. For example,\n            <code>America/Los_Angeles</code>.</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -6362,7 +6375,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Information about a time zone. Includes the name of the time zone and the offset\n         from UTC in seconds.</p>"
+                "smithy.api#documentation": "<p>Information about a time zone. Includes the name of the time zone and the offset from\n            UTC in seconds.</p>"
             }
         },
         "com.amazonaws.location#Timestamp": {
@@ -6638,7 +6651,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n            <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "PricingPlanDataSource": {
@@ -6832,7 +6845,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n         <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "Description": {
@@ -6862,14 +6875,14 @@
                 "IndexArn": {
                     "target": "com.amazonaws.location#Arn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the upated place index resource. Used to specify a\n         resource across AWS.</p>\n         <ul>\n            <li>\n               <p>Format example: <code>arn:aws:geo:region:account-id:place-\n            index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the upated place index resource. Used to specify a\n            resource across AWS.</p>\n        <ul>\n            <li>\n                <p>Format example: <code>arn:aws:geo:region:account-id:place-\n                        index/ExamplePlaceIndex</code>\n               </p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
                 "UpdateTime": {
                     "target": "com.amazonaws.location#Timestamp",
                     "traits": {
-                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\"> ISO 8601</a> format:\n            <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
+                        "smithy.api#documentation": "<p>The timestamp for when the place index resource was last updated in <a href=\"https://www.iso.org/iso-8601-date-and-time-format.html\"> ISO 8601</a>\n            format: <code>YYYY-MM-DDThh:mm:ss.sssZ</code>. </p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -6930,7 +6943,7 @@
                             "message": "Deprecated. If included, the only allowed value is RequestBasedUsage.",
                             "since": "2022-02-01"
                         },
-                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is \n            <code>RequestBasedUsage</code>.</p>"
+                        "smithy.api#documentation": "<p>No longer used. If included, the only allowed value is\n            <code>RequestBasedUsage</code>.</p>"
                     }
                 },
                 "Description": {
@@ -6954,7 +6967,7 @@
                 "CalculatorArn": {
                     "target": "com.amazonaws.location#Arn",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the updated route calculator resource. Used to specify a resource\n            across AWS.</p>\n        <ul>\n            <li>\n               <p>Format example: <code>arn:aws:geo:region:account-id:route-\n                calculator/ExampleCalculator</code>\n               </p>\n            </li>\n         </ul>",
+                        "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) of the updated route calculator resource. Used to\n            specify a resource across AWS.</p>\n        <ul>\n            <li>\n                <p>Format example: <code>arn:aws:geo:region:account-id:route-\n                        calculator/ExampleCalculator</code>\n               </p>\n            </li>\n         </ul>",
                         "smithy.api#required": {}
                     }
                 },
diff --git a/aws/sdk/aws-models/mediaconvert.json b/aws/sdk/aws-models/mediaconvert.json
index f343051a78b542719b697dda4df40377b5063ef4..ff375cb30b3c8336bdcf8958bba80c2b222d9679 100644
--- a/aws/sdk/aws-models/mediaconvert.json
+++ b/aws/sdk/aws-models/mediaconvert.json
@@ -5245,10 +5245,17 @@
                         "smithy.api#jsonName": "l6Mode"
                     }
                 },
+                "Mapping": {
+                    "target": "com.amazonaws.mediaconvert#DolbyVisionMapping",
+                    "traits": {
+                        "smithy.api#documentation": "Required when you set Dolby Vision Profile (Profile) to Profile 8.1 (PROFILE_8_1). When you set Content mapping (Mapping) to None (HDR10_NOMAP), content mapping is not applied to the HDR10-compatible signal. Depending on the source peak nit level, clipping might occur on HDR devices without Dolby Vision. When you set Content mapping to Static (HDR10_1000), the transcoder creates a 1,000 nits peak HDR10-compatible signal by applying static content mapping to the source. This mode is speed-optimized for PQ10 sources with metadata that is created from analysis. For graded Dolby Vision content, be aware that creative intent might not be guaranteed with extreme 1,000 nits trims.",
+                        "smithy.api#jsonName": "mapping"
+                    }
+                },
                 "Profile": {
                     "target": "com.amazonaws.mediaconvert#DolbyVisionProfile",
                     "traits": {
-                        "smithy.api#documentation": "In the current MediaConvert implementation, the Dolby Vision profile is always 5 (PROFILE_5). Therefore, all of your inputs must contain Dolby Vision frame interleaved data.",
+                        "smithy.api#documentation": "Required when you use Dolby Vision (DolbyVision) processing. Set Profile (DolbyVisionProfile) to Profile 5 (Profile_5) to only include frame-interleaved Dolby Vision metadata in your output. Set Profile to Profile 8.1 (Profile_8_1) to include both frame-interleaved Dolby Vision metadata and HDR10 metadata in your output.",
                         "smithy.api#jsonName": "profile"
                     }
                 }
@@ -5299,14 +5306,34 @@
                 ]
             }
         },
+        "com.amazonaws.mediaconvert#DolbyVisionMapping": {
+            "type": "string",
+            "traits": {
+                "smithy.api#documentation": "Required when you set Dolby Vision Profile (Profile) to Profile 8.1 (PROFILE_8_1). When you set Content mapping (Mapping) to None (HDR10_NOMAP), content mapping is not applied to the HDR10-compatible signal. Depending on the source peak nit level, clipping might occur on HDR devices without Dolby Vision. When you set Content mapping to Static (HDR10_1000), the transcoder creates a 1,000 nits peak HDR10-compatible signal by applying static content mapping to the source. This mode is speed-optimized for PQ10 sources with metadata that is created from analysis. For graded Dolby Vision content, be aware that creative intent might not be guaranteed with extreme 1,000 nits trims.",
+                "smithy.api#enum": [
+                    {
+                        "value": "HDR10_NOMAP",
+                        "name": "HDR10_NOMAP"
+                    },
+                    {
+                        "value": "HDR10_1000",
+                        "name": "HDR10_1000"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.mediaconvert#DolbyVisionProfile": {
             "type": "string",
             "traits": {
-                "smithy.api#documentation": "In the current MediaConvert implementation, the Dolby Vision profile is always 5 (PROFILE_5). Therefore, all of your inputs must contain Dolby Vision frame interleaved data.",
+                "smithy.api#documentation": "Required when you use Dolby Vision (DolbyVision) processing. Set Profile (DolbyVisionProfile) to Profile 5 (Profile_5) to only include frame-interleaved Dolby Vision metadata in your output. Set Profile to Profile 8.1 (Profile_8_1) to include both frame-interleaved Dolby Vision metadata and HDR10 metadata in your output.",
                 "smithy.api#enum": [
                     {
                         "value": "PROFILE_5",
                         "name": "PROFILE_5"
+                    },
+                    {
+                        "value": "PROFILE_8_1",
+                        "name": "PROFILE_8_1"
                     }
                 ]
             }
@@ -10350,6 +10377,13 @@
                         "smithy.api#jsonName": "timecodeStart"
                     }
                 },
+                "VideoGenerator": {
+                    "target": "com.amazonaws.mediaconvert#InputVideoGenerator",
+                    "traits": {
+                        "smithy.api#documentation": "Use this setting if you do not have a video input or if you want to add black video frames before, or after, other inputs. When you include Video generator, MediaConvert creates a video input with black frames and without an audio track. You can specify a value for Video generator, or you can specify an Input file, but you cannot specify both.",
+                        "smithy.api#jsonName": "videoGenerator"
+                    }
+                },
                 "VideoSelector": {
                     "target": "com.amazonaws.mediaconvert#VideoSelector",
                     "traits": {
@@ -10722,6 +10756,21 @@
                 ]
             }
         },
+        "com.amazonaws.mediaconvert#InputVideoGenerator": {
+            "type": "structure",
+            "members": {
+                "Duration": {
+                    "target": "com.amazonaws.mediaconvert#__integerMin50Max86400000",
+                    "traits": {
+                        "smithy.api#documentation": "Specify an integer value for Black video duration from 50 to 86400000 to generate a black video input for that many milliseconds. Required when you include Video generator.",
+                        "smithy.api#jsonName": "duration"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "Use this setting if you do not have a video input or if you want to add black video frames before, or after, other inputs. When you include Video generator, MediaConvert creates a video input with black frames and without an audio track. You can specify a value for Video generator, or you can specify an Input file, but you cannot specify both."
+            }
+        },
         "com.amazonaws.mediaconvert#InsertableImage": {
             "type": "structure",
             "members": {
@@ -15789,6 +15838,22 @@
                 "smithy.api#documentation": "Specific settings for this type of output."
             }
         },
+        "com.amazonaws.mediaconvert#PadVideo": {
+            "type": "string",
+            "traits": {
+                "smithy.api#documentation": "Use this setting if your input has video and audio durations that don't align, and your output or player has strict alignment requirements. Examples: Input audio track has a delayed start. Input video track ends before audio ends. When you set Pad video (padVideo) to Black (BLACK), MediaConvert generates black video frames so that output video and audio durations match. Black video frames are added at the beginning or end, depending on your input. To keep the default behavior and not generate black video, set Pad video to Disabled (DISABLED) or leave blank.",
+                "smithy.api#enum": [
+                    {
+                        "value": "DISABLED",
+                        "name": "DISABLED"
+                    },
+                    {
+                        "value": "BLACK",
+                        "name": "BLACK"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.mediaconvert#PartnerWatermarking": {
             "type": "structure",
             "members": {
@@ -18413,6 +18478,13 @@
                         "smithy.api#jsonName": "hdr10Metadata"
                     }
                 },
+                "PadVideo": {
+                    "target": "com.amazonaws.mediaconvert#PadVideo",
+                    "traits": {
+                        "smithy.api#documentation": "Use this setting if your input has video and audio durations that don't align, and your output or player has strict alignment requirements. Examples: Input audio track has a delayed start. Input video track ends before audio ends. When you set Pad video (padVideo) to Black (BLACK), MediaConvert generates black video frames so that output video and audio durations match. Black video frames are added at the beginning or end, depending on your input. To keep the default behavior and not generate black video, set Pad video to Disabled (DISABLED) or leave blank.",
+                        "smithy.api#jsonName": "padVideo"
+                    }
+                },
                 "Pid": {
                     "target": "com.amazonaws.mediaconvert#__integerMin1Max2147483647",
                     "traits": {
@@ -20418,6 +20490,15 @@
                 }
             }
         },
+        "com.amazonaws.mediaconvert#__integerMin50Max86400000": {
+            "type": "integer",
+            "traits": {
+                "smithy.api#range": {
+                    "min": 50,
+                    "max": 86400000
+                }
+            }
+        },
         "com.amazonaws.mediaconvert#__integerMin6000Max1024000": {
             "type": "integer",
             "traits": {
diff --git a/aws/sdk/aws-models/mediapackage.json b/aws/sdk/aws-models/mediapackage.json
index 47e766e66fefb5699665161ee180267b975e5c7b..10e3f4f106fddcc89e827a079096e3f35e1c7224 100644
--- a/aws/sdk/aws-models/mediapackage.json
+++ b/aws/sdk/aws-models/mediapackage.json
@@ -986,7 +986,7 @@
                 "Profile": {
                     "target": "com.amazonaws.mediapackage#Profile",
                     "traits": {
-                        "smithy.api#documentation": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type.  When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled.",
+                        "smithy.api#documentation": "The Dynamic Adaptive Streaming over HTTP (DASH) profile type.  When set to \"HBBTV_1_5\", HbbTV 1.5 compliant output is enabled. When set to \"DVB-DASH_2014\", DVB-DASH 2014 compliant output is enabled.",
                         "smithy.api#jsonName": "profile"
                     }
                 },
@@ -1027,7 +1027,7 @@
                 "UtcTimingUri": {
                     "target": "com.amazonaws.mediapackage#__string",
                     "traits": {
-                        "smithy.api#documentation": "Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO or HTTP-HEAD",
+                        "smithy.api#documentation": "Specifies the value attribute of the UTCTiming field when utcTiming is set to HTTP-ISO, HTTP-HEAD or HTTP-XSDATE",
                         "smithy.api#jsonName": "utcTimingUri"
                     }
                 }
@@ -2665,6 +2665,10 @@
                     {
                         "value": "HYBRIDCAST",
                         "name": "HYBRIDCAST"
+                    },
+                    {
+                        "value": "DVB_DASH_2014",
+                        "name": "DVB_DASH_2014"
                     }
                 ]
             }
@@ -3543,6 +3547,10 @@
                     {
                         "value": "HTTP-ISO",
                         "name": "HTTP_ISO"
+                    },
+                    {
+                        "value": "HTTP-XSDATE",
+                        "name": "HTTP_XSDATE"
                     }
                 ]
             }
diff --git a/aws/sdk/aws-models/migration-hub-refactor-spaces.json b/aws/sdk/aws-models/migration-hub-refactor-spaces.json
index 5a7bb3572d74e94abf08669b71fc3a1c7d4c7566..88b879e944b01375999c216fadb396b9caedbd8c 100644
--- a/aws/sdk/aws-models/migration-hub-refactor-spaces.json
+++ b/aws/sdk/aws-models/migration-hub-refactor-spaces.json
@@ -3450,7 +3450,7 @@
                     ],
                     "origin": "*"
                 },
-                "smithy.api#documentation": "<fullname>Amazon Web Services Migration Hub Refactor Spaces</fullname>\n   \n         <p>This API reference provides descriptions, syntax, and other details about each of the\n      actions and data types for Amazon Web Services Migration Hub Refactor Spaces (Refactor Spaces). The topic for each action shows the API\n      request parameters and the response. Alternatively, you can use one of the Amazon Web Services SDKs to\n      access an API that is tailored to the programming language or platform that you're using. For\n      more information, see <a href=\"http://aws.amazon.com/tools/#SDKs\">Amazon Web Services SDKs</a>.</p>\n    \n         <p>To share Refactor Spaces environments with other Amazon Web Services accounts or with Organizations\n        and their OUs, use Resource Access Manager's <code>CreateResourceShare</code> API. See <a href=\"https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html\">CreateResourceShare</a> in the <i>Amazon Web Services RAM API Reference</i>.</p>",
+                "smithy.api#documentation": "<fullname>Amazon Web Services Migration Hub Refactor Spaces</fullname>\n    \n         <p>This API reference provides descriptions, syntax, and other details about each of the\n      actions and data types for Amazon Web Services Migration Hub Refactor Spaces (Refactor Spaces). The topic for each action shows the API\n      request parameters and the response. Alternatively, you can use one of the Amazon Web Services SDKs to\n      access an API that is tailored to the programming language or platform that you're using. For\n      more information, see <a href=\"https://aws.amazon.com/tools/#SDKs\">Amazon Web Services SDKs</a>.</p>\n         <p>To share Refactor Spaces environments with other Amazon Web Services accounts or with Organizations\n      and their OUs, use Resource Access Manager's <code>CreateResourceShare</code> API. See <a href=\"https://docs.aws.amazon.com/ram/latest/APIReference/API_CreateResourceShare.html\">CreateResourceShare</a> in the <i>Amazon Web Services RAM API Reference</i>.</p>",
                 "smithy.api#title": "AWS Migration Hub Refactor Spaces"
             },
             "version": "2021-10-26",
diff --git a/aws/sdk/aws-models/mobile.json b/aws/sdk/aws-models/mobile.json
index 785148ffd598fded17465eef4de0d2631e908c3e..731bea5602017f8f12af5a945306964ba0e3f8ae 100644
--- a/aws/sdk/aws-models/mobile.json
+++ b/aws/sdk/aws-models/mobile.json
@@ -70,7 +70,7 @@
                     "endpointPrefix": "mobile"
                 },
                 "aws.auth#sigv4": {
-                    "name": "awsmobilehubservice"
+                    "name": "AWSMobileHubService"
                 },
                 "aws.protocols#restJson1": {},
                 "smithy.api#documentation": "<p>\n            AWS Mobile Service provides mobile app and website developers with capabilities\n            required to configure AWS resources and bootstrap their developer desktop projects\n            with the necessary SDKs, constants, tools and samples to make use of those resources.\n        </p>",
diff --git a/aws/sdk/aws-models/organizations.json b/aws/sdk/aws-models/organizations.json
index 58256a6476481f764fb6a569ae8e83dbe0c105e1..16da6e96a6dcd139541caaf20b72d20a8e1014d7 100644
--- a/aws/sdk/aws-models/organizations.json
+++ b/aws/sdk/aws-models/organizations.json
@@ -555,6 +555,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#AttachPolicyRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -752,6 +755,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#CloseAccountRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -788,7 +794,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Closes an Amazon Web Services account that is now a part of an Organizations, either created within the organization, or invited to join the organization.</p>"
+                "smithy.api#documentation": "<p>Closes an Amazon Web Services member account within an organization. You can't close the management\n            account with this API. This is an asynchronous request that Amazon Web Services performs in the\n            background. Because <code>CloseAccount</code> operates asynchronously, it can return a\n            successful completion message even though account closure might still be in progress.\n            You need to wait a few minutes before the account is fully closed. To check the status\n            of the request, do one of the following:</p>\n        <ul>\n            <li>\n                <p>Use the <code>AccountId</code> that you sent in the <code>CloseAccount</code>\n                    request to provide as a parameter to the <a>DescribeAccount</a>\n                    operation. </p>\n                <p>While the close account request is in progress, Account status will indicate\n                    PENDING_CLOSURE. When the close account request completes, the status will\n                    change to SUSPENDED. </p>\n            </li>\n            <li>\n                <p>Check the CloudTrail log for the <code>CloseAccountResult</code> event that gets\n                    published after the account closes successfully. For information on using CloudTrail\n                    with Organizations, see <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_security_incident-response.html#orgs_cloudtrail-integration\">Logging and monitoring in Organizations</a> in the\n                        <i>Organizations User Guide.</i>\n               </p>\n            </li>\n         </ul>\n        <note>\n            <ul>\n               <li>\n                    <p>You can only close 10% of active member accounts within a rolling 30 day\n                        period. This quota is not bound by a calendar month, but starts when you\n                        close an account. Within 30 days of that initial account closure, you can't\n                        exceed the 10% account closure limit.</p>\n                </li>\n               <li>\n                    <p>To reinstate a closed account, contact Amazon Web Services Support within the 90-day\n                        grace period while the account is in SUSPENDED status. </p>\n                </li>\n               <li>\n                    <p>If the Amazon Web Services account you attempt to close is linked to an Amazon Web Services GovCloud (US)\n                        account, the <code>CloseAccount</code> request will close both accounts. To\n                        learn important pre-closure details, see <a href=\"https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/Closing-govcloud-account.html\">\n                            Closing an Amazon Web Services GovCloud (US) account</a> in the <i>\n                            Amazon Web Services GovCloud User Guide</i>.</p>\n                </li>\n            </ul>\n        </note>\n        <p>For more information about closing accounts, see <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_close.html\">Closing an\n                Amazon Web Services account</a> in the <i>Organizations User Guide.</i>\n         </p>"
             }
         },
         "com.amazonaws.organizations#CloseAccountRequest": {
@@ -797,7 +803,7 @@
                 "AccountId": {
                     "target": "com.amazonaws.organizations#AccountId",
                     "traits": {
-                        "smithy.api#documentation": "<p>Retrieves the Amazon Web Services account Id for the current <code>CloseAccount</code> API request. </p>",
+                        "smithy.api#documentation": "<p>Retrieves the Amazon Web Services account Id for the current <code>CloseAccount</code> API request.\n        </p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -824,7 +830,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The request failed because it conflicts with the current state of the specified resource.</p>",
+                "smithy.api#documentation": "<p>The request failed because it conflicts with the current state of the specified\n            resource.</p>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 409
             }
@@ -840,7 +846,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>Performing this operation violates a minimum or maximum value limit. For example,\n            attempting to remove the last service control policy (SCP) from an OU or root, inviting\n            or creating too many accounts to the organization, or attaching too many policies to an\n            account, OU, or root. This exception includes a reason that contains additional\n            information about the violated limit:</p>\n        <note>\n            <p>Some of the reasons in the following list might not be applicable to this specific\n                API or operation.</p>\n        </note>\n        <ul>\n            <li>\n                <p>ACCOUNT_CANNOT_LEAVE_ORGANIZATION: You attempted to remove the management\n                    account from the organization. You can't remove the management account. Instead,\n                    after you remove all member accounts, delete the organization itself.</p>\n            </li>\n            <li>\n                <p>ACCOUNT_CANNOT_LEAVE_WITHOUT_PHONE_VERIFICATION: You attempted to remove an\n                    account from the organization that doesn't yet have enough information to exist\n                    as a standalone account. This account requires you to first complete phone\n                    verification. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#orgs_manage_accounts_remove-from-master\">Removing a member account from your organization</a> in the\n                        <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>ACCOUNT_CREATION_RATE_LIMIT_EXCEEDED: You attempted to exceed the number of\n                    accounts that you can create in one day.</p>\n            </li>\n            <li>\n                <p>ACCOUNT_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the limit on the number\n                    of accounts in an organization. If you need more accounts, contact <a href=\"https://docs.aws.amazon.com/support/home#/\">Amazon Web Services Support</a> to\n                    request an increase in your limit. </p>\n                <p>Or the number of invitations that you tried to send would cause you to exceed\n                    the limit of accounts in your organization. Send fewer invitations or contact\n                    Amazon Web Services Support to request an increase in the number of accounts.</p>\n                <note>\n                    <p>Deleted and closed accounts still count toward your limit.</p>\n                </note>\n                <important>\n                    <p>If you get this exception when running a command immediately after\n                        creating the organization, wait one hour and try again. After an hour, if\n                        the command continues to fail with this error, contact <a href=\"https://docs.aws.amazon.com/support/home#/\">Amazon Web Services\n                        Support</a>.</p>\n                </important>\n            </li>\n            <li>\n                <p>CANNOT_REGISTER_MASTER_AS_DELEGATED_ADMINISTRATOR: You attempted to register\n                    the management account of the organization as a delegated administrator for an\n                    Amazon Web Services service integrated with Organizations. You can designate only a member account as a\n                    delegated administrator.</p>\n            </li>\n            <li>\n                <p>CANNOT_REMOVE_DELEGATED_ADMINISTRATOR_FROM_ORG: You attempted to remove an\n                    account that is registered as a delegated administrator for a service integrated\n                    with your organization. To complete this operation, you must first deregister\n                    this account as a delegated administrator. </p>\n            </li>\n            <li>\n                <p>CREATE_ORGANIZATION_IN_BILLING_MODE_UNSUPPORTED_REGION: To create an\n                    organization in the specified region, you must enable all features mode.</p>\n            </li>\n            <li>\n                <p>DELEGATED_ADMINISTRATOR_EXISTS_FOR_THIS_SERVICE: You attempted to register an\n                    Amazon Web Services account as a delegated administrator for an Amazon Web Services service that already has\n                    a delegated administrator. To complete this operation, you must first deregister\n                    any existing delegated administrators for this service.</p>\n            </li>\n            <li>\n                <p>EMAIL_VERIFICATION_CODE_EXPIRED: The email verification code is only valid for\n                    a limited period of time. You must resubmit the request and generate a new\n                    verfication code.</p>\n            </li>\n            <li>\n                <p>HANDSHAKE_RATE_LIMIT_EXCEEDED: You attempted to exceed the number of\n                    handshakes that you can send in one day.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_ADDRESS_DOES_NOT_MATCH_MARKETPLACE: To create an account in\n                    this organization, you first must migrate the organization's management account\n                    to the marketplace that corresponds to the management account's address. For\n                    example, accounts with India addresses must be associated with the AISPL\n                    marketplace. All accounts in an organization must be associated with the same\n                    marketplace.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_MISSING_BUSINESS_LICENSE: Applies only to the Amazon Web Services /> Regions\n                    in China. To create an organization, the master must have a valid business\n                    license. For more information, contact customer support.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_MISSING_CONTACT_INFO: To complete this operation, you must\n                    first provide a valid contact address and phone number for the management\n                    account. Then try the operation again.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_NOT_GOVCLOUD_ENABLED: To complete this operation, the\n                    management account must have an associated account in the Amazon Web Services GovCloud\n                    (US-West) Region. For more information, see <a href=\"https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-organizations.html\">Organizations</a>\n                    in the \n                    <i>Amazon Web Services GovCloud User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED: To create an organization with\n                    this management account, you first must associate a valid payment instrument,\n                    such as a credit card, with the account. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#leave-without-all-info\">To leave an organization when all required account information has not yet\n                        been provided</a> in the <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MAX_DELEGATED_ADMINISTRATORS_FOR_SERVICE_LIMIT_EXCEEDED: You attempted to\n                    register more delegated administrators than allowed for the service principal.\n                </p>\n            </li>\n            <li>\n                <p>MAX_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED: You attempted to exceed the number\n                    of policies of a certain type that can be attached to an entity at one\n                    time.</p>\n            </li>\n            <li>\n                <p>MAX_TAG_LIMIT_EXCEEDED: You have exceeded the number of tags allowed on this\n                    resource. </p>\n            </li>\n            <li>\n                <p>MEMBER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED: To complete this operation with\n                    this member account, you first must associate a valid payment instrument, such\n                    as a credit card, with the account. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#leave-without-all-info\">To leave an organization when all required account information has not yet\n                        been provided</a> in the <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MIN_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED: You attempted to detach a policy\n                    from an entity that would cause the entity to have fewer than the minimum number\n                    of policies of a certain type required.</p>\n            </li>\n            <li>\n                <p>ORGANIZATION_NOT_IN_ALL_FEATURES_MODE: You attempted to perform an operation\n                    that requires the organization to be configured to support all features. An\n                    organization that supports only consolidated billing features can't perform this\n                    operation.</p>\n            </li>\n            <li>\n                <p>OU_DEPTH_LIMIT_EXCEEDED: You attempted to create an OU tree that is too many\n                    levels deep.</p>\n            </li>\n            <li>\n                <p>OU_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the number of OUs that you\n                    can have in an organization.</p>\n            </li>\n            <li>\n                <p>POLICY_CONTENT_LIMIT_EXCEEDED: You attempted to create a policy that is larger\n                    than the maximum size.</p>\n            </li>\n            <li>\n                <p>POLICY_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the number of policies\n                    that you can have in an organization.</p>\n            </li>\n            <li>\n                <p>SERVICE_ACCESS_NOT_ENABLED: You attempted to register a delegated\n                    administrator before you enabled service access. Call the <code>EnableAWSServiceAccess</code> API\n                    first.</p>\n            </li>\n            <li>\n                <p>TAG_POLICY_VIOLATION: You attempted to create or update a resource with tags\n                    that are not compliant with the tag policy requirements for this account.</p>\n            </li>\n            <li>\n                <p>WAIT_PERIOD_ACTIVE: After you create an Amazon Web Services account, there is a waiting\n                    period before you can remove it from the organization. If you get an error that\n                    indicates that a wait period is required, try again in a few days.</p>\n            </li>\n         </ul>",
+                "smithy.api#documentation": "<p>Performing this operation violates a minimum or maximum value limit. For example,\n            attempting to remove the last service control policy (SCP) from an OU or root, inviting\n            or creating too many accounts to the organization, or attaching too many policies to an\n            account, OU, or root. This exception includes a reason that contains additional\n            information about the violated limit:</p>\n        <note>\n            <p>Some of the reasons in the following list might not be applicable to this specific\n                API or operation.</p>\n        </note>\n        <ul>\n            <li>\n                <p>ACCOUNT_CANNOT_LEAVE_ORGANIZATION: You attempted to remove the management\n                    account from the organization. You can't remove the management account. Instead,\n                    after you remove all member accounts, delete the organization itself.</p>\n            </li>\n            <li>\n                <p>ACCOUNT_CANNOT_LEAVE_WITHOUT_PHONE_VERIFICATION: You attempted to remove an\n                    account from the organization that doesn't yet have enough information to exist\n                    as a standalone account. This account requires you to first complete phone\n                    verification. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#orgs_manage_accounts_remove-from-master\">Removing a member account from your organization</a> in the\n                        <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>ACCOUNT_CREATION_RATE_LIMIT_EXCEEDED: You attempted to exceed the number of\n                    accounts that you can create in one day.</p>\n            </li>\n            <li>\n                <p>ACCOUNT_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the limit on the number\n                    of accounts in an organization. If you need more accounts, contact <a href=\"https://docs.aws.amazon.com/support/home#/\">Amazon Web Services Support</a> to\n                    request an increase in your limit. </p>\n                <p>Or the number of invitations that you tried to send would cause you to exceed\n                    the limit of accounts in your organization. Send fewer invitations or contact\n                    Amazon Web Services Support to request an increase in the number of accounts.</p>\n                <note>\n                    <p>Deleted and closed accounts still count toward your limit.</p>\n                </note>\n                <important>\n                    <p>If you get this exception when running a command immediately after\n                        creating the organization, wait one hour and try again. After an hour, if\n                        the command continues to fail with this error, contact <a href=\"https://docs.aws.amazon.com/support/home#/\">Amazon Web Services\n                        Support</a>.</p>\n                </important>\n            </li>\n            <li>\n                <p>CANNOT_REGISTER_MASTER_AS_DELEGATED_ADMINISTRATOR: You attempted to register\n                    the management account of the organization as a delegated administrator for an\n                    Amazon Web Services service integrated with Organizations. You can designate only a member account as a\n                    delegated administrator.</p>\n            </li>\n            <li>\n                <p>CANNOT_CLOSE_MANAGEMENT_ACCOUNT: You attempted to close the management\n                    account. To close the management account for the organization, you must first\n                    either remove or close all member accounts in the organization. Follow standard\n                    account closure process using root credentials.​ </p>\n            </li>\n            <li>\n                <p>CANNOT_REMOVE_DELEGATED_ADMINISTRATOR_FROM_ORG: You attempted to remove an\n                    account that is registered as a delegated administrator for a service integrated\n                    with your organization. To complete this operation, you must first deregister\n                    this account as a delegated administrator. </p>\n            </li>\n            <li>\n                <p>CLOSE_ACCOUNT_QUOTA_EXCEEDED: You have exceeded close account quota for the\n                    past 30 days. </p>\n            </li>\n            <li>\n                <p>CLOSE_ACCOUNT_REQUESTS_LIMIT_EXCEEDED: You attempted to exceed the number of\n                    accounts that you can close at a time. ​ </p>\n            </li>\n            <li>\n                <p>CREATE_ORGANIZATION_IN_BILLING_MODE_UNSUPPORTED_REGION: To create an\n                    organization in the specified region, you must enable all features mode.</p>\n            </li>\n            <li>\n                <p>DELEGATED_ADMINISTRATOR_EXISTS_FOR_THIS_SERVICE: You attempted to register an\n                    Amazon Web Services account as a delegated administrator for an Amazon Web Services service that already has\n                    a delegated administrator. To complete this operation, you must first deregister\n                    any existing delegated administrators for this service.</p>\n            </li>\n            <li>\n                <p>EMAIL_VERIFICATION_CODE_EXPIRED: The email verification code is only valid for\n                    a limited period of time. You must resubmit the request and generate a new\n                    verfication code.</p>\n            </li>\n            <li>\n                <p>HANDSHAKE_RATE_LIMIT_EXCEEDED: You attempted to exceed the number of\n                    handshakes that you can send in one day.</p>\n            </li>\n            <li>\n                <p>INVALID_PAYMENT_INSTRUMENT: You cannot remove an account because no supported\n                    payment method is associated with the account. Amazon Web Services does not support cards\n                    issued by financial institutions in Russia or Belarus. For more information, see\n                        <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-general.html\">Managing your\n                        Amazon Web Services payments</a>.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_ADDRESS_DOES_NOT_MATCH_MARKETPLACE: To create an account in\n                    this organization, you first must migrate the organization's management account\n                    to the marketplace that corresponds to the management account's address. For\n                    example, accounts with India addresses must be associated with the AISPL\n                    marketplace. All accounts in an organization must be associated with the same\n                    marketplace.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_MISSING_BUSINESS_LICENSE: Applies only to the Amazon Web Services /> Regions\n                    in China. To create an organization, the master must have a valid business\n                    license. For more information, contact customer support.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_MISSING_CONTACT_INFO: To complete this operation, you must\n                    first provide a valid contact address and phone number for the management\n                    account. Then try the operation again.</p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_NOT_GOVCLOUD_ENABLED: To complete this operation, the\n                    management account must have an associated account in the Amazon Web Services GovCloud\n                    (US-West) Region. For more information, see <a href=\"https://docs.aws.amazon.com/govcloud-us/latest/UserGuide/govcloud-organizations.html\">Organizations</a>\n                    in the \n                    <i>Amazon Web Services GovCloud User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MASTER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED: To create an organization with\n                    this management account, you first must associate a valid payment instrument,\n                    such as a credit card, with the account. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#leave-without-all-info\">To leave an organization when all required account information has not yet\n                        been provided</a> in the <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MAX_DELEGATED_ADMINISTRATORS_FOR_SERVICE_LIMIT_EXCEEDED: You attempted to\n                    register more delegated administrators than allowed for the service principal.\n                </p>\n            </li>\n            <li>\n                <p>MAX_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED: You attempted to exceed the number\n                    of policies of a certain type that can be attached to an entity at one\n                    time.</p>\n            </li>\n            <li>\n                <p>MAX_TAG_LIMIT_EXCEEDED: You have exceeded the number of tags allowed on this\n                    resource. </p>\n            </li>\n            <li>\n                <p>MEMBER_ACCOUNT_PAYMENT_INSTRUMENT_REQUIRED: To complete this operation with\n                    this member account, you first must associate a valid payment instrument, such\n                    as a credit card, with the account. Follow the steps at <a href=\"https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_accounts_remove.html#leave-without-all-info\">To leave an organization when all required account information has not yet\n                        been provided</a> in the <i>Organizations User Guide.</i>\n               </p>\n            </li>\n            <li>\n                <p>MIN_POLICY_TYPE_ATTACHMENT_LIMIT_EXCEEDED: You attempted to detach a policy\n                    from an entity that would cause the entity to have fewer than the minimum number\n                    of policies of a certain type required.</p>\n            </li>\n            <li>\n                <p>ORGANIZATION_NOT_IN_ALL_FEATURES_MODE: You attempted to perform an operation\n                    that requires the organization to be configured to support all features. An\n                    organization that supports only consolidated billing features can't perform this\n                    operation.</p>\n            </li>\n            <li>\n                <p>OU_DEPTH_LIMIT_EXCEEDED: You attempted to create an OU tree that is too many\n                    levels deep.</p>\n            </li>\n            <li>\n                <p>OU_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the number of OUs that you\n                    can have in an organization.</p>\n            </li>\n            <li>\n                <p>POLICY_CONTENT_LIMIT_EXCEEDED: You attempted to create a policy that is larger\n                    than the maximum size.</p>\n            </li>\n            <li>\n                <p>POLICY_NUMBER_LIMIT_EXCEEDED: You attempted to exceed the number of policies\n                    that you can have in an organization.</p>\n            </li>\n            <li>\n                <p>SERVICE_ACCESS_NOT_ENABLED: You attempted to register a delegated\n                    administrator before you enabled service access. Call the\n                        <code>EnableAWSServiceAccess</code> API first.</p>\n            </li>\n            <li>\n                <p>TAG_POLICY_VIOLATION: You attempted to create or update a resource with tags\n                    that are not compliant with the tag policy requirements for this account.</p>\n            </li>\n            <li>\n                <p>WAIT_PERIOD_ACTIVE: After you create an Amazon Web Services account, there is a waiting\n                    period before you can remove it from the organization. If you get an error that\n                    indicates that a wait period is required, try again in a few days.</p>\n            </li>\n         </ul>",
                 "smithy.api#error": "client",
                 "smithy.api#httpError": 409
             }
@@ -976,6 +982,10 @@
                     {
                         "value": "SERVICE_ACCESS_NOT_ENABLED",
                         "name": "SERVICE_ACCESS_NOT_ENABLED"
+                    },
+                    {
+                        "value": "INVALID_PAYMENT_INSTRUMENT",
+                        "name": "INVALID_PAYMENT_INSTRUMENT"
                     }
                 ]
             }
@@ -1076,6 +1086,10 @@
                     {
                         "value": "MISSING_PAYMENT_INSTRUMENT",
                         "name": "MISSING_PAYMENT_INSTRUMENT"
+                    },
+                    {
+                        "value": "INVALID_PAYMENT_INSTRUMENT",
+                        "name": "INVALID_PAYMENT_INSTRUMENT"
                     }
                 ]
             }
@@ -1222,7 +1236,7 @@
                 "FailureReason": {
                     "target": "com.amazonaws.organizations#CreateAccountFailureReason",
                     "traits": {
-                        "smithy.api#documentation": "<p>If the request failed, a description of the reason for the failure.</p>\n        <ul>\n            <li>\n                <p>ACCOUNT_LIMIT_EXCEEDED: The account couldn't be created because you reached\n                    the limit on the number of accounts in your organization.</p>\n            </li>\n            <li>\n                <p>CONCURRENT_ACCOUNT_MODIFICATION: You already submitted a request with the same\n                    information.</p>\n            </li>\n            <li>\n                <p>EMAIL_ALREADY_EXISTS: The account could not be created because another Amazon Web Services\n                    account with that email address already exists.</p>\n            </li>\n            <li>\n                <p>FAILED_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization\n                    failed to receive business license validation.</p>\n            </li>\n            <li>\n                <p>GOVCLOUD_ACCOUNT_ALREADY_EXISTS: The account in the Amazon Web Services GovCloud (US) Region\n                    could not be created because this Region already includes an account with that\n                    email address.</p>\n            </li>\n            <li>\n                <p>IDENTITY_INVALID_BUSINESS_VALIDATION: The Amazon Web Services account that owns your\n                    organization can't complete business license validation because it doesn't have\n                    valid identity data.</p>\n            </li>\n            <li>\n                <p>INVALID_ADDRESS: The account could not be created because the address you\n                    provided is not valid.</p>\n            </li>\n            <li>\n                <p>INVALID_EMAIL: The account could not be created because the email address you\n                    provided is not valid.</p>\n            </li>\n            <li>\n                <p>INTERNAL_FAILURE: The account could not be created because of an internal\n                    failure. Try again later. If the problem persists, contact Amazon Web Services Customer\n                    Support.</p>\n            </li>\n            <li>\n                <p>MISSING_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization has\n                    not received Business Validation.</p>\n            </li>\n            <li>\n                <p> MISSING_PAYMENT_INSTRUMENT: You must configure the management account with a\n                    valid payment method, such as a credit card.</p>\n            </li>\n            <li>\n                <p>PENDING_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization is\n                    still in the process of completing business license validation.</p>\n            </li>\n            <li>\n                <p>UNKNOWN_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization has\n                    an unknown issue with business license validation.</p>\n            </li>\n         </ul>"
+                        "smithy.api#documentation": "<p>If the request failed, a description of the reason for the failure.</p>\n        <ul>\n            <li>\n                <p>ACCOUNT_LIMIT_EXCEEDED: The account couldn't be created because you reached\n                    the limit on the number of accounts in your organization.</p>\n            </li>\n            <li>\n                <p>CONCURRENT_ACCOUNT_MODIFICATION: You already submitted a request with the same\n                    information.</p>\n            </li>\n            <li>\n                <p>EMAIL_ALREADY_EXISTS: The account could not be created because another Amazon Web Services\n                    account with that email address already exists.</p>\n            </li>\n            <li>\n                <p>FAILED_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization\n                    failed to receive business license validation.</p>\n            </li>\n            <li>\n                <p>GOVCLOUD_ACCOUNT_ALREADY_EXISTS: The account in the Amazon Web Services GovCloud (US) Region\n                    could not be created because this Region already includes an account with that\n                    email address.</p>\n            </li>\n            <li>\n                <p>IDENTITY_INVALID_BUSINESS_VALIDATION: The Amazon Web Services account that owns your\n                    organization can't complete business license validation because it doesn't have\n                    valid identity data.</p>\n            </li>\n            <li>\n                <p>INVALID_ADDRESS: The account could not be created because the address you\n                    provided is not valid.</p>\n            </li>\n            <li>\n                <p>INVALID_EMAIL: The account could not be created because the email address you\n                    provided is not valid.</p>\n            </li>\n            <li>\n                <p>INVALID_PAYMENT_INSTRUMENT: The Amazon Web Services account that owns your organization does\n                    not have a supported payment method associated with the account. Amazon Web Services does not\n                    support cards issued by financial institutions in Russia or Belarus. For more\n                    information, see <a href=\"https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/manage-general.html\">Managing your\n                        Amazon Web Services payments</a>.</p>\n            </li>\n            <li>\n                <p>INTERNAL_FAILURE: The account could not be created because of an internal\n                    failure. Try again later. If the problem persists, contact Amazon Web Services Customer\n                    Support.</p>\n            </li>\n            <li>\n                <p>MISSING_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization has\n                    not received Business Validation.</p>\n            </li>\n            <li>\n                <p> MISSING_PAYMENT_INSTRUMENT: You must configure the management account with a\n                    valid payment method, such as a credit card.</p>\n            </li>\n            <li>\n                <p>PENDING_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization is\n                    still in the process of completing business license validation.</p>\n            </li>\n            <li>\n                <p>UNKNOWN_BUSINESS_VALIDATION: The Amazon Web Services account that owns your organization has\n                    an unknown issue with business license validation.</p>\n            </li>\n         </ul>"
                     }
                 }
             },
@@ -1303,7 +1317,7 @@
                 "AccountName": {
                     "target": "com.amazonaws.organizations#CreateAccountName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The friendly name of the member account.</p>",
+                        "smithy.api#documentation": "<p>The friendly name of the member account. </p>\n        <p>The account name can consist of only the characters [a-z],[A-Z],[0-9], hyphen (-), or\n            dot (.) You can't separate characters with a dash (–).</p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -1720,6 +1734,12 @@
         },
         "com.amazonaws.organizations#DeleteOrganization": {
             "type": "operation",
+            "input": {
+                "target": "smithy.api#Unit"
+            },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -1752,6 +1772,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#DeleteOrganizationalUnitRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -1799,6 +1822,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#DeletePolicyRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -1849,6 +1875,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#DeregisterDelegatedAdministratorRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -2144,6 +2173,9 @@
         },
         "com.amazonaws.organizations#DescribeOrganization": {
             "type": "operation",
+            "input": {
+                "target": "smithy.api#Unit"
+            },
             "output": {
                 "target": "com.amazonaws.organizations#DescribeOrganizationResponse"
             },
@@ -2310,6 +2342,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#DetachPolicyRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -2376,6 +2411,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#DisableAWSServiceAccessRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -2639,6 +2677,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#EnableAWSServiceAccessRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -3457,6 +3498,12 @@
         },
         "com.amazonaws.organizations#LeaveOrganization": {
             "type": "operation",
+            "input": {
+                "target": "smithy.api#Unit"
+            },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -4776,6 +4823,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#MoveAccountRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -5413,6 +5463,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#RegisterDelegatedAdministratorRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -5473,6 +5526,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#RemoveAccountFromOrganizationRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -5683,6 +5739,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#TagResourceRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
@@ -5836,6 +5895,9 @@
             "input": {
                 "target": "com.amazonaws.organizations#UntagResourceRequest"
             },
+            "output": {
+                "target": "smithy.api#Unit"
+            },
             "errors": [
                 {
                     "target": "com.amazonaws.organizations#AccessDeniedException"
diff --git a/aws/sdk/aws-models/outposts.json b/aws/sdk/aws-models/outposts.json
index 089898d649de6dabf4f33db466ff4c3477f9c895..0ae67eb74d65f5723d610e7c62fae6f4a653da8c 100644
--- a/aws/sdk/aws-models/outposts.json
+++ b/aws/sdk/aws-models/outposts.json
@@ -187,6 +187,65 @@
                 "smithy.api#pattern": "^(arn:aws([a-z-]+)?:outposts:[a-z\\d-]+:\\d{12}:([a-z\\d-]+)/)[a-z]{2,8}-[a-f0-9]{17}$"
             }
         },
+        "com.amazonaws.outposts#AssetId": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 100
+                },
+                "smithy.api#pattern": "^(\\w+)$"
+            }
+        },
+        "com.amazonaws.outposts#AssetInfo": {
+            "type": "structure",
+            "members": {
+                "AssetId": {
+                    "target": "com.amazonaws.outposts#AssetId",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      The ID of the asset.\n    </p>"
+                    }
+                },
+                "RackId": {
+                    "target": "com.amazonaws.outposts#RackId",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      The rack ID of the asset. \n    </p>"
+                    }
+                },
+                "AssetType": {
+                    "target": "com.amazonaws.outposts#AssetType",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      The type of the asset.\n    </p>"
+                    }
+                },
+                "ComputeAttributes": {
+                    "target": "com.amazonaws.outposts#ComputeAttributes",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      Information about compute hardware assets. \n    </p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>\n      Information about hardware assets.\n    </p>"
+            }
+        },
+        "com.amazonaws.outposts#AssetListDefinition": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.outposts#AssetInfo"
+            }
+        },
+        "com.amazonaws.outposts#AssetType": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "COMPUTE",
+                        "name": "COMPUTE"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.outposts#AvailabilityZone": {
             "type": "string",
             "traits": {
@@ -404,6 +463,20 @@
                 "target": "com.amazonaws.outposts#City"
             }
         },
+        "com.amazonaws.outposts#ComputeAttributes": {
+            "type": "structure",
+            "members": {
+                "HostId": {
+                    "target": "com.amazonaws.outposts#HostId",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      The host ID of any Dedicated Hosts on the asset.\n    </p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>\n      Information about compute hardware assets.\n    </p>"
+            }
+        },
         "com.amazonaws.outposts#ConflictException": {
             "type": "structure",
             "members": {
@@ -1068,11 +1141,16 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists the instance types for the specified Outpost.</p>",
+                "smithy.api#documentation": "<p>Gets the instance types for the specified Outpost.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/outposts/{OutpostId}/instanceTypes",
                     "code": 200
+                },
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
                 }
             }
         },
@@ -1253,6 +1331,22 @@
                 }
             }
         },
+        "com.amazonaws.outposts#HostId": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 50
+                },
+                "smithy.api#pattern": "^[A-Za-z0-9-]*$"
+            }
+        },
+        "com.amazonaws.outposts#HostIdList": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.outposts#HostId"
+            }
+        },
         "com.amazonaws.outposts#ISO8601Timestamp": {
             "type": "timestamp"
         },
@@ -1451,6 +1545,88 @@
                 "target": "com.amazonaws.outposts#LineItemQuantity"
             }
         },
+        "com.amazonaws.outposts#ListAssets": {
+            "type": "operation",
+            "input": {
+                "target": "com.amazonaws.outposts#ListAssetsInput"
+            },
+            "output": {
+                "target": "com.amazonaws.outposts#ListAssetsOutput"
+            },
+            "errors": [
+                {
+                    "target": "com.amazonaws.outposts#AccessDeniedException"
+                },
+                {
+                    "target": "com.amazonaws.outposts#InternalServerException"
+                },
+                {
+                    "target": "com.amazonaws.outposts#NotFoundException"
+                },
+                {
+                    "target": "com.amazonaws.outposts#ValidationException"
+                }
+            ],
+            "traits": {
+                "smithy.api#documentation": "<p>\n      Lists the hardware assets in an Outpost. If you are using Dedicated Hosts on \n      Amazon Web Services Outposts, you can filter your request by host ID to return a list of hardware\n      assets that allocate resources for Dedicated Hosts. \n    </p>",
+                "smithy.api#http": {
+                    "method": "GET",
+                    "uri": "/outposts/{OutpostIdentifier}/assets",
+                    "code": 200
+                },
+                "smithy.api#paginated": {
+                    "inputToken": "NextToken",
+                    "outputToken": "NextToken",
+                    "pageSize": "MaxResults"
+                }
+            }
+        },
+        "com.amazonaws.outposts#ListAssetsInput": {
+            "type": "structure",
+            "members": {
+                "OutpostIdentifier": {
+                    "target": "com.amazonaws.outposts#OutpostIdentifier",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      The ID or the Amazon Resource Name (ARN) of the Outpost.\n    </p>",
+                        "smithy.api#httpLabel": {},
+                        "smithy.api#required": {}
+                    }
+                },
+                "HostIdFilter": {
+                    "target": "com.amazonaws.outposts#HostIdList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      A filter for the host ID of Dedicated Hosts on the Outpost.\n    </p>\n         <p>Filter values are case sensitive. If you specify multiple \n         values for a filter, the values are joined with an <code>OR</code>, and the request returns \n         all results that match any of the specified values.</p>",
+                        "smithy.api#httpQuery": "HostIdFilter"
+                    }
+                },
+                "MaxResults": {
+                    "target": "com.amazonaws.outposts#MaxResults1000",
+                    "traits": {
+                        "smithy.api#httpQuery": "MaxResults"
+                    }
+                },
+                "NextToken": {
+                    "target": "com.amazonaws.outposts#Token",
+                    "traits": {
+                        "smithy.api#httpQuery": "NextToken"
+                    }
+                }
+            }
+        },
+        "com.amazonaws.outposts#ListAssetsOutput": {
+            "type": "structure",
+            "members": {
+                "Assets": {
+                    "target": "com.amazonaws.outposts#AssetListDefinition",
+                    "traits": {
+                        "smithy.api#documentation": "<p>\n      Information about hardware assets. \n    </p>"
+                    }
+                },
+                "NextToken": {
+                    "target": "com.amazonaws.outposts#Token"
+                }
+            }
+        },
         "com.amazonaws.outposts#ListCatalogItems": {
             "type": "operation",
             "input": {
@@ -1471,7 +1647,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Use to create a list of every item in the catalog. Add filters to your request to return a\n      more specific list of results. Use filters to match an item class, storage\n      option, or EC2 family. </p>\n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and\n      the request returns only results that match all of the specified filters.</p>",
+                "smithy.api#documentation": "<p>Lists the items in the catalog. Add filters to your request to return a\n      more specific list of results. Use filters to match an item class, storage\n      option, or EC2 family. </p>\n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and\n      the request returns only results that match all of the specified filters.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/catalog/items",
@@ -1559,7 +1735,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Create a list of the Outpost orders for your Amazon Web Services account. You can filter your request by Outpost to \n      return a more specific list of results. </p>",
+                "smithy.api#documentation": "<p>Lists the Outpost orders for your Amazon Web Services account. You can filter your request by Outpost to \n      return a more specific list of results. </p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/list-orders",
@@ -1630,7 +1806,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Create a list of the Outposts for your Amazon Web Services account. Add filters to your request to return\n      a more specific list of results. Use filters to match an Outpost lifecycle status,\n      Availability Zone (<code>us-east-1a</code>), and AZ ID (<code>use1-az1</code>). </p>\n    \n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and the request returns only \n      results that match all of the specified filters.</p>",
+                "smithy.api#documentation": "<p>Lists the Outposts for your Amazon Web Services account. Add filters to your request to return\n      a more specific list of results. Use filters to match an Outpost lifecycle status,\n      Availability Zone (<code>us-east-1a</code>), and AZ ID (<code>use1-az1</code>). </p>\n    \n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and the request returns only \n      results that match all of the specified filters.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/outposts",
@@ -1712,7 +1888,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Create a list of the Outpost sites for your Amazon Web Services account. Add operating address filters to your request to\n      return a more specific list of results. Use filters to match site city, country code, or state/region of the \n      operating address. </p>\n    \n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and the request returns only \n      results that match all of the specified filters.</p>",
+                "smithy.api#documentation": "<p>Lists the Outpost sites for your Amazon Web Services account. Add operating address filters to your request to\n      return a more specific list of results. Use filters to match site city, country code, or state/region of the \n      operating address. </p>\n    \n         <p>If you specify multiple filters, the filters are joined with an <code>AND</code>, and the request returns only \n      results that match all of the specified filters.</p>",
                 "smithy.api#http": {
                     "method": "GET",
                     "uri": "/sites",
@@ -2298,6 +2474,9 @@
                 {
                     "target": "com.amazonaws.outposts#GetSiteAddress"
                 },
+                {
+                    "target": "com.amazonaws.outposts#ListAssets"
+                },
                 {
                     "target": "com.amazonaws.outposts#ListCatalogItems"
                 },
@@ -2459,6 +2638,16 @@
         "com.amazonaws.outposts#Quantity": {
             "type": "string"
         },
+        "com.amazonaws.outposts#RackId": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 5,
+                    "max": 20
+                },
+                "smithy.api#pattern": "^[\\S \\n]+$"
+            }
+        },
         "com.amazonaws.outposts#RackPhysicalProperties": {
             "type": "structure",
             "members": {
diff --git a/aws/sdk/aws-models/rds.json b/aws/sdk/aws-models/rds.json
index 46309b7981c04306ed649eb785609ec3071c987d..9beaaa1eda108262758e8fea5c60570d57ad9ceb 100644
--- a/aws/sdk/aws-models/rds.json
+++ b/aws/sdk/aws-models/rds.json
@@ -2496,6 +2496,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -2576,7 +2579,7 @@
                 "AvailabilityZone": {
                     "target": "com.amazonaws.rds#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The Availability Zone (AZ) where the database will be created. For information on\n        Amazon Web Services Regions and Availability Zones, see \n        <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html\">Regions\n        and Availability Zones</a>.</p>\n        <p>\n            <b>Amazon Aurora</b>\n         </p>\n        <p>Each Aurora DB cluster hosts copies of its storage in three separate Availability Zones. Specify one of these \n            Availability Zones. Aurora automatically chooses an appropriate Availability Zone if you don't specify one.</p>\n        <p>Default: A random, system-chosen Availability Zone in the endpoint's Amazon Web Services Region.</p>\n        <p>Example: <code>us-east-1d</code>\n         </p>\n        <p>Constraint: The <code>AvailabilityZone</code> parameter can't be specified if the DB instance is a Multi-AZ deployment. \n            The specified Availability Zone must be in the same Amazon Web Services Region as the current endpoint.</p>\n        <note>\n            <p>If you're creating a DB instance in an RDS on VMware environment,\n                specify the identifier of the custom Availability Zone to create the DB instance\n                in.</p>\n            <p>For more information about RDS on VMware, see the \n              <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/RDSonVMwareUserGuide/rds-on-vmware.html\">\n                  RDS on VMware User Guide.</a>\n            </p>\n        </note>"
+                        "smithy.api#documentation": "<p>The Availability Zone (AZ) where the database will be created. For information on\n        Amazon Web Services Regions and Availability Zones, see \n        <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html\">Regions\n        and Availability Zones</a>.</p>\n        <p>\n            <b>Amazon Aurora</b>\n         </p>\n        <p>Each Aurora DB cluster hosts copies of its storage in three separate Availability Zones. Specify one of these \n            Availability Zones. Aurora automatically chooses an appropriate Availability Zone if you don't specify one.</p>\n        <p>Default: A random, system-chosen Availability Zone in the endpoint's Amazon Web Services Region.</p>\n        <p>Example: <code>us-east-1d</code>\n         </p>\n        <p>Constraint: The <code>AvailabilityZone</code> parameter can't be specified if the DB instance is a Multi-AZ deployment. \n            The specified Availability Zone must be in the same Amazon Web Services Region as the current endpoint.</p>"
                     }
                 },
                 "DBSubnetGroupName": {
@@ -2624,7 +2627,7 @@
                 "EngineVersion": {
                     "target": "com.amazonaws.rds#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>The version number of the database engine to use.</p>\n        <p>For a list of valid engine versions, use the  <code>DescribeDBEngineVersions</code> action.</p>\n        <p>The following are the database engines and links to information about the major and minor versions that are available with \n          Amazon RDS. Not every database engine is available for every Amazon Web Services Region.</p>\n        <p>\n            <b>Amazon Aurora</b>\n         </p>\n        <p>Not applicable. The version number of the database engine to be used by the DB\n            instance is managed by the DB cluster.</p>\n        <p>\n            <b>Amazon RDS Custom for Oracle</b>\n         </p>\n        <p>A custom engine version (CEV) that you have previously created. This setting is required for RDS Custom for Oracle. The CEV \n          name has the following format: <code>19.<i>customized_string</i>\n            </code>. An example identifier is \n          <code>19.my_cev1</code>. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create\">\n              Creating an RDS Custom for Oracle DB instance</a> in the <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Amazon RDS Custom for SQL Server</b>\n         </p>\n        <p>See <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits.html#custom-reqs-limits.reqsMS\">RDS Custom for SQL Server general requirements</a> \n          in the <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>MariaDB</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt\">MariaDB on Amazon RDS Versions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Microsoft SQL Server</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport\">Microsoft SQL Server Versions on Amazon RDS</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>MySQL</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt\">MySQL on Amazon RDS Versions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Oracle</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html\">Oracle Database Engine Release Notes</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>PostgreSQL</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts\">Amazon RDS for PostgreSQL versions and extensions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>"
+                        "smithy.api#documentation": "<p>The version number of the database engine to use.</p>\n        <p>For a list of valid engine versions, use the  <code>DescribeDBEngineVersions</code> action.</p>\n        <p>The following are the database engines and links to information about the major and minor versions that are available with \n          Amazon RDS. Not every database engine is available for every Amazon Web Services Region.</p>\n        <p>\n            <b>Amazon Aurora</b>\n         </p>\n        <p>Not applicable. The version number of the database engine to be used by the DB\n            instance is managed by the DB cluster.</p>\n        <p>\n            <b>Amazon RDS Custom for Oracle</b>\n         </p>\n        <p>A custom engine version (CEV) that you have previously created. This setting is required for RDS Custom for Oracle. The CEV \n          name has the following format: <code>19.<i>customized_string</i>\n            </code>. An example identifier is \n          <code>19.my_cev1</code>. For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-creating.html#custom-creating.create\">\n              Creating an RDS Custom for Oracle DB instance</a> in the <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Amazon RDS Custom for SQL Server</b>\n         </p>\n        <p>See <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-reqs-limits-MS.html\">RDS Custom for SQL Server general requirements</a> \n          in the <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>MariaDB</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MariaDB.html#MariaDB.Concepts.VersionMgmt\">MariaDB on Amazon RDS Versions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Microsoft SQL Server</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_SQLServer.html#SQLServer.Concepts.General.VersionSupport\">Microsoft SQL Server Versions on Amazon RDS</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>MySQL</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.VersionMgmt\">MySQL on Amazon RDS Versions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>Oracle</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.Oracle.PatchComposition.html\">Oracle Database Engine Release Notes</a> in the \n          <i>Amazon RDS User Guide</i>.</p>\n        <p>\n            <b>PostgreSQL</b>\n         </p>\n        <p>For information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts\">Amazon RDS for PostgreSQL versions and extensions</a> in the \n          <i>Amazon RDS User Guide</i>.</p>"
                     }
                 },
                 "AutoMinorVersionUpgrade": {
@@ -2818,6 +2821,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Specifies where automated backups and manual snapshots are stored.</p>\n        <p>Possible values are <code>outposts</code> (Amazon Web Services Outposts) and <code>region</code> (Amazon Web Services Region). The default is <code>region</code>.</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html\">Working \n            with Amazon RDS on Amazon Web Services Outposts</a> in the <i>Amazon RDS User Guide</i>.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -2878,6 +2887,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -3094,6 +3106,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The instance profile associated with the underlying Amazon EC2 instance of an \n            RDS Custom DB instance. The instance profile must meet the following requirements:</p>\n        <ul>\n            <li>\n                <p>The profile must exist in your account.</p>\n            </li>\n            <li>\n                <p>The profile must have an IAM role that Amazon EC2 has permissions to assume.</p>\n            </li>\n            <li>\n                <p>The instance profile name and the associated IAM role name must start with the prefix <code>AWSRDSCustom</code>.</p>\n            </li>\n         </ul>\n        <p>For the list of permissions required for the IAM role, see \n            <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/custom-setup-orcl.html#custom-setup-orcl.iam-vpc\">\n                Configure IAM and your VPC</a> in the <i>Amazon RDS User Guide</i>.</p>\n        <p>This setting is required for RDS Custom.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for read replica. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             }
         },
@@ -5828,6 +5846,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Specifies where automated backups and manual snapshots are stored: Amazon Web Services Outposts or the Amazon Web Services Region.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide</i> and \n            <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n                Working with a DB instance in a VPC</a> in the \n            <i>Amazon Aurora User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -7556,6 +7580,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the DB subnet group.</p>"
                     }
+                },
+                "SupportedNetworkTypes": {
+                    "target": "com.amazonaws.rds#StringList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB subnet group.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -13744,6 +13774,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -14046,6 +14079,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The number of minutes to pause the automation. When the time period ends, RDS Custom resumes \n            full automation. The minimum value is <code>60</code> (default). The maximum value is <code>1,440</code>.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -14704,6 +14743,23 @@
                 }
             }
         },
+        "com.amazonaws.rds#NetworkTypeNotSupported": {
+            "type": "structure",
+            "members": {
+                "message": {
+                    "target": "com.amazonaws.rds#ExceptionMessage"
+                }
+            },
+            "traits": {
+                "aws.protocols#awsQueryError": {
+                    "code": "NetworkTypeNotSupported",
+                    "httpResponseCode": 400
+                },
+                "smithy.api#documentation": "<p>The network type is invalid for the DB instance. Valid nework type values are <code>IPV4</code> and <code>DUAL</code>.</p>",
+                "smithy.api#error": "client",
+                "smithy.api#httpError": 400
+            }
+        },
         "com.amazonaws.rds#Option": {
             "type": "structure",
             "members": {
@@ -15501,6 +15557,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Whether DB instances can be configured as a Multi-AZ DB cluster.</p>\n        <p>For more information on Multi-AZ DB clusters, see \n            <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/multi-az-db-clusters-concepts.html\">\n               Multi-AZ deployments with two readable standby DB instances</a> in the <i>Amazon RDS User Guide.</i>\n         </p>"
                     }
+                },
+                "SupportedNetworkTypes": {
+                    "target": "com.amazonaws.rds#StringList",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network types supported by the DB instance (<code>IPV4</code> or <code>DUAL</code>).</p>\n        <p>A DB instance can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -17830,6 +17892,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -18034,6 +18099,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Specifies where automated backups and manual snapshots are stored for the restored DB instance.</p>\n        <p>Possible values are <code>outposts</code> (Amazon Web Services Outposts) and <code>region</code> (Amazon Web Services Region). The default is <code>region</code>.</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html\">Working \n            with Amazon RDS on Amazon Web Services Outposts</a> in the <i>Amazon RDS User Guide</i>.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
@@ -18096,6 +18167,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -18386,6 +18460,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The upper limit in gibibytes (GiB) to which Amazon RDS can automatically scale the storage of the DB instance.</p>\n        <p>For more information about this setting, including limitations that apply to it, see \n            <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PIOPS.StorageTypes.html#USER_PIOPS.Autoscaling\">\n                Managing capacity automatically with Amazon RDS storage autoscaling</a> \n            in the <i>Amazon RDS User Guide</i>.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             }
         },
@@ -18457,6 +18537,9 @@
                 {
                     "target": "com.amazonaws.rds#KMSKeyNotAccessibleFault"
                 },
+                {
+                    "target": "com.amazonaws.rds#NetworkTypeNotSupported"
+                },
                 {
                     "target": "com.amazonaws.rds#OptionGroupNotFoundFault"
                 },
@@ -18693,6 +18776,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>Specifies where automated backups and manual snapshots are stored for the restored DB instance.</p>\n        <p>Possible values are <code>outposts</code> (Amazon Web Services Outposts) and <code>region</code> (Amazon Web Services Region). The default is <code>region</code>.</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-on-outposts.html\">Working \n            with Amazon RDS on Amazon Web Services Outposts</a> in the <i>Amazon RDS User Guide</i>.</p>"
                     }
+                },
+                "NetworkType": {
+                    "target": "com.amazonaws.rds#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The network type of the DB instance.</p>\n        <p>Valid values:</p>\n        <ul>\n            <li>\n                <p>\n                  <code>IPV4</code>\n               </p>\n            </li>\n            <li>\n                <p>\n                  <code>DUAL</code>\n               </p>\n            </li>\n         </ul>\n        <p>The network type is determined by the <code>DBSubnetGroup</code> specified for the DB instance. \n            A <code>DBSubnetGroup</code> can support only the IPv4 protocol or the IPv4 and the IPv6 \n            protocols (<code>DUAL</code>).</p>\n        <p>For more information, see <a href=\"https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.WorkingWithRDSInstanceinaVPC.html\">\n            Working with a DB instance in a VPC</a> in the \n            <i>Amazon RDS User Guide.</i>\n         </p>"
+                    }
                 }
             },
             "traits": {
diff --git a/aws/sdk/aws-models/redshift.json b/aws/sdk/aws-models/redshift.json
index c9d6a84f6f93e8db448aa465e371d006f170ff1f..d703091e6190a1dc64840df5815637e1d1d0f6d3 100644
--- a/aws/sdk/aws-models/redshift.json
+++ b/aws/sdk/aws-models/redshift.json
@@ -622,7 +622,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>From a data producer account, authorizes the sharing of a datashare with one or more\n            consumer accounts or managing entities. To authorize a datashare for a data consumer, the producer account\n            must have the correct access privileges.</p>"
+                "smithy.api#documentation": "<p>From a data producer account, authorizes the sharing of a datashare with one or more\n            consumer accounts or managing entities. To authorize a datashare for a data consumer,\n            the producer account must have the correct access permissions.</p>"
             }
         },
         "com.amazonaws.redshift#AuthorizeDataShareMessage": {
@@ -1383,7 +1383,7 @@
                 "DbUser": {
                     "target": "com.amazonaws.redshift#String",
                     "traits": {
-                        "smithy.api#documentation": "<p>A database user name that is authorized to log on to the database\n                <code>DbName</code> using the password <code>DbPassword</code>. If the specified\n            DbUser exists in the database, the new user name has the same database privileges as the\n            the user named in DbUser. By default, the user is added to PUBLIC. If the\n                <code>DbGroups</code> parameter is specifed, <code>DbUser</code> is added to the\n            listed groups for any sessions created using these credentials.</p>"
+                        "smithy.api#documentation": "<p>A database user name that is authorized to log on to the database <code>DbName</code>\n            using the password <code>DbPassword</code>. If the specified DbUser exists in the\n            database, the new user name has the same database permissions as the the user named in\n            DbUser. By default, the user is added to PUBLIC. If the <code>DbGroups</code> parameter\n            is specifed, <code>DbUser</code> is added to the listed groups for any sessions created\n            using these credentials.</p>"
                     }
                 },
                 "DbPassword": {
@@ -2678,6 +2678,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The Amazon Resource Name (ARN) for the IAM role that was set as default for the cluster when the cluster was created. </p>"
                     }
+                },
+                "LoadSampleData": {
+                    "target": "com.amazonaws.redshift#String",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A flag that specifies whether to load sample data once the cluster is created.</p>"
+                    }
                 }
             },
             "traits": {
@@ -3724,7 +3730,7 @@
                 "DataShareAssociations": {
                     "target": "com.amazonaws.redshift#DataShareAssociationList",
                     "traits": {
-                        "smithy.api#documentation": "<p>A value that specifies when the datashare has an association between a producer and data consumers.</p>"
+                        "smithy.api#documentation": "<p>A value that specifies when the datashare has an association between producer and data\n            consumers.</p>"
                     }
                 },
                 "ManagedBy": {
@@ -3925,7 +3931,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>From the producer account, removes authorization from the specified datashare. </p>"
+                "smithy.api#documentation": "<p>From a datashare producer account, removes authorization from the specified datashare. </p>"
             }
         },
         "com.amazonaws.redshift#DeauthorizeDataShareMessage": {
@@ -7072,7 +7078,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>From a consumer account, remove association for the specified datashare.\n            </p>"
+                "smithy.api#documentation": "<p>From a datashare consumer account, remove association for the specified datashare.\n            </p>"
             }
         },
         "com.amazonaws.redshift#DisassociateDataShareConsumerMessage": {
@@ -7980,7 +7986,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Returns a database user name and temporary password with temporary authorization to\n            log on to an Amazon Redshift database. The action returns the database user name\n            prefixed with <code>IAM:</code> if <code>AutoCreate</code> is <code>False</code> or\n                <code>IAMA:</code> if <code>AutoCreate</code> is <code>True</code>. You can\n            optionally specify one or more database user groups that the user will join at log on.\n            By default, the temporary credentials expire in 900 seconds. You can optionally specify\n            a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more\n            information, see <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html\">Using IAM Authentication\n                to Generate Database User Credentials</a> in the Amazon Redshift Cluster Management Guide.</p>\n        <p>The Identity and Access Management (IAM) user or role that runs\n            GetClusterCredentials must have an IAM policy attached that allows access to all\n            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\n            Amazon Redshift Cluster Management Guide.</p>\n        <p>If the <code>DbGroups</code> parameter is specified, the IAM policy must allow the\n                <code>redshift:JoinGroup</code> action with access to the listed\n                <code>dbgroups</code>. </p>\n        <p>In addition, if the <code>AutoCreate</code> parameter is set to <code>True</code>,\n            then the policy must include the <code>redshift:CreateClusterUser</code>\n            privilege.</p>\n        <p>If the <code>DbName</code> parameter is specified, the IAM policy must allow access\n            to the resource <code>dbname</code> for the specified database name. </p>"
+                "smithy.api#documentation": "<p>Returns a database user name and temporary password with temporary authorization to\n            log on to an Amazon Redshift database. The action returns the database user name\n            prefixed with <code>IAM:</code> if <code>AutoCreate</code> is <code>False</code> or\n                <code>IAMA:</code> if <code>AutoCreate</code> is <code>True</code>. You can\n            optionally specify one or more database user groups that the user will join at log on.\n            By default, the temporary credentials expire in 900 seconds. You can optionally specify\n            a duration between 900 seconds (15 minutes) and 3600 seconds (60 minutes). For more\n            information, see <a href=\"https://docs.aws.amazon.com/redshift/latest/mgmt/generating-user-credentials.html\">Using IAM Authentication\n                to Generate Database User Credentials</a> in the Amazon Redshift Cluster Management Guide.</p>\n        <p>The Identity and Access Management (IAM) user or role that runs\n            GetClusterCredentials must have an IAM policy attached that allows access to all\n            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\n            Amazon Redshift Cluster Management Guide.</p>\n        <p>If the <code>DbGroups</code> parameter is specified, the IAM policy must allow the\n                <code>redshift:JoinGroup</code> action with access to the listed\n                <code>dbgroups</code>. </p>\n        <p>In addition, if the <code>AutoCreate</code> parameter is set to <code>True</code>,\n            then the policy must include the <code>redshift:CreateClusterUser</code>\n            permission.</p>\n        <p>If the <code>DbName</code> parameter is specified, the IAM policy must allow access\n            to the resource <code>dbname</code> for the specified database name. </p>"
             }
         },
         "com.amazonaws.redshift#GetClusterCredentialsMessage": {
@@ -11598,7 +11604,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>From the consumer account, rejects the specified datashare.</p>"
+                "smithy.api#documentation": "<p>From a datashare consumer account, rejects the specified datashare.</p>"
             }
         },
         "com.amazonaws.redshift#RejectDataShareMessage": {
diff --git a/aws/sdk/aws-models/sagemaker.json b/aws/sdk/aws-models/sagemaker.json
index 9c07492f052ebac45fae69b3a3a02b415d350e05..ab53c7f483c78a6f87362fc24b80cde5f9fde8c9 100644
--- a/aws/sdk/aws-models/sagemaker.json
+++ b/aws/sdk/aws-models/sagemaker.json
@@ -2356,6 +2356,69 @@
                 ]
             }
         },
+        "com.amazonaws.sagemaker#AutoMLMetricExtendedEnum": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "Accuracy",
+                        "name": "ACCURACY"
+                    },
+                    {
+                        "value": "MSE",
+                        "name": "MSE"
+                    },
+                    {
+                        "value": "F1",
+                        "name": "F1"
+                    },
+                    {
+                        "value": "F1macro",
+                        "name": "F1_MACRO"
+                    },
+                    {
+                        "value": "AUC",
+                        "name": "AUC"
+                    },
+                    {
+                        "value": "RMSE",
+                        "name": "RMSE"
+                    },
+                    {
+                        "value": "MAE",
+                        "name": "MAE"
+                    },
+                    {
+                        "value": "R2",
+                        "name": "R2"
+                    },
+                    {
+                        "value": "BalancedAccuracy",
+                        "name": "BALANCED_ACCURACY"
+                    },
+                    {
+                        "value": "Precision",
+                        "name": "PRECISION"
+                    },
+                    {
+                        "value": "PrecisionMacro",
+                        "name": "PRECISION_MACRO"
+                    },
+                    {
+                        "value": "Recall",
+                        "name": "RECALL"
+                    },
+                    {
+                        "value": "RecallMacro",
+                        "name": "RECALL_MACRO"
+                    },
+                    {
+                        "value": "LogLoss",
+                        "name": "LogLoss"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.sagemaker#AutoMLNameContains": {
             "type": "string",
             "traits": {
@@ -27099,6 +27162,12 @@
                     "traits": {
                         "smithy.api#documentation": "<p>The dataset split from which the AutoML job produced the metric.</p>"
                     }
+                },
+                "StandardMetricName": {
+                    "target": "com.amazonaws.sagemaker#AutoMLMetricExtendedEnum",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The name of the standard metric.</p>"
+                    }
                 }
             },
             "traits": {
@@ -33769,7 +33838,17 @@
         },
         "com.amazonaws.sagemaker#RSessionAppSettings": {
             "type": "structure",
-            "members": {},
+            "members": {
+                "DefaultResourceSpec": {
+                    "target": "com.amazonaws.sagemaker#ResourceSpec"
+                },
+                "CustomImages": {
+                    "target": "com.amazonaws.sagemaker#CustomImages",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A list of custom SageMaker images that are configured to run as a RSession app.</p>"
+                    }
+                }
+            },
             "traits": {
                 "smithy.api#documentation": "<p>A collection of settings that apply to an <code>RSessionGateway</code> app.</p>"
             }
diff --git a/aws/sdk/aws-models/secretsmanager.json b/aws/sdk/aws-models/secretsmanager.json
index 3fc31db8b236f4c401683cfeea50b127774c5159..1fd9745d41db51a41a2d56a0b278ed8d681896fe 100644
--- a/aws/sdk/aws-models/secretsmanager.json
+++ b/aws/sdk/aws-models/secretsmanager.json
@@ -75,7 +75,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Turns off automatic rotation, and if a rotation is currently in\n      progress, cancels the rotation.</p>\n         <p>To turn on automatic rotation again, call <a>RotateSecret</a>.</p>\n         <note>\n            <p>If you cancel a rotation in progress, it can leave the <code>VersionStage</code>\n        labels in an unexpected state. Depending on the step of the rotation in progress, you might\n        need to remove the staging label <code>AWSPENDING</code> from the partially created version, specified\n        by the <code>VersionId</code> response value. We recommend you also evaluate the partially rotated\n        new version to see if it should be deleted. You can delete a version by removing all staging labels\n        from it.</p>\n         </note>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:CancelRotateSecret</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>"
+                "smithy.api#documentation": "<p>Turns off automatic rotation, and if a rotation is currently in\n      progress, cancels the rotation.</p>\n         <p>If you cancel a rotation in progress, it can leave the <code>VersionStage</code>\n      labels in an unexpected state. You might\n      need to remove the staging label <code>AWSPENDING</code> from the partially created version. \n      You also need to determine whether to roll back to the previous version of the secret \n      by moving the staging label <code>AWSCURRENT</code> to the version that has <code>AWSPENDING</code>.\n      To determine \n      which version has a specific staging label, call <a>ListSecretVersionIds</a>. Then use \n     <a>UpdateSecretVersionStage</a> to change staging labels. \n     For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/rotate-secrets_how.html\">How rotation works</a>.</p>\n         <p>To turn on automatic rotation again, call <a>RotateSecret</a>.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:CancelRotateSecret</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>"
             }
         },
         "com.amazonaws.secretsmanager#CancelRotateSecretRequest": {
@@ -349,7 +349,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Deletes a secret and all of its versions. You can specify a recovery\n      window during which you can restore the secret. The minimum recovery window is 7 days. \n      The default recovery window is 30 days. Secrets Manager attaches a <code>DeletionDate</code> stamp to\n      the secret that specifies the end of the recovery window. At the end of the recovery window,\n      Secrets Manager deletes the secret permanently.</p>\n         <p>For information about deleting a secret in the console, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_delete-secret.html\">https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_delete-secret.html</a>. </p>\n         <p>Secrets Manager performs the permanent secret deletion at the end of the waiting period as a\n        background task with low priority. There is no guarantee of a specific time after the\n        recovery window for the permanent delete to occur.</p>\n         <p>At any time before recovery window ends, you can use <a>RestoreSecret</a> to\n      remove the <code>DeletionDate</code> and cancel the deletion of the secret.</p>\n         <p>In a secret scheduled for deletion, you cannot access the encrypted secret value.\n      To access that information, first cancel the deletion with <a>RestoreSecret</a> and then retrieve the information.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:DeleteSecret</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>"
+                "smithy.api#documentation": "<p>Deletes a secret and all of its versions. You can specify a recovery\n      window during which you can restore the secret. The minimum recovery window is 7 days. \n      The default recovery window is 30 days. Secrets Manager attaches a <code>DeletionDate</code> stamp to\n      the secret that specifies the end of the recovery window. At the end of the recovery window,\n      Secrets Manager deletes the secret permanently.</p>\n         <p>You can't delete a primary secret that is replicated to other Regions. You must first delete the \n    replicas using <a>RemoveRegionsFromReplication</a>, and then delete the primary secret. \n    When you delete a replica, it is deleted immediately.</p>\n         <p>You can't directly delete a version of a secret. Instead, you remove all staging labels \n    from the version using <a>UpdateSecretVersionStage</a>. This marks the version as deprecated, \n    and then Secrets Manager can automatically delete the version in the background.</p>\n         <p>To determine whether an application still uses a secret, you can create an Amazon CloudWatch alarm \n    to alert you to any attempts to access a secret during the recovery window. For more information, \n    see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/monitoring_cloudwatch_deleted-secrets.html\">\n    Monitor secrets scheduled for deletion</a>.</p>\n         <p>Secrets Manager performs the permanent secret deletion at the end of the waiting period as a\n        background task with low priority. There is no guarantee of a specific time after the\n        recovery window for the permanent delete to occur.</p>\n         <p>At any time before recovery window ends, you can use <a>RestoreSecret</a> to\n      remove the <code>DeletionDate</code> and cancel the deletion of the secret.</p>\n         <p>When a secret is scheduled for deletion, you cannot retrieve the secret value.\n      You must first cancel the deletion with <a>RestoreSecret</a> and then you can retrieve the secret.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:DeleteSecret</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>"
             }
         },
         "com.amazonaws.secretsmanager#DeleteSecretRequest": {
@@ -1055,7 +1055,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists the versions for a secret. </p>\n         <p>To list the secrets in the account, use <a>ListSecrets</a>.</p>\n         <p>To get the secret value from <code>SecretString</code> or <code>SecretBinary</code>, \n      call <a>GetSecretValue</a>.</p> \n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:ListSecretVersionIds</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>",
+                "smithy.api#documentation": "<p>Lists the versions of a secret. Secrets Manager uses staging labels to indicate the different versions \n    of a secret. For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/getting-started.html#term_version\">\n    Secrets Manager concepts: Versions</a>.</p>\n         <p>To list the secrets in the account, use <a>ListSecrets</a>.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:ListSecretVersionIds</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>",
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
@@ -1144,7 +1144,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Lists the secrets that are stored by Secrets Manager in the Amazon Web Services account, not including secrets \n      that are marked for deletion. To see secrets marked for deletion, use the Secrets Manager console.</p>\n         <p>To list the versions of a secret, use <a>ListSecretVersionIds</a>.</p>\n         <p>To get the secret value from <code>SecretString</code> or <code>SecretBinary</code>, \n      call <a>GetSecretValue</a>.</p> \n         <p>For information about finding secrets in the console, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html\">Enhanced search capabilities \n      for secrets in Secrets Manager</a>.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:ListSecrets</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>",
+                "smithy.api#documentation": "<p>Lists the secrets that are stored by Secrets Manager in the Amazon Web Services account, not including secrets \n      that are marked for deletion. To see secrets marked for deletion, use the Secrets Manager console.</p>\n         <p>To list the versions of a secret, use <a>ListSecretVersionIds</a>.</p>\n         <p>To get the secret value from <code>SecretString</code> or <code>SecretBinary</code>, \n      call <a>GetSecretValue</a>.</p> \n         <p>For information about finding secrets in the console, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/manage_search-secret.html\">Find secrets in Secrets Manager</a>.</p>\n         <p>\n            <b>Required permissions: </b>\n            <code>secretsmanager:ListSecrets</code>. \n      For more information, see <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/reference_iam-permissions.html#reference_iam-permissions_actions\">\n      IAM policy actions for Secrets Manager</a> and <a href=\"https://docs.aws.amazon.com/secretsmanager/latest/userguide/auth-and-access.html\">Authentication \n      and access control in Secrets Manager</a>. </p>",
                 "smithy.api#paginated": {
                     "inputToken": "NextToken",
                     "outputToken": "NextToken",
diff --git a/aws/sdk/aws-models/securityhub.json b/aws/sdk/aws-models/securityhub.json
index ca9f7732014d5c9dbfeb50f2ad782c3c5b1e899b..7d9e12e3854977ab4c89ca12b1697ee71e714e00 100644
--- a/aws/sdk/aws-models/securityhub.json
+++ b/aws/sdk/aws-models/securityhub.json
@@ -13854,7 +13854,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Imports security findings generated by a finding provider into Security Hub.\n         This action is requested by the finding provider to import its findings into\n         Security Hub.</p>\n         <p>\n            <code>BatchImportFindings</code> must be called by one of the following:</p>\n         <ul>\n            <li>\n               <p>The account that is associated with the findings. The identifier of the associated\n               account is the value of the <code>AwsAccountId</code> attribute for the finding.</p>\n            </li>\n            <li>\n               <p>An account that is allow-listed for an official Security Hub partner integration.</p>\n            </li>\n         </ul>\n         <p>The maximum allowed size for a finding is 240 Kb. An error is returned for any finding\n         larger than 240 Kb.</p>\n         <p>After a finding is created, <code>BatchImportFindings</code> cannot be used to update\n         the following finding fields and objects, which Security Hub customers use to manage their\n         investigation workflow.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Note</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>UserDefinedFields</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>VerificationState</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Workflow</code>\n               </p>\n            </li>\n         </ul>\n         <p>Finding providers also should not use <code>BatchImportFindings</code> to update the following attributes.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Confidence</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Criticality</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>RelatedFindings</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Severity</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Types</code>\n               </p>\n            </li>\n         </ul>\n         <p>Instead, finding providers use <code>FindingProviderFields</code> to provide values for these attributes.</p>",
+                "smithy.api#documentation": "<p>Imports security findings generated by a finding provider into Security Hub.\n         This action is requested by the finding provider to import its findings into\n         Security Hub.</p>\n         <p>\n            <code>BatchImportFindings</code> must be called by one of the following:</p>\n         <ul>\n            <li>\n               <p>The Amazon Web Services account that is associated with a finding if you are using\n               the <a href=\"https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-custom-providers.html#securityhub-custom-providers-bfi-reqs\">default product ARN</a> \n               or are a partner sending findings from within a customer's Amazon Web Services account. \n               In these cases, the identifier of the account that you are calling <code>BatchImportFindings</code> \n               from needs to be the same as the <code>AwsAccountId</code> attribute for the finding.</p>\n            </li>\n            <li>\n               <p>An Amazon Web Services account that Security Hub has allow-listed for an official partner\n               integration. In this case, you can call <code>BatchImportFindings</code> from the allow-listed\n               account and send findings from different customer accounts in the same batch.</p>\n            </li>\n         </ul>\n         <p>The maximum allowed size for a finding is 240 Kb. An error is returned for any finding\n         larger than 240 Kb.</p>\n         <p>After a finding is created, <code>BatchImportFindings</code> cannot be used to update\n         the following finding fields and objects, which Security Hub customers use to manage their\n         investigation workflow.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Note</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>UserDefinedFields</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>VerificationState</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Workflow</code>\n               </p>\n            </li>\n         </ul>\n         <p>Finding providers also should not use <code>BatchImportFindings</code> to update the following attributes.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Confidence</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Criticality</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>RelatedFindings</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Severity</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Types</code>\n               </p>\n            </li>\n         </ul>\n         <p>Instead, finding providers use <code>FindingProviderFields</code> to provide values for these attributes.</p>",
                 "smithy.api#http": {
                     "method": "POST",
                     "uri": "/findings/import",
@@ -19886,7 +19886,7 @@
                     "name": "securityhub"
                 },
                 "aws.protocols#restJson1": {},
-                "smithy.api#documentation": "<p>Security Hub provides you with a comprehensive view of the security state of your Amazon Web Services environment and resources. It also provides you with the readiness status\n         of your environment based on controls from supported security standards. Security Hub collects\n         security data from Amazon Web Services accounts, services, and integrated third-party products and helps\n         you analyze security trends in your environment to identify the highest priority security\n         issues. For more information about Security Hub, see the <a href=\"https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html\">\n               <i>Security HubUser\n            Guide</i>\n            </a>.</p> \n         <p>When you use operations in the Security Hub API, the requests are executed only in the Amazon Web Services\n         Region that is currently active or in the specific Amazon Web Services Region that you specify in your\n         request. Any configuration or settings change that results from the operation is applied\n         only to that Region. To make the same change in other Regions, execute the same command for\n         each Region to apply the change to.</p>\n         <p>For example, if your Region is set to <code>us-west-2</code>, when you use <code>CreateMembers</code> to add a member account to Security Hub, the association of\n         the member account with the administrator account is created only in the <code>us-west-2</code>\n         Region. Security Hub must be enabled for the member account in the same Region that the invitation\n         was sent from.</p>\n         <p>The following throttling limits apply to using Security Hub API operations.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>BatchEnableStandards</code> - <code>RateLimit</code> of 1\n               request per second, <code>BurstLimit</code> of 1 request per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>GetFindings</code> - <code>RateLimit</code> of 3 requests per second.\n                  <code>BurstLimit</code> of 6 requests per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>UpdateFindings</code> - <code>RateLimit</code> of 1 request per\n               second. <code>BurstLimit</code> of 5 requests per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>UpdateStandardsControl</code> - <code>RateLimit</code> of\n               1 request per second, <code>BurstLimit</code> of 5 requests per second.</p>\n            </li>\n            <li>\n               <p>All other operations - <code>RateLimit</code> of 10 requests per second.\n                  <code>BurstLimit</code> of 30 requests per second.</p>\n            </li>\n         </ul>",
+                "smithy.api#documentation": "<p>Security Hub provides you with a comprehensive view of the security state of your Amazon Web Services environment and resources. It also provides you with the readiness status\n         of your environment based on controls from supported security standards. Security Hub collects\n         security data from Amazon Web Services accounts, services, and integrated third-party products and helps\n         you analyze security trends in your environment to identify the highest priority security\n         issues. For more information about Security Hub, see the <a href=\"https://docs.aws.amazon.com/securityhub/latest/userguide/what-is-securityhub.html\">\n               <i>Security HubUser\n            Guide</i>\n            </a>.</p> \n         <p>When you use operations in the Security Hub API, the requests are executed only in the Amazon Web Services\n         Region that is currently active or in the specific Amazon Web Services Region that you specify in your\n         request. Any configuration or settings change that results from the operation is applied\n         only to that Region. To make the same change in other Regions, execute the same command for\n         each Region to apply the change to.</p>\n         <p>For example, if your Region is set to <code>us-west-2</code>, when you use <code>CreateMembers</code> to add a member account to Security Hub, the association of\n         the member account with the administrator account is created only in the <code>us-west-2</code>\n         Region. Security Hub must be enabled for the member account in the same Region that the invitation\n         was sent from.</p>\n         <p>The following throttling limits apply to using Security Hub API operations.</p>\n         <ul>\n            <li>\n               <p>\n                  <code>BatchEnableStandards</code> - <code>RateLimit</code> of 1\n               request per second, <code>BurstLimit</code> of 1 request per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>GetFindings</code> - <code>RateLimit</code> of 3 requests per second.\n                  <code>BurstLimit</code> of 6 requests per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>BatchImportFindings</code> - <code>RateLimit</code> of 10 requests per second.\n            <code>BurstLimit</code> of 30 requests per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>BatchUpdateFindings</code> - <code>RateLimit</code> of 10 requests per second.\n            <code>BurstLimit</code> of 30 requests per second.</p>\n            </li>\n            <li>\n               <p>\n                  <code>UpdateStandardsControl</code> - <code>RateLimit</code> of\n               1 request per second, <code>BurstLimit</code> of 5 requests per second.</p>\n            </li>\n            <li>\n               <p>All other operations - <code>RateLimit</code> of 10 requests per second.\n                  <code>BurstLimit</code> of 30 requests per second.</p>\n            </li>\n         </ul>",
                 "smithy.api#title": "AWS SecurityHub"
             },
             "version": "2018-10-26",
diff --git a/aws/sdk/aws-models/ssm-contacts.json b/aws/sdk/aws-models/ssm-contacts.json
index 0279bc0cf73360bfd7a4b31c2f9b7f97ed0e61c4..a097d2c3c3cd63c110126be9996b05259586dd95 100644
--- a/aws/sdk/aws-models/ssm-contacts.json
+++ b/aws/sdk/aws-models/ssm-contacts.json
@@ -2099,7 +2099,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds a resource to the specified contact or escalation plan.</p>"
+                "smithy.api#documentation": "<p>Adds a resource policy to the specified contact or escalation plan. The resource policy\n         is used to share the contact or escalation plan using Resource Access Manager (RAM). For more information about cross-account sharing, see <a href=\"https://docs.aws.amazon.com/incident-manager/latest/userguide/xa.html\">Setting up\n            cross-account functionality</a>.</p>"
             }
         },
         "com.amazonaws.ssmcontacts#PutContactPolicyRequest": {
@@ -2247,6 +2247,21 @@
         },
         "com.amazonaws.ssmcontacts#SSMContacts": {
             "type": "service",
+            "traits": {
+                "aws.api#service": {
+                    "sdkId": "SSM Contacts",
+                    "arnNamespace": "ssm-contacts",
+                    "cloudFormationName": "SSMContacts",
+                    "cloudTrailEventSource": "ssmcontacts.amazonaws.com",
+                    "endpointPrefix": "ssm-contacts"
+                },
+                "aws.auth#sigv4": {
+                    "name": "ssm-contacts"
+                },
+                "aws.protocols#awsJson1_1": {},
+                "smithy.api#documentation": "<p>Systems Manager Incident Manager is an incident management console designed to help users\n         mitigate and recover from incidents affecting their Amazon Web Services-hosted applications.\n         An incident is any unplanned interruption or reduction in quality of services. </p>\n         <p>Incident Manager increases incident resolution by notifying responders of impact,\n         highlighting relevant troubleshooting data, and providing collaboration tools to get\n         services back up and running. To achieve the primary goal of reducing the\n         time-to-resolution of critical incidents, Incident Manager automates response plans\n         and enables responder team escalation. </p>",
+                "smithy.api#title": "AWS Systems Manager Incident Manager Contacts"
+            },
             "version": "2021-05-03",
             "operations": [
                 {
@@ -2330,22 +2345,7 @@
                 {
                     "target": "com.amazonaws.ssmcontacts#UpdateContactChannel"
                 }
-            ],
-            "traits": {
-                "aws.api#service": {
-                    "sdkId": "SSM Contacts",
-                    "arnNamespace": "ssm-contacts",
-                    "cloudFormationName": "SSMContacts",
-                    "cloudTrailEventSource": "ssmcontacts.amazonaws.com",
-                    "endpointPrefix": "ssm-contacts"
-                },
-                "aws.auth#sigv4": {
-                    "name": "ssm-contacts"
-                },
-                "aws.protocols#awsJson1_1": {},
-                "smithy.api#documentation": "<p>Systems Manager Incident Manager is an incident management console designed to help users\n         mitigate and recover from incidents affecting their Amazon Web Services-hosted applications.\n         An incident is any unplanned interruption or reduction in quality of services. </p>\n         <p>Incident Manager increases incident resolution by notifying responders of impact,\n         highlighting relevant troubleshooting data, and providing collaboration tools to get\n         services back up and running. To achieve the primary goal of reducing the\n         time-to-resolution of critical incidents, Incident Manager automates response plans\n         and enables responder team escalation. </p>",
-                "smithy.api#title": "AWS Systems Manager Incident Manager Contacts"
-            }
+            ]
         },
         "com.amazonaws.ssmcontacts#SendActivationCode": {
             "type": "operation",
diff --git a/aws/sdk/aws-models/ssm.json b/aws/sdk/aws-models/ssm.json
index 68d0fd8d2351031ed0b76dd8a32ea99c77de5347..a5958e487938869184326ce0151489fd114b1c76 100644
--- a/aws/sdk/aws-models/ssm.json
+++ b/aws/sdk/aws-models/ssm.json
@@ -221,7 +221,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Adds or overwrites one or more tags for the specified resource. Tags are metadata that you\n   can assign to your automations, documents, managed nodes, maintenance windows, Parameter Store parameters, and\n   patch baselines. Tags enable you to categorize your resources in different ways, for example, by\n   purpose, owner, or environment. Each tag consists of a key and an optional value, both of which\n   you define. For example, you could define a set of tags for your account's managed nodes that\n   helps you track each node's owner and stack level. For example:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=DbAdmin</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=SysAdmin</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=Dev</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Production</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Pre-Production</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Test</code>\n               </p>\n            </li>\n         </ul>\n         <p>Most resources can have a maximum of 50 tags. Automations can have a maximum of 5 tags.</p>\n         <p>We recommend that you devise a set of tag keys that meets your needs for each resource type.\n   Using a consistent set of tag keys makes it easier for you to manage your resources. You can\n   search and filter the resources based on the tags you add. Tags don't have any semantic meaning\n   to and are interpreted strictly as a string of characters.</p>\n         <p>For more information about using tags with Amazon Elastic Compute Cloud (Amazon EC2) instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html\">Tagging your Amazon EC2\n    resources</a> in the <i>Amazon EC2 User Guide</i>.</p>"
+                "smithy.api#documentation": "<p>Adds or overwrites one or more tags for the specified resource. Tags are metadata that you\n   can assign to your automations, documents, managed nodes, maintenance windows, Parameter Store\n   parameters, and patch baselines. Tags enable you to categorize your resources in different ways,\n   for example, by purpose, owner, or environment. Each tag consists of a key and an optional value,\n   both of which you define. For example, you could define a set of tags for your account's managed\n   nodes that helps you track each node's owner and stack level. For example:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=DbAdmin</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=SysAdmin</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Owner,Value=Dev</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Production</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Pre-Production</code>\n               </p>\n            </li>\n            <li>\n               <p>\n                  <code>Key=Stack,Value=Test</code>\n               </p>\n            </li>\n         </ul>\n         <p>Most resources can have a maximum of 50 tags. Automations can have a maximum of 5\n   tags.</p>\n         <p>We recommend that you devise a set of tag keys that meets your needs for each resource type.\n   Using a consistent set of tag keys makes it easier for you to manage your resources. You can\n   search and filter the resources based on the tags you add. Tags don't have any semantic meaning\n   to and are interpreted strictly as a string of characters.</p>\n         <p>For more information about using tags with Amazon Elastic Compute Cloud (Amazon EC2) instances, see <a href=\"https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html\">Tagging your Amazon EC2\n    resources</a> in the <i>Amazon EC2 User Guide</i>.</p>"
             }
         },
         "com.amazonaws.ssm#AddTagsToResourceRequest": {
@@ -886,6 +886,12 @@
                         "smithy.api#box": {},
                         "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association.</p>"
                     }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
+                    }
                 }
             },
             "traits": {
@@ -1084,6 +1090,12 @@
                         "smithy.api#box": {},
                         "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association.</p>"
                     }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
+                    }
                 }
             },
             "traits": {
@@ -1792,6 +1804,12 @@
                         "smithy.api#box": {},
                         "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association.</p>"
                     }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
+                    }
                 }
             },
             "traits": {
@@ -4286,6 +4304,9 @@
                 {
                     "target": "com.amazonaws.ssm#InvalidTarget"
                 },
+                {
+                    "target": "com.amazonaws.ssm#InvalidTargetMaps"
+                },
                 {
                     "target": "com.amazonaws.ssm#UnsupportedPlatformType"
                 }
@@ -4333,6 +4354,9 @@
                 {
                     "target": "com.amazonaws.ssm#InvalidTarget"
                 },
+                {
+                    "target": "com.amazonaws.ssm#InvalidTargetMaps"
+                },
                 {
                     "target": "com.amazonaws.ssm#UnsupportedPlatformType"
                 }
@@ -4473,6 +4497,12 @@
                         "smithy.api#box": {},
                         "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association.</p>"
                     }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
+                    }
                 }
             },
             "traits": {
@@ -4600,7 +4630,13 @@
                     "target": "com.amazonaws.ssm#ScheduleOffset",
                     "traits": {
                         "smithy.api#box": {},
-                        "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association. For example, if you\n   specified a cron schedule of <code>cron(0 0 ? * THU#2 *)</code>, you could specify an offset of 3\n   to run the association each Sunday after the second Thursday of the month. For more information about cron schedules for associations, see <a href=\"https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html\">Reference: Cron and rate expressions for Systems Manager</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>\n         <note>\n            <p>To use offsets, you must specify the <code>ApplyOnlyAtCronInterval</code> parameter. This\n    option tells the system not to run an association immediately after you create it. </p>\n         </note>"
+                        "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association. For example, if you\n   specified a cron schedule of <code>cron(0 0 ? * THU#2 *)</code>, you could specify an offset of 3\n   to run the association each Sunday after the second Thursday of the month. For more information\n   about cron schedules for associations, see <a href=\"https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html\">Reference: Cron\n    and rate expressions for Systems Manager</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>\n         <note>\n            <p>To use offsets, you must specify the <code>ApplyOnlyAtCronInterval</code> parameter. This\n    option tells the system not to run an association immediately after you create it. </p>\n         </note>"
+                    }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
                     }
                 }
             }
@@ -10003,7 +10039,7 @@
                 "PluginName": {
                     "target": "com.amazonaws.ssm#CommandPluginName",
                     "traits": {
-                        "smithy.api#documentation": "<p>The name of the plugin for which you want detailed results. If the document contains only\n   one plugin, you can omit the name and details for that plugin. If the document contains more than\n   one plugin, you must specify the name of the plugin for which you want to view details.</p>\n         <p>Plugin names are also referred to as <i>step names</i> in Systems Manager documents (SSM\n   documents). For example, <code>aws:RunShellScript</code> is a plugin.</p>\n         <p>To find the <code>PluginName</code>, check the document content and find the name of the\n   plugin. Alternatively, use <a>ListCommandInvocations</a> with the\n    <code>CommandId</code> and <code>Details</code> parameters. The <code>PluginName</code> is the\n    <code>Name</code> attribute of the <code>CommandPlugin</code> object in the\n    <code>CommandPlugins</code> list.</p>"
+                        "smithy.api#documentation": "<p>The name of the step for which you want detailed results. If the document contains only one\n   step, you can omit the name and details for that step. If the document contains more than one\n   step, you must specify the name of the step for which you want to view details. Be sure to\n   specify the name of the step, not the name of a plugin like\n   <code>aws:RunShellScript</code>.</p>\n         <p>To find the <code>PluginName</code>, check the document content and find the name of the\n   step you want details for. Alternatively, use <a>ListCommandInvocations</a> with the\n    <code>CommandId</code> and <code>Details</code> parameters. The <code>PluginName</code> is the\n    <code>Name</code> attribute of the <code>CommandPlugin</code> object in the\n    <code>CommandPlugins</code> list.</p>"
                     }
                 }
             }
@@ -11068,7 +11104,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Retrieves the details of a maintenance window task.</p>\n \t       <note>\n \t\t         <p>For maintenance window tasks without a specified target, you can't supply values for\n \t\t\t<code>--max-errors</code> and <code>--max-concurrency</code>. Instead, the system inserts a\n \t\t\tplaceholder value of <code>1</code>, which may be reported in the response to this command.\n \t\t\tThese values don't affect the running of your task and can be ignored.</p>\n \t       </note>\n \t       <p>To retrieve a list of tasks in a maintenance window, instead use the <a>DescribeMaintenanceWindowTasks</a> command.</p>"
+                "smithy.api#documentation": "<p>Retrieves the details of a maintenance window task.</p>\n         <note>\n            <p>For maintenance window tasks without a specified target, you can't supply values for\n     <code>--max-errors</code> and <code>--max-concurrency</code>. Instead, the system inserts a\n    placeholder value of <code>1</code>, which may be reported in the response to this command.\n    These values don't affect the running of your task and can be ignored.</p>\n         </note>\n         <p>To retrieve a list of tasks in a maintenance window, instead use the <a>DescribeMaintenanceWindowTasks</a> command.</p>"
             }
         },
         "com.amazonaws.ssm#GetMaintenanceWindowTaskRequest": {
@@ -13547,6 +13583,22 @@
                 "smithy.api#error": "client"
             }
         },
+        "com.amazonaws.ssm#InvalidTargetMaps": {
+            "type": "structure",
+            "members": {
+                "Message": {
+                    "target": "com.amazonaws.ssm#String"
+                }
+            },
+            "traits": {
+                "aws.protocols#awsQueryError": {
+                    "code": "InvalidTargetMaps",
+                    "httpResponseCode": 400
+                },
+                "smithy.api#documentation": "<p>TargetMap parameter isn't valid.</p>",
+                "smithy.api#error": "client"
+            }
+        },
         "com.amazonaws.ssm#InvalidTypeNameException": {
             "type": "structure",
             "members": {
@@ -22480,6 +22532,12 @@
                         "smithy.api#documentation": "<p>A key-value mapping to target resources that the runbook operation performs tasks on.\n   Required if you specify <code>TargetParameterName</code>.</p>"
                     }
                 },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of runbook parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
+                    }
+                },
                 "MaxConcurrency": {
                     "target": "com.amazonaws.ssm#MaxConcurrency",
                     "traits": {
@@ -24734,6 +24792,9 @@
                 {
                     "target": "com.amazonaws.ssm#InvalidTarget"
                 },
+                {
+                    "target": "com.amazonaws.ssm#InvalidTargetMaps"
+                },
                 {
                     "target": "com.amazonaws.ssm#InvalidUpdate"
                 },
@@ -24855,7 +24916,13 @@
                     "target": "com.amazonaws.ssm#ScheduleOffset",
                     "traits": {
                         "smithy.api#box": {},
-                        "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association. For example, if you\n   specified a cron schedule of <code>cron(0 0 ? * THU#2 *)</code>, you could specify an offset of 3\n   to run the association each Sunday after the second Thursday of the month. For more information about cron schedules for associations, see <a href=\"https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html\">Reference: Cron and rate expressions for Systems Manager</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>\n         <note>\n            <p>To use offsets, you must specify the <code>ApplyOnlyAtCronInterval</code> parameter. This\n    option tells the system not to run an association immediately after you create it. </p>\n         </note>"
+                        "smithy.api#documentation": "<p>Number of days to wait after the scheduled day to run an association. For example, if you\n   specified a cron schedule of <code>cron(0 0 ? * THU#2 *)</code>, you could specify an offset of 3\n   to run the association each Sunday after the second Thursday of the month. For more information\n   about cron schedules for associations, see <a href=\"https://docs.aws.amazon.com/systems-manager/latest/userguide/reference-cron-and-rate-expressions.html\">Reference: Cron\n    and rate expressions for Systems Manager</a> in the <i>Amazon Web Services Systems Manager User Guide</i>. </p>\n         <note>\n            <p>To use offsets, you must specify the <code>ApplyOnlyAtCronInterval</code> parameter. This\n    option tells the system not to run an association immediately after you create it. </p>\n         </note>"
+                    }
+                },
+                "TargetMaps": {
+                    "target": "com.amazonaws.ssm#TargetMaps",
+                    "traits": {
+                        "smithy.api#documentation": "<p>A key-value mapping of document parameters to target resources. Both Targets and TargetMaps\n   can't be specified together.</p>"
                     }
                 }
             }
diff --git a/aws/sdk/aws-models/synthetics.json b/aws/sdk/aws-models/synthetics.json
index 9482d1469ed5f540a43b245785228a2ffb29c836..880d0bf99905e8e49cb5249f7d25ca5ae035729a 100644
--- a/aws/sdk/aws-models/synthetics.json
+++ b/aws/sdk/aws-models/synthetics.json
@@ -596,6 +596,50 @@
                     {
                         "value": "INVALID_PERMISSIONS",
                         "name": "INVALID_PERMISSIONS"
+                    },
+                    {
+                        "value": "CREATE_PENDING",
+                        "name": "CREATE_PENDING"
+                    },
+                    {
+                        "value": "CREATE_IN_PROGRESS",
+                        "name": "CREATE_IN_PROGRESS"
+                    },
+                    {
+                        "value": "CREATE_FAILED",
+                        "name": "CREATE_FAILED"
+                    },
+                    {
+                        "value": "UPDATE_PENDING",
+                        "name": "UPDATE_PENDING"
+                    },
+                    {
+                        "value": "UPDATE_IN_PROGRESS",
+                        "name": "UPDATE_IN_PROGRESS"
+                    },
+                    {
+                        "value": "UPDATE_COMPLETE",
+                        "name": "UPDATE_COMPLETE"
+                    },
+                    {
+                        "value": "ROLLBACK_COMPLETE",
+                        "name": "ROLLBACK_COMPLETE"
+                    },
+                    {
+                        "value": "ROLLBACK_FAILED",
+                        "name": "ROLLBACK_FAILED"
+                    },
+                    {
+                        "value": "DELETE_IN_PROGRESS",
+                        "name": "DELETE_IN_PROGRESS"
+                    },
+                    {
+                        "value": "DELETE_FAILED",
+                        "name": "DELETE_FAILED"
+                    },
+                    {
+                        "value": "SYNC_DELETE_IN_PROGRESS",
+                        "name": "SYNC_DELETE_IN_PROGRESS"
                     }
                 ]
             }
@@ -826,7 +870,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Permanently deletes the specified canary.</p>\n         <p>When you delete a canary, resources used and created by the canary are not automatically deleted. After you delete a canary that you do not intend to\n         use again, you\n      should also delete the following:</p>\n         <ul>\n            <li>\n               <p>The Lambda functions and layers used by this canary. These have the prefix\n                     <code>cwsyn-<i>MyCanaryName</i>\n                  </code>.</p>\n            </li>\n            <li>\n               <p>The CloudWatch alarms created for this canary. These alarms have a name of\n                     <code>Synthetics-SharpDrop-Alarm-<i>MyCanaryName</i>\n                  </code>.</p>\n            </li>\n            <li>\n               <p>Amazon S3 objects and buckets, such as the canary's artifact location.</p>\n            </li>\n            <li>\n               <p>IAM roles created for the canary. If they were created in the console, these roles\n               have the name <code>\n                     role/service-role/CloudWatchSyntheticsRole-<i>MyCanaryName</i>\n                  </code>.</p>\n            </li>\n            <li>\n               <p>CloudWatch Logs log groups created for the canary. These logs groups have the name\n                     <code>/aws/lambda/cwsyn-<i>MyCanaryName</i>\n                  </code>. </p>\n            </li>\n         </ul>\n      \n         <p>Before you delete a canary, you might want to use <code>GetCanary</code> to display\n         the information about this canary. Make\n         note of the information returned by this operation so that you can delete these resources\n         after you delete the canary.</p>",
+                "smithy.api#documentation": "<p>Permanently deletes the specified canary.</p>\n         <p>If you specify <code>DeleteLambda</code> to <code>true</code>, CloudWatch Synthetics also deletes\n         the Lambda functions and layers that are used by the canary.</p>\n         <p>Other esources used and created by the canary are not automatically deleted. \n         After you delete a canary that you do not intend to\n         use again, you\n      should also delete the following:</p>\n         <ul>\n            <li>\n               <p>The CloudWatch alarms created for this canary. These alarms have a name of\n                     <code>Synthetics-SharpDrop-Alarm-<i>MyCanaryName</i>\n                  </code>.</p>\n            </li>\n            <li>\n               <p>Amazon S3 objects and buckets, such as the canary's artifact location.</p>\n            </li>\n            <li>\n               <p>IAM roles created for the canary. If they were created in the console, these roles\n               have the name <code>\n                     role/service-role/CloudWatchSyntheticsRole-<i>MyCanaryName</i>\n                  </code>.</p>\n            </li>\n            <li>\n               <p>CloudWatch Logs log groups created for the canary. These logs groups have the name\n                     <code>/aws/lambda/cwsyn-<i>MyCanaryName</i>\n                  </code>. </p>\n            </li>\n         </ul>\n      \n         <p>Before you delete a canary, you might want to use <code>GetCanary</code> to display\n         the information about this canary. Make\n         note of the information returned by this operation so that you can delete these resources\n         after you delete the canary.</p>",
                 "smithy.api#http": {
                     "method": "DELETE",
                     "uri": "/canary/{Name}",
@@ -844,6 +888,13 @@
                         "smithy.api#httpLabel": {},
                         "smithy.api#required": {}
                     }
+                },
+                "DeleteLambda": {
+                    "target": "com.amazonaws.synthetics#boolean",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Specifies whether to also delete the Lambda functions and layers used by this canary. The default\n      is false.</p>\n         <p>Type: Boolean</p>",
+                        "smithy.api#httpQuery": "deleteLambda"
+                    }
                 }
             }
         },
@@ -2067,6 +2118,9 @@
         },
         "com.amazonaws.synthetics#VpcId": {
             "type": "string"
+        },
+        "com.amazonaws.synthetics#boolean": {
+            "type": "boolean"
         }
     }
 }
diff --git a/aws/sdk/aws-models/wafv2.json b/aws/sdk/aws-models/wafv2.json
index 3b2084ce63d4f79c7187e4a5accb92565ad12263..dcfefb3f7de26fab3a2aff17a94ec66d6d883103 100644
--- a/aws/sdk/aws-models/wafv2.json
+++ b/aws/sdk/aws-models/wafv2.json
@@ -246,14 +246,14 @@
             "type": "structure",
             "members": {},
             "traits": {
-                "smithy.api#documentation": "<p>Inspect all of the elements that WAF has parsed and extracted from the web request\n         JSON body that are within the <a>JsonBody</a>\n            <code>MatchScope</code>. This is used with the <a>FieldToMatch</a> option\n            <code>JsonBody</code>.\n         \n      </p>\n         <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"All\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect all of the elements that WAF has parsed and extracted from the web request\n         component that you've identified in your <a>FieldToMatch</a> specifications.  \n      </p>\n         <p>This is used only in the <a>FieldToMatch</a> specification for some web request component types. </p> \n         <p>JSON specification: <code>\"All\": {}</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#AllQueryArguments": {
             "type": "structure",
             "members": {},
             "traits": {
-                "smithy.api#documentation": "<p>All query arguments of a web request. </p>\n           <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"AllQueryArguments\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect all query arguments of the web request. </p>\n           <p>This is used only in the <a>FieldToMatch</a> specification for some web request component types. </p> \n         <p>JSON specification: <code>\"AllQueryArguments\": {}</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#AllowAction": {
@@ -311,7 +311,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Associates a web ACL with a regional application resource, to protect the resource.\n         A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.  </p>\n         <p>For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To\n         associate a web ACL, in the CloudFront call <code>UpdateDistribution</code>, set the web ACL ID\n         to the Amazon Resource Name (ARN) of the web ACL. For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html\">UpdateDistribution</a>.</p>"
+                "smithy.api#documentation": "<p>Associates a web ACL with a regional application resource, to protect the resource.\n         A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.  </p>\n         <p>For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To\n         associate a web ACL, in the CloudFront call <code>UpdateDistribution</code>, set the web ACL ID\n         to the Amazon Resource Name (ARN) of the web ACL. For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html\">UpdateDistribution</a>.</p>\n       \n         <p>When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.</p>"
             }
         },
         "com.amazonaws.wafv2#AssociateWebACLRequest": {
@@ -353,9 +353,16 @@
         },
         "com.amazonaws.wafv2#Body": {
             "type": "structure",
-            "members": {},
+            "members": {
+                "OversizeHandling": {
+                    "target": "com.amazonaws.wafv2#OversizeHandling",
+                    "traits": {
+                        "smithy.api#documentation": "<p>What WAF should do if the body is larger than WAF can inspect. \n    WAF does not support inspecting the entire contents of the body of a web request\n      when the body exceeds 8 KB (8192 bytes). Only the first 8 KB of the request body are forwarded to\n    WAF by the underlying host service. </p>\n         <p>The options for oversize handling are the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Inspect the body normally, according to the rule inspection criteria. </p>\n            </li>\n            <li>\n               <p>\n                  <code>MATCH</code> - Treat the web request as matching the rule statement. WAF\n               applies the rule action to the request.</p>\n            </li>\n            <li>\n               <p>\n                  <code>NO_MATCH</code> - Treat the web request as not matching the rule\n               statement.</p>\n            </li>\n         </ul>\n         <p>You can combine the <code>MATCH</code> or <code>NO_MATCH</code>\n      settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over 8 KB. </p>\n         <p>Default: <code>CONTINUE</code>\n         </p>"
+                    }
+                }
+            },
             "traits": {
-                "smithy.api#documentation": "<p>The body of a web request. This immediately follows the request headers.</p>\n         <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"Body\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect the body of the web request. The body immediately follows the request headers.</p>\n         <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p>"
             }
         },
         "com.amazonaws.wafv2#BodyParsingFallbackBehavior": {
@@ -393,7 +400,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -407,7 +414,7 @@
                 "PositionalConstraint": {
                     "target": "com.amazonaws.wafv2#PositionalConstraint",
                     "traits": {
-                        "smithy.api#documentation": "<p>The area within the portion of a web request that you want WAF to search for\n            <code>SearchString</code>. Valid values include the following:</p>\n         <p>\n            <b>CONTAINS</b>\n         </p>\n         <p>The specified part of the web request must include the value of\n            <code>SearchString</code>, but the location doesn't matter.</p>\n         <p>\n            <b>CONTAINS_WORD</b>\n         </p>\n         <p>The specified part of the web request must include the value of\n            <code>SearchString</code>, and <code>SearchString</code> must contain only alphanumeric\n         characters or underscore (A-Z, a-z, 0-9, or _). In addition, <code>SearchString</code> must\n         be a word, which means that both of the following are true:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>SearchString</code> is at the beginning of the specified part of the web\n               request or is preceded by a character other than an alphanumeric character or\n               underscore (_). Examples include the value of a header and\n               <code>;BadBot</code>.</p>\n            </li>\n            <li>\n               <p>\n                  <code>SearchString</code> is at the end of the specified part of the web request or\n               is followed by a character other than an alphanumeric character or underscore (_),\n               for example, <code>BadBot;</code> and <code>-BadBot;</code>.</p>\n            </li>\n         </ul>\n         <p>\n            <b>EXACTLY</b>\n         </p>\n         <p>The value of the specified part of the web request must exactly match the value of\n            <code>SearchString</code>.</p>\n         <p>\n            <b>STARTS_WITH</b>\n         </p>\n         <p>The value of <code>SearchString</code> must appear at the beginning of the specified\n         part of the web request.</p>\n         <p>\n            <b>ENDS_WITH</b>\n         </p>\n         <p>The value of <code>SearchString</code> must appear at the end of the specified part of\n         the web request.</p>",
+                        "smithy.api#documentation": "<p>The area within the portion of the web request that you want WAF to search for\n            <code>SearchString</code>. Valid values include the following:</p>\n         <p>\n            <b>CONTAINS</b>\n         </p>\n         <p>The specified part of the web request must include the value of\n            <code>SearchString</code>, but the location doesn't matter.</p>\n         <p>\n            <b>CONTAINS_WORD</b>\n         </p>\n         <p>The specified part of the web request must include the value of\n            <code>SearchString</code>, and <code>SearchString</code> must contain only alphanumeric\n         characters or underscore (A-Z, a-z, 0-9, or _). In addition, <code>SearchString</code> must\n         be a word, which means that both of the following are true:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>SearchString</code> is at the beginning of the specified part of the web\n               request or is preceded by a character other than an alphanumeric character or\n               underscore (_). Examples include the value of a header and\n               <code>;BadBot</code>.</p>\n            </li>\n            <li>\n               <p>\n                  <code>SearchString</code> is at the end of the specified part of the web request or\n               is followed by a character other than an alphanumeric character or underscore (_),\n               for example, <code>BadBot;</code> and <code>-BadBot;</code>.</p>\n            </li>\n         </ul>\n         <p>\n            <b>EXACTLY</b>\n         </p>\n         <p>The value of the specified part of the web request must exactly match the value of\n            <code>SearchString</code>.</p>\n         <p>\n            <b>STARTS_WITH</b>\n         </p>\n         <p>The value of <code>SearchString</code> must appear at the beginning of the specified\n         part of the web request.</p>\n         <p>\n            <b>ENDS_WITH</b>\n         </p>\n         <p>The value of <code>SearchString</code> must appear at the end of the specified part of\n         the web request.</p>",
                         "smithy.api#required": {}
                     }
                 }
@@ -616,6 +623,73 @@
                 }
             }
         },
+        "com.amazonaws.wafv2#CookieMatchPattern": {
+            "type": "structure",
+            "members": {
+                "All": {
+                    "target": "com.amazonaws.wafv2#All",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect all cookies. </p>"
+                    }
+                },
+                "IncludedCookies": {
+                    "target": "com.amazonaws.wafv2#CookieNames",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect only the cookies that have a key that matches one of the strings specified here. </p>"
+                    }
+                },
+                "ExcludedCookies": {
+                    "target": "com.amazonaws.wafv2#CookieNames",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect only the cookies whose keys don't match any of the strings specified here. </p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The filter to use to identify the subset of cookies to inspect in a web request. </p>\n         <p>You must specify exactly one setting: either <code>All</code>, <code>IncludedCookies</code>, or <code>ExcludedCookies</code>.</p>\n         <p>Example JSON: <code>\"CookieMatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }</code>\n         </p>"
+            }
+        },
+        "com.amazonaws.wafv2#CookieNames": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.wafv2#SingleCookieName"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 199
+                }
+            }
+        },
+        "com.amazonaws.wafv2#Cookies": {
+            "type": "structure",
+            "members": {
+                "MatchPattern": {
+                    "target": "com.amazonaws.wafv2#CookieMatchPattern",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The filter to use to identify the subset of cookies to inspect in a web request. </p>\n         <p>You must specify exactly one setting: either <code>All</code>, <code>IncludedCookies</code>, or <code>ExcludedCookies</code>.</p>\n         <p>Example JSON: <code>\"CookieMatchPattern\": { \"IncludedCookies\": {\"KeyToInclude1\", \"KeyToInclude2\", \"KeyToInclude3\"} }</code>\n         </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "MatchScope": {
+                    "target": "com.amazonaws.wafv2#MapMatchScope",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The parts of the cookies to inspect with the rule inspection criteria. If you\n         specify <code>All</code>, WAF inspects both keys and values. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "OversizeHandling": {
+                    "target": "com.amazonaws.wafv2#OversizeHandling",
+                    "traits": {
+                        "smithy.api#documentation": "<p>What WAF should do if the cookies of the request are larger than WAF can inspect. \n    WAF does not support inspecting the entire contents of request cookies \n      when they exceed 8 KB (8192 bytes) or 200 total cookies. The underlying host service forwards a maximum of 200 cookies\n      and at most 8 KB of cookie contents to WAF. </p>\n         <p>The options for oversize handling are the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Inspect the cookies normally, according to the rule inspection criteria. </p>\n            </li>\n            <li>\n               <p>\n                  <code>MATCH</code> - Treat the web request as matching the rule statement. WAF\n               applies the rule action to the request.</p>\n            </li>\n            <li>\n               <p>\n                  <code>NO_MATCH</code> - Treat the web request as not matching the rule\n               statement.</p>\n            </li>\n         </ul>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Inspect the cookies in the web request. You can specify the parts of the cookies to inspect and you can narrow \n   the set of cookies to inspect by including or excluding specific keys.</p>\n         <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Example JSON: <code>\"Cookies\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }</code>\n         </p>"
+            }
+        },
         "com.amazonaws.wafv2#CountAction": {
             "type": "structure",
             "members": {
@@ -1632,6 +1706,10 @@
                     {
                         "value": "ZW",
                         "name": "ZW"
+                    },
+                    {
+                        "value": "XK",
+                        "name": "XK"
                     }
                 ]
             }
@@ -1952,6 +2030,9 @@
                 "target": "com.amazonaws.wafv2#CreateWebACLResponse"
             },
             "errors": [
+                {
+                    "target": "com.amazonaws.wafv2#WAFConfigurationWarningException"
+                },
                 {
                     "target": "com.amazonaws.wafv2#WAFDuplicateItemException"
                 },
@@ -2621,7 +2702,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Deletes the specified <a>WebACL</a>.</p>\n         <p>You can only use this if <code>ManagedByFirewallManager</code> is false in the specified\n            <a>WebACL</a>. </p>"
+                "smithy.api#documentation": "<p>Deletes the specified <a>WebACL</a>. </p>\n         <p>You can only use this if <code>ManagedByFirewallManager</code> is false in the specified\n            <a>WebACL</a>. </p>\n        <note> \n            <p>Before deleting any web ACL, first disassociate it from all resources.</p> \n            <ul>\n               <li>\n                  <p>To retrieve a list of the resources that are associated with a web ACL, use the following calls:</p>\n                  <ul>\n                     <li>\n                        <p>For regional resources, call <a>ListResourcesForWebACL</a>.</p>\n                     </li>\n                     <li>\n                        <p>For Amazon CloudFront distributions, use the CloudFront call <code>ListDistributionsByWebACLId</code>. \n                      For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_ListDistributionsByWebACLId.html\">ListDistributionsByWebACLId</a>.</p>\n                     </li>\n                  </ul>\n               </li>\n               <li>\n                  <p>To disassociate a resource from a web ACL, use the following calls:</p>\n                  <ul>\n                     <li>\n                        <p>For regional resources, call <a>DisassociateWebACL</a>.</p>\n                     </li>\n                     <li>\n                        <p>For Amazon CloudFront distributions, provide an empty web ACL ID in the CloudFront call\n            <code>UpdateDistribution</code>. For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html\">UpdateDistribution</a>.</p>\n                     </li>\n                  </ul>\n               </li>\n            </ul>\n         </note>"
             }
         },
         "com.amazonaws.wafv2#DeleteWebACLRequest": {
@@ -2795,7 +2876,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Disassociates a web ACL from a regional application resource. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.  </p>\n         <p>For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To\n         disassociate a web ACL, provide an empty web ACL ID in the CloudFront call\n            <code>UpdateDistribution</code>. For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html\">UpdateDistribution</a>.</p>"
+                "smithy.api#documentation": "<p>Disassociates the specified regional application resource from any existing web ACL association. A resource can have at most one\n           web ACL association. A regional application can be an Application Load Balancer (ALB), an Amazon API Gateway REST API, or an AppSync GraphQL API.  </p>\n         <p>For Amazon CloudFront, don't use this call. Instead, use your CloudFront distribution configuration. To\n         disassociate a web ACL, provide an empty web ACL ID in the CloudFront call\n            <code>UpdateDistribution</code>. For information, see <a href=\"https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html\">UpdateDistribution</a>.</p>"
             }
         },
         "com.amazonaws.wafv2#DisassociateWebACLRequest": {
@@ -2926,13 +3007,13 @@
                 "SingleHeader": {
                     "target": "com.amazonaws.wafv2#SingleHeader",
                     "traits": {
-                        "smithy.api#documentation": "<p>Inspect a single header. Provide the name of the header to inspect, for example,\n            <code>User-Agent</code> or <code>Referer</code>. This setting isn't case\n         sensitive.</p>\n         <p>Example JSON: <code>\"SingleHeader\": { \"Name\": \"haystack\" }</code>\n         </p>"
+                        "smithy.api#documentation": "<p>Inspect a single header. Provide the name of the header to inspect, for example,\n            <code>User-Agent</code> or <code>Referer</code>. This setting isn't case\n         sensitive.</p>\n         <p>Example JSON: <code>\"SingleHeader\": { \"Name\": \"haystack\" }</code>\n         </p>\n         <p>Alternately, you can filter and inspect all headers with the <code>Headers</code> \n            <code>FieldToMatch</code> setting. </p>"
                     }
                 },
                 "SingleQueryArgument": {
                     "target": "com.amazonaws.wafv2#SingleQueryArgument",
                     "traits": {
-                        "smithy.api#documentation": "<p>Inspect a single query argument. Provide the name of the query argument to inspect, such\n         as <i>UserName</i> or <i>SalesRegion</i>. The name can be up to\n         30 characters long and isn't case sensitive. </p>\n         <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Example JSON: <code>\"SingleQueryArgument\": { \"Name\": \"myArgument\" }</code>\n         </p>"
+                        "smithy.api#documentation": "<p>Inspect a single query argument. Provide the name of the query argument to inspect, such\n         as <i>UserName</i> or <i>SalesRegion</i>. The name can be up to\n         30 characters long and isn't case sensitive. </p>\n         <p>Example JSON: <code>\"SingleQueryArgument\": { \"Name\": \"myArgument\" }</code>\n         </p>"
                     }
                 },
                 "AllQueryArguments": {
@@ -2944,7 +3025,7 @@
                 "UriPath": {
                     "target": "com.amazonaws.wafv2#UriPath",
                     "traits": {
-                        "smithy.api#documentation": "<p>Inspect the request URI path. This is the part of a web request that identifies a\n         resource, for example, <code>/images/daily-ad.jpg</code>.</p>"
+                        "smithy.api#documentation": "<p>Inspect the request URI path. This is the part of the web request that identifies a\n         resource, for example, <code>/images/daily-ad.jpg</code>.</p>"
                     }
                 },
                 "QueryString": {
@@ -2956,7 +3037,7 @@
                 "Body": {
                     "target": "com.amazonaws.wafv2#Body",
                     "traits": {
-                        "smithy.api#documentation": "<p>Inspect the request body as plain text. The request body immediately follows the request\n         headers. This is the part of a request that contains any additional data that you want to\n         send to your web server as the HTTP request body, such as data from a form. </p>\n         <p>Note that only the first 8 KB (8192 bytes) of the request body are forwarded to\n         WAF for inspection by the underlying host service. If you don't need to inspect more\n         than 8 KB, you can guarantee that you don't allow additional bytes in by combining a\n         statement that inspects the body of the web request, such as <a>ByteMatchStatement</a> or <a>RegexPatternSetReferenceStatement</a>,\n         with a <a>SizeConstraintStatement</a> that enforces an 8 KB size limit on the\n         body of the request. WAF doesn't support inspecting the entire contents of web requests\n         whose bodies exceed the 8 KB limit.</p>"
+                        "smithy.api#documentation": "<p>Inspect the request body as plain text. The request body immediately follows the request\n         headers. This is the part of a request that contains any additional data that you want to\n         send to your web server as the HTTP request body, such as data from a form. </p>\n         <p>Only the first 8 KB (8192 bytes) of the request body are forwarded to\n          WAF for inspection by the underlying host service. For information about how to \n      handle oversized request bodies, see the <code>Body</code> object configuration. </p>"
                     }
                 },
                 "Method": {
@@ -2968,12 +3049,24 @@
                 "JsonBody": {
                     "target": "com.amazonaws.wafv2#JsonBody",
                     "traits": {
-                        "smithy.api#documentation": "<p>Inspect the request body as JSON. The request body immediately follows the request\n         headers. This is the part of a request that contains any additional data that you want to\n         send to your web server as the HTTP request body, such as data from a form. </p>\n         <p>Note that only the first 8 KB (8192 bytes) of the request body are forwarded to\n         WAF for inspection by the underlying host service. If you don't need to inspect more\n         than 8 KB, you can guarantee that you don't allow additional bytes in by combining a\n         statement that inspects the body of the web request, such as <a>ByteMatchStatement</a> or <a>RegexPatternSetReferenceStatement</a>,\n         with a <a>SizeConstraintStatement</a> that enforces an 8 KB size limit on the\n         body of the request. WAF doesn't support inspecting the entire contents of web requests\n         whose bodies exceed the 8 KB limit.</p>"
+                        "smithy.api#documentation": "<p>Inspect the request body as JSON. The request body immediately follows the request\n         headers. This is the part of a request that contains any additional data that you want to\n         send to your web server as the HTTP request body, such as data from a form. </p>\n         <p>Only the first 8 KB (8192 bytes) of the request body are forwarded to\n          WAF for inspection by the underlying host service. For information about how to \n      handle oversized request bodies, see the <code>JsonBody</code> object configuration. </p>"
+                    }
+                },
+                "Headers": {
+                    "target": "com.amazonaws.wafv2#Headers",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect the request headers. You must configure scope and pattern matching filters \n           in the <code>Headers</code> object, to define the set of headers to and the parts of the headers that WAF inspects. </p>\n         <p>Only the first 8 KB (8192 bytes) of a request's headers and only the first 200 headers are forwarded to\n          WAF for inspection by the underlying host service. You must configure \n          how to handle any oversize header content in the <code>Headers</code> object. WAF applies the pattern matching filters \n          to the headers that it receives from the underlying host service. </p>"
+                    }
+                },
+                "Cookies": {
+                    "target": "com.amazonaws.wafv2#Cookies",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect the request cookies. You must configure scope and pattern matching filters \n           in the <code>Cookies</code> object, to define the set of cookies and the parts of the cookies that WAF inspects. </p>\n         <p>Only the first 8 KB (8192 bytes) of a request's cookies and only the first 200 cookies are forwarded to\n          WAF for inspection by the underlying host service. You must configure \n          how to handle any oversize cookie content in the <code>Cookies</code> object. WAF applies the pattern matching filters \n          to the cookies that it receives from the underlying host service. </p>"
                     }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. Include the single <code>FieldToMatch</code> type that you want to inspect, with additional specifications as needed, according to the type. You specify a single request component in <code>FieldToMatch</code> for each rule statement that requires it. To inspect more than one component of a web request, create a separate rule statement for each component.</p>\n         <p>JSON specification for a <code>QueryString</code> field to match: </p>\n         <p>\n            <code>    \"FieldToMatch\": { \"QueryString\": {} }</code>\n         </p>\n         <p>Example JSON for a <code>Method</code> field to match specification:</p>\n         <p>\n            <code>    \"FieldToMatch\": { \"Method\": { \"Name\": \"DELETE\" } }</code>\n         </p>"
+                "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. Include the single <code>FieldToMatch</code> type that you want to inspect, with additional specifications as needed, according to the type. You specify a single request component in <code>FieldToMatch</code> for each rule statement that requires it. To inspect more than one component of the web request, create a separate rule statement for each component.</p>\n         <p>Example JSON for a <code>QueryString</code> field to match: </p>\n         <p>\n            <code>    \"FieldToMatch\": { \"QueryString\": {} }</code>\n         </p>\n         <p>Example JSON for a <code>Method</code> field to match specification:</p>\n         <p>\n            <code>    \"FieldToMatch\": { \"Method\": { \"Name\": \"DELETE\" } }</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#FieldToMatchData": {
@@ -4053,12 +4146,79 @@
         "com.amazonaws.wafv2#HTTPVersion": {
             "type": "string"
         },
+        "com.amazonaws.wafv2#HeaderMatchPattern": {
+            "type": "structure",
+            "members": {
+                "All": {
+                    "target": "com.amazonaws.wafv2#All",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect all headers. </p>"
+                    }
+                },
+                "IncludedHeaders": {
+                    "target": "com.amazonaws.wafv2#HeaderNames",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect only the headers that have a key that matches one of the strings specified here. </p>"
+                    }
+                },
+                "ExcludedHeaders": {
+                    "target": "com.amazonaws.wafv2#HeaderNames",
+                    "traits": {
+                        "smithy.api#documentation": "<p>Inspect only the headers whose keys don't match any of the strings specified here. </p>"
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The filter to use to identify the subset of headers to inspect in a web request. </p>\n         <p>You must specify exactly one setting: either <code>All</code>, <code>IncludedHeaders</code>, or <code>ExcludedHeaders</code>.</p>\n         <p>Example JSON: <code>\"HeaderMatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }</code>\n         </p>"
+            }
+        },
         "com.amazonaws.wafv2#HeaderName": {
             "type": "string"
         },
+        "com.amazonaws.wafv2#HeaderNames": {
+            "type": "list",
+            "member": {
+                "target": "com.amazonaws.wafv2#FieldToMatchData"
+            },
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 199
+                }
+            }
+        },
         "com.amazonaws.wafv2#HeaderValue": {
             "type": "string"
         },
+        "com.amazonaws.wafv2#Headers": {
+            "type": "structure",
+            "members": {
+                "MatchPattern": {
+                    "target": "com.amazonaws.wafv2#HeaderMatchPattern",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The filter to use to identify the subset of headers to inspect in a web request. </p>\n         <p>You must specify exactly one setting: either <code>All</code>, <code>IncludedHeaders</code>, or <code>ExcludedHeaders</code>.</p>\n         <p>Example JSON: <code>\"HeaderMatchPattern\": { \"ExcludedHeaders\": {\"KeyToExclude1\", \"KeyToExclude2\"} }</code>\n         </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "MatchScope": {
+                    "target": "com.amazonaws.wafv2#MapMatchScope",
+                    "traits": {
+                        "smithy.api#documentation": "<p>The parts of the headers to match with the rule inspection criteria. If you\n         specify <code>All</code>, WAF inspects both keys and values. </p>",
+                        "smithy.api#required": {}
+                    }
+                },
+                "OversizeHandling": {
+                    "target": "com.amazonaws.wafv2#OversizeHandling",
+                    "traits": {
+                        "smithy.api#documentation": "<p>What WAF should do if the headers of the request are larger than WAF can inspect. \n    WAF does not support inspecting the entire contents of request headers \n      when they exceed 8 KB (8192 bytes) or 200 total headers. The underlying host service forwards a maximum of 200 headers\n      and at most 8 KB of header contents to WAF. </p>\n         <p>The options for oversize handling are the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Inspect the headers normally, according to the rule inspection criteria. </p>\n            </li>\n            <li>\n               <p>\n                  <code>MATCH</code> - Treat the web request as matching the rule statement. WAF\n               applies the rule action to the request.</p>\n            </li>\n            <li>\n               <p>\n                  <code>NO_MATCH</code> - Treat the web request as not matching the rule\n               statement.</p>\n            </li>\n         </ul>",
+                        "smithy.api#required": {}
+                    }
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>Inspect the headers in the web request. You can specify the parts of the headers to inspect and you can narrow \n   the set of headers to inspect by including or excluding specific keys.</p>\n         <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Alternately, you can use the <code>SingleHeader</code> \n            <code>FieldToMatch</code> setting to inspect the value of a single header, identified by its key. </p>\n         <p>Example JSON: <code>\"Headers\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"KEY\", \"OversizeHandling\": \"MATCH\" }</code>\n         </p>"
+            }
+        },
         "com.amazonaws.wafv2#IPAddress": {
             "type": "string",
             "traits": {
@@ -4273,10 +4433,16 @@
                     "traits": {
                         "smithy.api#documentation": "<p>What WAF should do if it fails to completely parse the JSON body. The options are\n         the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>EVALUATE_AS_STRING</code> - Inspect the body as plain text. WAF applies\n               the text transformations and inspection criteria that you defined for the JSON\n               inspection to the body text string.</p>\n            </li>\n            <li>\n               <p>\n                  <code>MATCH</code> - Treat the web request as matching the rule statement. WAF\n               applies the rule action to the request.</p>\n            </li>\n            <li>\n               <p>\n                  <code>NO_MATCH</code> - Treat the web request as not matching the rule\n               statement.</p>\n            </li>\n         </ul>\n         <p>If you don't provide this setting, WAF parses and evaluates the content only up to the\n         first parsing failure that it encounters. </p>\n         <p>WAF does its best to parse the entire JSON body, but might be forced to stop for\n         reasons such as invalid characters, duplicate keys, truncation, and any content whose root\n         node isn't an object or an array. </p>\n         <p>WAF parses the JSON in the following examples as two valid key, value pairs: </p>\n         <ul>\n            <li>\n               <p>Missing comma: <code>{\"key1\":\"value1\"\"key2\":\"value2\"}</code>\n               </p>\n            </li>\n            <li>\n               <p>Missing colon: <code>{\"key1\":\"value1\",\"key2\"\"value2\"}</code>\n               </p>\n            </li>\n            <li>\n               <p>Extra colons: <code>{\"key1\"::\"value1\",\"key2\"\"value2\"}</code>\n               </p>\n            </li>\n         </ul>"
                     }
+                },
+                "OversizeHandling": {
+                    "target": "com.amazonaws.wafv2#OversizeHandling",
+                    "traits": {
+                        "smithy.api#documentation": "<p>What WAF should do if the body is larger than WAF can inspect. \n    WAF does not support inspecting the entire contents of the body of a web request\n      when the body exceeds 8 KB (8192 bytes). Only the first 8 KB of the request body are forwarded to\n    WAF by the underlying host service. </p>\n         <p>The options for oversize handling are the following:</p>\n         <ul>\n            <li>\n               <p>\n                  <code>CONTINUE</code> - Inspect the body normally, according to the rule inspection criteria. </p>\n            </li>\n            <li>\n               <p>\n                  <code>MATCH</code> - Treat the web request as matching the rule statement. WAF\n               applies the rule action to the request.</p>\n            </li>\n            <li>\n               <p>\n                  <code>NO_MATCH</code> - Treat the web request as not matching the rule\n               statement.</p>\n            </li>\n         </ul>\n         <p>You can combine the <code>MATCH</code> or <code>NO_MATCH</code>\n      settings for oversize handling with your rule and web ACL action settings, so that you block any request whose body is over 8 KB. </p>\n         <p>Default: <code>CONTINUE</code>\n         </p>"
+                    }
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>The body of a web request, inspected as JSON. The body immediately follows the request\n         headers. This is used in the <a>FieldToMatch</a> specification.</p>\n         <p>Use the specifications in this object to indicate which parts of the JSON body to\n         inspect using the rule's inspection criteria. WAF inspects only the parts of the JSON\n         that result from the matches that you\n         indicate.\n      </p>\n         <p>Example JSON: <code>\"JsonBody\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"ALL\" }</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect the body of the web request as JSON. The body immediately follows the request\n         headers. </p>\n          <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p>  \n         <p>Use the specifications in this object to indicate which parts of the JSON body to\n         inspect using the rule's inspection criteria. WAF inspects only the parts of the JSON\n         that result from the matches that you\n         indicate.\n      </p>\n         <p>Example JSON: <code>\"JsonBody\": { \"MatchPattern\": { \"All\": {} }, \"MatchScope\": \"ALL\" }</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#JsonMatchPattern": {
@@ -5588,11 +5754,30 @@
                 "smithy.api#documentation": "<p>Information for a single version of a managed rule set. </p>\n         <note>\n            <p>This is intended for use only by vendors of managed rule sets. Vendors are Amazon Web Services and Amazon Web Services Marketplace sellers. </p>\n            <p>Vendors, you can use the managed rule set APIs to provide controlled rollout of your versioned managed rule group offerings for your customers. The APIs are <code>ListManagedRuleSets</code>, <code>GetManagedRuleSet</code>, <code>PutManagedRuleSetVersions</code>, and <code>UpdateManagedRuleSetVersionExpiryDate</code>.</p>\n         </note>"
             }
         },
+        "com.amazonaws.wafv2#MapMatchScope": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "ALL",
+                        "name": "ALL"
+                    },
+                    {
+                        "value": "KEY",
+                        "name": "KEY"
+                    },
+                    {
+                        "value": "VALUE",
+                        "name": "VALUE"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.wafv2#Method": {
             "type": "structure",
             "members": {},
             "traits": {
-                "smithy.api#documentation": "<p>The HTTP method of a web request. The method indicates the type of operation that the request is asking the origin to perform. </p>\n           <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"Method\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect the HTTP method of the web request. The method indicates the type of operation that the request is asking the origin to perform. </p>\n           <p>This is used only in the <a>FieldToMatch</a> specification for some web request component types. </p> \n         <p>JSON specification: <code>\"Method\": {}</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#MetricName": {
@@ -5707,6 +5892,25 @@
                 "smithy.api#documentation": "<p>The action to use in the place of the action that results from the rule group evaluation. Set the override action to none to leave the result of the rule group alone. Set it to count to override the result to count only. </p>\n         <p>You can only use this for rule statements that reference a rule group, like <code>RuleGroupReferenceStatement</code> and <code>ManagedRuleGroupStatement</code>. </p>\n         <note>\n            <p>This option is usually set to none. It does not affect how the rules in the rule group are evaluated. If you want the rules in the rule group to only count  \n  matches, do not use this and instead exclude those rules in your rule group reference statement settings. </p>\n         </note>"
             }
         },
+        "com.amazonaws.wafv2#OversizeHandling": {
+            "type": "string",
+            "traits": {
+                "smithy.api#enum": [
+                    {
+                        "value": "CONTINUE",
+                        "name": "CONTINUE"
+                    },
+                    {
+                        "value": "MATCH",
+                        "name": "MATCH"
+                    },
+                    {
+                        "value": "NO_MATCH",
+                        "name": "NO_MATCH"
+                    }
+                ]
+            }
+        },
         "com.amazonaws.wafv2#PaginationLimit": {
             "type": "integer",
             "traits": {
@@ -5956,6 +6160,22 @@
                     {
                         "value": "PAYLOAD_TYPE",
                         "name": "PAYLOAD_TYPE"
+                    },
+                    {
+                        "value": "HEADER_MATCH_PATTERN",
+                        "name": "HEADER_MATCH_PATTERN"
+                    },
+                    {
+                        "value": "COOKIE_MATCH_PATTERN",
+                        "name": "COOKIE_MATCH_PATTERN"
+                    },
+                    {
+                        "value": "MAP_MATCH_SCOPE",
+                        "name": "MAP_MATCH_SCOPE"
+                    },
+                    {
+                        "value": "OVERSIZE_HANDLING",
+                        "name": "OVERSIZE_HANDLING"
                     }
                 ]
             }
@@ -6261,7 +6481,7 @@
             "type": "structure",
             "members": {},
             "traits": {
-                "smithy.api#documentation": "<p>The query string of a web request. This is the part of a URL that appears after a <code>?</code> character, if any.</p>\n           <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"QueryString\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect the query string of the web request. This is the part of a URL that appears after a <code>?</code> character, if any.</p>\n           <p>This is used only in the <a>FieldToMatch</a> specification for some web request component types. </p> \n         <p>JSON specification: <code>\"QueryString\": {}</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#RateBasedStatement": {
@@ -6381,7 +6601,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -6448,7 +6668,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -7005,6 +7225,16 @@
         "com.amazonaws.wafv2#SearchString": {
             "type": "blob"
         },
+        "com.amazonaws.wafv2#SingleCookieName": {
+            "type": "string",
+            "traits": {
+                "smithy.api#length": {
+                    "min": 1,
+                    "max": 60
+                },
+                "smithy.api#pattern": "\\S"
+            }
+        },
         "com.amazonaws.wafv2#SingleHeader": {
             "type": "structure",
             "members": {
@@ -7017,7 +7247,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>One of the headers in a web request, identified by name, for example,\n            <code>User-Agent</code> or <code>Referer</code>. This setting isn't case\n         sensitive.</p>\n         <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Example JSON: <code>\"SingleHeader\": { \"Name\": \"haystack\" }</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect one of the headers in the web request, identified by name, for example,\n            <code>User-Agent</code> or <code>Referer</code>. The name isn't case sensitive.</p>\n         <p>You can filter and inspect all headers with the <code>FieldToMatch</code> setting <code>Headers</code>.</p>\n         <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Example JSON: <code>\"SingleHeader\": { \"Name\": \"haystack\" }</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#SingleQueryArgument": {
@@ -7032,7 +7262,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>One query argument in a web request, identified by name, for example\n            <i>UserName</i> or <i>SalesRegion</i>. The name can be up to\n         30 characters long and isn't case sensitive. </p>\n         <p>Example JSON: <code>\"SingleQueryArgument\": { \"Name\": \"myArgument\" }</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect one query argument in the web request, identified by name, for example\n            <i>UserName</i> or <i>SalesRegion</i>. The name isn't case sensitive. </p>\n          <p>This is used to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>Example JSON: <code>\"SingleQueryArgument\": { \"Name\": \"myArgument\" }</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#Size": {
@@ -7050,7 +7280,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -7092,7 +7322,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
@@ -7620,7 +7850,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates the specified <a>IPSet</a>. </p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the IP set with the ones that you provide to this call. To modify the IP set, retrieve it by calling <a>GetIPSet</a>, update the settings as needed, and then provide the complete IP set specification to this call.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Updates the specified <a>IPSet</a>. </p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the IP set with the ones that you provide to this call. To modify the IP set, retrieve it by calling <a>GetIPSet</a>, update the settings as needed, and then provide the complete IP set specification to this call.</p>\n         </note> \n       \n         <p>When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.</p>"
             }
         },
         "com.amazonaws.wafv2#UpdateIPSetRequest": {
@@ -7811,7 +8041,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates the specified <a>RegexPatternSet</a>.</p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the regex pattern set with the ones that you provide to this call. To modify the regex pattern set, retrieve it by calling <a>GetRegexPatternSet</a>, update the settings as needed, and then provide the complete regex pattern set specification to this call.</p>\n         </note>"
+                "smithy.api#documentation": "<p>Updates the specified <a>RegexPatternSet</a>.</p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the regex pattern set with the ones that you provide to this call. To modify the regex pattern set, retrieve it by calling <a>GetRegexPatternSet</a>, update the settings as needed, and then provide the complete regex pattern set specification to this call.</p>\n         </note> \n       \n         <p>When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.</p>"
             }
         },
         "com.amazonaws.wafv2#UpdateRegexPatternSetRequest": {
@@ -7880,6 +8110,9 @@
                 "target": "com.amazonaws.wafv2#UpdateRuleGroupResponse"
             },
             "errors": [
+                {
+                    "target": "com.amazonaws.wafv2#WAFConfigurationWarningException"
+                },
                 {
                     "target": "com.amazonaws.wafv2#WAFDuplicateItemException"
                 },
@@ -7909,7 +8142,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates the specified <a>RuleGroup</a>.</p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the rule group with the ones that you provide to this call. To modify the rule group, retrieve it by calling <a>GetRuleGroup</a>, update the settings as needed, and then provide the complete rule group specification to this call.</p>\n         </note> \n         <p> A rule group defines a collection of rules to inspect and control web requests that you can use in a <a>WebACL</a>. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. </p>"
+                "smithy.api#documentation": "<p>Updates the specified <a>RuleGroup</a>.</p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the rule group with the ones that you provide to this call. To modify the rule group, retrieve it by calling <a>GetRuleGroup</a>, update the settings as needed, and then provide the complete rule group specification to this call.</p>\n         </note> \n       \n         <p>When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.</p> \n         <p> A rule group defines a collection of rules to inspect and control web requests that you can use in a <a>WebACL</a>. When you create a rule group, you define an immutable capacity limit. If you update a rule group, you must stay within the capacity. This allows others to reuse the rule group with confidence in its capacity requirements. </p>"
             }
         },
         "com.amazonaws.wafv2#UpdateRuleGroupRequest": {
@@ -7990,6 +8223,9 @@
                 "target": "com.amazonaws.wafv2#UpdateWebACLResponse"
             },
             "errors": [
+                {
+                    "target": "com.amazonaws.wafv2#WAFConfigurationWarningException"
+                },
                 {
                     "target": "com.amazonaws.wafv2#WAFDuplicateItemException"
                 },
@@ -8025,7 +8261,7 @@
                 }
             ],
             "traits": {
-                "smithy.api#documentation": "<p>Updates the specified <a>WebACL</a>.</p>\n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the web ACL with the ones that you provide to this call. To modify the web ACL, retrieve it by calling <a>GetWebACL</a>, update the settings as needed, and then provide the complete web ACL specification to this call.</p>\n         </note> \n         <p> A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has an action defined (allow, block, or count) for requests that match the statement of the rule. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types <a>Rule</a>, <a>RuleGroup</a>, and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API.  </p>"
+                "smithy.api#documentation": "<p>Updates the specified <a>WebACL</a>. While updating a web ACL, WAF provides continous coverage to the resources that you have associated with the web ACL. </p>\n       \n         <p>When you make changes to web ACLs or web ACL components, like rules and rule groups, WAF propagates the changes everywhere that the web ACL and its components are stored and used. Your changes are applied within seconds, but there might be a brief period of inconsistency when the changes have arrived in some places and not in others. So, for example, if you change a rule action setting, the action might be the old action in one area and the new action in another area. Or if you add an IP address to an IP set used in a blocking rule, the new address might briefly be blocked in one area while still allowed in another. This temporary inconsistency can occur when you first associate a web ACL with an Amazon Web Services resource and when you change a web ACL that is already associated with a resource. Generally, any inconsistencies of this type last only a few seconds.</p> \n         <note>\n            <p>This operation completely replaces the mutable specifications that you already have for the web ACL with the ones that you provide to this call. To modify the web ACL, retrieve it by calling <a>GetWebACL</a>, update the settings as needed, and then provide the complete web ACL specification to this call.</p>\n         </note> \n         <p> A web ACL defines a collection of rules to use to inspect and control web requests. Each rule has an action defined (allow, block, or count) for requests that match the statement of the rule. In the web ACL, you assign a default action to take (allow, block) for any request that does not match any of the rules. The rules in a web ACL can be a combination of the types <a>Rule</a>, <a>RuleGroup</a>, and managed rule group. You can associate a web ACL with one or more Amazon Web Services resources to protect. The resources can be an Amazon CloudFront distribution, an Amazon API Gateway REST API, an Application Load Balancer, or an AppSync GraphQL API.  </p>"
             }
         },
         "com.amazonaws.wafv2#UpdateWebACLRequest": {
@@ -8114,7 +8350,7 @@
             "type": "structure",
             "members": {},
             "traits": {
-                "smithy.api#documentation": "<p>The path component of the URI of a web request. This is the part of a web request that identifies a resource. For example, <code>/images/daily-ad.jpg</code>.</p>\n         <p>This is used only to indicate the web request component for WAF to inspect, in the <a>FieldToMatch</a> specification. </p> \n         <p>JSON specification: <code>\"UriPath\": {}</code>\n         </p>"
+                "smithy.api#documentation": "<p>Inspect the path component of the URI of the web request. This is the part of the web request that identifies a resource. For example, <code>/images/daily-ad.jpg</code>.</p>\n         <p>This is used only in the <a>FieldToMatch</a> specification for some web request component types. </p> \n         <p>JSON specification: <code>\"UriPath\": {}</code>\n         </p>"
             }
         },
         "com.amazonaws.wafv2#UsernameField": {
@@ -8218,7 +8454,19 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>WAF couldn’t perform the operation because your resource is being used by another\n         resource or it’s associated with another resource. </p>",
+                "smithy.api#documentation": "<p>WAF couldn’t perform the operation because your resource is being used by another resource or it’s associated with another resource. </p>\n         <p>For <code>DeleteWebACL</code>, you will only get this exception if the web ACL is still associated with \n          a regional resource. Deleting a web ACL that is still associated with an Amazon CloudFront distribution won't get this exception. </p>",
+                "smithy.api#error": "client"
+            }
+        },
+        "com.amazonaws.wafv2#WAFConfigurationWarningException": {
+            "type": "structure",
+            "members": {
+                "Message": {
+                    "target": "com.amazonaws.wafv2#ErrorMessage"
+                }
+            },
+            "traits": {
+                "smithy.api#documentation": "<p>The operation failed because you are inspecting the web request body, headers, or cookies without specifying how to handle oversize components. \n       Rules that inspect the body must either provide an <code>OversizeHandling</code> configuration or they must  \n       be preceded by a <code>SizeConstraintStatement</code> that blocks the body content from being too large. \n       Rules that inspect the headers or cookies must provide an <code>OversizeHandling</code> configuration. </p>\n         <p>Provide the handling configuration and retry your operation.</p>\n         <p>Alternately, you can suppress this warning by adding the following tag to the resource that you provide to this operation: <code>Tag</code> (key:<code>WAF:OversizeFieldsHandlingConstraintOptOut</code>, value:<code>true</code>).</p>",
                 "smithy.api#error": "client"
             }
         },
@@ -8416,7 +8664,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>WAF couldn’t perform your tagging operation because of an internal error. Retry\n         your request.</p>",
+                "smithy.api#documentation": "<p>WAF couldn’t perform your tagging operation because of an internal error. Retry\n         ybjectNoteWebRequestComponentour request.</p>",
                 "smithy.api#error": "server"
             }
         },
@@ -8428,7 +8676,7 @@
                 }
             },
             "traits": {
-                "smithy.api#documentation": "<p>WAF couldn’t retrieve the resource that you requested. Retry your request.</p>",
+                "smithy.api#documentation": "<p>WAF couldn’t retrieve a resource that you specified for this operation. Verify the resources that you are specifying in your request parameters and then retry the operation.</p>",
                 "smithy.api#error": "client"
             }
         },
@@ -8579,7 +8827,7 @@
                 "FieldToMatch": {
                     "target": "com.amazonaws.wafv2#FieldToMatch",
                     "traits": {
-                        "smithy.api#documentation": "<p>The part of a web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
+                        "smithy.api#documentation": "<p>The part of the web request that you want WAF to inspect. For more information, see <a>FieldToMatch</a>. </p>",
                         "smithy.api#required": {}
                     }
                 },
diff --git a/gradle.properties b/gradle.properties
index a4b001e30b5f5eba61da89800ca85484f913aa48..a71346f8b436f4d8d49d60ef2197c9102b5f511d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -8,10 +8,10 @@ rust.msrv=1.58.1
 
 # Version number to use for the generated SDK
 # Note: these must always be full 3-segment semver versions
-aws.sdk.version=0.11.0
+aws.sdk.version=0.12.0
 
 # Version number to use for the generated runtime crates
-smithy.rs.runtime.crate.version=0.41.0
+smithy.rs.runtime.crate.version=0.42.0
 
 kotlin.code.style=official